Blame README

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