NEWS 34.8 KB
Newer Older
Sven Neumann's avatar
Sven Neumann committed
1
                   ------------------------------
Sven Neumann's avatar
Sven Neumann committed
2
                   GNU Image Manipulation Program
3
                          Development Branch
Sven Neumann's avatar
Sven Neumann committed
4
                   ------------------------------
5

6 7
This is the unstable development branch of GIMP. Here we are working
towards the next stable release, which will be GIMP 2.10.
8

9 10 11
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.
12

Jehan's avatar
Jehan committed
13 14 15 16
Overview of Changes from GIMP 2.9.6 to GIMP 2.9.8
=================================================

Core:
17

Jehan's avatar
Jehan committed
18
  - The default brush is now "Hardness 050".
Jehan's avatar
Jehan committed
19 20
  - Verbose version (command line: gimp -v) now displays C compiler
    information.
21
  - Transform tools don't commit identity transformation anymore.
22 23 24 25 26
  - Manual language can now be selected amongst all installed manuals,
    which is particularly interesting when no GIMP manuals are available
    in your GUI language. This will be proposed by default when a manual
    is not installed for the GUI language (alongside the possibility to
    read online) and the choice can be edited in preferences.
27
  - The statusbar now blinks on warnings and errors.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
28 29 30
  - Paste in Place, available for regular clipboard and named buffers,
    allows pasting contents of either the clipboard a named buffer at the
    exact coordinates it was copied from.
31 32 33 34
  - Color Picker should now work on KDE/Wayland.
  - Color Picker now reads values under cursor in local windows making
    it work at least inside GIMP Windows on Wayland platforms with no
    color-picking capabilities (for instance GNOME/Wayland) yet.
35 36 37 38 39 40 41 42 43
  - OpenCL is now disabled by default. Depending on graphics cards and
    drivers, OpenCL acceleration is often slower than multi-threaded
    implementation, and can also sometimes be "glitchy".
  - Now possible to open a locally-installed manual different from the
    GUI localization. The manual language choice can be customized
    through preferences when several manuals are installed. If no manual
    language has been selected already and no manual for current GUI
    localization is available, choice of help language will be proposed
    at first call to the manual.
Jehan's avatar
Jehan committed
44

Jehan's avatar
Jehan committed
45 46 47 48
Configurability:

  - Keybindings now possible for previous/next/top/bottom channel.

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
49 50 51 52 53 54 55
Usability:

  - The spinscale widget now highlights vertical parts of the slider
    section differently to hint that position of cursor above the widget
    matters. When changing values in the lower step section, the pointer
    will be wrapped around the screen so that you could continue adjusting
    the value without interruptions.
Jehan's avatar
Jehan committed
56
  - Canvas rotation and flip information is now visible in the status
57 58 59
    bar (as angle value and flip icon). Clicking on these canvas status
    will respectively raise the "Select Rotation Angle" dialog or unflip
    the canvas.
60 61 62
  - Use abbreviated versions for long layer mode names. In particular,
    replace the "(legacy)" suffixes with "(l)" in the abbreviated
    versions, still showing the unabbreviated names in the full list.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
63

64 65 66 67 68 69 70 71 72
Tools:

  - Blend tool now features on-canvas gradient editing: adding, shifting,
    removing color stops, shifting midpoints and converting them to color
    stops, assignging colors to color stops, changing blending type
    for midpoints. Additional options: 'Instant mode' (active before you
    start blending) to support the old workflow where you can't edit color
    stops before applying the gradient fill, and 'Modify active gradient'
    which allows changing user-writable gradients directly rather than
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
73 74 75 76
    creating copies of them. Moreover, custom gradient is now saved
    and restored across sessions.
  - All transform tools: it makes no difference now whether a modifier is
    pressed before of after mouse button press/release.
77 78 79 80 81 82 83
  - Free Select tool selection can now be committed with double click as
    well (only through Enter key before). This allows smoother workflows
    on some setups, and in particular when no keyboard is available
    (e.g. tablet-like computers).
  - Layer group children now inherit the color tags of the parent by
    default, unless specific color tags are assigned. Inherited color
    tags show in a less saturated color than assigned ones.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
