Author Archive

GIMP 2.9.6 Released

Comments Off on GIMP 2.9.6 Released

After more than a year of hard work we are excited to release GIMP 2.9.6
featuring many improvements, some new features, translation updates for 23
languages, and 204 bug fixes.

As usual, for a complete list of changes please see
NEWS. Here we’d like to focus
on the most important changes.

Performance

GIMP now has support for experimental multi-threading in GEGL and will try to
use as many cores as are available on your computer.

We know GIMP can explode when using more than one core, but we keep it that way
so that we get as many bug reports as possible for this officially unstable
development version. This is because we really, really want to ship GIMP 2.10
with usable parallel processing.

On the other hand, you can always set the amount of cores to 1 if you couldn’t
be bothered to report bugs. For that, please tweak the amount of threads on the
System Resources page of the Preferences dialog.

Setting amount of threads in GIMP 2.9.6

GUI, Usability, and Configurability

Benoit Touchette improved mask creation workflow for users who use a ton of
masks in their projects. Now GIMP remembers the last type of mask
initialization, and you can use key modifiers + mouse click on layer previews
to create, apply, or remove masks. There’s a new button in the Layers
dockable dialog for that as well.

Easily create new mask with GIMP 2.9.6

To make that feature possible, Michael Natterer introduced saving of last
dialogs’ settings across sessions and made these defaults configurable via the
new Interface / Dialog Defaults page in the Preferences dialog.

Configurable Dialog Defaults in GIMP 2.9.6

Additionally, the Preferences dialog got a vertical scrollbar where
applicable to keep its height more sensible, and settings on individual pages
of the dialog can be reset separately now.

The Quit dialog got a few updates: automatically exiting when all the images
in the list have been saved, and a Save As button for every opened image
(clicking an image in the list will raise it easy checks).

Configurable Fill With option in GIMP 2.9.6

Yet another new feature is an option (on the screenshot above) to choose fill
color or pattern for empty spaces after resizing the canvas.

Better Hi-DPI Support

While most changes for better Hi-DPI displays support are planned for v3.0, when
GIMP is expected to be based on either GTK+3 or GTK+4, we were able to remove at
least some of the friction by introducing icon sizes at different resolutions
and a switch for icon sizes on the Icon Theme page of the Preferences dialog.

Configurable icon size in GIMP 2.9.6

On-canvas Interaction Changes

Michael Natterer did a huge under-the-hood work that is likely to affect user
interaction with GIMP bigly. Simply put, he moved a lot of on-canvas code
from tools like Rectangle Select, Measure and Path into reusable code.

The effect of that is multifold:

  • New tools can reuse on-canvas elements of other tools (adding shape drawing
    tools should be easier now, although we are not planning that for 2.10,
    unless someone sends a clean patch).
  • GEGL-based filters can be interacted with directly on the canvas
    (Spiral and Supernova so far as test case).

So far one still needs to write C code to make a GEGL-based filter use
on-canvas interaction. We expect to spend some time figuring out a way to
simplify this, possibly using the GUM language (see below).

Layers, Linear and Perceptual Workflows

Since we want to make workflows in linear color spaces more prominent in GIMP,
it was time to update the blend modes code. You can now switch between two
sets of layer modes: legacy (perceptual) and default (linear). The user
interface for switching was a quick design, we’d like to come up with something
better, so we are interested in your input.

Moreover, we made both compositing of layers and blending color space
configurable, should you have the need to use that for advanced image manipulation.

We also added a new Colors -> Linear Invert command to provide
radiometrically correct color inversion. And the histogram dialog now features
a toggle between gamma and linear modes—again, it’s a design we’d like to improve.

Thanks to Øyvind Kolås and his
Patreon supporters, GIMP now also has a
simple ‘blendfun’ framework that greatly simplifies implementing new color
modes. Ell made use of that by adding Linear Burn, Vivid Light, Linear Light,
Pin Light, Hard Mix, Exclusion, Merge, Split, and Luminance (RGB) blending modes
(most of them now also supported in the PSD plug-in).

