Blame README

Packit bc1512
GEGL-0.2.0
Packit bc1512
Packit bc1512
Table of Contents
Packit bc1512
Packit bc1512
JavaScript must be enabled in your browser to display the table of
Packit bc1512
contents.
Packit bc1512
Packit bc1512
GEGL
Packit bc1512
Packit bc1512
GEGL
Packit bc1512
Packit bc1512
GEGL (Generic Graphics Library) is a graph based image processing
Packit bc1512
framework.
Packit bc1512
Packit bc1512
GEGL provides infrastructure to do demand based cached non destructive
Packit bc1512
image editing on larger than RAM buffers. Through babl it provides
Packit bc1512
support for a wide range of color models and pixel storage formats for
Packit bc1512
input and output.
Packit bc1512
Packit bc1512
Features
Packit bc1512
Packit bc1512
  • Floating point handling and processing and output of larger 8bit,
Packit bc1512
    16bit integer and 32bit floating point per component buffers larger
Packit bc1512
    than RAM.
Packit bc1512
Packit bc1512
  • C, vala, C#, Python and Ruby interfaces using a consistent DOM like
Packit bc1512
    graph API to manage processing graphs.
Packit bc1512
Packit bc1512
  • Processing
Packit bc1512
Packit bc1512
      □ Iterative chunk-wise processing.
Packit bc1512
Packit bc1512
      □ Processes subregions and dependencies.
Packit bc1512
Packit bc1512
      □ Subgraph caches to aid performance of non-destructive editing.
Packit bc1512
Packit bc1512
      □ Experimental OpenCL acceleration, with possibility of hybrid
Packit bc1512
        cpu/gpu processing.
Packit bc1512
Packit bc1512
  • GeglBuffer
Packit bc1512
Packit bc1512
      □ Storage of all babl supported formats.
Packit bc1512
Packit bc1512
      □ Tiled sparse buffers (larger than RAM images).
Packit bc1512
Packit bc1512
      □ linear buffers (allocated internally or from external
Packit bc1512
        allocation.)
Packit bc1512
Packit bc1512
      □ On demand tiled mipmapping.
Packit bc1512
Packit bc1512
      □ inter process shared storage
Packit bc1512
Packit bc1512
      □ External tile-backends (allow wrapping other tiled buffer
Packit bc1512
        systems to use them through the GeglBuffer API).
Packit bc1512
Packit bc1512
  • Operations
Packit bc1512
Packit bc1512
      □ PNG, JPEG, SVG, EXR, RAW, ffmpeg, v4l and other image sources.
Packit bc1512
Packit bc1512
      □ Pattern renderers
Packit bc1512
Packit bc1512
      □ Arithmetic operations
Packit bc1512
Packit bc1512
      □ link_operations.html#porter_duff[porter duff compositing]
Packit bc1512
Packit bc1512
      □ SVG filter modes and full set of compositing ops from SVG-1.2
Packit bc1512
        draft.
Packit bc1512
Packit bc1512
      □ Gaussian blur, bilateral-filter, symmetric nearest neighbour,
Packit bc1512
        linear
Packit bc1512
Packit bc1512
      □ blur, unsharp mask, pixelize and more.
Packit bc1512
Packit bc1512
      □ Color correction.
Packit bc1512
Packit bc1512
      □ Text rendering using cairo and pango.
Packit bc1512
Packit bc1512
      □ HDR exposure merging and tone mapping operations.
Packit bc1512
Packit bc1512
      □ Most operations operate in scRGB (using 32bit floating point/
Packit bc1512
        HDR linear light RGBA)
Packit bc1512
Packit bc1512
  • Bounding box based hit detection.
Packit bc1512
Packit bc1512
  • XML serialization format (not-finalized)
Packit bc1512
Packit bc1512
News
Packit bc1512
Packit bc1512
This website is built at the time of the previous GEGL tarball release,
Packit bc1512
for information about what might change on the way to the next release
Packit bc1512
follow the following news sources:
Packit bc1512
Packit bc1512
Change log
Packit bc1512
Packit bc1512
    For day to day fixes, contributions and changes.
Packit bc1512
Packit bc1512
NEWS
Packit bc1512
Packit bc1512
    The NEWS file for a list of major new features (also contains older
Packit bc1512
    NEWS).
Packit bc1512
Packit bc1512
bugzilla
Packit bc1512
Packit bc1512
    for known and tracked issues with GEGL and perhaps see the
Packit bc1512
Packit bc1512
mail
Packit bc1512
Packit bc1512
    The mailinglist archives for some discussion and announcement.