84 85 86 87

Painting:

  - When copying a generated brush, GIMP now copies its 'Spacing' property.
88
  - Rename "Wheel" dynamics labels as "Wheel/Rotation". It turns out
89 90 91
    that Wacom Art Pen and Airbrush pen use the same axis for barrel rotation
    and wheel scrolling respectively. Therefore they already work in GIMP.
    "Unhide" the feature with more obvious labels.
92

93 94 95 96
Color management:

  - Use babl to convert between profiles if possible.

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
97 98 99 100 101 102 103 104
Display filters:

  - New 'Clip Warning' display filter to show underexposed and overexposed
    values. Target values below 0 and above 1.0, hence it only works on
    16/32 bit per channel float images (such as EXR and TIFF).
  - Display filters now operate in unbounded sRGB rather than in monitor
    color space.

Jehan's avatar
Jehan committed
105
Plug-ins:
106 107

  - Fix finding raw loaders on Windows/macOS.
108 109
  - Screenshot for KDE/Wayland has been implemented (full-screen and
    window screenshots only; rectangular area screenshots need
110
    implementation on the KDE side).
111 112 113
  - Screenshot can now add a delay between window pick/rectangular
    area selection and the actual shot, but only in platforms supporting
    the feature.
114 115 116 117 118 119 120 121

File formats:

  - PSD:
    - Fix mask position when opening/exporting.
    - Fix active layer selection during loading.
    - Fix potential group-layer naming conflict during loading.
    - Fix missing some attributes loading empty layers.
122
    - Fix reading files with deeply nested layer groups.
123
    - Load and save layer group expanded state.
124 125 126 127
    - Improve layer opacity loading/saving.
  - PDF: password-protected files can now be imported.
  - HGT: Digital Elevation Model data from NASA/NIMA can now be loaded,
    both SRTM-1 (1 arc-second) and SRTM-3 (3 arc-seconds).
128

129 130 131
Filters:

  - Update GEGL-based filter Wavelet Decompose:
132 133 134
    - Add an option to keep the decomposition in a layer group.
    - Add an option to add layer mask to each scales layers.
    - Do not use 'New from visible' because it produces unexpected
135 136
      results; replaced by succession of layer copy and merge down.

Jehan's avatar
Jehan committed
137 138
PDB:

139 140
  - Add file-pdf-load2 API to load password-protected and/or multi-page
    PDF files.
Jehan's avatar
Jehan committed
141
  - Add file-hgt-load to load HGT files, with an argument to select between
Jehan's avatar
Jehan committed
142
    SRTM-1 and SRTM-3 types.
Jehan's avatar
Jehan committed
143

144 145
Translations:

146
  - Updated: Catalan, Croatian, Galician, German, Greek, Hungarian,
147
    Icelandic, Indonesian, Italian, Polish, Russian, Spanish.
148 149 150 151 152

Building:

  - Require LittleCMS >= 2.8.
  - Initial docker-based build environment for GIMP now available.
Jehan's avatar
Jehan committed
153
  - Warn against use of GCC 7.2 which has a bug breaking GIMP.
154
  - An official flatpak stable package is now available on flathub.
155 156 157

Contributors:

158 159 160
Mario Blättermann, Hanno Boeck, Joao S O Bueno, Marco Ciampa,
Fran Dieguez, Piotr Drąg, Tobias Ellinghaus, Ell, Sveinn í Felli,
gogo, Luis Angel Gonzo, Anders Jonsson, Christian Kirbach,
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
161 162
Øyvind Kolås, Thomas Manni, Jordi Mas, Balázs Meskó, Lionel N,
Michael Natterer, Jehan Pagès, Juan Palacios, Alexandre Prokoudine,
163
Christopher Rogers, Michael Schumacher, shark0r, Dimitris Spingos,
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
164
Tobias Stoeckmann, Andika Triwidada, Massimo Valentini.
Jehan's avatar
Jehan committed
165

