Older blog entries for pippin (starting at number 26)

Public GEGL API Reference

Work is under way on documenting the GEGL API. The core of the API is rather small (less than 15 entry points for the core of creating and processing image compositions, and the rest is syntactic sugar or state queries).

Please also look through this API with a critical eye and report thoughts on the API back to the GEGL mailing-list. Improvements to the text itself are best sent as a patch against gegl.h in subversion.

The document is transformed from .h into .html by a ~500 line HTML/CSS/ruby/regexp contraption.

The rest of the web on gegl.org is still the one from the previous release, when the next release is done the API Reference will also be linked from the front page.

Syndicated 2007-01-25 12:06:36 from codecave.org

GEGL 0.0.4 released

The first GEGL tarball, of version 0.0.4, has just been released from the 23rd Chaos Communication Congress in Berlin.

Full release announcement follows:

What is GEGL?

GEGL is a graph based image processing framework offering non-destructive image processing and compositing on large images. GEGL is suitable for projects ranging from small one-off projects to interactive applications.

GEGL is built on top of the libraries glib and babl:

  • GLib is the low-level core library, also forming the basis of GTK+ and GNOME. It provides data structure handling for C, portability wrappers, plug-in handling and object system used for object oriented structuring of the framework.
  • babl is a library for dynamically handling pixel formats and managing conversions between them.

What's new in 0.0.4?

This is the first public release of GEGL.

  • 8bit, 16bit integer and 32bit floating point, RGB, CIE Lab, YCbCr and naive CMYK output.
  • Extendable through plug-ins.
  • XML, C and Python interfaces.
  • Memory efficient evaluation of sub-regions.
  • Tiled, sparse, pyramidal and larger than RAM buffers.
  • Rich core set of processing operations
    • PNG, JPEG, SVG, EXR, RAW and other image sources.
    • Arithmetic operations, porter duff compositing operations, SVG blend modes, other blend modes, apply mask.
      • Gaussian blur.
      • Basic color correction tools.
      • Most processing done with High Dynamic Range routines.
      • Text layouting using pango

The public API is now in a state where extended testing is desirable. The public API is the functions exposed in gegl.h which most applications using GEGL will interface with, either directly or through bindings for a dynamic language. The changes needed as usage patterns emerge are expected to be small.

Although adding new operations now is easy the API used is still considered highly experimental. The file format used for testing is not stable either and is expected to continue maturing.

In the release there is also some sample code exercising the framework, in proportion to the amount of work put into the library almost no time has yet been invested in improving the usability of this GUI.

Where to get GEGL

GEGL, babl and glib can be fetched from:

ftp://ftp.gimp.org/pub/babl/0.0/babl-0.0.8.tar.bz2
ftp://ftp.gimp.org/pub/gegl/0.0/gegl-0.0.4.tar.bz2 ftp://ftp.gimp.org/pub/glib/2.12/glib-2.12.6.tar.bz2

The integrity of the tarballs can be verified with:

$ sha1sum *.bz2
8ba35c6eae58fd1f89e2ba1b09f3927d93dec57e  babl-0.0.8.tar.bz2
3476715723d58fd703a72c93c4f82945e7fb23a2  gegl-0.0.4.tar.bz2
30cf64bc5c93d5fbba23ea00fb9270d29fb81f8d  glib-2.12.6.tar.bz2

Where to get more information about GEGL

Information about GEGL can be found in the GEGL documentation, the README is a text only version of the HTML documentation generated during a build. This is also the contents of http://www.gegl.org/.

/Øyvind Kolås @23c3

Syndicated 2006-12-30 00:04:10 from codecave.org

Improved Aurora Borealis

I've added a basic local contrast stretching/tonemapping algorithm to the experimental regions of the GEGL codebase. I reused other ops for most of the functionality needed and coded it as a meta-op/macro op/graph op, with only a single specialized op to do the actual remapping. tried reusing as much code as possible. Since then I've been trying to make graphviz based visualization of GEGLs state (the nodes, graphs and properties). This allows to see how the tonemapper works, as well as closer inspection of the samples in GEGL gallery.