Packit bc1512
Packit bc1512
Gallery
Packit bc1512
Packit bc1512
For examples of what GEGL’s rendering engine currently can do look at
Packit bc1512
the gallery.
Packit bc1512
Packit bc1512
Bugzilla
Packit bc1512
Packit bc1512
The GEGL project uses GNOME Bugzilla, a bug-tracking system that allows
Packit bc1512
us to coordinate bug reports. Bugzilla is also used for enhancement
Packit bc1512
requests and the preferred way to submit patches for GEGL is to open a
Packit bc1512
bug report and attach the patch to it. Bugzilla is also the closest you
Packit bc1512
will find to a roadmap for GEGL.
Packit bc1512
Packit bc1512
Below is a list of links to get you started with Bugzilla:
Packit bc1512
Packit bc1512
  • List of Open Bugs
Packit bc1512
Packit bc1512
  • List of Open Bugs (excluding enhancement requests)
Packit bc1512
Packit bc1512
  • List of Enhancement Proposals
Packit bc1512
Packit bc1512
  • Bugzilla Weekly Summary
Packit bc1512
Packit bc1512
Community
Packit bc1512
Packit bc1512
You can subscribe to gegl-developer and view the archives here. The
Packit bc1512
GEGL developer list is the appopriate place to ask development
Packit bc1512
questions, and get more information about GEGL development in general.
Packit bc1512
You can email this list at gegl-developer-list@gnome.org.
Packit bc1512
Packit bc1512
GEGL development is also discussed in #gegl on GIMPnet (irc.gimp.org).
Packit bc1512
Packit bc1512
Copyright
Packit bc1512
Packit bc1512
GEGL is free software; you can redistribute it and/or modify it under
Packit bc1512
the terms of the GNU Lesser General Public License and GNU General
Packit bc1512
Public License as published by the Free Software Foundation; either
Packit bc1512
version 3 of the Licenses, or (at your option) any later version. The
Packit bc1512
library itself is licensed under LGPL while the sample commandline
Packit bc1512
application and GUI binary gegl is licensed under GPL.
Packit bc1512
Packit bc1512
Contributors
Packit bc1512
Packit bc1512
Many people have contributed to GEGL over time the following lists are
Packit bc1512
are ordered chronologically according to when they are mentioned in the
Packit bc1512
ChangeLog.
Packit bc1512
Packit bc1512
Code:
Packit bc1512
Packit bc1512
Calvin Williamson, Caroline Dahloff, Manish Singh, Jay Cox Daniel
Packit bc1512
Rogers, Sven Neumann, Michael Natterer, Øyvind Kolås, Philip Lafleur,
Packit bc1512
Dominik Ernst, Richard Kralovic, Kevin Cozens, Victor Bogado, Martin
Packit bc1512
Nordholts, Geert Jordaens, Michael Schumacher, John Marshall, Étienne
Packit bc1512
Bersac, Mark Probst, Håkon Hitland, Tor Lillqvist, Hans Breuer, Deji
Packit bc1512
Akingunola and Bradley Broom, Hans Petter Jansson, Jan Heller,
Packit bc1512
dmacks@netscpace.org, Sven Anders, Hubert Figuière, Sam Hocevar, yahvuu
Packit bc1512
at gmail.com, Nicolas Robidoux, Ruben Vermeersch, Gary V. Vaughan,
Packit bc1512
James Legg, Henrik Åkesson, Fryderyk Dziarmagowski, Ozan Caglayan,
Packit bc1512
Tobias Mueller, Nils Philippsen, Adam Turcotte, Danny Robson, Javier
Packit bc1512
Jardón and Yakkov Selkowitz, Kaja Liiv, Eric Daoust, Damien de Lemeny,
Packit bc1512
Fabian Groffen, Vincent Untz, Debarshi Ray, Stuart Axon, Kao, Barak
Packit bc1512
Itkin, Michael Muré, Mikael Magnusson, Patrick Horgan, Tobias
Packit bc1512
Ellinghaus, Rasmus Hahn, Chantal Racette, John Cupitt, Anthony Thyssen,
Packit bc1512
Emilio Pozuelo Monfort, Robert Sasu, Massimo Valentini, Hans Lo,
Packit bc1512
Zbigniew Chyla, David Evans, Javier Jardón, Matteo F. Vescovi and Jan
Packit bc1512
Rüegg.
Packit bc1512
Packit bc1512
Documentation:
Packit bc1512
Packit bc1512
Garry R. Osgood, Øyvind Kolås, Kevin Cozens and Shlomi Fish.
Packit bc1512
Packit bc1512
Artwork:
Packit bc1512
Packit bc1512
Jakub Steiner, Øyvind Kolås, Tonda Tavalec
Packit bc1512
Packit bc1512
Building from source
Packit bc1512
Packit bc1512
GEGL and it’s dependencies are known to work on Linux based systems,
Packit bc1512
windows with msys/mingw, and probably other platforms.
Packit bc1512
Packit bc1512
Download
Packit bc1512
Packit bc1512
The latest development snapshot, and eventually stable versions of GEGL
Packit bc1512
are available at ftp://ftp.gimp.org/pub/gegl/.
Packit bc1512
Packit bc1512
The current code under development can be browsed online and cloned
Packit bc1512
from GNOME git using:
Packit bc1512
Packit bc1512
$ git clone git://git.gnome.org/babl
Packit bc1512
$ git clone git://git.gnome.org/gegl
Packit bc1512
Packit bc1512
Dependencies
Packit bc1512
Packit bc1512
GEGL currently builds and works on linux, win32 and OSX most probably
Packit bc1512
also on other systems where glib and gtk+ work.
Packit bc1512
Packit bc1512
  • Core