Another prominent change is the introduction of the Pass Through mode for layer
groups. When this mode is used instead of any other one, GIMP mixes layers
inside that group directly to the layers below, skipping creation of the group
projection. The feature was implemented by Ell. The screenshot below features a
user-submitted PSD file that has TEXTURES layer group in the Pass Through mode,
as opened in GIMP 2.9.4 (left) and GIMP 2.9.6 (right).

Pass Through mode vs no Pass Through mode

Newly added color tags simplify managing large projects with a lot of layers
and layer groups. The screenshot below is a real-life PSD file opened in GIMP 2.9.6.

New User Interface Themes

To make more use of that feature, we need someone to step up and implement
multiple layers selection. For an initial research, see
this wiki page.

For full access to all the new features, we updated the Layer Attributes
dialog to provide the single UI for setting layer’s name, blending mode,
opacity, and offset, toggling visibility, link status, various locks,
color tags.

Updated Layer Attributes dialog

CIE LCH and CIE LAB

Under the influence of Elle Stone (and with her code contributions), CIE LCH
and CIE LAB color spaces are finding more use in GIMP now.

Color dialogs now have an LCH color selector that, in due time, will most
likely replace outdated HSV selector for reasons outlined by Elle in
this article.
The LCH selector also supports gamut checking.

A new Hue-Chroma filter in the Colors menu works much like Hue-Saturation,
but operates in CIE LCH color space. Moreover, the Fuzzy Select and the
Bucket Fill tool now can select colors by CIE L, C, and H.

Finally, both the Color Picker and the Sample Points dialog now display
pixel values in CIE LAB and CIE LCH.

Sample points in LCH and LAB, GIMP 2.9.6

Tools

New Handle Transform tool contributed by Johannes Matschke in 2015 has
been finally cleaned up by Michael Natterer and available by default. It’s
a little tricky to get used to, but we hear reports that once you get the
hang of it, you love it.

Thanks to Ell, the Warp Transform tool is now a lot faster, partially thanks
to a switch that toggles high-quality preview that isn’t always necessary.

All transformation tools don’t display grid by default anymore, and during
an interactive transformation the original layer gets hidden now. The latter
greatly simplifies transforming upper layer in relation to a lower layer.
Before that, the original layer used to block the view.

Free Select tool now waits for Enter being pressed to confirm selection, which
enables you to tweak positions of polygonal selection.

Painting

An important new feature that is somewhat easy to overlook is being able to
paint on transparent layers with modes other than normal.

Thanks to shark0r, the Smudge tool now has a Flow control that allows mixing
in both constant and gradient color while smudging. There’s another new option
to never decrease alpha of existing pixels while smudging in the tools options
now as well. For more on this, please read
this forum thread.

Canvas rotation has been improved: it got snappier in certain cases, and
rulers, scrollbars, as well as the Navigation dialog follow the rotation now.

Alexia introduced some improvements to the brush engine. For bitmap brushes,
GIMP now caches hardness and disables dynamic change of hardness to improve
painting performance. Bitmap brushes also don’t get clipped anymore, when
hardness is less than 100. Plus there’s a specialized convolution algorithm
for the hardness blur to make it faster now.

Processing Raw Images

Since 2.9.4, GIMP is capable of opening raw (digital camera) images via
darktable, and the plan was to open it up to more
plug-in developers, because nothing sparks a thoughtful, civil conversation
like a raw processor of choice.

This is now possible: 2.9.6 ships with a RawTherapee plug-in (v5.2 or newer
should be installed) and a new file-raw-placeholder plug-in that registers
itself for loading all raw formats, but does nothing except returning an error
message pointing to darktable and RawTherapee, if neither is installed.

Moreover, you can now choose preferred raw plug-in, when multiple options are
available on your computer. For this, open the Preferences dialog and go to
the Image Import page, then click on the plug-in you prefer and click OK to
confirm your choice. You will need to restart GIMP.

Better PSD Support

The PSD plug-in now supports a wider range of blending modes for layers,
at both importing and exporting: Linear Burn, Linear Light, Vivid Light,
Pin Light, and Hard Mix blending modes. It also finally supports exporting
layer groups and reads/writes the Pass Through mode in those. Additionally,
GIMP now imports and exports color tags from/to PSD files.