166 167 168 169 170
Overview of Changes from GIMP 2.9.4 to GIMP 2.9.6
=================================================

Core:

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
171 172 173
  - 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
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
174
    microwave oven with the on/off switch on the outside.
175
  - New clipboard implementation allows copying/pasting layers and
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
176
    layer groups.
177
  - Color tags simplify managing large projects with a lot of layers
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
178
    and layer groups.
Jehan's avatar
Jehan committed
179 180
  - The Mouse Pointer dialog and colors applied to images are now
    color-managed.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
181
  - Gamma and precision selectors for newly created images.
182
  - Never dither when converting to a higher bit depth, or to anything
Jehan's avatar
Jehan committed
183
    more than 16 bits; don't offer dithering options in these cases.
184
  - Default to linear TRC when converting to 16-bit float.
185
  - Pre-initialize some babl-based pixel format conversion routines
Jehan's avatar
Jehan committed
186 187
    at start-up to decrease the initial lazy intialization cost for
    some interactions.
188 189
  - Remove max size limitation of 4GB for XCF files.
  - Support clipboard images in the clipboard brush and pattern.
190
  - libgimp calls are now thread-safe.
191 192 193 194 195

Layers and compositing:

  - Layer modes' code is now refactored to separate gamma-corrected
    variations from the linear light ones, legacy modes have been
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
196 197
    preserved to support older XCF files. UI to switch between the two
    is experimental and should be treated as a temporary design.
198 199 200 201 202
  - 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.
203 204 205
  - Layers created from the GUI and from plug-ins now default to
    normal mode (not normal-legacy), unless all the existing layers
    in the image are also in legacy mode.
206
  - New layer modes: linear burn, vivid light, linear light, pin light,
207 208
    hard mix, exclusion, merge, split, luminance (rgb), pass-through
    (for layer groups only).
209 210 211 212 213
  - 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.

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
214 215 216 217 218
On-canvas interaction changes:

  - Refactor on-canvas interaction code out of some of the tools and
    make it reusable.
  - Update tools accordingly.
219 220
  - Make on-canvas interaction accessible to GEGL-based filters and
    use it in the Spiral and Supernova filters as a test case.
221

222
GUI and usability:
223

224
  - Easily add or remove layer masks by clicking either the layer
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
225
    preview or a new button in the Layers dialog.
226 227
  - Enhance the Layer Attributes dialog to provide the single UI for
    setting layer's name, blending mode, opacity, and offset,
228
    toggling visibility, link status, various locks, color tags.
Jehan's avatar
Jehan committed
229 230
  - Add a Save As button to the “Quit GIMP” dialog and raise images
    on click for easy checks.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
231
  - Allow to choose fill color when resizing layers and images.
Michael Natterer's avatar
Michael Natterer committed
232
  - Quick Mask and Channel Attributes dialogs use the new spinscale
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
233 234 235
    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.
236
  - For all paint tools, when switching to the color picker mode,
237 238
    don't rely on the exact modifier being pressed or released. Instead,
    check if only the right modifier is pressed after *each* modifier
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
239 240 241
    change, and switch to color picking if it is.
  - On startup, GIMP checks for duplicate accelerators in menus, and
    removes duplicates.
Jehan's avatar
Jehan committed
242 243
  - Standard (Freedesktop) and GTK+ icons can now be set by the icon
    theme for a fully consistent style.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
244
  - Many new icons.
Jehan's avatar
Jehan committed
245
  - Toolbox buttons do not grab focus anymore, which used to break
246 247
    usage of the Tab key and other canvas-related shortcuts after
    changing tools with a pointing device click.
248 249 250
  - 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
Jehan's avatar
Jehan committed
251 252
    the length of the path is shorter than the width of the text to be
    warped.
253 254 255
  - Allow to toggle the histogram dialog between gamma and linear.
  - New 'Colors -> Linear Invert' command to provide radiometrically
    correct color inversion.
256 257
  - Quit dialog now exits when all the images in the list have been
    saved.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
258
  - The built-in error dialog now displays errors outputted by GEGL.