Putting together the pieces used to construct the contrast stretcher, would not be possible in a tree view such as the one used by the GEGL editor nor in OpenRaster using the hierarchical stacks, since it needs a node that has three inputs and one output to work properly. (Thus such macros/scripts should be DAGs like in the SVG Filter specification if OpenRaster is going to support this concept.

The tonemapper isn't good enough to properly with some of the OpenEXR test images (ugly sample). Even just adding a fader to allow controlling the amount will probably improve this situation slightly.

(Photograph of Aurora Borealis over Gjøvik by EJH)

Syndicated 2006-12-27 22:45:03 from codecave.org

GEGL Earth

I like large images, sometimes I create my own by stitching them together like the ones in my panorama galley. The image I'm using to stress GEGL at the moment is stitched by NASA instead, and is the hugest image file I've got, the image measures 86400x43200px (~11G uncompressed 24bpp)

Two new features were needed in GEGL before I could try to load such a large (larger than RAM) image. Both of them planned since I was experimenting with horizon as a protoype running on my PDA in the beginning of this year. An tiled image pyramid (mipmap) to enable display on screen without needing to access all image data combined with a swapfile backend for the tile system.

Both the swapping and the logic for updating the pyramid needs some further work, swap to gain some more features, the pyramid to be speedier when regions of the backing data changes.

If I am able to find the time to do what I want I should be able to do a GEGL composited, editable presentation about GEGL in the style of the presentation I gave at LGM in Lyon last year for FOSDEM next year.

Syndicated 2006-12-19 17:49:53 from codecave.org

Code committal aids

To reduce the number of keypresses needed to do a commit to CVS I use the following tools:

prepare-ChangeLog.pl
Which extracts which detects which files have changed, and writes a ChangeLog entry template.
gvim
A text editor to edit code, as well as tuning and trimming the generated ChangeLog entry.
ChangeLog entry template.
cicl
Which does the commit described in the first ChangeLog entry.

This allows me to trim away the changes not yet ready to be commited, the commit script then commits the changes with the last entry from the ChangeLog as commit message.

This termgrab shows how it being used in practise:

$ prepare-ChangeLog.pl
  Updating ChangeLog from cvs repository.
    M ChangeLog
  Running cvs diff to find changes.
  Extracting affected function names from C source files.
  Editing the ChangeLog file.
  Done editing ChangeLog.
$ gvim ChangeLog #remove files to be kept from commiting, add comments
$ cicl
Checking in ChangeLog;
/cvs/gnome/gegl/ChangeLog,v  $ 

Entry was updated:Changed to reflect current reality, I originally had my own ruby script to do the commit, but cicl a shorter perl version does the same job, and already existed

Syndicated 2006-11-25 21:26:03 from codecave.org

Rosing awards to StopMotion and OOo translators

StopMotion received the student award, and OpenOffice.org's Norwegian translation team the language award at the annual Rosing award ceremony held by the Norwegian Computer Society.

Open Source Rosing Awards 2006, StopMotion and OpenOffice Translation team. Øyvind Kolås, Fredrik Berg Kjøstad, Bjørn Erik Nilsen, Axel Boyer. Photo: Knut Yrvin

StopMotion is a stop-motion animation program for Linux developed in the spring of 2005 at Gjøvik University College as a student project for SkoleLinux|DebianEdu. The students created a basic stopmotion animation creation tool for use in schools. I participated in the supervision of the two students and it was great fun to observe them adhering to open source methods and practices succesfully - making the application end up in several distros during the initial project period.

Syndicated 2006-11-21 15:16:32 from codecave.org

Evolving the GUI^Wpublic API

The GEGL GUI testbed is evolving, and is now capable of saving output data as well. The most experimental new feature is search as you type addition of filters to a processing stack for non destructive editing. (1.6M gif anim.) It seems like an interface built on similar ideas could be quite effificent. This addition is a rearrangement of the existing code based on an idea from GIMP developer mailing list.

All menus and dialogs in the GEGL ui.

Such user interfaces for GEGL should probably not be written in C but in dynamic programming languages like Ruby or Python. Proper bindings for these languages do not exist yet. This C based GUI will give insights into what features are needed to succesfully leverage GEGL in GUI applications. This GUI is a developer toy and behavior, appearance, stability, fileformat and scope of features are prone to change with the phase of the moon.

Syndicated 2006-11-06 00:10:52 from codecave.org

GEGL and babl mingling with other piksels

This week I'm going to the piksel 06 festival for free/libre and open source audiovisual software, hardware and art. There I'm going to present the state of GEGL, babl and OpenRaster. In order to have more demoable things for the presentation, some effort is going into an initial test GUI, that mostly is code readapted from bauxite, the video compositing editor built on top of gggl when experimenting with concepts for GEGL.

It looks a lot better than it is, it has a few known crasher bugs, it (or rather GEGL) is a lot slower than neccesary due to lack of caching/intelligent redraw, and more, but at least it works.

Another nice thing is that GEGL now supports loading of OpenEXR thanks to a new file-io operation made by Dominik Ernst. Getting some of the sample images into GEGL and playing with adjustments and blurs confirms that GEGL is HDR capable, but without range remapping ops, it isn't very interesting.

There still is time to brush things up before the conference, but I'm looking forward to demonstrate the current capabilties as well as present the design, use and extension mechanisms of the current GEGL architecture.

Syndicated 2006-10-09 16:53:44 from codecave.org

Accelerated Development

GEGL has gone from being dead, to be dormant last autumn, then undead this spring. The amount of required refacoring and polish needed before the releasing a first beta tarball is decreasing and general development is picking up speed, and tools to monitor performance and regressions are being made.

Since GEGL was undead it has gotten contributions from 6 new contributors, this seems to indicate that my work to make the code approachable by others is bearing fruit.

Syndicated 2006-09-21 01:05:40 from codecave.org

Panoramic Summer 2


During my roadtrip in the US, I shot a few panoramic pictures, not all of them came out well, and some of them are yet to be fully processed. Here are two random samplings of the Ontario/upstate New York.


Syndicated 2006-09-18 20:06:15 from codecave.org

17 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!