WebP support

We already shipped GIMP 2.9.2 with initial support for opening and exporting
WebP files, however the plug-in was missing a number of essential features.
Last year, we replaced it with a pre-existing plug-in initially written by
Nathan Osman back in 2011 and maintained
through the years. We now ship it by default as part of GIMP.

WebP exporting in GIMP 2.9.6

The new plug-in received additional contributions from Benoit Touchette and
Pascal Massimino and supports both ICC profiles, metadata loading/exporting,
and animation.

Metadata Viewing and Editing

Thanks to Benoit Touchette, GIMP now ships a new metadata viewer that
uses Exiv2 to display Exif, XMP, IPTC, and DICOM metadata (the latter
is displayed on the XMP tab).

Metadata viewer in GIMP 2.9.6

Moreover, Benoit implemented a much anticipated metadata editor that
supports adding/editing writing XMP, IPTC, DICOM, and GPS/Exif metadata,
as well as loading/exporting metadata from/to XMP files.

Metadata editor in GIMP 2.9.6

Filters

Thanks to contributions from Thomas Manni and Ell, GIMP now has 9 more
GEGL-based filters, including much anticipated Wavelet Decompose, as well
as an Extract Component plug-in that simplifies fetching e.g. CMYK’s K
channel or LAB’s L* channel from an image.

Another new feature that we expect to develop further is GUM—a simple
metadata language that helps automatically building more sensible UI for
GEGL filters. Here’s a quick video:

Resources and Presets

To make GIMP more useful by default, we now ship it with some basic presets
for the Crop tool: 2×3, 3×4, 16:10, 16:9, and Square.

Documents templates have been updated and now feature popular, contemporary
presets for both print and digital media.

What’s Next

We still have a bunch of bugs to fix before we can release 2.10 and we
appreciate all the huge and tiny useful patches contributors send us to that effect.

GIMP 2.9.8 is expected to ship with more bug fixes and an updated Blend
(Gradient Fill) tool that works completely on canvas, including adding and
removing color stops and assigning colors.

GIMP 2.10 blockers and the road to 3.0

Comments Off on GIMP 2.10 blockers and the road to 3.0

During WilberWeek 2017 in Barcelona, the GEGL/GIMP team discussed further development plans.

What’s Blocking The 2.10 Release

Deprecation of libgimp API. Some functions in libgimp need to be deprecated, and capable replacements need to be introduced. We started this shortly before WilberWeek, a lot more work needs to be done.

Introduction of the linear workflow. Currently GIMP has a few loose ends with regards to linear pixel data workflow introduced by Michael Natterer and Øyvind Kolås. The Linear switch in the histogram dialog is more of a prototype and needs a better implementation. Both the Curve and the Levels tools have to be adjusted to work on linear data and need a simple way to switch between linear/gamma-corrected modes. And there’s more work to be done here.

Rework of the layer modes. Michael and Øyvind introduced significant changes to how layer modes are stored in XCF. We now have legacy modes (from GIMP 2.8 and earlier), gamma-corrected modes and linear modes. We have a prototype UI to switch between these sets, but we need a more solid implementation that we’d be happy to ship in 2.10. And there’s more internal work to do.

Icon and UI themes. With dark themes, insensitive menu items are brighter than sensitive menu items. The problem may lie with the GTK+ pixbuf engine. We need to investigate that further. The new symbolic icon theme has design issues and is incomplete. Our current stance is that we may likely revert to color icons and a light theme as a default one (though we will still release symbolic icons and dark themes as alternatives settable in Preferences), unless dedicated designers step up to complete themes and icons.

Color management. While most of GIMP is now color-managed, the big missing bit is complete implementation of color management for GEGL-based filters. Currently it’s slow and clutters the UI. We need to fix that.

Warp Transform tool. The tool works well enough for small images, but lags on larger ones. We need to make it faster.

The usual bugfix routine. Currently, we have ca. 60 bug reports with the 2.10 milestone. Some of them are not essential and can be safely reassigned to the next milestone, but some definitey need our attention.