259 260
  - Shift-clicking the visibility icon of a layer in a layer group now
    toggles its exclusive visibility within this layer group.
261 262 263

Color selection and management:

264
  - Add the profile import policy to Preferences -> Import.
265 266 267 268 269
  - 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.
270 271 272

Configurability:

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
273
  - Remember settings of many dialogs across sessions.
274
  - New Interface / Dialog Defaults page in the Preferences dialog to
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
275
    control defaults values of various dialogs.
Michael Natterer's avatar
Michael Natterer committed
276
  - Settings on some individual pages of the Preferences dialog can be
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
277
    reset separately now.
278
  - Vertical scrollbar added to keep the height of the Preferences
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
279
    dialog fitting small displays.
280
  - Allow mouse to optionally configure tablet devices
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
281 282
  - Allow creating shortcuts containing the Cmd key + mouse wheel events.
  - Default to 300ppi and 1920x1080px for new documents.
283
  - Default to 62px font size.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
284
  - Do not allow Alt+[0-9] shortcuts, they are typically reserved for
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
285
    display switching.
286 287
  - Icons size is now a configurable option, not a theme feature.
    The icon size is also auto-guessed from monitor resolution now.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
288 289
  - It is now possible to have keybindings for previous/next/top/bottom
    vectors.
290 291 292

Tools:

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
293
  - Complete the Handle Transform tool and make it available by default.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
294
  - Add Hue-Chroma operation/tool that operates in CIE LCH color space.
295 296
  - Replace Color Balance, Colorize and Hue-Saturation with GEGL-based
    filters with a custom user interface to ease future transition to
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
297 298
    non-destructive editing planned for v3.2. Remove the "Image -> 
    Tools -> Color Tools" submenu.
299
  - The Move tool now shows relative coordinates when moving guides
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
300
    and sample points.
301 302 303
  - 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.).
304 305 306 307
  - All paint tools now display the angle (relatively to the horizontal
    line, centered on previously drawn position) alongside distance in
    status bar when straight line constraining (holding shift when
    painting).
308
  - Performance of the Fuzzy Select and the Bucket Fill tool has been
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
309
    improved.
310 311 312 313 314 315
  - 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.
Jehan's avatar
Jehan committed
316 317
  - Select by Color and Color Picker tools work now correctly in color
    spaces other than sRGB.
318 319
  - Free Select tool now waits for Enter being pressed to confirm
    selection, which enables you to tweak positions of polygonal selection.
Jehan's avatar
Jehan committed
320
  - Color Picker doesn't snap to anything when picking colors anymore,
321 322 323
    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.
324 325
  - Color Picker now displays pick position (also visible in the
    Sample Points dialog now), as well as values in CIE LAB and CIE LCH.
326
  - Uncommitted selection by the Intelligent Scissors tool is not
327
    discarded on tool change anymore.
328 329
  - For Intelligent Scissors, GIMP now checks whether the first and the
    last isegments are distinct before closing the curve.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
330 331 332 333
  - 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.
334 335 336

Painting:

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
337 338 339 340
  - 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.
341
  - Rulers, scrollbars, and the Navigation dialog follow canvas
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
342
    rotation now.
Jehan's avatar
Jehan committed
343
  - Canvas rotation is now snappier in certain cases.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
344
  - For bitmap brushes, GIMP now caches hardness and disables dynamic
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
345
    change of hardness to improve painting performance. Bitmap brushes
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
346
    also don't get clipped anymore, when hardness is less than 100.
347 348 349
  - Allow painting on transparent layers with modes other than normal.
  - Add a specialized convolution algorithm for the hardness blur
    to make it faster.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
350 351 352 353 354 355
  - Make the Force option insensitive for the Pencil tool.
  - Add new "Pressure Size" dynamics.

File Formats:

  - Make the default raw (DSLR) image importer configurable.
356 357
  - Add RawTherapee plug-in to pre-process various raw (DSLR) images,
    RawTherapee v5.2 is the minimum requirement.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
358 359 360 361
  - 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.
362
  - Add native WebP loader/exporter with support for ICC profiles,
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
363
    animation, metadata.