Packit bc1512
Packit bc1512
      □ glib (including gobject, and gmodule) 2.16 or newer, which
Packit bc1512
        provides inheritance, dynamic modules, common algorithms and
Packit bc1512
        data structures for C programming.
Packit bc1512
Packit bc1512
      □ babl 0.0.22 or newer (for pixel-format agnostisism).
Packit bc1512
Packit bc1512
      □ libpng (png load/export ops, and image magick fallback import)
Packit bc1512
Packit bc1512
      □ ruby (only if building from git)
Packit bc1512
Packit bc1512
  • GUI (sandbox for testing ops and the API)
Packit bc1512
Packit bc1512
      □ GTK+
Packit bc1512
Packit bc1512
  • Optional dependencies for operations.
Packit bc1512
Packit bc1512
      □ SDL (display op)
Packit bc1512
Packit bc1512
      □ libjpeg (jpg loader op)
Packit bc1512
Packit bc1512
      □ libopenexr (exr loader op)
Packit bc1512
Packit bc1512
      □ libopenraw (raw loader op)
Packit bc1512
Packit bc1512
      □ cairo, pango (text source op)
Packit bc1512
Packit bc1512
      □ avcodec, avformat (ff-load and experimental ff-save)
Packit bc1512
Packit bc1512
      □ librsvg (svg loader)
Packit bc1512
Packit bc1512
  • Documentation (this document)
Packit bc1512
Packit bc1512
      □ asciidoc
Packit bc1512
Packit bc1512
Compiling
Packit bc1512
Packit bc1512
To build GEGL type the following in the toplevel source directory:
Packit bc1512
Packit bc1512
$ ./configure  # or: ./autogen.sh if building from git
Packit bc1512
$ make
Packit bc1512
$ sudo make install
Packit bc1512
Packit bc1512
Documentation
Packit bc1512
Packit bc1512
With GEGL you chain together image processing operations represented by
Packit bc1512
nodes into a graph. GEGL provides such operations for loading and
Packit bc1512
storing images, adjusting colors, filtering in different ways,
Packit bc1512
transforming and compositing images.
Packit bc1512
Packit bc1512
GEGL’s programmer/user interface is a Directed Acyclic Graph of nodes.
Packit bc1512
The DAG expresses a processing chain of operations. A DAG, or any node
Packit bc1512
in it, expresses a composited and processed image. It is possible to
Packit bc1512
request rectangular regions in a wide range of pixel formats from any
Packit bc1512
node.
Packit bc1512
Packit bc1512
Development
Packit bc1512
Packit bc1512
This howto describes good-to-know things for developing gegl
Packit bc1512
Packit bc1512
Public API
Packit bc1512
Packit bc1512
The public API reference documents the API used for creating things
Packit bc1512
with GEGL, this API does not change much at all and is also the API
Packit bc1512
provided by language bindings. To make the public API available when
Packit bc1512
compiling a .c file add #include <gegl.h>, compile and link with the
Packit bc1512
flags provided by pkg-config and you should be all set. When you are
Packit bc1512
comfortable with the public API, or are using GEGL in some project
Packit bc1512
looking at the Operation reference might be useful.
Packit bc1512
Packit bc1512
The public API also includes GeglBuffer, a flexible tiled and linear
Packit bc1512
raster buffer storage system.
Packit bc1512
Packit bc1512
Bindings
Packit bc1512
Packit bc1512
The bindings for use of GEGL in other programming languages than C are
Packit bc1512
co-hosted with GEGL in GNOME git but are not part of the regular GEGL
Packit bc1512
distribution. The following language bindings are currently available:
Packit bc1512
Packit bc1512
vala, C#, Python and Ruby.
Packit bc1512
Packit bc1512
Hello world
Packit bc1512
Packit bc1512
The following is a small sample GEGL application that animates a zoom
Packit bc1512
on a mandelbrot fractal. compile it with:
Packit bc1512
Packit bc1512
$ gcc hello-world.c `pkg-config --libs --cflags gegl` -o hello-world
Packit bc1512
Packit bc1512
This example and others can be found in the examples subdir of the GEGL
Packit bc1512
distribution.
Packit bc1512
Packit bc1512
#include <gegl.h>
Packit bc1512
#include <glib/gprintf.h>
Packit bc1512
Packit bc1512
Packit bc1512
gint
Packit bc1512
main (gint    argc,
Packit bc1512
      gchar **argv)