GTK+3 Port May Prove to Be A Bigger Change Than Expected

We have barely touched the ‘gtk3-port’ branch since 2012, while most of GIMP’s source code is actually related to UI.

The GTK+3 port compiles and appears to work at least for some users. However we need to sit down and do a complete code audit to figure out, how much work needs to be done to finish the port. We can’t provide any completion estimations at this time.

Depending on how much time this takes, we may end up switching to GTK+4 (we do like some aspects of the GTK+ Scene Graph Kit). This will be decided upon in due time.

Relaxing The No-New-Features Policy

We pride ourselves at releasing software that is very stable, although not state-of-the-art fast. This is because for stable releases, we have a policy of not introducing new features to keep the releases as bug-free as possible. Yet this policy proved a blocker for 2.10 since we have too many incomplete features, started by contributors, promising, yet not in release-shape.

We decided that these features should be disabled in 2.10, but can be added later in the stable branch, if they reach the stable state. This way, we don’t block exciting new features arrival for years, while still being able to ship regular releases. This would make our blocker list much smaller, and we could work in smaller steps.

Therefore if the GTK+3 port proves to be too long of a journey, we will start adding new features to 2.10 or launch a 2.11.x/2.12 series. This is too early to talk about it, but we think we need to be transparent about it.

How You Can Contribute

One of the reasons development of GIMP isn’t moving as fast as we’d like to is that we are stuck with completing v2.10, and we have a mostly featureless v3.0 ahead of us. We realize that it doesn’t motivate new developers to join and work on new features, but there is no easy solution. 2.10 has to be released, and the GTK+3 port has to be done.

However we see some ways to help contributors making GIMP better without waiting for the opening of the 3.1/3.2 series. One of the most common questions we hear is how to find bugs that are easy to fix to get started with hacking on GIMP. To amend that, we are tagging such bug reports as ‘newcomers‘, following recommendations of the GNOME Newcomers Initiative. You are welcome to come on IRC to discuss patches directly with the GIMP team. Jehan is also available for questions as the mentor for newcomers, if you feel lost.

If you do not write code, we shall soon be releasing Flatpak builds of GIMP, so you can help testing and providing feedback. This is currently in works by Jehan Pagès.

We shall post a complete report on WilberWeek 2017 once the event is over.

WilberWeek 2017

Comments Off on WilberWeek 2017

On January 27 – February 5, the team is meeting in Barcelona for WilberWeek—a week of project planning and vicious hacking.

This meeting is possible thanks to continuos donations from our community.

So far the agenda includes, but is not limited to:

  • preparing the 2.10 release;
  • working on the new GIMP plugins/asset interface + architecture;
  • reviewing all current patches in bugzilla and giving them a proper status;
  • doing interviews with developers/project members;
  • performing all kinds of project administrativa;
  • discussing how post-2.10 GIMP development is going to be done;
  • updating docs.gimp.org.

Expected participants are:

  • Michael Natterer, principal developer of GIMP
  • Øyvind Kolås, principal developer of GEGL
  • Michael Schumacher, project administrator
  • Ville Pätsi, GIMP contributor
  • Simon Budig, GIMP contributor
  • Jehan Pagès, GIMP and GEGL contributor
  • Thomas Manni, GIMP and GEGL contributor
  • Mukund Sivaraman, GIMP and GEGL contributor
  • Debarshi Ray, GNOME Photos lead developer, GEGL contributor
  • Jon Nordby, GIMP, GEGL, MyPaint contributor, imgflo / Flowhub developer
  • Aryeom Han, artist, animator
  • Antenne Springborn, media artist

The event is taking place in Can Serrat art centre in El Bruc, near Barcelona.

We invite local GIMP users to drop by for a chat and mutual insights.

Community-supported development of GEGL now live

Comments Off on Community-supported development of GEGL now live

Almost every new major feature people have been asking us for, be it high bit depth support, or full CMYK support, or layer effects, would be impossible without having a robust, capable image processing core.

Øyvind Kolås picked up GEGL in mid-2000s and has been working on it in his spare time ever since. He is the author of 42% of commits in GEGL and 50% of commits in babl (pixel data conversion library).