364
  - The TIFF loader will not generate warnings about private tags
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
365
    anymore.
366
  - Handle linear gamma PNG files correctly, provide a combo box for
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
367
    specifying PNG bit depth / variant at exporting time.
368
  - Add support for linear burn, linear light, vivid light, pin light,
369
    and hard mix layer modes in PSD (importing and exporting).
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
370 371
  - Load PSD files with layers which contain additional information
    with a length that is not divisible by 4.
372 373 374 375 376 377 378
  - 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.
Jehan's avatar
Jehan committed
379 380 381 382 383
  - 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).
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
384 385
  - Add support for exporting multi-page PDF from image layers, with
    optional reversed order.
Jehan's avatar
Jehan committed
386
  - Add RLE support for RGB565 in file-csource.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
387 388 389 390 391 392 393 394

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.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
395

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
396
Printing:
397 398 399 400

  - Print resolution can now be reset to defaults, new values for the
    same image is actually used now without reloading the image.

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
401
Plug-ins:
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
402

403 404
  - The Screenshot plug-in now assigns either monitors profile or
    converts to sRGB.
405 406 407
  - 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).
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
408
  - Port smooth-palette to GEGL.
Jehan's avatar
Jehan committed
409 410 411
  - 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.
412 413 414 415 416
  - Plug-ins can now be installed into first level directories of a
    plug-ins/ folder. This is in particular to avoid the "DLL hell"
    with shared libraries installed by a plug-in, interfering with other
    unrelated plug-ins. The entry point file has to be named the same as
    the directory (minus extension).
417 418 419 420

Filters:

  - Add GEGL-based filters: Neon (Edge detection), Wavelet Decompose,
421
    Image Gradient, Symmetric Nearest Neighbor, Extract Component,
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
422
    RGB Clip, Simple Linear Iterative Clustering, Waterpixels, Spiral.
423
  - Add rotate/flip buttons to the Convolution Matrix filter's GUI
424
    to rotate/flip the matrix.
425
  - For GEGL-based filters, use a new metadata language to dynamically
426 427
    control UI attributes based on context (e.g. auto-disable
    unapplicable options).
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
428 429 430
  - Allow filter actions to have hardcoded default operation settings
    by encoding them directly in the string attached to all filter
    actions.
431

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
432
Color Palettes:
433

434
  - Merge Palettes command is available for multiple selected color
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
435
    palettes now.
436

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
437
Assets / Resources:
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
438

439
  - Some basic presets are available for the Crop tool now: 2x3,
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
440 441 442 443
    3x4, 16:10, 16x9, and square.
  - Documents templates have been updated and now feature popular,
    contemporary document presets for both print and digital media.

444 445
PDB:

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
446
  - Rename *-paste-as-new to *-paste-as-new-image.
447 448
  - Add PDB API for layer blend space, compositing space, and
    compositing mode.
449 450 451

Build:

452
  - Depend on LCMS2.7+ now, because earlier LCMS2 releases caused
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
453
    problems with certain GIMP blend modes.
454
  - Depend on libpng 1.6.25+ to avoid warnings about known incorrect
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
455
    sRGB profiles, also avoid various vulnerabilities.
456
  - Depend on glib-networking now for HTTPS support.
457
  - Depend on librsvg 2.40.6 which fixes rendering bugs.
458
  - Add a flatpak-builder manifest.
459 460 461

OS-specific changes:

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
462
  - Help browser launches on macOS now.
463 464 465

Bugs:

466
  - Overall 204 bugs have been fixed or partially addressed since
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
467
    GIMP 2.9.4.
468 469 470

Translations:

471 472 473 474
  - Updated: Catalan, Chinese (Taiwan), Croatian, Czech, Danish,
    Finnish, French, German, Greek, Hungarian, Icelandic, Italian,
    Kazakh, Occitan, Polish, Portuguese, Russian, Scottish Gaelic,
    Serbian, Slovak, Slovenian, Spanish, Swedish.
475

Michael Natterer's avatar
Michael Natterer committed
476

