------------------------------ GNU Image Manipulation Program Development Branch ------------------------------ This is the unstable development branch of GIMP. Here we are working towards the next stable release, which will be GIMP 2.10. Generally, all bug fixes that are applied on the stable GIMP 2.8 branch are also applied here, but they are usually not mentioned in NEWS. Overview of Changes from GIMP 2.9.4 to GIMP 2.9.6 ================================================= Core: - Make it possible to use multithreading in GEGL and raise max amount of threads to 64. Given how unstable this feature is, any value above 1 should be currently treated as a step inside an industrial microwave oven with the on/off switch on the outside. - New clipboard implementation allows copying/pasting layers and layer groups. - Color tags simplify managing large projects with a lot of layers and layer groups. - The Mouse Pointer dialog and colors applied to images are now color-managed. - Gamma and precision selectors for newly created images. - Never dither when converting to a higher bit depth, or to anything more than 16 bits; don't offer dithering options in these cases. - Default to linear TRC when converting to 16-bit float. - Pre-initialize some babl-based pixel format conversion routines at start-up to decrease the initial lazy intialization cost for some interactions. - Remove max size limitation of 4GB for XCF files. - Support clipboard images in the clipboard brush and pattern. Layers and compositing: - Layer modes' code is now refactored to separate gamma-corrected variations from the linear light ones, legacy modes have been preserved to support older XCF files. UI to switch between the two is experimental and should be treated as a temporary design. - Blending and compositing of layers are configurable separately for more flexibility now, compositing can be linear TRC, perceptual TRC or CIE LAB. - Layer blending color space and compositing color space are configurable now. - New layer modes: linear burn, vivid light, linear light, pin light, hard mix, exclusion, merge, split, luminance (rgb). - Make erase mode an ordinary layer/paint mode. - Better performance of HSV-based layer modes. - Rename "Color (HSV)" mode to "Color (HSL)" to indicate the actual color space being used. On-canvas interaction changes: - Refactor on-canvas interaction code out of some of the tools and make it reusable. - Update tools accordingly. - Make on-canvas interaction accessible to GEGL-based filters and use it in the Spiral and Supernova filters as a test case. GUI and usability: - Easily add or remove layer masks by clicking either the layer preview or a new button in the Layers dialog. - Enhance 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. - Add a Save As button to the “Quit GIMP” dialog and raise images on click for easy checks. - Allow to choose fill color when resizing layers and images. - Quick Mask and Channel Attributes dialogs use the new spinscale widget for the mask opacity slider. - Enable grid views of dynamics and tool presets. - Allow to zoom with middle mouse button + control + drag up/down. - For all paint tools, when switching to the color picker mode, don't rely on the exact modifier being pressed or released. Instead, check if only the right modifier is pressed after *each* modifier change, and switch to color picking if it is. - On startup, GIMP checks for duplicate accelerators in menus, and removes duplicates. - Standard (Freedesktop) and GTK+ icons can now be set by the icon theme for a fully consistent style. - Many new icons. - Toolbox buttons do not grab focus anymore, which used to break usage of the Tab key and other canvas-related shortcuts after changing tools with a pointing device click. - Delete Layer/Channel/Path are consistently the last option in respective dialogs now. - Extend the text along the tangent of the last path stroke, when the length of the path is shorter than the width of the text to be warped. - Allow to toggle the histogram dialog between gamma and linear. - New 'Colors -> Linear Invert' command to provide radiometrically correct color inversion. - Quit dialog now exits when all the images in the list have been saved. - The built-in error dialog now displays errors outputted by GEGL. - Shift-clicking the visibility icon of a layer in a layer group now toggles its exclusive visibility within this layer group. Color selection and management: - Add the profile import policy to Preferences -> Import. - Color management for GEGL-based filters is expensive, so it's off by default for now, and options are hidden by default too. - Add LCH color selector, with support for gamut checking. - Default to magenta for out-of-gamut color. - Make all script-fu color buttons color-managed. Configurability: - Remember settings of many dialogs across sessions. - New Interface / Dialog Defaults page in the Preferences dialog to control defaults values of various dialogs. - Settings on some individual pages of the Preferences dialog can be reset separately now. - Vertical scrollbar added to keep the height of the Preferences dialog fitting small displays. - Allow mouse to optionally configure tablet devices - Allow creating shortcuts containing the Cmd key + mouse wheel events. - Default to 300ppi and 1920x1080px for new documents. - Do not allow Alt+[0-9] shortcuts, they are typically reserved for display switching. - Icons size is now a configurable option, not a theme feature. The icon size is also auto-guessed from monitor resolution now. - It is now possible to have keybindings for previous/next/top/bottom vectors. Tools: - Complete the Handle Transform tool and make it available by default. - Add Hue-Chroma operation/tool that operates in CIE LCH color space. - Replace Color Balance, Colorize and Hue-Saturation with GEGL-based filters with a custom user interface to ease future transition to non-destructive editing planned for v3.2. Remove the "Image -> Tools -> Color Tools" submenu. - The Move tool now shows relative coordinates when moving guides and sample points. - The Measure tool has better digit precision now (before that, at 4000 PPI, up to 7 pixels would show up as 0 mm, then at 0.1 mm from the 8th pixel etc.). - Performance of the Fuzzy Select and the Bucket Fill tool has been improved. - The Fuzzy Select and the Bucket Fill tool now can select colors by CIE L, C, and H. - Unclutter transform tools: default to "no grid", hide the original layer during the interactive transform (except for the Flip tool). - Make the Warp Transform tool faster, add more options, use the linear sampler to ensure crisp lines after an erase. - Select by Color and Color Picker tools work now correctly in color spaces other than sRGB. - Free Select tool now waits for Enter being pressed to confirm selection, which enables you to tweak positions of polygonal selection. - Color Picker doesn't snap to anything when picking colors anymore, always draws the outline of the averaged region (not only while the mouse is being pressed), and supports arbitrary range of values regardless of the actual image color precision. - Color Picker now displays pick position (also visible in the Sample Points dialog now), as well as values in CIE LAB and CIE LCH. - Uncommitted selection by the Intelligent Scissors tool is not discarded on tool change anymore. - For Intelligent Scissors, GIMP now checks whether the first and the last isegments are distinct before closing the curve. - Flip tool: add Clipping option to the flip tool. Add support for reflecting across guides: when clicking on a guide while using the Flip tool, reflect the active item across the guide, rather than around its center. Painting: - 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. - Rulers, scrollbars, and the Navigation dialog follow canvas rotation now. - Canvas rotation is now snappier in certain cases. - 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. - Allow painting on transparent layers with modes other than normal. - Add a specialized convolution algorithm for the hardness blur to make it faster. - Make the Force option insensitive for the Pencil tool. - Add new "Pressure Size" dynamics. File Formats: - Make the default raw (DSLR) image importer configurable. - Add RawTherapee plug-in to pre-process various raw (DSLR) images, RawTherapee v5.2 is the minimum requirement. - Add new file-raw-placeholder plug-in that registers itself for loading all raw formats from file-raw/file-formats.h, but does nothing except returning an error message pointing to darktable and RawTherapee. - Add native WebP loader/exporter with support for ICC profiles, animation, metadata. - The TIFF loader will not generate warnings about private tags anymore. - Handle linear gamma PNG files correctly, provide a combo box for specifying PNG bit depth / variant at exporting time. - Add support for linear burn, linear light, vivid light, pin light, and hard mix layer modes in PSD (importing and exporting). - Load PSD files with layers which contain additional information with a length that is not divisible by 4. - Add support to import/export layer color tags from/to PSD files. - Optionally convert all imported (not XCF) images to 32-bit linear floating point, and optionally add a little noise in order to distribute the colors minimally. - Optionally add alpha channel to layers of imported images (configurable in Preferences > Import). - Support writing PNM files with 16-bit image precision. - Improve support for PCX files: * saving 1bpp and 4bpp images (according to palette size). * loading 2bpp, 2 planes/1bpp, 3 planes/1bpp and 4bpp images. * non-Black&White monochrome PCX files (any 2 colors according to the palette). - Add support for exporting multi-page PDF from image layers, with optional reversed order. - Add RLE support for RGB565 to in file-csource. Metadata: - Add new metadata viewer that uses Exiv2 to display Exif, XMP, IPTC, and DICOM metadata (the latter is displayed on the XMP tab). - Add metadata editor that supports adding/editing writing XMP, IPTC, DICOM, and GPS/Exif metadata, as well as loading/exporting metadata from/to XMP files. Printing: - Print resolution can now be reset to defaults, new values for the same image is actually used now without reloading the image. Plug-ins: - The Screenshot plug-in now assigns either monitors profile or converts to sRGB. - The Screenshot plug-in can now take screenshots of a single window and include the mouse pointer in the same time (if the desktop/OS allows it). - Port smooth-palette to GEGL. - Enhance the raw (not the digital negative) files plugin: introduce exporting settings and remember them across sessions, make the plugin invokable non-interactively, and more. Filters: - Add GEGL-based filters: Neon (Edge detection), Wavelet Decompose, Image Gradient, Symmetric Nearest Neighbor, Extract Component, RGB Clip, Simple Linear Iterative Clustering, Waterpixels, Spiral. - Add rotate/flip buttons to the Convolution Matrix filter's GUI to rotate/flip the matrix. - For GEGL-based filters, use a new metadata language to dynamically control UI attributes based on context (e.g. auto-disable unapplicable options). - Allow filter actions to have hardcoded default operation settings by encoding them directly in the string attached to all filter actions. Color Palettes: - Merge Palettes command is available for multiple selected color palettes now. Assets / Resources: - Some basic presets are available for the Crop tool now: 2x3, 3x4, 16:10, 16x9, and square. - Documents templates have been updated and now feature popular, contemporary document presets for both print and digital media. PDB: - Rename *-paste-as-new to *-paste-as-new-image. - Add PDB API for layer blend space, compositing space, and compositing mode. Build: - Depend on LCMS2.7+ now, because earlier LCMS2 releases caused problems with certain GIMP blend modes. - Depend on libpng 1.6.25+ to avoid warnings about known incorrect sRGB profiles, also avoid various vulnerabilities. - Depend on glib-networking now for HTTPS support. - Depend on librsvg 2.40.6 which fixes rendering bugs. - Add a flatpak-builder manifest. OS-specific changes: - Help browser launches on macOS now. Bugs: - Overall 79 bugs have been fixed or partially addressed since GIMP 2.9.4. Translations: - Updated: Catalan, Chinese (Taiwan), Czech, Danish, Finnish, French, German, Greek, Hungarian, Icelandic, Italian, Kazakh, Occitan, Polish, Portuguese, Russian, Scottish Gaelic, Serbian, Slovak, Slovenian, Spanish, Swedish. Overview of Changes from GIMP 2.9.2 to GIMP 2.9.4 ================================================= Core: Color Management: - add new GimpColorTransform object to create abstraction from LittleCMS - now color-managed: - layer/image/color palette/gradient/pattern previews - Color Picker tool - color buttons of GimpColorHistory - GimpFgBgEditor, as used e.g. in the toolbox - color selectors - DND widget - painting tools - copying layers/paste buffer between images - Colors applied to images - GimpColorPanel and its color dialog (color widgets in dialogs) - color areas created from menu actions - color management for grayscale images, including setting preferred ICC profile - add fast switching between color managed display and soft-proofing - add a per-image "is color managed" switch and show the image's "is color managed" state in the window title string - add basic support for creating images with color profiles - add "Optimize" options for display and soft-proofing to optionally speed-up rendering at the cost of color fidelity - add Image -> Color Management -> Save Color Profile to File... - improve the naming of generated ICC profiles - add a shortcut to the profile chooser dialog on OS X too - don't let display color management settings affect file import - enable color management when a profile is assigned to the image - enable color management when the image is converted from/to grayscale - pass the right color profile around in gimp_selection_float() - hardcode the CMYK selector's conversion parameters, as well as NTSC parameters in babl/GEGL/GIMP - have all previews track the monitor they are on Core: - add "Select -> Flood" select action - add "Select -> Remove Holes" action - add "Border style" combo to the "Select -> Border..." dialog - do not request xcf compat mode when compat_toggle not sensitive - initialize fontconfig in the background to be able to show a pulsing progress bar when rebuilding the list of fonts (typically, the first time GIMP runs) - fix the Behind blending mode - make Burn mode output match Gimp 2.8 (partial revert of bug 744265) - improve file magic matching - add a custom guide concept - improve updating the statusbar messages and icons GUI: Menus: - move the image-duplicate action next to image-new - add Image -> Color Management -> Color Management Enabled - change "Select _Custom Color..." to "_Custom Color..." - change "Export" to "Export..." in the File menu Dialogs: - include recently used colors in the Dockable Colors dialog - add RGB-based Luminance channel to the Histogram dialog - fix remembering the order of dockable dialogs Preferences: - reorder the prefs categories tree and rename some pages - move "Snap Distance" to the prefs dialog's "Snapping" page - add configuration for undo preview size - clean-up Preferences -> Color Management - add "Shortcut [some modifier] + Mousewheel" for changing pen size Themes: - rename theme "Default" into "System" - add new GUI themes: Lighter, Light, Gray, Dark, Darker Icons: - add icon theme selection and make the icon theme path configurable in prefs - preserve 2.8 pixel-perfect icon theme under the name "Legacy" - add new symbolic icon theme for GIMP - add a scalable icon theme and a configure option --enable-vector-icons Widgets: - add new GimpBufferSourceBox widget and use it in GimpOperationTool View/Display: - fix various bugs related to rotated canvas - make GIMP not ignore 'Maximized' hints on startup in Windows - enable a pulsing progress bar in the splash - make new images jump around much less - fix image position when entering/leaving fullscreen mode - make layer boundary re-drawn correctly on scrolling - make images not appear completely black when images dockable is visible - have all previews track the monitor they are on Tools: Fuzzy Select: - add "Diagonal neighbors" option Foreground Select: - fix ghost brush outline Bucket Fill: - add "Diagonal neighbors" option Posterize: - turn the posterize tool into an ordinary GEGL filter - remove posterize from Tools -> Colors Desaturate: - turn the Desaturate tool into a normal GEGL filter - move "Desaturate" to Colors -> Desaturate Align: - add vertical offset to distribution options Paths: - improve performance Flip: - rename options to "Transform" and "Direction" Cage Transform: - fix a few performance issue Unified Transform: - make the tool not fail when currently selected layer is hidden Text: - fix text input methods to work in-place (not in an overlayed box) - add background colors setting, only exposed for advanced input methods Blend: - use gegl:distance-transform in the blend tool, it has a progress now - make shapeburst work with the new interactive gradient code All Painting Tools: - add mirror symmetry - remove artifacts from painting tools in Burn blending mode - add shortcut actions for changing spacing, hardness, and force MyPaint: - dramatically improve performance of the tool and enable it by default - add Colorize mode - add a toggle to change between erase & paint mode - add a brush selector to the MyPaint brush options - add a dockable dialog to choose a brush, with tagging - read tags from MyPaint brushes - improve blend math - allow plug-ins to register procedures in the menu Smudge: - fix the clipping of out-of-gamut channel values - fix the handling of layers with alpha channels Ink: - the range of angle is now [-PI..PI] Plug-ins/GEGL Filters: Preview: - add a "split preview" feature to GEGL ops - allow to switch the split preview between horizontal and vertical - allow to swap the before/after position Filters: - update the "Recently used" menu with GEGL filters - replace Selective Gaussian Blur with the GEGL version - add gegl:saturation as Colors -> Saturation - add gegl:high-pass as Filters > Enhance > High Pass - add new gegl:gegl filter that executes a custom processing chain - port Tile and Pagecurl plug-ins to GEGL - refactor the screenshot plug-in into backend and front-ends, one per X.org, Wayland, Windows, OS X - add Monochrome option to the GEGL version of Channel Mixer - bring dialog titles and help IDs to GEGL filter dialogs File Plug-Ins: - add darktable plug-in to pre-process various raw images - port file-gif-save and file-tiff to GIO - TIFF support: - make libtiff a hard dependency - merge the file-tiff-load and file-tiff-save plug-ins - fix various tiff exporting bugs - EXR support: - read comment, Exif, and XMP data from EXR files - use GIMP's internal profile when loading EXR - PSD support: - fix the loading of files with adjustment or fill layers - fix the reading of layer group structure - fix the raw image loader - fix the layer groups support in OpenRaster - code cleanup in file-bmp - fix the exporting of KISS - CELL (*.cel) images - resurrect the email plugin - use GIO to figure if a file is hidden PyGimp: - update pyconsole code - add binding for GimpImageType - add GimpColorConfig object - add type definition for GimpColorManaged - make GimpParasite type known to the code generator - require Pycairo in configure, link gimpui against pycairo - fix the application of paintbrush size in Python scripts Script-Fu: - make regex matching return character indexes - fix the hanging of Script-fu on machines with 64-bit longs - update tinyscheme code from upstream PDB: - Bug 759104 - Allow coordinates of sample points to be accessed from scripts Build: build/win: - Start building libmypaint. - Add pcre and upgrade glib2 to 2.48.1 - Upgrade exiv2 to 0.25 - Clear DISPLAY before building - Disable webkitgtk OS-specific changes: Windows: - Add support for generating crash backtraces using Dr. MingW Overview of Changes from GIMP 2.8.0 to GIMP 2.9.2 ================================================= Core: The core got completely ported to GEGL, listing all changes involved would be too much, therefore we summarize the changes in app/ per source subdirectory: base composite paint-funcs: - Remove these directories, they contained the old pixel manipulation functions config: - Remove GimpBaseConfig, add GimpGeglConfig - Add config options for new features core: - Add some things that used to live in base/, like the temp-buf, boundary and histogram code - Port all functions to GEGL and higher bit depths - Keep the image around as GEGL graph, all other compositing is gone - Add non-destructive drawable filters, but use them only for previews - Implement the floating selection as drawable filter - Implement GimpImageMap using drawable filters - Move batch processing to gimp-batch.[ch] - Run batch commands in an already running GIMP instance - Ported almost everything from filenames/FILE/fd to GFile/GIO - Be smarter about migrating old user config files - Move many object struct members to private structs file: - Support GIO-ported file load/save procs, handle remote files generically - Add content locking to items to prevent them from being edited - Add position locking to items to prevent them from being translated - Implement all color management in the core - Add an automatic palette of recently used colors - Implement metadata handling in the core gegl: - Now contains utility functions and abstractions to work with GEGL more easily - Move all operations to the new operations/ directory operations: - New directory containing all GIMP-internal GEGL operations and their config objects (if any) - Add a correct version of the overlay layer mode - Add LCH layer modes paint: - Port all paint cores to Gegl - Add MyPaint brush paint core pdb: - Add compat procedures that work like the removed plug-ins - Use the new GimpValueArray, GValueArray got deprecated plug-in: - Allow plug-ins to access image data at full bit depth - Add a compat mode so unported plug-ins always get 8-bit data text: - Port text rendering to GEGL - Use HarfBuzz to inspect fonts for creating an example string xcf: - Add zlib compression to XCF loading/saving GUI: - Add GUI to handle the new high bit depths and conversion between them - Add new action group "filters" which can run arbitrary GEGL ops - Add lots of actions invoking GEGL ops that replace removed plug-ins - Preview all GEGL ops live on the canvas, using drawable filters - Mostly switch from using stock-ids to icon-names - Turn all stock icons into named icons and add an icon theme - Allow selecting colors from an image's colormap - Add "Show in file manager" to everything that has a filename - Add an action search dialog to find actions by keyword and execute them - Split the save dialog into subclasses for load, save and export - Implement various color management dialogs that were in the lcms plug-in - Make sure windows appear on the correct monitor - Simplify and reduce the actions that modify paint tool behavior - Add canvas rotation and flipping - Allow zooming to the selection - Make the image tab position configurable in single window mode - Add separate snapping settings for fullscreen mode - Remove bitmaps cursors and only support RGBA cursors - Color manage drawable and image thumbnails - Add more format string options for the image title - Use the external gtkosxapplication package instead of included code - Add a generic GimpPopup class and use it instead of duplicating code - Make the generated GUI of GEGL ops much better - Allow to implement custom GUI for gegl ops, and do that in some cases - Add GimpDial, GimpPolar and GimpCircle to be used for angle and hue picking Tools: - Add an "experimental playground" for unfinished tools - (experimental) Add a tool that paints with MyPaint brushes - (experimental) Add an n-point deformation tool - (experimental) Add a transform tool with a variable # of handles - (experimental) Add a seamless clone tool - Add a unified transform tool that allows rotating, scaling, perspective - Add a warp tool as replacement for the IWarp plug-in - Allow tool dialogs to be embedded on the canvas genrically - Add much more options to painting, like the ability to lock tool options to brush defaults, and to zoom the brush with the canvas - Make the blend tool work interactively in realtime - Add undo/redo to many tools (using the normal shortcuts) Libgimp: - Deprecate the entire old pixel manipulation API - Add API to get a drawable's buffer, the rest can be done with GEGL - Add high bit depth support when using the new buffer API - Make many enum value names sane and deprecate the old names - Many core enums moved here instead of proxying them via PDB generation - Add API to stroke vector outlines, with all core properties - Add more context API that affects other procedures - Deprecate API with weird names, and add new API with less arguments - Add metadata and color management API, utility functions and widgets - Split GimpPickButton into per-platform backends and fix it on OS X Plug-ins: - Remove lots of plug-ins that are now implemented as GEGL ops - Remove the lcms plug-in, this is now done in the core/libgimp - Remove the metadata plug-ins, this is now done in the core/libgimp - Remove the file-uri plug-in, this is now done in the core using GIO - Port many file plug-ins to GIO - Port many plug-ins that are not strictly filters to GEGL Source and build system: - Don't use INCLUDES in Makefile.am, use AM_CPPFLAGS instead General: - Lots and lots of bug fixes - Translation updates