Thanks to his work, we shall be shipping GIMP 2.10 with 16/32-bit per color channel precision, linear pixel data workflow, and filters that have an on-canvas preview.

But we always need more from both GEGL and babl:

  • better performance (always);
  • more sophisticated use of GPU;
  • support for arbitrary RGB primaries and TRC (think using wide-gamut RGB, like rec2020);
  • support for CMYK and spot colors;
  • more GIMP filters available as GEGL operations.

And the list go on.

Which is why we ask you to support Øyvind via his Patreon page, so that the development of new features requested by you, our community, could go faster.

2016 in review

Comments Off on 2016 in review

When we released GIMP 2.9.2 in late 2015 and stepped over into 2016, we already knew that we’d be doing mostly polishing. This turned out to be true to a larger extent, and most of the work we did was under-the-hood changes.

But quite a few new features slipped in. So, what are the big user-visible changes for GIMP in 2016?

Better Handling of Layers, Channels, Masks, and Paths

Michael Natterer eliminated one of the big issues with the clipboard: not having an easy way to copy/paste layers and layer groups from one project to another. Now you can just select a layer or a layer group in the ”Layers” dialog, press ”’Ctrl+C”’, switch to a different project and press ”’Ctrl+V”’.

The ”Layer Attributes” dialog, which hasn’t been very useful, now provides the single UI for setting layer’s name, changing blending mode and opacity setting offset in X/Y, toggling visibility, link status, various locks.

Newly added color tags improve layers management and can be set via ”Layers” menu, ”Layer Attributes” dialog. They are also accessible via shortcuts and available for channels and paths (we don’t expect people to use it a lot, but it was too easy to implement).

The color tags feature is currently not very useful without multiple layers selection. This is something we’ve been meaning to do for quite a while. Last year we did a basic research on that, but we don’t expect to accomplish this task in time for GIMP 2.10, unless someone contributes a very good patch. If you are interested in helping out, please talk to us.

Moreover, for people who use a lot of masks, the workflow has been streamlined. Now GIMP remembers the last type of mask initialization, and you can use key modifiers + mouse click on layer previews to create, apply, or remove masks. Additionally, there’s a new button for that as well.

Remembering Defaults Across Sessions, Improved Configurability

We had to figure out a sane way for GIMP to remember last mask initialization settings, so we devised a whole new infrastructure to remember settings of various dialogs. The user interface to adjust those settings is now live on the new ”Interface -> Dialog Defaults” page in the ”Preferences” dialog. See the Making settings persistent in GIMP post for more details.

We also made various GIMP settings resettable in the ”Preferences” dialog. And since GIMP is a huge app, where settings tend to accumulate over the years, we added a vertical scrollbar to keep the height of the dialog sensible. Additionally, we reorganized some of the settings, e.g. on the ”Color Management” page.

Color Management

We already introduced a handful of changes to the color management implementation in 2015, when the code was rewritten by Michael Natterer pretty much from scratch become a core feature rather than a plug-in. But there was more to follow.

Now everything is color-managed in GIMP: all sorts of previews, the Color Picker tool, the painting tools etc. The only missing bit is the on-canvas preview for GEGL-based filters. Color transforms are extremely slow with LittleCMS, so we shall need more time to figure this out.

On a related matter, the Color Management section of the Preferences dialog now features new options to toggle color transforms optimization, so that you could choose between performance and color fidelity.

Additionally, toggling soft-proofing is just a few clicks away in the ‘View -> Color Management’ submenu now, along with rendering intent settings.

Better Tools