477 478 479 480 481
Overview of Changes from GIMP 2.9.2 to GIMP 2.9.4
=================================================

Core:

482
  Color Management:
483 484
  - add new GimpColorTransform object to create abstraction from LittleCMS
  - now color-managed:
485 486 487
    - layer/image/color palette/gradient/pattern previews
    - Color Picker tool
    - color buttons of GimpColorHistory
488
    - GimpFgBgEditor, as used e.g. in the toolbox
489 490 491
    - color selectors
    - DND widget
    - painting tools
492 493 494 495
    - 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
Jehan's avatar
Jehan committed
496
  - color management for grayscale images, including setting preferred
497 498
    ICC profile
  - add fast switching between color managed display and soft-proofing
Jehan's avatar
Jehan committed
499
  - add a per-image "is color managed" switch and show the image's
500 501
    "is color managed" state in the window title string
  - add basic support for creating images with color profiles
Jehan's avatar
Jehan committed
502 503
  - add "Optimize" options for display and soft-proofing to optionally
    speed-up rendering at the cost of color fidelity
504 505 506 507 508
  - 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
509
  - enable color management when the image is converted from/to grayscale
510
  - pass the right color profile around in gimp_selection_float()
Jehan's avatar
Jehan committed
511
  - hardcode the CMYK selector's conversion parameters, as well as NTSC
512 513 514
    parameters in babl/GEGL/GIMP
  - have all previews track the monitor they are on

515
  Core:
516 517 518
  - add "Select -> Flood" select action
  - add "Select -> Remove Holes" action
  - add "Border style" combo to the "Select -> Border..." dialog
519
  - do not request xcf compat mode when compat_toggle not sensitive
Jehan's avatar
Jehan committed
520 521
  - initialize fontconfig in the background to be able to show a pulsing
    progress bar when rebuilding the list of fonts (typically, the first
522 523
    time GIMP runs)
  - fix the Behind blending mode
524
  - make Burn mode output match Gimp 2.8 (partial revert of bug 744265)
525 526 527 528
  - improve file magic matching
  - add a custom guide concept
  - improve updating the statusbar messages and icons

Jehan's avatar
Jehan committed
529

530 531 532
GUI:

  Menus:
533 534 535
  - move the image-duplicate action next to image-new
  - add Image -> Color Management -> Color Management Enabled
  - change "Select _Custom Color..." to "_Custom Color..."
536
  - change "Export" to "Export..." in the File menu
537

538 539
  Dialogs:
  - include recently used colors in the Dockable Colors dialog
540
  - add RGB-based Luminance channel to the Histogram dialog
541
  - fix remembering the order of dockable dialogs
542

543
  Preferences:
544 545 546 547 548 549
  - 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

550
  Themes:
551 552 553
  - rename theme "Default" into "System"
  - add new GUI themes: Lighter, Light, Gray, Dark, Darker

554
  Icons:
555 556 557 558 559
  - 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

560
  Widgets:
561 562
  - add new GimpBufferSourceBox widget and use it in GimpOperationTool

563 564
  View/Display:
  - fix various bugs related to rotated canvas
Jehan's avatar
Jehan committed
565
  - make GIMP not ignore 'Maximized' hints on startup in Windows
566 567 568 569 570 571 572
  - 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

573 574

Tools:
Jehan's avatar
Jehan committed
575

576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608
  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:
609
  - fix text input methods to work in-place (not in an overlayed box)
610
  - add background colors setting, only exposed for advanced input methods
Jehan's avatar
Jehan committed
611

612 613
  Blend:
  - use gegl:distance-transform in the blend tool, it has a progress now
614
  - make shapeburst work with the new interactive gradient code
615 616

  All Painting Tools:
Jehan's avatar
Jehan committed
617 618
  - add mirror symmetry
  - remove artifacts from painting tools in Burn blending mode
619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638
  - 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 <MyPaintBrushes> 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]


639
Plug-ins/GEGL Filters:
640

641
  Preview:
642 643 644 645
  - 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

646 647
  Filters:
  - update the "Recently used" menu with GEGL filters
648 649 650 651
  - 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