Packit bc1512
{
Packit bc1512
  g_thread_init (NULL);
Packit bc1512
  gegl_init (&argc, &argv);  /* initialize the GEGL library */
Packit bc1512
Packit bc1512
  {
Packit bc1512
    /* instantiate a graph */
Packit bc1512
    GeglNode *gegl = gegl_node_new ();
Packit bc1512
Packit bc1512
/*
Packit bc1512
This is the graph we're going to construct:
Packit bc1512
Packit bc1512
.-----------.
Packit bc1512
| display   |
Packit bc1512
`-----------'
Packit bc1512
   |
Packit bc1512
.-------.
Packit bc1512
| over  |
Packit bc1512
`-------'
Packit bc1512
   |   \
Packit bc1512
   |    \
Packit bc1512
   |     \
Packit bc1512
   |      |
Packit bc1512
   |   .------.
Packit bc1512
   |   | text |
Packit bc1512
   |   `------'
Packit bc1512
.------------------.
Packit bc1512
| fractal-explorer |
Packit bc1512
`------------------'
Packit bc1512
Packit bc1512
*/
Packit bc1512
Packit bc1512
    /*< The image nodes representing operations we want to perform */
Packit bc1512
    GeglNode *display    = gegl_node_create_child (gegl, "gegl:display");
Packit bc1512
    GeglNode *over       = gegl_node_new_child (gegl,
Packit bc1512
                                 "operation", "gegl:over",
Packit bc1512
                                 NULL);
Packit bc1512
    GeglNode *text       = gegl_node_new_child (gegl,
Packit bc1512
                                 "operation", "gegl:text",
Packit bc1512
                                 "size", 10.0,
Packit bc1512
                                 "color", gegl_color_new ("rgb(1.0,1.0,1.0)"),
Packit bc1512
                                 NULL);
Packit bc1512
    GeglNode *mandelbrot = gegl_node_new_child (gegl,
Packit bc1512
                                "operation", "gegl:fractal-explorer",
Packit bc1512
                                "width", 512,
Packit bc1512
                                "height", 384,
Packit bc1512
                                NULL);
Packit bc1512
Packit bc1512
    gegl_node_link_many (mandelbrot, over, display, NULL);
Packit bc1512
    gegl_node_connect_to (text, "output",  over, "aux");
Packit bc1512
Packit bc1512
    /* request that the save node is processed, all dependencies will
Packit bc1512
     * be processed as well
Packit bc1512
     */
Packit bc1512
    {
Packit bc1512
      gint frame;
Packit bc1512
      gint frames = 200;
Packit bc1512
Packit bc1512
      for (frame=0; frame
Packit bc1512
        {
Packit bc1512
          gchar string[512];
Packit bc1512
          gdouble t = frame * 1.0/frames;
Packit bc1512
          gdouble cx = -1.76;
Packit bc1512
          gdouble cy = 0.0;
Packit bc1512
Packit bc1512
#define INTERPOLATE(min,max) ((max)*(t)+(min)*(1.0-t))
Packit bc1512
Packit bc1512
          gdouble xmin = INTERPOLATE(  cx-0.02, cx-2.5);
Packit bc1512
          gdouble ymin = INTERPOLATE(  cy-0.02, cy-2.5);
Packit bc1512
          gdouble xmax = INTERPOLATE(  cx+0.02, cx+2.5);
Packit bc1512
          gdouble ymax = INTERPOLATE(  cy+0.02, cy+2.5);
Packit bc1512
Packit bc1512
          if (xmin<-3.0)
Packit bc1512
            xmin=-3.0;
Packit bc1512
          if (ymin<-3.0)
Packit bc1512
            ymin=-3.0;
Packit bc1512
Packit bc1512
          gegl_node_set (mandelbrot, "xmin", xmin,
Packit bc1512
                                     "ymin", ymin,
Packit bc1512
                                     "xmax", xmax,
Packit bc1512
                                     "ymax", ymax,
Packit bc1512
                                     NULL);
Packit bc1512
          g_sprintf (string, "%1.3f,%1.3f %1.3f×%1.3f",
Packit bc1512
            xmin, ymin, xmax-xmin, ymax-ymin);
Packit bc1512
          gegl_node_set (text, "string", string, NULL);
Packit bc1512
          gegl_node_process (display);
Packit bc1512
        }
Packit bc1512
    }
Packit bc1512
Packit bc1512
    /* free resources used by the graph and the nodes it owns */
Packit bc1512
    g_object_unref (gegl);
Packit bc1512
  }
Packit bc1512
Packit bc1512
  /* free resources globally used by GEGL */
Packit bc1512
  gegl_exit ();
Packit bc1512
Packit bc1512
  return 0;
Packit bc1512
}
Packit bc1512
Packit bc1512
Operation API
Packit bc1512
Packit bc1512
An API to extend the functionality of GEGL with new image processing
Packit bc1512
primitive, file loaders, export formats or similar.
Packit bc1512
Packit bc1512
Each GEGL operation is defined in a .c file that gets turned into a
Packit bc1512
single shared object that is loaded. Each operation is a subclass of
Packit bc1512
one of the provided base classes:
Packit bc1512
Packit bc1512
GeglOperation
Packit bc1512
Packit bc1512
    The base operation class, which all the other base classes are
Packit bc1512
    derived from, deriving from this is often quite a bit of work and
Packit bc1512
    is encouraged only when your operation doesn’t fit into any of the
Packit bc1512
    other categories
Packit bc1512
Packit bc1512
GeglOperationFilter
Packit bc1512
Packit bc1512
    The filter base class sets up GeglBuffers for input and output pads
Packit bc1512
Packit bc1512
GeglOperationPointFilter
Packit bc1512
Packit bc1512
    The point-filter base class is for filters where an output pixel
Packit bc1512
    only depends on the color and alpha values of the corresponding
Packit bc1512
    input pixel. This allows you to do the processing on linear
Packit bc1512
    buffers, in the future versions of GEGL operations implemented
Packit bc1512
    using the point-filter will get speed increases due to more
Packit bc1512
    intelligent processing possible in the point filter class
Packit bc1512
Packit bc1512
GeglOperationAreaFilter
Packit bc1512
Packit bc1512
    The AreaFilter base class allows defining operations where the
Packit bc1512
    output data depends on a neighbourhood with an input window that
Packit bc1512
    extends beyond the output window, the information about needed
Packit bc1512
    extra pixels in different directions should be set up in the
Packit bc1512
    prepare callback for the operation.
Packit bc1512
Packit bc1512
GeglOperationComposer
Packit bc1512
Packit bc1512
    Composer operations are operations that take two inputs named input
Packit bc1512
    and aux and write their output to the output pad output
Packit bc1512
Packit bc1512
GeglOperationPointComposer
Packit bc1512
Packit bc1512
    A baseclass for composer functions where the output pixels' values
Packit bc1512
    depends only on the values of the single corresponding input and
Packit bc1512
    aux pixels.
Packit bc1512
Packit bc1512
GeglOperationSource
Packit bc1512
Packit bc1512
    Operations used as render sources or file loaders, the process
Packit bc1512
    method receives a GeglBuffer to write it’s output into
Packit bc1512
Packit bc1512
GeglOperationPointRender
Packit bc1512
Packit bc1512
    The point-render base class is a specialized source operation,
Packit bc1512
    where the render is done in small piece to lower the need to do
Packit bc1512
    copies. It’s dedicated to operation which may be rendered in
Packit bc1512
    pieces, like pattern generation.
Packit bc1512
Packit bc1512
GeglOperationSink
Packit bc1512
Packit bc1512
    An operation that consumes a GeglBuffer, used for filewriters,
Packit bc1512
    display (for the sdl display node)
Packit bc1512
Packit bc1512
GeglOperationTemporal
Packit bc1512
Packit bc1512
    Base class for operations that want access to previous frames in a
Packit bc1512
    video sequence, it contains API to configure the amounts of frames
Packit bc1512
    to store as well as getting a GeglBuffer pointing to any of the
Packit bc1512
    previously stored frames.
Packit bc1512
Packit bc1512
GeglOperationMeta
Packit bc1512
Packit bc1512
    Used for GEGL operations that are implemented as a sub-graph, at
Packit bc1512
    the moment these are defined as C files but should in the future be
Packit bc1512
    possible to declare as XML instead.
Packit bc1512
Packit bc1512
To create your own operations you should start by looking for one that
Packit bc1512
does approximatly what you already need. Copy it to a new .c source
Packit bc1512
file, and replace the occurences of the filename (operation name in the
Packit bc1512
source.)
Packit bc1512
Packit bc1512
Take a look at the brightness contrast operation for a point operation
Packit bc1512
well sprinkled with comments as a starting point.
Packit bc1512
Packit bc1512
Environment
Packit bc1512
Packit bc1512
Some environment variables can be set to alter how GEGL runs, all of
Packit bc1512
these options are also available as properties on a singleton GObject
Packit bc1512
returned from gegl_config ().
Packit bc1512
Packit bc1512
GEGL_QUALITY
Packit bc1512
Packit bc1512
    A value between 0.0 and 1.0 indicating a trade-off between quality
Packit bc1512
    and speed. Defaults to 1.0 (max quality).
Packit bc1512
Packit bc1512
BABL_TOLERANCE
Packit bc1512
Packit bc1512
    The amount of error that babl tolerates, set it to for instance 0.1
Packit bc1512
    to use some conversions that trade some quality for speed.
Packit bc1512
Packit bc1512
GEGL_CHUNK_SIZE
Packit bc1512
Packit bc1512
    The number of pixels processed simulatnously.
Packit bc1512
Packit bc1512
GEGL_TILE_SIZE
Packit bc1512
Packit bc1512
    The tile size used internally by GEGL, defaults to 128x64
Packit bc1512
Packit bc1512
GEGL_SWAP
Packit bc1512
Packit bc1512
    The directory where temporary swap files are written, if not
Packit bc1512
    specified GEGL will not swap to disk. Be aware that swapping to
Packit bc1512
    disk is still experimental and GEGL is currently not removing the
Packit bc1512
    per process swap files.
Packit bc1512
Packit bc1512
GEGL_CACHE_SIZE
Packit bc1512
Packit bc1512
    The size of the tile cache used by GeglBuffer specified in
Packit bc1512
    megabytes.
Packit bc1512
Packit bc1512
GEGL_DEBUG
Packit bc1512
Packit bc1512
    set it to "all" to enable all debugging, more specific domains for
Packit bc1512
    debugging information are also available.
Packit bc1512
Packit bc1512
BABL_STATS
Packit bc1512
Packit bc1512
    When set babl will write a html file (/tmp/babl-stats.html)
Packit bc1512
    containing a matrix of used conversions, as well as all existing
Packit bc1512
    conversions and which optimized paths are followed.
Packit bc1512
Packit bc1512
GEGL_DEBUG_BUFS
Packit bc1512
Packit bc1512
    Display tile/buffer leakage statistics.
Packit bc1512
Packit bc1512
GEGL_DEBUG_RECTS
Packit bc1512
Packit bc1512
    Show the results of have/need rect negotiations.
Packit bc1512
Packit bc1512
GEGL_DEBUG_TIME
Packit bc1512
Packit bc1512
    Print a performance instrumentation breakdown of GEGL and it’s
Packit bc1512
    operations. GEGL_USE_OPENCL: Enable use of OpenCL processing.
Packit bc1512
Packit bc1512
gegl
Packit bc1512
Packit bc1512
GEGL provides a commandline tool called gegl, for working with the XML
Packit bc1512
data model from file, stdin or the commandline. It can display the
Packit bc1512
result of processing the layer tree or save it to file.
Packit bc1512
Packit bc1512
Some examples:
Packit bc1512
Packit bc1512
Render a composition to a PNG file:
Packit bc1512
Packit bc1512
$ gegl composition.xml -o composition.png
Packit bc1512
Packit bc1512
Invoke gegl like a viewer for gegl compositions:
Packit bc1512
Packit bc1512
$ gegl -ui -d 5 composition.xml
Packit bc1512
Packit bc1512
Using gegl with png’s passing through stdin/stdout piping.
Packit bc1512
Packit bc1512
$ cat input.png | gegl -o - -x "<gegl>
Packit bc1512
   <tree>
Packit bc1512
     <node class='invert'/>
Packit bc1512
     <node class='scale' x='0.5' y='0.5'/>
Packit bc1512
     <node class='png-load' path='-'/></tree></gegl>" > output.png
Packit bc1512
Packit bc1512
The latest development version is available in the gegl repository in
Packit bc1512
GNOME git.
Packit bc1512
Packit bc1512
gegl usage
Packit bc1512
Packit bc1512
The following is the usage information of the gegl binary, this
Packit bc1512
documentation might not be complete.
Packit bc1512
Packit bc1512
usage: /home/pippin/src/gegl/bin/.libs/lt-gegl [options] <file | -- [op [op] ..]>
Packit bc1512
Packit bc1512
  Options:
Packit bc1512
     -h, --help      this help information
Packit bc1512
Packit bc1512
     -i, --file      read xml from named file
Packit bc1512
Packit bc1512
     -x, --xml       use xml provided in next argument
Packit bc1512
Packit bc1512
     --dot           output a graphviz graph description
Packit bc1512
Packit bc1512
     -o, --output    output generated image to named file, type based
Packit bc1512
                     on extension.
Packit bc1512
Packit bc1512
     -p              increment frame counters of various elements when
Packit bc1512
                     processing is done.
Packit bc1512
Packit bc1512
     -X              output the XML that was read in
Packit bc1512
Packit bc1512
     -v, --verbose   print diagnostics while running
Packit bc1512
Packit bc1512
All parameters following -- are considered ops to be chained together
Packit bc1512
into a small composition instead of using an xml file, this allows for
Packit bc1512
easy testing of filters. Be aware that the default value will be used
Packit bc1512
for all properties.
Packit bc1512
Packit bc1512
Appendixes
Packit bc1512
Packit bc1512
Operations
Packit bc1512
Packit bc1512
The main source of documentation as GEGL grows is the operations
Packit bc1512
reference. Plug-ins themselves register information about the
Packit bc1512
categories they belong to, what they do, and documentation of the
Packit bc1512
available parameters.
Packit bc1512
Packit bc1512
Glossary
Packit bc1512
Packit bc1512
connection
Packit bc1512
Packit bc1512
    A link/pipe routing image flow between operations within the graph
Packit bc1512
    goes from an output pad to an input pad, in graph glossary this
Packit bc1512
    might also be referred to as an edge.
Packit bc1512
Packit bc1512
DAG
Packit bc1512
Packit bc1512
    Directed Acyclic Graph, see graph.
Packit bc1512
Packit bc1512
graph
Packit bc1512
Packit bc1512
    A composition of nodes, the graph is a DAG.
Packit bc1512
Packit bc1512
node
Packit bc1512
Packit bc1512
    The nodes are connected in the graph. A node has an associated
Packit bc1512
    operation or can be constructed graph.
Packit bc1512
Packit bc1512
operation
Packit bc1512
Packit bc1512
    The processing primitive of GEGL, is where the actual image
Packit bc1512
    processing takes place. Operations are plug-ins and provide the
Packit bc1512
    actual functionality of GEGL
Packit bc1512
Packit bc1512
pad
Packit bc1512
Packit bc1512
    The part of a node that exchanges image content. The place where
Packit bc1512
    image "pipes" are used to connect the various operations in the
Packit bc1512
    composition.
Packit bc1512
Packit bc1512
input pad
Packit bc1512
Packit bc1512
    consumes image data, might also be seen as an image parameter to
Packit bc1512
    the operation.
Packit bc1512
Packit bc1512
output pad
Packit bc1512
Packit bc1512
    a place where data can be requested, multiple input pads can
Packit bc1512
    reference the same output pad.
Packit bc1512
Packit bc1512
property
Packit bc1512
Packit bc1512
    Properties are what controls the behavior of operations. Through
Packit bc1512
    the use of GParamSpecs properties they are self documenting via
Packit bc1512
    introspection.
Packit bc1512
Packit bc1512
Directory overview
Packit bc1512
Packit bc1512
GEGL dirs
Packit bc1512
Packit bc1512
Directories marked with ⊙ use GNU make extensions to include any .c
Packit bc1512
file dropped into the directory in the build.
Packit bc1512
Packit bc1512
gegl-dist-root
Packit bc1512
Packit bc1512
Packit bc1512
 ├──gegl               core source of GEGL, library init/deinit,
Packit bc1512
 │   │
Packit bc1512
 │   ├──buffer         contains the implementation of GeglBuffer
Packit bc1512
 │   │                  - sparse (tiled)
Packit bc1512
 │   │                  - recursivly subbuffer extendable
Packit bc1512
 │   │                  - clipping rectangle (defaults to bounds when making
Packit bc1512
 │   │                    subbuffers)
Packit bc1512
 │   │                  - storage in any babl supported pixel format
Packit bc1512
 │   │                  - read/write rectangular region as linear buffer for
Packit bc1512
 │   │                    any babl supported pixel format.
Packit bc1512
 │   ├──graph          graph storage and manipulation code.
Packit bc1512
 │   ├──module         The code to load plug-ins located in a colon seperated
Packit bc1512
 │   │                 list of paths from the environment variable GEGL_PATH
Packit bc1512
 │   ├──operation      The GeglOperation base class, and subclasses that act
Packit bc1512
 │   │                 as baseclasses for implementeting different types of
Packit bc1512
 │   │                 operation plug-ins.
Packit bc1512
 │   ├──process        The code controlling data processing.
Packit bc1512
 │   └──property-types specialized classes/paramspecs for GeglOperation
Packit bc1512
 │                     properties.
Packit bc1512
Packit bc1512
 ├──examples ⊙        hello-world and other example uses of the GEGL API.
Packit bc1512
Packit bc1512
 ├──tests             various tests used to maintain stability when developing
Packit bc1512
 │                    GEGL.
Packit bc1512
Packit bc1512
 ├──operations        Runtime loaded plug-ins for image processing operations.
Packit bc1512
 │   │
Packit bc1512
 │   ├──core ⊙        Basic operations tightly coupled with GEGL.
Packit bc1512
 │   ├──affine        Transforming operations (rotate/scale/translate)
Packit bc1512
 │   ├──generated ⊙   Operations generated from scripts (currently
Packit bc1512
 │   ├──external      Operations with external dependencies.
Packit bc1512
 │   ├──common ⊙      Other operations.
Packit bc1512
 │   └──workshop ⊙    Works in progress, (you must pass --enable-workshop
Packit bc1512
 │       │            when configurig to build these by default, you can enter
Packit bc1512
 │       │            the directory manually and type make && sudo make install
Packit bc1512
 │       │            as well.
Packit bc1512
 │       │
Packit bc1512
 │       ├──external  operations in the workshop with external dependencies.
Packit bc1512
 │       └──generated generated operations that are in the workshop.
Packit bc1512
Packit bc1512
Packit bc1512
 ├──docs              The GEGL website (this documentation), built for your
Packit bc1512
 │   │                the corresponding sourcetree with correct documentation
Packit bc1512
 │   │                etc.
Packit bc1512
 │   │
Packit bc1512
 │   └──gallery ⊙     A gallery of sample GEGL compositions, using the
Packit bc1512
 │       │            (not yet stabilized) XML format.
Packit bc1512
 │       │
Packit bc1512
 │       └──data      Image data used by the sample compositions.
Packit bc1512
Packit bc1512
 ├──bin               gegl binary, for processing XML compositions to png files.
Packit bc1512
Packit bc1512
 ├──bindings          bindings for using GEGL from other programming languages
Packit bc1512
 │                    not included in the tarball distribution but exist in
Packit bc1512
 │                    the git repository.
Packit bc1512
Packit bc1512
 └──tools             some small utilities to help the build.
Packit bc1512
Packit bc1512
Table of Contents
Packit bc1512
GEGL
Packit bc1512
Features
Packit bc1512
News
Packit bc1512
Gallery
Packit bc1512
Copyright
Packit bc1512
Contributors
Packit bc1512
Todo
Packit bc1512
Building from source
Packit bc1512
Download
Packit bc1512
Dependencies
Packit bc1512
Compiling
Packit bc1512
Developer notes
Packit bc1512
Documentation
Packit bc1512
Operations
Packit bc1512
Public API
Packit bc1512
Operation API
Packit bc1512
Environment
Packit bc1512
gegl
Packit bc1512
Appendixes
Packit bc1512
Operations
Packit bc1512
Glossary
Packit bc1512
Directory overview
Packit bc1512
 
Packit bc1512
 
Packit bc1512
changes
Packit bc1512
bugzilla
Packit bc1512
mailarchive
Packit bc1512
browse online
Packit bc1512
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Packit bc1512
Last updated 2012-04-02 22:57:15 BST