GIMP and GEGL in 2015

We hope you are having great holidays. Here is our annual report about project activities in 2015.

It’s been an interesting year for GIMP. For the most part, we focused on completing the GEGL port which involved rewriting all the source code related to color management. The vast majority of this work was done by Michael Natterer between April and November. The new implementation is much cleaner and is built right into the core of GIMP. Here are some of the new features:

  • pasting an image into another image that has a different color space just works now;
  • GIMP detects color space defined in Exif 2.21/DCF 2.0 option files;
  • greyscale images are finally color-managed;
  • layer and image previews are color managed too now.

The few missing features are color management for the color picker tool and color selection dialogs. This will be completed before the final v2.10 release.

Michael Natterer also resurrected Intelligent Scissors selection tool—the last one that wasn’t ported to GEGL—and added undo support for selections in progress.

Elle Stone added decomposition and composition of images to/from CIE LCH, a perceptually uniform color space that includes all perceivable colors and thus has a gamut larger than color spaces based on RGB and CMYK color models.

Rupert Weber, Jörn Meier, Massimo Valentini, Elle Stone, Thomas Manni, and Michael Natterer introduced a few improvements to the blending modes:

  • The Overlay mode is not identical to Soft Light mode anymore and relies on a widely used formula from both PDF AND W3C’s “Compositing and Blending Level 1” specification now.
  • There are CIE LCH based version of Hue, Chroma, Color, and Lightness blending modes available now in addition to their HSV based versions. See an explanation by Elle Stone for details.

Another development focus was on painting features. As requested by people using GIMP for digital painting, Jehan Pagès and Michael Natterer added the automatic saving of used colors into a new Color History palette. The palette is also part of the color selection dialog and the FG/BG dockable dialog.

In early 2015, Michael Natterer added a quick first version of MyPaint Brush tool that used MyPaint’s brush engine available separately. Daniel Sabo, Alexia, and Jehan Pagès revisited this mini-project in December and vastly improved it by making its performance comparable to GIMP’s own brush engine and adding support for smoothing brush strokes. Michael also made it possible to tag and filter MyPaint brushes. The tool is now very stable enough and will be enabled by default in future releases of GIMP.

MyPaint Brush tool in action
MyPaint Brush tool in action. Painting courtesy by Alexia

Additionally, Michael Natterer added canvas flipping that nicely complements canvas rotation and is intended to help painters evaluate their work mirrored horizontally or vertically without having to undo the transformation. Thanks to Simon Budig you can map shortcuts to various commands related to both canvas rotation and flipping to speed up your workflow.

Rotating and flipping the canvas
Rotating and flipping the canvas. Painting courtesy by Evelyne Schulz

We also improved support for various file formats:

  • Tobias Ellinghaus from the darktable team made the EXR loading color-managed by generating an ICC profile from the embedded white point and chromaticities on the fly, assuming linear gamma images.
  • ShadowKyogre, Massimo Valentini, and Michael Natterer fixed several existing bugs in the PSD plugin and improved support for PSD files with greater than 8-bit depth precision.
  • Mukund Sivaraman and Tobias Ellinghaus added the reading and writing of PFM (portable floatmap) files commonly used in HDR imaging.
  • Joao S. O. Bueno implemented exporting and loading group layers in OpenRaster files—a new feature in upcoming MyPaint 1.2.0.
Adjusting exposure of a 32-bit float PFM file
Adjusting exposure of a 32-bit float PFM file

The next development focus was on GIMP’s visual identity.

Benoit Touchette, Michael Natterer, and Jehan Pagès added the ability to switch between icon themes. GIMP now ships with an optional symbolic icon theme originally created by Barbara Muraus with contributions from Jakub Steiner, and Klaus Staedtler.

Benoit Touchette also added an experimental dark theme that should work better for people who work on hi-color images. GIMP also ships a negative version of the symbolic icon theme to go with the dark theme.

Editing a photo in GIMP with a dark theme enabled
Editing a photo in GIMP with a dark theme enabled. Photo courtesy by Pat David

Michael Natterer revisited the screenshot plug-in’s source code. It is now easier to add support for new screenshooting backends (Windows, Wayland etc.).

Michael Henning and Massimo Valentini fixed several bugs in the image ruler code that affected performance during painting. This vastly improved painting experience on Linux, but we hear that Windows users still experience issues, so we’d appreciate a wider testing and code contributions. For now, you can temporarily disable the ruler for your painting sessions.

Johannes Matschke contributed an experimental Handle Transform tool that allows scaling, rotation, shearing, and adjusting perspective with handles placed by a user on the canvas. Michael Natterer further improved the tool’s usability.

Michael also merged, improved, and marked as experimental another new tool, N-Point Deformation, contributed by Marek Dvoroznak a few years ago as the main objective of his Google Summer of Code project. The tool makes it possible to apply rubber-like transformation to objects.

GEGL 0.3.0, released in June, featured over 70 new filters/operations, as well as experimental multithreading and mipmaps support. We do not extensively use mipmaps in GIMP yet, but this will change in the coming releases. Further GEGL updates released this year reintroduced the loading and saving of video frames via FFmpeg, various optimizations, and more new operations, such as libraw based operation for loading RAW images (not yet exposed in GIMP).

Most of the work we did this year is available in v2.9.2, the first development release in 2.9.x series made in late November. Improved MyPaint Brush tool and visual changes (icon themes, dark theme) will be available in upcoming v2.9.4 release.

We expect to continue finalizing the GEGL port and the existing feature set in 2016. There are two branches with new features to review, but other than that we do not expect any major changes in the 2.9.x series of releases.

Last but not least, we owe a great debt to Pat David for redesigning and launching our new website for the 20th anniversary of the project that we celebrated in November.