652
  - port Tile and Pagecurl plug-ins to GEGL
Jehan's avatar
Jehan committed
653
  - refactor the screenshot plug-in into backend and front-ends, one
654 655 656 657
    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

658
  File Plug-Ins:
659
  - add darktable plug-in to pre-process various raw images
660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677
  - 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

678
  PyGimp:
679 680 681 682 683 684 685 686
  - 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

687
  Script-Fu:
688 689 690 691
  - make regex matching return character indexes
  - fix the hanging of Script-fu on machines with 64-bit longs
  - update tinyscheme code from upstream

692

693
PDB:
694

695 696 697 698 699 700 701 702 703
  - 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
704 705 706
  - Clear DISPLAY before building
  - Disable webkitgtk

707 708

OS-specific changes:
Jehan's avatar
Jehan committed
709

710 711 712
  Windows:
  - Add support for generating crash backtraces using Dr. MingW

713

714 715
Overview of Changes from GIMP 2.8.0 to GIMP 2.9.2
=================================================
Michael Natterer's avatar
Michael Natterer committed
716

717 718 719

Core:

720 721 722 723 724 725
  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
726 727 728 729 730 731 732 733 734 735 736 737
  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
738 739 740 741
  - 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
742
  - Move batch processing to gimp-batch.[ch]
743 744
  - Run batch commands in an already running GIMP instance
  - Ported almost everything from filenames/FILE/fd to GFile/GIO
745 746 747 748
  - Be smarter about migrating old user config files
  - Move many object struct members to private structs

  file:
749
  - Support GIO-ported file load/save procs, handle remote files generically
750

751 752 753 754 755
  - 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
756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784

  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:
785 786 787 788 789 790 791
  - 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
Michael Natterer's avatar
Michael Natterer committed
792
  - Add lots of actions invoking GEGL ops that replace removed plug-ins
793
  - Preview all GEGL ops live on the canvas, using drawable filters
794
  - Mostly switch from using stock-ids to icon-names
Michael Natterer's avatar
Michael Natterer committed
795
  - Turn all stock icons into named icons and add an icon theme
Michael Natterer's avatar
Michael Natterer committed
796
  - Allow selecting colors from an image's colormap
797
  - Add "Show in file manager" to everything that has a filename
Michael Natterer's avatar
Michael Natterer committed
798
  - Add an action search dialog to find actions by keyword and execute them
Michael Natterer's avatar
Michael Natterer committed
799
  - Split the save dialog into subclasses for load, save and export
800
  - Implement various color management dialogs that were in the lcms plug-in
Michael Natterer's avatar
Michael Natterer committed
801
  - Make sure windows appear on the correct monitor
802 803
  - Simplify and reduce the actions that modify paint tool behavior
  - Add canvas rotation and flipping
Michael Natterer's avatar
Michael Natterer committed
804
  - Allow zooming to the selection
805 806 807 808 809 810 811 812 813 814 815 816 817 818
  - 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:

Michael Natterer's avatar
Michael Natterer committed
819
  - Add an "experimental playground" for unfinished tools
820 821 822 823 824 825
  - (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
Jehan's avatar
Jehan committed
826
  - Allow tool dialogs to be embedded on the canvas generically
827
  - Add much more options to painting, like the ability to lock
Michael Natterer's avatar
Michael Natterer committed
828
    tool options to brush defaults, and to zoom the brush with the canvas
829 830
  - Make the blend tool work interactively in realtime
  - Add undo/redo to many tools (using the normal shortcuts)
831 832 833 834


Libgimp:

835 836 837 838 839 840 841 842 843 844
  - 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
845 846 847 848


Plug-ins:

849
  - Remove lots of plug-ins that are now implemented as GEGL ops
850
  - Remove the lcms plug-in, this is now done in the core/libgimp
851 852 853 854
  - 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
855 856 857 858


Source and build system:

859
  - Don't use INCLUDES in Makefile.am, use AM_CPPFLAGS instead
860

861

862 863
General:

864 865
  - Lots and lots of bug fixes
  - Translation updates