Some highlights this release:
- GEGL has been succesfully built on win32
- Bindings for C#, Python and Ruby
- Some profiling induced performence enhancement
I have the pleasure to present at FOSDEM this year. Part of doing a main-track presentation at FOSDEM is the speaker interview, the good people of FOSDEM performed it by email. Doing it by email gave me ample time to consider what I wanted to say, as well as getting help from other people involved with GEGL to correct my worst abuses of the english language. Read the interview.
GEGL 0.0.10 Released
Some highlights this release:
Ruby meets GEGL
GEGL is written in C, but I think and hope that interesting applications will surface written in higher level languages. I am having fun combining GEGL Ruby, GTK+ and cairo in a test application that focuses entirely on manipulating objects in a zoomable canvas on the canvas that uses pie menus. The test application and the rest of the code for the user interface resides in the nicely forming rgegl extension for Ruby.
It is nice to code in Ruby again, it seems like I can get much more done in one hour with ruby than a whole evening with C.
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.
GEGL 0.0.4 released
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:
What's new in 0.0.4?
This is the first public release of GEGL.
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:
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
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)
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.
Code committal aids
To reduce the number of keypresses needed to do a commit to CVS I use the following tools:
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
Rosing awards to StopMotion and OOo translators
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.
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!