While we didn’t intend to work on tools a lot, there have been several interesting updates:

  • The ”Align” tool now has vertical offset setting (contributed by Jonathan Tait).
  • The ”Move” tool shows relative coordinates when moving guides and sample points (bug #770911).
  • The ”Text” tool got improved support for languages using Input Method Engines (contributed by Jehan Pages).
  • Both the ”Bucket Fill” and the ”Fuzzy Select” tool have a new ”Diagonal neighbors” option to select diagonally neighboring pixels (contributed by Ell).
  • The ”Intelligent Scissors” tool now allows to remove the last added segment with the ”’Backspace”’ key.

Split preview for GEGL-based filters

Michael Natterer added a new on-canvas preview feature for GEGL-based filters: splitting the view to compare the image before and after applying the filter. You can drag the ‘curtain’ to adjust the view and use key modifiers to swap before/after sides and the direction of the split (horizontal/vertical).

darktable

Tobias Ellinghaus of the darktable project contributed a new plug-in to load raw files into GIMP by having them developed in darktable. This is only available on platforms supported by darktable, i.e. Linux and macOS.

Since there is more than one raw processing plug-in out there, we intend to eventually add a way to set preferred raw plug-in. You can contribute a patch for that.

WebP support

Pascal Massimino and Benoit Touchette contributed a new WebP plug-in that supports loading/exporting of WebP files, along with ICC profiles, Exif and XMP metadata. The plug-in also supports animation.

Painting

In early 2016, we finally merged the branch by Jehan Pagès that introduces symmetric painting to all painting tools (Paintbrush, MyPaint Brush, Eraser etc.). The feature is available via a dedicated dockable dialog on per-image basis. Modes: Mirror, Tiling, Mandala (Kaleidoscope). The work on this feature was directly sponsored by the part of the community that uses GIMP for digital painting.

For bitmap brushes, GIMP now caches hardness and disables dynamic change of hardness to improve painting performance. Bitmap brushes also don’t get clipped anymore, when hardness is less than 100.

User Interfaces Changes

One of the most visible changes in GIMP is the new user interface themes along with new icon themes, available since v2.9.4 released last summer. We now ship GIMP with “Dark” theme and “Symbolic” icon theme enabled by default.

GIMP ships with 5 new themes (lighter, light, gray, dark, darker) overall. For users who prefer the old UI, we still ship the old default UI theme along with old colorful icons. There’s also some ongoing work on vector-based icons for better Hi-DPI displays compatibility.

We also fixed a number of usability issues. E.g. toolbox buttons do not grab focus anymore, which used to break the use of the ”’Tab”’ key and other canvas-related shortcuts after changing tools with a pointing device click.

GEGL and babl

GEGL and babl got their fair share of development focus. We only added a handful of new operations (”Saturation”, ”Gaussian Selective Blur” etc.), because most work on GEGL was performance improvements, house cleaning etc.

One interesting change, though, is the new ”gegl_operation_progress” function to report processing progress. It’s useful for reporting processing progress to a GEGL-based editor such as GIMP. For now, we use it in ”cartoon” and ”distance-transform” operations, but expect to use it in many more ops.

For babl, most changes were about improving performance (creating fast pixel data conversion paths and caching them) and fixing bugs.

What’s Next for GIMP

There are still many bugs to fix before we can release 2.10. In the mean time, we are planning to hold a week long developers meet-up in Barcelona at end of January. One of the topics will be cleaning up libgimp to get it into the releasable state for 2.10. We shall soon announce the full agenda for the Wilberweek.

Another upcoming major change is how linear/gamma-corrected workflows are implemented in GIMP. Since early January, Michael Natterer and Øyvind Kolås have been hacking on GIMP to make layer modes work on both linear and gamma-corrected image data correctly. This involved a lot of source code reorganization, and a major part of that work is already done.

Additional changes currently live in the ‘pippin/linear-is-the-new-black’ Git branch soon to be merged, and we hear good reports about it from some of our most sceptical users already.

Some other exciting news deserve a separate announcement.

We expect to ship GIMP 2.10 with 16/32-bit per color channel support, new color management implementation, and a great many improvements overall later this year. Our next focus will be completing the GTK+3 port to make the graphic tablets support fully functional on all supported platforms again and prepare GIMP for even more long overdue changes such as non-destructive image editing.

Making settings persistent in GIMP

Comments Off on Making settings persistent in GIMP

Until fairly recently GIMP didn’t do a very good job of remembering all the types of customizations. If you applied a filter to an image and liked the combination of options that you used, there was no way you could save that combination for a later use. If you carefully chose selection stroking options, the next time you had to stroke a selection, you had to define settings all over again.

Upcoming v2.10 has some major improvements in that department.

Adding a named preset for the Unsharp Mask filter in GIMP

Early in the current development cycle we started porting existing GIMP filters to GEGL operations and using the GEGL tool skeleton to wrap their GUIs into. This made it possible to automatically save each used combination as preset with a timestamp for a name, or manually—as a named preset. If you’ve been using v2.9.2 or v2.9.4, you most likely benefit from that already.

Using masks for digital photrography in GIMP

The second part of improvements started with reviewing a patch submitted by Benoit Touchette. As a professional photographer, he regularly works on hundreds of photos daily and has an extensive use of masks, so he needs to get from A to B extremely fast. Benoit came up with a clever idea to simplify adding new masks: clicking on layers’ previews. Various modifier keys would additionally define whether you apply and remove the mask or just drop the mask entirely.

Tooltips for handling masks quickly in GIMP

The difficult part was to come up with a way to remember the last used mask initiation setting not just within one session, but across sessions. So instead of creating a special case for just the Add Layer Mask dialog, Michael Natterer added a whole new infrastructure to automatically save and load the settings of dialogs.

All the dialog defaults are stored in the gimprc configuration file. To give you an idea, this is how stroking options are saved in gimprc:

(stroke-options
    (style solid)
    (antialias yes)
    (method line)
    (width 6.000000)
    (unit pixels)
    (cap-style butt)
    (join-style miter)
    (miter-limit 10.000000)
    (dash-offset 0.000000)
    (dash-info 0)
    (emulate-brush-dynamics no))

The options are preserved for dialogs like New Channel, Feather Selection, Stroke Path and others. To give you visual control over the settings, Michael created a new page in the Preferences dialog called Dialog Defaults.

Dialog Defaults preferences page in GIMP 2.9.5

You may have noticed a few more new things about the Preferences dialog. There is now a scrollbar on large pages to make the dialog fit small screens like the still popular 1366×768 on lower-end laptops (quite a few GIMP users reported that Preferences was getting too big). Additionally, some pages now feature a reset button that restores default settings.

The dialog defaults feature will be available in GIMP 2.9.6 and, eventually, in GIMP 2.10.

The introduction of filter presets and dialog defaults gets us closer to resolving #63610, #120829, and #599573, filed in 2001, 2003, and 2009 respectively. If you think that more dialogs could benefit from either saving their settings as defaults or getting named presets, please drop by on IRC or the mailing list for developers and tell us.

If you are interested in helping out with getting GIMP 2.10 released, please check out the TODO page.

GEGL 0.3.8 and babl 0.1.18 Released

Comments Off on GEGL 0.3.8 and babl 0.1.18 Released

New version of GEGL and babl are out with new features, minor improvements, and fixes. These releases in particular are intended to accomodate upcoming GIMP 2.9.4 that depends on several important bugfixes from both babl and GEGL. However there have been some interesting new features.

First of all, now GEGL operations can report processing progress so that GIMP or e.g. GNOME Photos could correctly render progress indication. So far this is only used in two operations, gegl:cartoon and gegl:distance-transform. We expect to propagate this new feature to more operations in the coming releases.

Secondly, linear and cubic resamplers provide better default image quality at downscaling now. In terms of quality, the output is comparable to that of NoHalo and LoHalo samplers, but processing time is shorter.

Additionally, file handlers finally register MIME types for loaders and try to guess file types by analyzing file content before falling back to file extension detection. This makes the file loading routine a little smarter.

Finally, the ‘gegl’ binary keeps getting more features like simple video filtering and encoding audio alongside video.

For the first time in quite a while a new GEGL release contains no new ports of existing GIMP filters. This is because there have been no related contributions for the last few months. There is still a lot of work to do, and we greatly appreciate your help with getting more filters ready for non-destructive workflows.

The complete list of changes is available in the NEWS file. Tarballs are up at download.gimp.org/.

Call for GIMP 2.10 Documentation Update

Comments Off on Call for GIMP 2.10 Documentation Update

With the upcoming GIMP 2.10 release we intend to finally close the time gap between releases of source code, installers, and the user manual. This means that we need a more coordinated effort between the GIMP developers team and the GIMP User Manual team.

For the past several months we’ve already been working on GIMP mostly in bugfix mode. It’s time to start updating the user manual to match all the changes in GIMP 2.10, and we would appreciate your help with that.

What Needs Doing

  • Updating the content. There have been a lot of changes since 2.8. For quite a while, we’ve been maintaining a structured list of changes in 2.10 specifically to assist technical writers in updating the user manual.
  • Translating the content. At some point we’d like to “freeze” the documentation so that translators could start updating localized versions of the user manual. Since GIMP is hosted at GNOME, you would have to contact your local GNOME translation team to get involved.
  • Resurrecting PDF builds. Years ago we chose DocBook/XML as a way to build both web (HTML) and printable (PDF) copies of the user manual from a single source. Unfortunately, there appear to be some issues with building PDF files presently. Someone would have to investigate, what’s causing this, and act accordingly.
  • Adding Search to the Online Docs. We’ve heard a number of requests to add basic search to the online docs. If you have an idea how to do that, please contact us.

How To Contribute

Technical documentation on hacking on the user manual is available in the respective Git repository.

The primary communication environment for all things documentation in the project is the [email protected] mailing list. We encourage you to talk to fellow team members publicly about which part of the documentation you are hacking on. This is because efficient collaborative effort requires full transparence.

If you have technical questions about features in GIMP 2.10, you can use either [email protected] mailing list or join the IRC channel, ask your question, and stick around for the answer.

We do not yet have an estimated time of arrival for GIMP 2.10, but there’s only so much time we can spend on completing this release before we can move to the next development cycle.

GEGL 0.3.6 Released

Comments Off on GEGL 0.3.6 Released

Last weekend, we released a new version of GEGL, graph based image processing framework used by GIMP and other free/libre graphics applications. Here are some of the most important changes.

There are two new operations: Saturation (works in both CIE LAB and CIE LCH color spaces) and the port of GIMP’s Selective Gaussian Blur filter. The operations for loading and saving video frames have been updated to work with FFmpeg 3.0. We also disabled the dcraw-based operation for loading raw images by default: the LibRaw-based operation does the job just as well and provides a better API.

Additionally, there have been some improvements in the ‘gegl’ binary: now you can change graph composition (namely, connect buffers to aux and other input pads) via the command line, and when a project is loaded for viewing, you can zoom in/out at cursor position on scroll wheel events. Moreover, you can now specify properties of operations on the command line, e.g.:

$ gegl input.png -o output.png -- threshold value=0.23

Among general improvements, copy-on-write handling for the gegl_buffer_clear function is now available. This should make clearing of buffers an initially cheaper and faster operation, with the actual allocation of tile memory (copying) amortised over subsequent pixel data writes to the buffer.

GEGL 0.3.6 is available at download.gimp.org.

There are still many GIMP filters to be rewritten as GEGL operations. Contributions are welcome!

StreamComputing launches GEGL-OpenCL project

Comments Off on StreamComputing launches GEGL-OpenCL project

This week, StreamComputing launches an educational initiative that aims to get more developers to study and use OpenCL in their projects. Within this project, up to 20 collaborators will port as many GEGL operations to OpenCL as possible.

Vincent Hindriksen and Adel Johar who organize this project seek a way for the group to educate themselves. One of the ways is to gamify the porting by benchmarking the kernels and defining winners, and another way is to optimize kernels within StreamComputing to push the limits. Victor Oliveira, who wrote most of the OpenCL code in GEGL, joined the GEGL-OpenCL project to advise.

So far 7 participants have joined the project, so if you are interested in learning OpenCL and helping GEGL and GIMP get hardware acceleration for more of their features, email Vincent.

All work is being done on GitHub (check out the project’s description there for information on porting and benchmarking). The communication between participants is taking place in a dedicated Slack channel (request an invite from Vincent or Adel).

StreamComputing is a Dutch software development company that provides training and consulting services in the area of GPU programming and parallel processing.

GEGL is a free/libre graph based image processing framework used by GIMP, GNOME Photos, and other free software projects.