Friday, August 21, 2015

New PhotoFlow release 0.2.0 is out, with a new and improved GUI

I'm happy to announce that the latest PhotoFlow version 0.2.0 is out!

The new version is currently only available as source code from the master branch on github
Linux, Windows and OSX packages will be provided very soon.

The main update in this version is the new GUI layout that uses a single window scheme instead of putting the controls of each layer into separate modal dialogs:

In this new layout, the list of layers has been moved to the left of the preview area, while on the right a new panel appeared which groups all the opened tool controls. The controls of a given layer are added to the right panel by double-clicking on the layer's name (in the previous versions, double-clicking on the layer name opened the controls dialog, so the logic is finally quite similar).

The basic parameters of the selected layer (name, blend mode, opacity and intensity) are duplicated above the layers list for quick access, even if the the main layer controls are not opened in the right panel:

The controls widgets that appear in the right panel, and which replace the old dialogs, have a common "header" followed by tool-specific widgets (sliders, curves, selectors, etc...):

The common header includes the basic layer parameters (name, blend mode, opacity and intensity), plus a number of small buttons:

Expand/collapse the controls.
Close the controls (it does no remove/delete the corresponding layer).
Toggle the layer  visibility. This button has the same effect as the corresponding check box in the layers list. Both can be used simultaneously.
Enable/disable the layer masks. When disabled, any grayscale layer mask associated to the layer is completely ignored. Useful to quickly preview the effect of a mask by toggling it on and off.
Toggle "sticky" flag on/off. When enabled, the preview area will always show the output of the corresponding layer, otherwise the composite output will be shown. Only one tool at a time will be set in "sticky" mode.
Toggle "editing" flag on/off. When enabled, mouse interactions in the preview area are allowed for the corresponding tool. Only one tool at a time will be set in "editing" mode.
The rest of the controls are basically equivalent to the ones available in the previous tools dialogs.

The "editing" flag probably deserves some additional clarifications. In PhotoFlow, several tools can be controlled via mouse interactions in the preview area. For example, control points can be added into a curves adjustment by control-clicking in the preview area, or the area selected by the crop tool can be adjusted by dragging the sides of a corresponding highlighted rectangle rendered on top of the preview image.
However, only one tool at a time can eventually interact with the preview area, otherwise it would be a complete anarchy. The "editing flag" toggle button serves exactly this purpose: it defines which tool takes exclusive control of the mouse interactions in the preview area.

This new release includes some additional changes/improvements:

  • updated G'MIC to the version
  • grouped mask-related tools in a new "mask" tab

As this release involves a quite extensive modification of the GUI source code, I cannot exclude more instabilities and crashes than usual. However, I have decided to release this new version as early as possible to hopefully receive feedback and improve it even further in the next releases, which will likely come quite frequently.

Wednesday, August 5, 2015

New PhotoFlow version 0.1.6 released

I'm pleased to announce that a new version of PhotoFlow has just been released on GitHub. This version brings a few nice new features and includes several improvements suggested here and there...

Here are the main improvements:

  • EXIF data is now copied from input images to the exported TIFF and Jpeg files. The EXIF data is handled through the GEXIV2 library (the same used by GIMP), therefore GExiv2 is needed from now on to compile PhotoFlow.
  • The preview image is now processed by multiple threads (one for each available CPU core), I expect some significant improvement on multi-core machines
  • A new "HSL mask" tool has been added: it allows to create a layer mask based on Hue, Saturation and Luminance curves
  • The icons associated to the layer masks now reflect the actual mask status (empty, enabled, disabled)
  • The G'MIC code has been patched to avoid crashes under OSX. Now most of the G'MIC filters work in a stable way on OSX as well

The OSX installer is available from here, while Ubuntu packages should soon be available from Dariusz Duma PPA. A windows installer will also follow in a short time and will be available from the same link os the OSX one.

For the next version, I plan to focus on finalizing the new controls interface, that will be hopefully more user-friendly than the present dialog-based one (see here for a preview)...

Any feedback will be highly appreciated!

Here is the full changelog:

  • Improved selection of curve points
  • The curve points for the generation of the mask for the the B/C/S/H (Brightness/Contrast/Saturation/Hue) tool can now be added by ctrl-clicking on the preview area.
  • Added feathering of B/C/S/H mask
  • Added H/S/L mask tool. The generated grayscale image is equivalent to the mask of the B/C/S/H tool, however the advantage is that it can be used as a generic layer mask to be associated to other tools (like curves, blurs, etc...)
  • Improved gaussian blur filter:
    • added memory caching at the filter input (improves performance significantly)
    • blur method is now the same for preview and rendering, and can be choosen from configuration dialog
    • blur method is fixed to "accurate" for radii below 5 pixels
    • blur method defaults to "fast" (sii) for radii larger than 5 pixels
  • Modified sinkscreen_pf.c to allow for parallel processing of dirty tiles (one thread for each available CPU core). This improves the responsiveness of the preview area on multi-core machines.
  • Input EXIF/XMP/IPTC metadata are now saved to the exported TIFF and JPG images, using GExiv2. Starting from this version, GExiv2 is therefore needed to compile PhotoFlow
  • Added default layer names for several tools (instead of the generic "New Layer")
  • Icons for the layer masks now represent the actual status of the mask:
    • white if mask is empty
    • a gradient if the mask contains one or more layers
    • a crossed gradient if the mask is not empty, but disabled
  • Updated French transaltions

G'MIC-related changes:

  • Added optional in-memory tile caching for G'MIC operations (one cache for each iteration)
  • Improved G'MIC bilateral smoothing (or "surface blur" filter):
    • added padding parameter based on spatial variance (scaled to actual zoom level)
    • "value variance" is now independent of zoom level (was incorrectly scaled together with the spatial variance)
    • enabled tile caching
  • Fixed multi-threaded processing of G'MIC filters under OSX (by protecting all sscanf calls with a global mutex)
  • The film processing presets have been moved from the "G'MIC" to the "color" category