------------------------------ GNU Image Manipulation Program 2.10 Stable Branch ------------------------------ This is the stable branch of GIMP. Unlike earlier stable branches, we do allow some new features here, if they are not too invasive. Otherwise, this branch is only for bug-fixes. Overview of Changes from GIMP 2.10.8 to GIMP 2.10.10 =================================================== Core: - In gimp_drawable_transform_buffer_affine(), avoid modifying the clipping mode when transforming layer masks, since this function is used (among other things) to transform layer masks together with their layer, in which case they should use the same clipping mode as the layer. This fixes a regression introduced by commit 2ae823ba, causing layer masks to be transformed with a mismatched clipping mode during layer transforms, leading to discrepencies between the transformed layer and the transformed mask. - Moved swap/cache and temporary files out the GIMP user config dir and added new config file substitutions ${gimp_cache_dir} and ${gimp_temp_dir}. - Pass the GEGL tile-cache size, swap path, and thread-count to plug-ins as part of their config, and have libgimp set the plug-in's GeglConfig accordingly upon initialization. User interface: - Enabled HiDPI/Retina support for the GTK2/OSX build, fixes blurry icons. Tools: - In scale tool, scale around center even when using numeric input. Plug-ins: - file-pdf-save GUI now clearly indicates the order the layers will be used to make multi-page PDFs. Help: - Link to the bugtracker directly from the Help menu, also link to the wiki and the roadmap. Remove the link to currently disabled registry.gimp.org. Installers: - Windows: proper fix for libthai to stop GIMP from crashing in the Thai locale. Translations: - Czech, Polish, Ukrainian. Overview of Changes from GIMP 2.10.6 to GIMP 2.10.8 =================================================== Core: - Use adaptive chunk size in GimpProjection when rendering the projection asynchronously, rather than using a fixed chunk size. This provides a better trade-off between throughput and responsiveness dynamically, based on how fast the processing is. - Add xyY color space to the color spaces for sampling colors. Tools: - In all selection tools, show error on attempt to subtract-from/intersect-with empty selection. - Fix text along path not working with vertical text. - Fix Text tool's frame position when undoing a move operation. - Streamline Text tool's drawing blocking/unblocking logic. - When moving a text layer using the text tool (through alt+drag), don't change the layer's box mode to "fixed", which is unnecessary, since the layer's size isn't affected. - Transform and deformation operations now maintain color for fully transparent pixels, making unerase and curves manipulation of alpha channel more reliable. - All transform tools now apply changes when you save or export/overwrite an image without pressing Enter first to confirm changes. - Heal, Dodge/Burn, Smudge, and Convolve tools now adjust the processed buffer and mask_buffer regions according to the changes made to the application region, as calculated by intersecting it with the drawable and mask extents. This fixes wrong application position when painting on a drawable whose origin is above/to the left of the image's origin, and there's a selection active. - New type of gradient interpolation called 'Step' for making multi-color hard-edge gradient fills. Plug-ins: - Port all plug-ins to the new iterator API in GEGL. - Improve automatic detection of HEIC/HEIF files. - Improve RawTherapee discovery by looking up registry key (should become useful with RawTherapee 5.5 and more). Usability and UI: - Compatibility information in the Save dialog is now more understandable. The minimum GIMP version for the XCF file is always written down when it is GIMP 2.8 or over. The list of features warranting the minimum version is now listed in an expander container rather than as tooltip, which makes it more discoverable. The warning on compression is now displayed as its own text under the checkbox and not as additional text to the minimum GIMP version label. - In all themes, fix the color of selected text, while editing a tree-view's item text (such as when renaming a layer), by overriding tree-view specific styling with the global text-entry style, for nested text entries inside tree-views. The text would previously use the same color as the selection background, making it unreadable. - Add option in the Windows menu to hide the image tab bar. CLI: - New self-explanatory --enable-win32-debug-console CLI option Debugging: - New GimpBacktrace API provides an interface for creating and traversing multi-threaded backtraces, as well as querying symbol information. Backends are available for Linux and Windows. - Performance log recording now available in the Dashboard dock. The log contains a series of samples of the dashboard variables, as well as the full program backtrace, when available. As such, it essentially acts as a built-in profiler, which allows us to correlate program execution with the information available through the Dashboard. - New performance-log-expand.py tool decodes a delta-encoded performance log by expanding the deltas, producing a log where each sample (and other relevant elements) contain complete information. The structure of expanded logs is identical to that of delta-encoded logs, the expanded log simply has no deltas. - New performance-log-resolve.py tool resolves symbol information in backtraces. The logs produced by GIMP only specify the program counter at each stack frame, providing an address-map to map program-counter addresses to actual symbols separately. This tool looks up each program-counter address in the address map, incorporating the relevant symbol information directly into the backtrace. - New performance-log-deduce.py tool that statistically deduces the correct thread states based on backtrace address frequency, fixing local inaccuracies. - New performance-log-viewer.py tool that is a viewer for GIMP performance logs, with a sample-selection area at the top and an information area at the bottom. The sample-selection area visualizes the sampled variables and markers using a simultaneous set of plots, and displays the currently selected samples. The information area shows global information stored in the log, as well as information specific to the currently selected samples, including variable listing and statistics, full backtrace, and profile/call-graph information. Translations: - Updated translations: Danish, Dutch, Finnish, German, Hungarian, Italian, Marathi, Polish, Portuguese (Brazil), Russian, Spanish, Swedish, Ukrainian. Overview of Changes from GIMP 2.10.4 to GIMP 2.10.6 =================================================== Core: - Render drawable previews asynchronously. - Merge the file view filter and file format lists in GimpFileDialog. The presence of 2 lists was very confusing. - DLL search priority is now updated before running a plug-in on Windows, depending on the executable bitness. This gets rid of one of the last remnant of DLL hell in GIMP, which was when running 32-bit plug-ins from a 64-bit build of GIMP. Filters: - New "Little Planet" (gegl:stereographic-projection) filter. - New "Long Shadow" (gegl:long-shadow) filter. Tools: - Halt the Measure tool after straightening. - Add an "orientation" option to the measure tool, corresponding to the "orientation" property of GimpToolCompass (i.e., it controls the orientation against which the angle is measured, when not in 3- point mode.) The orientation is "auto" by default, so that the angle is always <= 45 deg. Note that the "orientation" option affects the tool's "straighten" function, so that the layer is rotated toward the current orientation. - Text layers can now represent vertical texts, with 4 variants: left-to-right and right-to-left lines, and forcing all characters to be upright or following Unicode's vertical orientation property. See also: * https://www.unicode.org/reports/tr50/ * http://www.unicode.org/Public/UCD/latest/ucd/VerticalOrientation.txt User Interface: - The Dashboard dockable dialog now has an "async" field to the dashboard's "misc" group, showing the number of async operations currently in the "running" state. - New Preferences option to enable/disable layer-group previews, since these can get quite time-expensive. Translations: - New language: Marathi - 12 translations were updated: Brazilian Portuguese, Dutch, French, German, Greek, Italian, Latvian, Polish, Romanian, Slovenian, Spanish, Swedish. Build: - Add --with-win32-32bit-dll-folder configuration option to override the folder where 32-bit versions of DLL will be installed (default: 32/bin/). - Install all plug-ins in their own directories. Unlike on master, this is not mandatory to do so, but it would protect our core plug-ins against any DLL installed directly under plug-ins/ by third-party plug-ins (cf. Windows DLL hell). Overview of Changes from GIMP 2.10.2 to GIMP 2.10.4 =================================================== Core: - Remove gimp_display_shell_draw_background() and all clipping hacks for drawing the canvas background. This optimizes away one entire step of drawing of image size, for each expose. - Font loading does not block startup anymore. Only consequence is that the Text tool may not be usable immediately if fonts are not fully loaded yet (and will output an appropriate error if you do so). All non-text related activities can be performed right away. - Change of the URL from bugzilla to gitlab where appropriate. - New tool option manager to better keep track of user context and paint options in a consistent manner. User Interface: - The Dashboard dockable dialog now has a 'Memory' group that shows memory-usage information: the currently used memory size, the available physical memory size, and the total physical memory size. It can also show the tile-cache size, for comparison against the other memory stats. Note that the upper-bound of the meter is the physical memory size, so the memory usage may be over 100% when GIMP uses the swap. - The Dashboard dockable dialog now has "read" and "written" fields in the dashboard swap group, which report the total amount of data read-from/written-to the tile swap, respetively. Additionally, the swap busy indicator (used as the meter's LED) has been improved, so that it's active whenever data has been read-from/written-to the swap during the last sampling interval, rather than at the point of sampling. - Fonts can now be tagged. The user interface is the same as for brushes, patterns etc. - Some icons fixed: larger spacing between broken chains and gimp-tool-ellipse-select made symmetrical. Usability: - When a plug-in cannot be applied to an image because of mismatch in image types (e.g. layer has no alpha or image is greyscale), GIMP now displays a message listing supported image types for this plug-in. Tools: - The Measurement tool now has an "Auto straighten" option allowing to rotate the active drawable (layer, channel…) so that the measurement line is used as horizon. As other transform tools, the feature will work on linked drawables as well. - The Smudge tool now paints correctly on images with a color profile other than the GIMP's built-in one. Build: - Installer: set compatibility options to run Python plugins in HiDPI-aware mode. - Put back compatibility DLLs for really old plugins. - Install binary tool `gimp-test-clipboard` on the system to allow people to help us debug clipboard bugs. - --enable-bundled-mypaint-brushes renamed --enable-relocatable-bundle and also make WMF fonts looked up on the runtime prefix of GIMP (instead of the build-time path) when this build option was set. Plug-ins: - gimptool-2.0 binary now accepts source files with non-standard extensions if it can try to guess appropriate language from the compiler being used. It will also properly quote arguments for shell usage. - Run explicitly Python 2 as Python plug-in interpreter to prevent breakage on systems where Python 3 is the default. - raw_input()'s argument in Python console is now optional, and input() support has been added. File Formats: - The PSD loader now provides an option to load "merged", pre-composited version of the images that becomes available when a PSD file was saved with "Maximize Compatibility" option enabled in Photoshop. This is useful when loading PSD files that use features that GIMP doesn't currently support, and therefore can't render correctly, such as adjustment layers. When loading the merged image version, we avoid loading certain additional data from the file, such as channels, paths, and guides, while still loading metadata. This option is currently exposed as an additional file type ("Photoshop image (merged)"), which has to be explicitly selected from the file-type list when opening the image. - Embedding GIMP's built-in sRGB color profile to exported files is now optional. The default choice can be set in the Preferences dialog. Translations: - Updated translations: Catalan, Czech, Danish, Dutch, Finnish, Greek, Hungarian, Italian, Latvian, Polish, Romanian, Russian, Spanish, Swedish, Ukrainian. Overview of Changes from GIMP 2.10.0 to GIMP 2.10.2 =================================================== Core: - Discard fonts which fail to load and popup an info dialog to allow people debug their fonts. - New API to suppress updates in UI until plug-ins are done introducing changes. - New API to calculate histograms in separate threads, with possible further extension to handle similar cases elsewhere in GIMP. - Tool options are now properly saved and reloaded per-device at startup. Plug-ins: - New plug-in for importing and exporting HEIF images. - Enable visibility of rasterized vector layer from PSD. - Single-window screenshots in Windows fixed to correctly snap a window even when it is partly off-screen or covered by another window or when display scaling is not set to 100%. Filters: - New Spherize filter to wrap an image around a spherical cap - New Recursive Transform filter to create Droste effect. Usability: - Warn users, when alpha-only painting has no effect. E.g. when target drawable doesn't have an alpha channel, or the alpha channel is locked. - Make the splash texts dynamic, so they are larger on larger splashes. - Mention pressing Enter to complete Foreground selection in the status bar. - Make sure that clicking outside any selection prevents Rectangle Select and Ellipse Select tools from creating empty selections. - Improve mouse wheel zooming behavior to keep the same point centered under the pointer even if the image is completely visible in the canvas. - Add "View -> Center Image in Window" (Shift+J) as a quick way to center the image at any zoom level. Translations: - Updated translations: Catalan, Danish, Dutch, French, German, Greek, Hungarian, Icelandic, Italian, Latvian, Polish, Russian, Spanish, Swedish, Ukrainian. - New translation of Windows installer: Chinese (Taiwan) Build: - Add a --with-bug-report-url configure option allowing packagers to set the address of their own bug tracker. This address will be the one opened by the debug dialog for reporting bugs. - Add a flatpak manifest for the gtk3-port branch. - Remove the possibility to disable script-fu. - Add a --with-icc-directory configure option to customize the color profile directory. By default, it is set to the common path /usr/share/color/icc. Documentation: - Updating the description of the XCF format "devel-docs/xcf.txt", for third-party readers wishing to support GIMP 2.10 XCF files. - Add documentation skeletons for all enums in libgimpbase/, there is much room for improvement.