Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Overview of Changes from GIMP 2.99.16 to GIMP 2.99.18 ===================================================== Core: - New snapping options: * "Snap to Bounding Boxes": allows on-canvas snapping to either layer borders or center. * "Snap to Equidistance": allows to snap a layer to be at the same distance from a second one that this second one is to a third one, either horizontally or vertically. - GIMP is now able to use fonts with custom styles, which Pango is unable to work with. - Font names are not unique anymore, which means that GIMP doesn't rename identically named fonts with #1 or #2, etc. as it used to do. These fonts with same name are now properly working despite the name clash. - GimpData now have a concept of collection, which is either a controlled name for internal data, or a string constructed from the local file path for external data. This will be used to serialize data objects hence easily retrieve the proper data even when some data may have duplicate names. - New palette import support: SwatchBooker. - Artificially set PANGOCAIRO_BACKEND=fc when running on Windows to use the fontconfig backend, which enables anti-aliasing on Windows, unlike the default pangocairo backend. - XCF: * Font information are more accurately stored (not only the font name, but also storing various other attributes and even a file hash in the ideal case where the exact same font file is available), allowing to find the right font (if installed) on load with less errors. * As a consequence of the previous point, new files with text layers will be saved as a bumped XCF 19 version. * Older XCF versions with text layers can still be saved using older XCF versions as long as the text layers are untouched in an edit session. - "view-zoom-*" actions are not radio actions anymore. - Improve thumbnail loading algorithm: 1. If there is a GimpThumbnailProcedure, it is run first. 2. Otherwise we check if a thumbnail is in the metadata. 3. As last resort, we just load the full image. - Generic inter-process transient window reimplemented using opaque GBytes window identifiers instead of guint32. The goal is to have windows created by plug-ins be transient to the calling core image window, but also the other way around: some core dialogs are generated through PDB calls (in particular resource and drawable chooser dialogs created by gimp_*_popup() functions) and should be transient to plug-in dialogs. This works on X11 and Wayland (the Wayland implementation is new, previous code was X11-only). It should work on Windows too (code exists) but this was left disabled as it leads to core process hanging (as described in https://bugzilla.gnome.org/show_bug.cgi?id=359538) and is pending debugging. There is no macOS implementation yet, and it seems to be missing from GDK as well. - Indexed images' colormap: * Now possible to delete colors if unused. - Updates for floating data's actions: * New actions "edit-paste-float" and "edit-paste-float-in-place" for pasting the contents of the clipboard as floating data with default positioning algorithm or in-place respectively; * renames "select-float" to "select-cut-float" which does a cut and paste as float in one action; * adds "select-copy-float" which does a copy and paste as float in one action; * reorganize a bit the `Edit > Paste as` submenu with sections for the floating data variants; * add a "Float" submenu in "Select" root menu, containing the 2 variant actions "select-cut-float" and "select-copy-float". - GEGL operation filters are now non-destructive by default: running these filters create layer effects. The UI is still basic and will be improved through iterations after GIMP 3 release. - FG/BG color action code (e.g. "Increase the red channel") are made contextual, relatively to the active image, working relatively to the correct color space and TRC. - Device Status dockable shows context-sensitive colors (the color profile's name is displayed as tooltip when hovering a fg/bg color status). - Palettes are now GeglColor-based and are stored with a lot more precision. Older low-precision palettes are still loaded fine. A single palette can contain mixed formats (different models and space). A concept of format restriction was added, yet is currently only used for indexed images' palettes (whose colors are always and only in the image's format). - Color History is now space-invaded (colors are stored in their original format and space). - Various color selectors (core or modules) are now space-invaded when relevant. For instance, they show colors in the active image space (not just sRGB) and display the profile's name when relevant. Also when simulation is active, some of the color selectors will update their out-of-gamut zone, not only to be within the image's gamut, but also the soft-proof gamut. Graphical User Interface: - "Merge menu and title bar" option is not shown on macOS as it is not usable there (the main menu is anyway out of the window from the start). - Top menu has been special-cased for macOS (some items are removed with "hidden-when" attribute set to "macos-menubar" value) for items which are also available in the application menu. - Menu section can now be named with the "section-name" attribute in GtkBuilder ".ui" files. This can be used as a replacement of the former "Placeholder" concept which we used to have (and has now been completely removed). Plug-ins or GEGL operations which want to make use of sections can use the "[Section]" syntax. For instance installing a plug-in in the menu path "<Image>/File/[Open]" will install the menu item at the end of the Open section (i.e. after the various other open-file actions at the top of the File menu). - Some string or naming consistencies were fixed in source strings. - GimpContainerEntry don't have inline completion anymore. Instead the result pop-up always appear, even for one result. This is because a limitation of GtkEntryCompletion: we cannot remove the case sensitivity search (see gtk#275) which was very bad usage experience because when we reached a single result, suddenly nothing happened anymore (no popup, no completion) if case was different on any letter. It's just better to always have popup with case insensitivity. This widget is used for instance for on-canvas font selection. - Some icons were modified with an added light border to make them better visible on dark themes: gimp-tool-text icons in Color and Legacy icon themes and gimp-tool-dodge in Color theme. - Help menu rearranged to be better organized and also to move "About GIMP" as the last item, which is its more conventional position. - Many fixes to the default themes (including several cases of CSS rules leaking from system themes). - New settings in Preferences to set the interface base font size (this won't work as well, or at all, for themes which would set absolute font sizes). - "gimp-wilber-eek" icon is now reused as generic "image-missing" icon too. - In dockables' grid view, the hovered icon is now highlighted with a contrasted border. - GimpPdbDialog (e.g. resource chooser dialogs) are now set to system defaults for whether or not they use a header bar. - Shift+Number-row default shortcuts are now transformed into the actual key in the currently used layout (reciprocally, if numbers are direct access key, their counterpart shortcuts are similarly updated). - Colormap dockable: * New "Delete" button available and sensitive only when selecting an unused color in the palette. - Windows: title bar will be switched to light or dark mode based on the current theme. - The quit dialog now adjusts its size relatively to monitor height. - The heuristic to set a cursor when single or multi-selecting items in a tree view got reviewed in order to avoid unnecessary scroll. As a general rule, the cursor is always set to one of the selected elements, ideally the last clicked element unless it is not selected (e.g. removed with Ctrl-click), then a closest selected element is chosen to avoid unnecessarily scroll of the item list. - Pad buttons can now be configured in the "Input Devices" configuration dialog to run any actions directly (without mapping shortcut key combinations as intermediate). This only works on Wayland for the time being (yet may work on more platforms in the future, depending on GTK evolution). - Themes can now be proposed with up to 3 variants: dark, light and middle gray, through gimp-dark.css, gimp-light.css and gimp-gray.css CSS files respectively. - As a consequence of the previous point, our Default and Gray themes are merged as one with 3 possible variants. - Our Color and Symbolic icon themes are merged as a single icon theme named "Default". - The "prefer-symbolic-icons" property which can be set in Preferences is only used when the selected icon theme has both Color and Symbolic styles. Otherwise the chosen icon theme style prevails. The presence of a style is determined by the presence of the "gimp-wilber" icon (which becomes therefore a de-facto mandatory icon in an icon theme) and/or its symbolic variant. - When "Override icon sizes" is checked, a few padding values are also overridden by code in the loaded CSS. - As a consequence of the previous point, we removed the "Compact" theme which is now simply possible by overriding sizes to "Small" in Preferences (when the theme is "Default", it will display the same as the former "Compact" theme, though it will also work with any other theme). - "Darker" theme is removed for lack of contributors actually caring for it. It could be revived in the future as a "Contrast" theme with both a dark and light variants at the very least. - The search function in Layers dockable was moved over the Layers list (with headers), the "link" icon replaced by "search" icon, and is now available for both Layers, Channels and Vectors dockables (though unsaved for Vectors because of lack in XCF support). - The Welcome dialog was improved and its cases extended: * A new "Personalize" tab contains duplicate settings taken from the Preferences, in particular the more controversial settings, such as theme or icon themes, HiPPI support (icon/font sizing), merged menu and title bar, tool groups or update check. * A new "Contribute" tab displays a few of the main links for people to contribute to GIMP. * A new "Create" tab proposes buttons to create new images or open existing ones, as well as displaying a list of the last 8 opened images for easy re-opening. * A new checkbox (checked by default) allows the welcome dialog to be shown at each and every startup. Except on new installations or version updates, the first shown tab will be the new "Create" tab, which is probably the most useful for day-to-day first dialog shown at startup (on updates, the "Welcome" tab featuring the new splash screen and a small welcome text is shown). Tools: - Text tool: * improve markup creation logic when replacing selected text in order not to create useless styling markup interfering with other features. * Alignment for RTL languages is now more consistent with how it works in other software (such as LibreOffice or Scribus). * Text layers can now be rendered in the full image's gamut (not sRGB only anymore), though colors are trimmed to the gamut and are always 8-bit. * Text outline colors are now rendered in float in the full image's gamut, without precision loss. - Paint tools: all painting tools now have an "Expand Layers" option allowing to auto-expand layers when painting across layer boundaries. A few additional sub-options customize how this expansion happens (by how many pixels, filling with transparency, color, pattern). Expansion does not grow over canvas boundaries, unless "Show All" is checked too. - Color Picker: * Picked color is internally kept as a GeglColor, doing only last-minute conversion to the output model/space, hence with better precision. * RGB, Grayscale and Pixel modes display the profile name of the output color space (the active image's color space if relevant). - The Gradient tool now uses GeglColor internally, though GIMP's gradient format (GGR) still uses old RGB format. Plug-ins: - Farbfeld: new image format import/export support. - OpenEXR: * Files with single channels are always treated as grayscale, even when they use non-conventional channel names. A notice message is also presented to the user in a dialog for information. - Metadata Editor: * Various code cleanups and improvements; * GUI improvements; * Xmp.plus.ImageSupplierName can now only have one value; * Improved Creation date handling; * Synchronization (both for reading and writing) added between some Exif, Xmp and Iptc equivalent tags. On reading, when equivalent tags have different values at load, a terminal warning is now outputted. - Script-fu: * Generated dialog's titles are not prefixed with "Script-Fu: " anymore. * Several scripts were removed and moved to gimp-data-extras: erase-rows, grid-system, select-to-brush, select-to-image, select-to-pattern. * script-fu-copy-visible was removed (and not moved to gimp-data-extras). * New test scripts. - New gimp-help-main script to link to the "Table of Contents" of the manual, added to the "Help > User Manual" submenu. - PSP: * added support to load PSP ICC Profile data. * fixed vulnerabilities: ZDI-CAN-22096, ZDI-CAN-22097. * load active selection from PSP file. * Load guides and grid info. - Image Map: two new fields to the HTML Link tab and one new field to the Javascript tab for area properties: * accesskey: The same as the mnemonic key shortcuts in GTK, to activate an area of the image map. Depending on the OS, you either hold ALT or ALT+SHIFT and this key. * tabindex: What order to select the area when the user presses Tab. * onClick: Run a Javascript function when the user clicks on the area. - Esm Software PIX: new import support. - All plug-ins were ported to the new Gimp*Procedure API using GimpProcedureConfig instead of GimpValueArray arguments. - Add Border (script-fu): add a 'Allow resizing' toggle. - Plug-ins ported to GimpProcedureDialog: van-gogh-lic, dds-write, flame, histogram-export, lighting, fractal-explorer, map-object, sample-colorize, compose, curve-bend, depth-merge, selection-to-path, pagecurl, file-cel, file-svg, file-wmf, smooth-palette, small-tile, film, gradient-flare, tile, web-page, screenshot. - JPEG-XL: * Load metadata via libjxl exclusively. * Disable GIMP EXIF orientation support, using orientation stored in codestream instead. - HEIF: * Load metadata via libheif exclusively. * Disable GIMP EXIF orientation support. - PDF: * "Layers as Pages" works now for a single layer group with multiple sub-layers. - DDS: * Add support for loading DDS 16- and 32-bit per channel RGBA. Loading is supported for 16-bit half float, 32-bit float, 16 and 32-bit unsigned and signed int. This supports both the DX10 formats and the D3D FOURCC versions. 16- and 32-bit per channel images with less than 4 channels are not yet supported. * Add DDS support for loading R8G8, R16 and R16G16 formats. GIMP can load DXGI variants as well as the older D3DF versions, including handling of the signed versions. We also set signed when the pixelformat flag DDPF_BUMPDUDV is set. * New option to vertically flip dds image on import. This is needed by some game engines. * All mipmap generation is done at 32-bit floating-point precision. * A new cubic filter has also been added (Catmull-Rom) which rounds-out the existing lineup of cubic filters. * Better handling of DX10+ files in ddsread. * Always interpret BC1 cutout pixels as black pixels with 0 alpha, per the official format specification. * Import code was rewritten and improved for maintainability and readability. Importer now supports nearly all non-video uncompressed formats. - GIF: * Remember when a file was stored as a GIF animation to be reused when overwriting. - PNG: * Import/export safe-to-copy PNG chunks. - HEJ2: new import support. HEJ2 is JPEG 2000 image coded images in HEIF containers. - PSD: better wording of the export warning for the path of less surprise. - Python Console uses theme colors for font colors instead of hardcoded colors which don't work well on darker themes. Data: - Clarified our capitalization rule for data titles: part of titles inside parentheses also follow title casing. - "(Hardedge)" generated gradients got renamed "(Hard Edge)".
- Loading branch information