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

6 7 8
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.
9

Michael Natterer's avatar
Michael Natterer committed
10

Jehan's avatar
Jehan committed
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
Overview of Changes from GIMP 2.10.20 to GIMP 2.10.22
=====================================================

Core:

  - Verbose version information (`gimp-2-10 -v` on command line, or
    debug output) now displays Flatpak related information when
    available. This is especially useful for debugging (such as the
    exact Flatpak build hash, the runtime version, the installed
    Flatpak extensions, permissions, etc.).
  - OpenCL settings has now been moved to the Playground tab in
    Preferences.
  - On stable builds, "Playground" tab is now visible in Preferences if
    any of the experimental feature has been enabled, even without the
    CLI option `--show-playground`.

Tools:

  - Make "gegl:matting-levin" default engine of Foreground Select tool
    (when present, as it is an optional feature) as it performs a lot
    better.

User interface:

  - In GimpSpinButton, don't propagate Enter key-press events if
    updating the spin-button's value in response changes the entered
    text. This prevents confirming dialogs when hitting Enter after
    entering a math expression in size entries, updating their value
    instead.
    Likewise, don't propagate Escape key-press events if a new value was
    entered, and restore the original value instead.

Plug-ins:

  - Add a new GIMP_EXPORT_NEEDS_CROP export capability, which causes
    gimp_export_image() to crop the exported image content to the image
    bounds; this is useful for formats that support layers, but have no
    concept of global image bounds, hence cropping is the only way to
    enforce the image bounds.
    When showing the export dialog, give an option to either crop the
    layers to the image bounds, or to resize the image to fit the
    layers.
  - In file-tiff, add an option to crop the layers to the image bounds
    when exporting individual layers (using GIMP_EXPORT_NEEDS_CROP added
    in the previous commit), since TIFF has no concept of global image
    bounds otherwise. Cropping is enabled by default.
Jehan's avatar
Jehan committed
57 58 59 60
  - Content type `image/webp` is now recognized (and not only
    `image/x-webp` as both seem to be in used and this format is
    unfortunately not yet listed in IANA media types (so various content
    types are in use, no clear standard apparently).
Jehan's avatar
Jehan committed
61 62 63 64 65
  - TIFF export will not override "DocumentName" metadata tag anymore.
  - DSD import is now a bit more permissive, allowing to load some files
    with invalid header flags regarding compression, while we are able
    to know the right compression from other flags. This allows to
    recover invalid DDS files exported by other software.
Jehan's avatar
Jehan committed
66

Jehan's avatar
Jehan committed
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
Debugging:

  - Add progressive performance logs: progressive logs contain complete
    information after each recorded sample, by writing partial address
    maps at each sample, containing all new addresses introduced by the
    sample.
    This allows recording complete logs even in cases where they can't
    be properly terminated, such as when GIMP crashes or freezes in the
    middle of the log.
    Progressive logs are disabled by default, since they potentially
    increase the sampling cost. They can be enabled through a toggle
    in the log file-dialog, or through GIMP_PERFORMANCE_LOG_PROGRESSIVE
    environment variable.
    Performance log viewer can now process progressive performance logs
    too.
  - Allow controlling performance-log parameters through the UI.

Build:

  - new `distcheck` step in Continuous Integration.

88
Overview of Changes from GIMP 2.10.18 to GIMP 2.10.20
89 90
=====================================================

Jehan's avatar
Jehan committed
91 92 93 94 95 96
Tools:

  - Crop tool now has a "Delete cropped pixels" option active only in
    image crop mode, allowing to choose whether to crop layers or only
    the canvas (cropped pixels will be made invisible as out-of-canvas
    but would still be present). The option is unchecked by default,
Michael Natterer's avatar
Michael Natterer committed
97 98 99 100 101 102
    as it is the non-destructive behavior, which also means the
    default behavior is changed.
  - Crop tool in image crop mode will not crop layers with "Lock
    pixels" on, anymore, even if "Delete cropped pixels" is checked.
  - Painting tools can now restore opacity and blend mode from
    presets.
Jehan's avatar
Jehan committed
103

Jehan's avatar
Jehan committed
104 105
User interface:

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
106
  - Image / Precision renamed to Image > Encoding
Michael Natterer's avatar
Michael Natterer committed
107 108
  - Tool groups can now display their tool list on hover rather than
    on click. This can be set in Preferences, in the Toolbox tab.
Jehan's avatar
Jehan committed
109 110
  - Improved update notification GUI in About dialog, and now also
    showing an update comment when one was set in gimp_versions.json.
Jehan's avatar
Jehan committed
111 112
  - Palette Editor dockable: the color index in the current palette is
    now shown in front of the color name.
Jehan's avatar
Jehan committed
113

114 115 116 117 118
Plugins:

  - In file-psd, make the data_start and data_len fields of the
    PSDimageres and PSDlayerres structs unsigned, to avoid potential
    overflow/sign-extension
Jehan's avatar
Jehan committed
119 120
  - file-raw: Canon CR3 files are now properly recognized by GIMP and
    sent to your raw developer software of choice.
Jehan's avatar
Jehan committed
121 122 123
  - PNG and TIFF export: "Save color values from transparent pixels"
    defaults now to not saving color values (i.e. channels set to 0)
    when alpha channel is present and 0 itself.
Jehan's avatar
Jehan committed
124 125 126 127
  - PDF import: multi-pages are now imported in bottom-first order,
    similar to animated formats, and also similar to defaults for PDF
    export. This brings consistency but break existing behavior, hence
    needs to be noted.
Michael Natterer's avatar
Michael Natterer committed
128 129
  - Added support for exporting 16-bit PSDs, read and write channels
    from/to PSd in the right order
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
130 131 132

Filters:

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
133 134 135
  - The 'Vignette' filter now has on-canvas controls
  - New 'Filters -> Blur -> Focus Blur' filter with on-canvas controls
    to emulate out-of-focus blurring
Michael Natterer's avatar
Michael Natterer committed
136 137
  - New 'Filters -> Blur -> Variable Blur' filter that uses an aux
    mask input to blur an image with variable intensity
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
138
  - New 'Filters -> Light and Shadow -> Bloom' filter
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
139
  
140 141
Updated translations:

Michael Natterer's avatar
Michael Natterer committed
142 143 144
  - British English, Catalan, Chinese (Taiwan), Dutch, Finnish,
    German, Greek, Italian, Korean, Polish, Romanian, Russian,
    Spanish, Swedish, Turkish, Ukrainian
145

146 147 148 149 150 151 152
Icons:

  - Replace fileicon.ico with version contain 24x24, 64x64, 128x128,
    and 256x256 sizes for Windows icon
  - Replace wilber.ico with version containing 128x128 size of Windows
    icon

153 154
Bug fixes:

lillolollo's avatar
lillolollo committed
155
  - #189, #354, #872, #1439, #3405, #3533, #3558, #3777, #3841, #4094,
Michael Natterer's avatar
Michael Natterer committed
156 157 158
    #4328, #4363, #4487, #4618, #4641, #4663, #4696, #4734, #4745,
    ##4793, 4827, #4846, #4858, #4871, #4895, #4904, #4919, #4967,
    ##4968, #4992, 4996, #5009, #5010, #5033
159 160 161

Developers:

Michael Natterer's avatar
Michael Natterer committed
162 163 164
  - Ell, Jehan, lillolollo, Marco Ciampa, Michael Natterer, Øyvind
    Kolås, pesder, Salamandar, Sergio Jiménez Herena, Simon Budig, T
    Collins, woob
165 166 167

Contributors:

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
168
  - Nikc, Sabri Ünal, Michael Schumacher, Jernej Simončič, luz.paz
169 170 171

Translators:

Michael Natterer's avatar
Michael Natterer committed
172 173 174 175 176 177
  - Alexandre Prokoudine, Anders Jonsson, Bruce Cowan, Cristian
    Secară, Daniel Korostil, Daniel Șerbănescu, Dimitris Spingos, Jiri
    Grönroos, Jordi Mas, Nathan Follens, Piotr Drąg, Rodrigo Lledó
    Milanca, Sabri Ünal, Seong-ho Cho, Tim Sabsch, Yuri Chornoivan,
    Георгий Тимофеевский

Michael Natterer's avatar
Michael Natterer committed
178

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
179 180 181 182 183 184 185 186 187 188 189 190 191
Overview of Changes from GIMP 2.10.16 to GIMP 2.10.18
=====================================================

Core:

  - In gimp:replace, when compositing the same content over itself,
    i.e., when the input and aux buffers share the same storage and
    same tile alignment, pass the input buffer directly as output,
    instead of doing actual processing. In particular, this happens
    when processing a pass-through group outside of its actual bounds.

User interface:

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
192
  - Add new Symbolic-High-Contrast and Symbolic-Inverted-High-Contrast
Michael Natterer's avatar
Michael Natterer committed
193 194 195
    themes, which are automatically-generated high-contrast variants
    of the (original) Symbolic theme.  The contrast factor is settable
    in the makefile, and is currently at 1.5 for both themes.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
196 197 198 199 200 201 202
    
  - Rename tools/invert-svg to tools/svg-contrast, which now takes a
    contrast-factor argument, and adjusts the input SVG contrast,
    instead of just inverting it.  Note that we can still use the tool
    to invert icons, using a contrast of -1.

  - Allow horizontal scrollbars in all the Preferences dialog tree-
Michael Natterer's avatar
Michael Natterer committed
203 204
    views, so that they don't limit the minimal width of the dialog
    (in particular, the UI- and icon-theme tree-views may contain
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
205 206
    arbitrarily-long paths).

Michael Natterer's avatar
Michael Natterer committed
207 208 209
  - Draw a border around the color FG/BG color areas as a pair of
    black and white rectangles instead of letting GTK do this. This
    imporoves the legibility of borders, especially in dark themes.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
210 211 212 213 214 215 216 217 218 219 220 221 222 223

Tools:

  - In GimpPaintTool, when not snapping brush outline to stroke, make
    sure to properly snap the cursor position to 15-degree angle
    multiples in line mode, not only when painting the line, but also
    during motion.

Plug-ins:

  - Add naive support for CMYK 8-bit PSD files

Updated translations:

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
224
  - Basque, Catalan, Danish, Polish, Spanish, Swedish, Ukrainian
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
225 226 227

Bug fixes:

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
228
  - #4643, #4634
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
229 230 231

Developers:

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
232
  - Ell, Massimo Valentini
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
233 234 235

Translators:

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
236 237
  - Alan Mortensen, Anders Jonsson, Asier Sarasua Garmendia, Daniel
    Korostil, Jordi Mas, Piotr Drąg, Rodrigo Lledó Milanca
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
238

239

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
240 241 242
Overview of Changes from GIMP 2.10.14 to GIMP 2.10.16
=====================================================

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
243 244 245 246 247 248
Core:

  - In gimp_gegl_apply_cached_operation(), use gint64 for storing the
    total and processed pixel counts used for reporting progress, to
    avoid overflowing when applying an operation to a large image.

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
249
  - In GimpFilterTool and gimp_drawable_apply_operation(), use
250 251 252
    gimp_drawable_filter_set_add_alpha() to add an alpha channel when
    applying an operation that specifies "needs-alpha" to a drawable
    that can have alpha.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
253 254

  - In GimpFilterTool, move all the drawable-filter option setup to a
255 256 257
    new gimp_filter_tool_update_filter() function, and call it
    whenever the drawable-filter's options need to be updated. This
    avoids duplicating logic in various places.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
258 259 260 261 262

  - Improve the efficiency of decoding RLE data when loading ABR
    brushes, by reading entire scanlines into a buffer all-at-once,
    instead of reading the stream byte-by-byte.

263 264 265 266 267 268 269 270
  - GIMP now optionally phones home to find out if there's a new
    version available and then tells the user if there is one
    indeed. It also keeps track of the installer revision and then
    warns if there's a newer installer available. This can be disabled
    in Preferences. In that case, users still have the option to
    manually check for an update via the About dialog. The feature can
    be disabled entirely with the '--disable-check-update' configure
    switch.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
271

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
272 273
Tools:

274
  - New 3D Transform tool where you can set vanishing point, camera's
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
275
    focal length, and the move and rotate layer, selection, path, or
276 277 278 279 280
    image in 2.5 space. With the "Unified interaction" option enabled,
    all three interaction modes of the grid (camera, move, and rotate)
    are available simultaneously. In this mode, the inner and outer
    regions of the item are used for moving and rotation, respectively,
    and the vanishing point is controlled through through a handle.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
281

282 283
  - Transform tools now respect the Clip option and update the canvas
    preview accordingly.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
284

285 286 287 288 289
  - New "Composited preview" option allows respecting layer's blending
    mode and position in the layer stack rather than rendering it as
    an overlay on top of the overall layer stack. This simplifies
    creating complex layer compositions greatly. The option requires
    mipmaps to be used and thus is disabled by default. It also comes
290 291 292 293
    with an experimental "Synchronous preview" suboption to render the
    composited preview synchronously. This reduces the lag for
    painting the preview, but can harm responsiveness for bigger
    images, where rendering the preview is slow.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
294 295 296 297 298 299 300

  - Add a new "Preview linked items" option to the transform-grid
    tools. When this option is enabled, together with composited
    previews, the transform preview includes all linked layers and
    channels when transforming a layer/channel. Paths are currently
    unsupported.

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
301
  - New widget called GimpPivotSelector, a 3x3 grid of toggle buttons,
302 303
    is now used for selecting a natural pivot position (e.g. for a
    transform) relative to an item: its center, its corners, and the
304 305
    midpoints of its edges. Currently used in Rotate and 3D Transform
    tools.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
306
 
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
307
  - Add "Show all" support to the Bucket Fill tool in line-art mode
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
308

lillolollo's avatar
lillolollo committed
309
  - Color picker and sample points now support displaying values in
310
    Yu'v' (CIE 1976 UCS) color space.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
311

312
  - The Symmetry Painting dock now has an "Enable reflection" option
313
    that allows painting patterns resembling a kaleidoscope.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
314

315 316 317
  - Transform clipping is temporarily disabled for layer groups. No
    preview other than 'Adjust' works anyway. This will be fixed later
    on.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
318

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
319 320
  - Construct a box-filtered mipmap hierarchy for the original brush
    on-demand, and the closest mipmap is used as the resampling source
321 322
    for downscaled brushes, significantly improving the output
    quality.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
323

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
324 325 326 327 328 329
  - Now that painting is done in a separate thread, the display update
    rate has a far smaller impact on it. Increase the GimpDisplay
    update rate, which handles image updates, to 60 FPS, and the
    GimpDrawTool update rate to 120 FPS. In particular, the latter
    change makes the brush outline motion much smoother.

330 331 332
  - In the Airbrush tool, increase the maximal stamp FPS from 15 to
    60, and change the corresponding maximal Rate value from 150 to
    100. This technically affects tool presets, but we'll live.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
333

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
334 335 336
  - Add a new "Snap brush outline to stroke" toggle to the "Image
    Windows" preferences page. When enabled, the brush outline in
    paint tools snaps to the individual dabs while painting, which is
337 338 339
    how it worked before version 2.10.16. Disable the option by
    default.  This seems to be what most other programs are doing, and
    it does give paitning a smoother feel.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
340 341 342 343 344

  - The Warp Transform tool now respects settings for painting tools:
    showing the brush outline, snapping to dabs, and showing the paint
    tool cursor.

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
345 346
UI:

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
347 348 349
  - Tools are now logically grouped in the toolbox by default. Users
    can customize the groups to their liking or disable this feature
    altogether in the Preferences dialog (Interface / Toolbox page).
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
350

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
351
  - New opt-out compact style for sliders with revamped interaction.
352 353 354
    The widget uses a narrower layout, and the different
    upper/lower-half behavior is gone. Instead, the behavior depends
    on the mouse button and modifier used:
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
355 356

    - left-click is used for absolute adjustment,
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
357 358
    - Shift + left-click + drag changes value in small increments,
    - Ctrl + left-click + drag changes value in large increments,
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
359
    - middle-click enables numeric input mode;
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
360 361
    - right-click enables numeric input mode and selects the value.

362 363 364 365
  - The "You can drop dockable dialogs here" message is gone from the
    toolbox for good. Instead, highlight dockable areas when a user
    starts dragging a dockable dialog, and intensify the highlight as
    the dialog goes over a dockable area.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
366

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
367 368 369 370 371 372 373 374 375 376 377
  - Consolidate UI for merging down and anchoring layers:
    As they are both mutually exclusive and serve an almost identical
    purpose, the "Merge down" and "Anchor Layer" are given mutually
    exclusive visibility in menus, and the anchor button is replaced
    with a merge down button in the Layers dockable whenever there is
    no active floating selection. Modifier keys are available:

    - Shift: merge layer group
    - Ctrl: merge visible layers
    - Ctrl + Shift: merge visible layers from last used values

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
378 379 380 381
Plugins:

  - In plug_in_compat.pdb, when wrapping an op node inside a graph,
    set the op node as the graph node's underlying operation. This
382 383
    allows gimp_gegl_apply_operation() to perform certain
    optimizations.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
384

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
385
  - The Spyrogimp plugin now features a Visual tab where the inner
386 387
    mechanics of a spirograph is abstracted away, and you operate on
    amount of petals etc. The plugin now also allows saving a pattern
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
388 389
    as a path rather than rendering it to a layer as a bitmap.

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
390 391 392
  - Improve the loading speed for PSD files, mostly by eliminating
    excessive copies.

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
393 394 395 396 397 398 399 400 401 402
Filters:

  - Don't disable gegl:color-to-alpha (which has "needs-alpha") 
    when the drawable doesn't have an alpha channel, if one can be
    added.

  - Don't disable color-to-alpha for grayscale drawable, since the
    operation is applicable to grayscale images (in particular, it
    doesn't add color where there was none), and since GIMP no longer
    distinguishes between layers and channels according to the
403
    drawable format when updating the filters actions.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
404

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
405 406 407 408
Windows:

  - Installer: unofficial languages, ghostscript 9.50.
  - Installer: skip .debug files when they don't exist.
409 410
  - Installer: properly remove old icons on 32-bit installs and
    per-user installs.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
411 412 413

macOS:

414 415
  - Set required variables if it is running from Apple application
    bundle.
416
  - The macOS build now ships with the dashboard dock for displaying
lillolollo's avatar
lillolollo committed
417
    performance graphs.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
418 419 420

Updated translations:

421 422 423
  - British English, Catalan, Danish, French, German, Hungarian,
    Icelandic, Italian, Japanese, Polish, Russian, Spanish, Swedish,
    Turkish, Ukrainian.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
424 425 426

Bugfixes:

427
   - #4172, #4194, #4205, #4218, #2543, #4185, #4246, #2794, #4209,
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
428
     #4278, #4372, #4187, #4392, #2674, #4338, #2862, #4203, #4204,
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
429
     #4354, #1266, #4584, #4174, #4285, #4366, #1975, #4605
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
430 431 432

Developers:

433 434 435
  - Alex Samorukov, Cyril Richard, Elad Shahar, Ell, Elle Stone,
    Jehan, Jernej Simončič, lillolollo, Massimo Valentini, Michael
    Natterer, Pascal Terjan, woob.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
436 437 438

Translators:

439 440 441 442 443 444
  - Alan Mortensen, Alexandre Prokoudine, Anders Jonsson, Balázs
    Meskó, Balázs Úr, Bruce Cowan, Daniel Korostil, Jordi Mas, Julien
    Hardelin, Marco Ciampa, Piotr Drąg, Rodrigo Lledó Milanca, Ryuta
    Fujii, Sabri Ünal, sicklylife, Sveinn í Felli, Tim Sabsch, Zander
    Brown.

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
445

Jehan's avatar
Jehan committed
446 447 448 449 450
Overview of Changes from GIMP 2.10.12 to GIMP 2.10.14
=====================================================

Core:

451 452 453 454 455
  - New "Selected areas continue outside the image" toggle option to
    the "Feather Selection" dialog.
  - New "Allow editing on non-visible layers" setting in Preferences
    to allow painting, transforming, and selecting on layers with
    toggled off visibility.
Jehan's avatar
Jehan committed
456
  - XCF loading a bit more resilient to corruption: it doesn't stop
457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473
    any more at the first layer or channel error; instead it tries to
    load more layers/channels to salvage as much data as possible from
    a corrupted XCF file.
  - In gimp:gradient, fix dithering to correspond to how we actually
    round float values to 8-bit. In particular, this avoids
    introducing noise when a component is fixed at 0 or 1 along a
    segment.
  - New "Show All" view mode allowing to show pixels outside the
    canvas boundary.
  - New "Show Canvas Boundary" option to render a dotted line around
    the canvas boundary.
  - New "Keep Padding in "Show All" Mode" option, also available as a
    default option via Preferences, to preserve the padding color
    instead of displaying the checkerboard.
  - Several features updated to react as expected when run
    out-of-canvas: color-picking, canvas grid, transform tools, bucket
    fill, and more.
474 475 476 477
  - Loaded images' pixel density will now default to 72 PPI when no
    explicit resolution information was stored in the imported file.
    Newly created images' default pixel density will continue to be
    based on the default image template (with value 300 PPI if it has
478 479 480
    not be changed), yet not loaded images anymore. 72 PPI is the
    common default in most software (and in standards such as Exif) so
    it makes sense we stick to it, only for loaded images.
Jehan's avatar
Jehan committed
481 482 483 484

Tools:

  - Free Select tool: fast copy|cut-paste modifiers (Alt + Ctrl|Shift)
485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501
    are now working even when the selection is not committed. Starting
    a fast copy|cut-paste will automatically close the polygon and
    commit the selection, accelerating fast usage of free selections.
  - Foreground Select tool: new "Grayscale" Preview Mode. Also, a
    color selector for "Color" preview (original preview mode) now
    available, to select any color and opacity for the preview.
  - Add a new "Image" transform type to the transform tools, in
    addition to the existing "Layer", "Selection", and "Path"
    transform types.  The "Image" mode transforms the entire image,
    rather than a single item. In tools with a preview, the preview
    shows the transformed image projection.  The clipping mode
    controls how the canvas is clipped during the transform; in
    particular, the ADJUST clipping mode resizes the canvas to fit its
    transformed size.
  - In GimpFilterTool, add a new "clipping" option, which can be
    either Adjust or Clip.  This option is controllable for layers,
    when there's no selection mask.
Jehan's avatar
Jehan committed
502 503 504
    When set to Adjust, which is used by default, the filter's output
    may extent past the drawable's boundary, and the drawable will be
    resized to match the output when committed.
lillolollo's avatar
lillolollo committed
505
  - Gradient tool: offset support in shaped gradients
Jehan's avatar
Jehan committed
506

Jehan's avatar
Jehan committed
507 508
Plug-ins:

509 510 511 512 513 514 515
  - Simple 8-bit port of filters to GEGL: nl-filter, film,
    fractal-explorer, flame, blinds, jigsaw, gradient-flare,
    checkerboard, tile-small, curve-bend, sample-colorize, map-object,
    lighting, grid, despeckle, sphere-designer, contrast-retinex, hot,
    sparkle, cml-explorer, destripe, twain, animation-optimize,
    depth-merge, warp, imagemap, gimpressionist
  - Port of filters to GEGL with float support: van-gogh-lic.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
516
  - Add color profile support for HEIF (only when libheif 1.4.0 is
Jehan's avatar
Jehan committed
517 518 519 520 521
    available).
  - TIFF import will now ask (in interactive mode) how to process
    unspecified TIFF channels: non-premultiplied (used to be the
    default) alpha, premultiplied alpha, or just import as generic
    channel.
Jehan's avatar
Jehan committed
522 523
  - HEIF export now improved with same profile logics as JPEG or WebP
    (it can actually export higher bit-depth data, so profile logics
524 525 526 527 528 529 530
    should be the one as in PNG, but we only support 8 bpc HEIF for
    the time being).
  - HEIF export dialog now has a "Save color profile" checkbox
    allowing to not export with a profile when needed (needs libheif
    1.4.0 or higher).
  - PDF exporting: text layers in layer groups are now exported as
    proper text.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
531
  - Cleaned up the file-dds GUI, removed the "Advanced" expander.
532 533 534 535 536 537 538 539
  - gimptool external tool now install plug-ins into subfolders (this
    is not mandatory in GIMP 2.10 yet, unlike future GIMP 3, but is
    already the recommended folder structure for plug-ins).
  - 3 procedures ("color-decode-ycocg", "color-decode-ycocg-scaled"
    and "color-decode-alpha-exp") removed from file-dds plug-in
    because they are hacks which should stay internal to the plug-in
    and are semantically wrong because colors in drawables are never
    in such formats.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
540

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
541 542
Filters:

543 544
  - New "Normal Map" filter to generate normal maps from height maps
    in the Generic section.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
545
  - Replace old filters with GEGL operation counterparts: edge-neon
546 547 548 549
    (gegl:edge-neon), contrast-normalize (gegl:stretch-contrast),
    oilify (gegl:oilify)
  - Add gegl:bayer-matrix and gegl:linear-sinusoid to Filters ->
    Render -> Pattern.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
550 551 552
  - Add gegl:newsprint to Filters -> Distorts.
  - Add gegl:mean-curvature-blur to Filters -> Blur.

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
553 554
Performance:

555 556 557 558 559 560 561 562 563 564
  - Add an active-thread variable to the dashboard's misc group,
    showing the number of active worker threads.
  - Reduce time complexity of layer-group translation. When
    translating a layer group, avoid separately updating the original
    area of the child layers before translating them (as per the fix
    to issue #3484), as this results in quadratic time complexity
    w.r.t. to the maximal subgroup nesting level. Instead, simply
    defer the updating of the group's offset until *after* translating
    the child layers, so that their original area isn't clipped by the
    parent, while their new area is still properly updated even if the
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
565
    parent's size changes.
Jehan's avatar
Jehan committed
566 567 568

User interface:

Jehan's avatar
Jehan committed
569
  - Many mnemonics added in various dialogs.
570 571 572 573
  - Add a gimp-rotate-image-arbitrary action, and a corresponding
    "Image -> Transform -> Arbitrary Rotation..." menu entry, which
    activates the rotate tool in image mode (similarly to the
    corresponding action for layers).
Jehan's avatar
Jehan committed
574 575
  - On Windows, minimized GIMP window is now deiconified when GIMP is
    run again (clicking its shortcut or otherwise).
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
576

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
577 578 579
Preferences:

  - New "Swap compression" option: explicit control over the tile-swap
580 581 582
    compression algorithm in GEGL. "Best performance" is used by
    default, "Balanced", "Best compression", and "None" (disables
    compression) are available.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
583

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
584 585 586 587 588
Devel docs:

  - Update the libgimpconfig and libgimpbase docs.
  - Update docs with missing symbols and types.
  - New docs for structs and enums.
Jehan's avatar
Jehan committed
589

Jehan's avatar
Jehan committed
590 591 592 593 594
Installers:

  - Install 64-bit Python on 64-bit Windows (until now, the installer
    used to install 32-bit Python for all architectures).
  - Windows installer now supports per-user install.
Michael Natterer's avatar
Michael Natterer committed
595

Jehan's avatar
Jehan committed
596 597 598 599
Debugging:

  - New mnemonic-clashes tool to help looking for mnemonic clashes.

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
600 601
Translations:

602 603 604 605
  - Basque, Brazilian Portuguese, British English, Catalan, Chinese
    (Taiwan), Croatian, Danish, Dutch, French, German, Greek,
    Hungarian, Icelandic, Indonesian, Italian, Latvian, Polish,
    Russian, Slovenian, Spanish, Swedish, Turkish.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
606 607 608 609

Bugfixes:

   - #3630, #3226, #3610, #1725, #3093, #3599, #3597, #3082, #3553, #3435,
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
610
     #3503, #3532, #3164, #3560, #3500, #3493, #3514, #3512, #2685, #3641,
lillolollo's avatar
lillolollo committed
611 612 613
     #1002, #360,  #3263, #2221, #3893, #2708, #3100, #2873, #3655, #2206,
     #3341, #3718, #3763, #3112, #3723, #4049, #4068, #3663, #4119, #4008,
     #2837, #3994, #3990, #1283, #2561
614 615 616

Code contributors:

617 618 619 620
   Alexandre Prokoudine, Ell, Federico Mena Quintero, Jehan, Jernej
   Simončič, Lionel, Massimo Valentini, Michael Natterer, Michael
   Schumacher, Oleksii Samorukov, Sabri Ünal, Sergio Jiménez Herena,
   Thomas Manni, lillolollo, sarah, woob, Øyvind Kolås.
621 622 623

Translators:

624 625 626 627 628 629 630 631
   Alan Mortensen, Alexandre Prokoudine, Anders Jonsson, Andika
   Triwidada, Asier Sarasua Garmendia, Balázs Meskó, Balázs Úr, Bruce
   Cowan, Claude Paroz, Daniel Mustieles García, Dimitris Spingos,
   Emin Tufan Çetin, Hannie Dumoleyn, Jordi Mas, Julia Dronova, Julien
   Hardelin, Marco Ciampa, Martin Srebotnjak, Milo Ivir, pesder, Piotr
   Drąg, Rafael Fontenelle, Rodrigo Lledó Milanca, Rūdolfs Mazurs,
   Sabri Ünal, Sveinn í Felli, Tim Sabsch, Zander Brown.

632

633 634 635 636 637
Overview of Changes from GIMP 2.10.10 to GIMP 2.10.12
=====================================================

Core:

Michael Natterer's avatar
Michael Natterer committed
638 639 640 641 642 643
  - Add an "Incremental" option to the Dodge/Burn tool, which,
    similarly to the Paintbrush, Pencil, and Eraser tools, applies the
    effect incrementally as the pointer moves.
  - Curves now have a concept of smooth vs corner points: smooth
    points produce a smooth curve, while corner points produce a sharp
    curve (previously, all points were smooth).
644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670
  - Search the user font directory path on Windows (since Windows 10,
    non-admin users have the ability to install fonts). This is only a
    temporary hack until fontconfig adds proper upstream support:
    https://gitlab.freedesktop.org/fontconfig/fontconfig/issues/144
  - In gimp_brush_core_get_paint_buffer(), when allocating a new paint
    buffer, clear the old buffer *before* allocating the new one, to
    reduce the amount of simultaneously allocated memory.
  - In GimpPaintbrush, avoid refilling the paint buffer at each dab if
    the paint color/pixmap hasn't changed, hence allowing faster
    painting in some specific cases.
  - Add hygon cpu detection and enable MMX/SSE support.
  - Add a GimpSymmetry::get_transform() virtual function and a
    corresponding gimp_symmetry_get_transform() function which return
    the brush transform corresponding to a given symmetry stroke in
    terms of the rotation angle and reflection flag (in contrast to
    gimp_symmetry_get_operation() which returns the same transforation
    in terms of a GeglNode). This allows us to simplify, fix (artifact
    bugs, etc.), and improve the painting-code performance for several
    symmetry painting cases.
  - New gimp-brush-pipe-spacing parasite set by core code to preserve
    GIH brush's spacing across reloads.
  - Add a new Offset filter tool, as a front-end to gimp:offset. The
    tool replaces, and provides the same interface as the drawable-
    offset dialog while also providing live preview and on-canvas
    interaction.

Plug-ins:
Michael Natterer's avatar
Michael Natterer committed
671

672 673
  - Exported profile and data format strategy updated in several file
    plug-ins.
Michael Natterer's avatar
Michael Natterer committed
674

675 676 677 678
    * When not saving a profile, we always export as sRGB data, as most
      viewers would not display the image properly otherwise.
    * When saving a profile:
        * If a profile was manually assigned, we always export to the
Michael Natterer's avatar
Michael Natterer committed
679 680
          assigned format, hence pixel data is converted accordingly,
	  whatever the work format.
681 682 683 684
        * If no profile was assigned:
            * If the export format support high-bit depth, we export the
              work format as-is.
            * If the export format is 8-bit max, we convert the work
Michael Natterer's avatar
Michael Natterer committed
685 686
              format to sRGB, except if the work format is 8-bit linear.

687
    The following plug-ins were updated: JPEG, PNG, TIFF and WebP.
Michael Natterer's avatar
Michael Natterer committed
688

689
  - TIFF plug-in now supports layer export.
Michael Natterer's avatar
Michael Natterer committed
690 691
  - Add accelerator on "Save color _profile" item in JPEG export so
    that all items in the dialog have keyboard accelerators.
692 693 694
  - Add a "Save color profile" checkbox in WebP export and remove the
    "Advanced Options" expander (all metadata and profile writing
    options are now directly visible).
Michael Natterer's avatar
Michael Natterer committed
695 696 697 698 699
  - Process cases of non-conformant TIFF file with extra channels
    while ExtraSamples is not set by assuming the first extra channel
    is a non-premultiplied alpha channel and outputting a warning. In
    the future, this should be updated further by a dialog asking what
    to do with the non-defined dialog (consider as premultiplied or
700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730
    non-premultiplied alpha channel, or just save as extra channels).

Tools:

  - Add input/output spin-buttons to the Curves tool, which allow
    setting the selected point's coordinates numerically. When the image
    precision is greater than 8-bpc, use a 0.00-100.00 range for the
    point-coordinate spin-buttons instead of a 0-255 range.
  - In the Curves tool, allow changing the curve's point types (cf. new
    curve corner points in Core section). Corner points are displayed
    with a diamond shape instead of a circle.
  - Free Select tool now creates a selection as soon as the polygon is
    closed. This selection is updated when the polygon, or the relevant
    tool-options, change, similarly to GimpRectangleSelectTool.
  - Derive GimpEraser from GimpPaintbrush, instead of directly from
    GimpBrushCore.
    This allows GimpEraser to reuse the paint-buffer content across
    dabs, improving performance.
  - Allow moving an intersecting pair of guides with the Move tool.

User interface:

  - In GimpCurveView, when dragging an existing curve point, don't
    immediately move the point to the cursor position upon button
    press, but rather move it relative to its current position as the
    cursor moves. This allows selecting a point without moving it, and
    adjusting its position more easily.
  - when the cursor hovers above a point in GimpCurveView, or when
    dragging a point, have the coordinate indicator show the point's
    position, rather than the cursor's.
  - In GimpCurveView, when holding down Ctrl while adding/dragging a
Michael Natterer's avatar
Michael Natterer committed
731 732 733
    point, snap the y-coordinate to the original curve (at the start
    of the drag). This is particularly useful for adding points along
    the curve.
734 735 736 737
  - In GimpDashboard, don't show legend for groups with no meter.
  - Add a tile-alloc-total variable to the dashboard's memory and misc
    groups, showing the total amount of memory used by the tile
    allocator.
Michael Natterer's avatar
Michael Natterer committed
738 739
  - Add a "Save Keyboard Shortcuts Now" button to the Configure
    Keyboard Shortcuts dialog.
740 741 742 743

Installers:

  - Windows: enable InnoSetup "unofficial" translations. Otherwise we
Michael Natterer's avatar
Michael Natterer committed
744 745
    had a bunch of wasted work from our translators of several
    languages whose translations were never used in the installer.
746 747 748 749 750 751

Translations:

   - 12 translations were updated: Catalan, Chinese, French, German,
     Hungarian, Indonesian, Italian, Polish, Russian, Spanish, Swedish
     and Turkish.
Michael Natterer's avatar
Michael Natterer committed
752

753

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
754
Overview of Changes from GIMP 2.10.8 to GIMP 2.10.10
Michael Natterer's avatar
Michael Natterer committed
755
====================================================
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
756 757 758

Core:

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
759 760 761 762 763
  - Add gimp-scratch allocator, a fast memory allocator (on the order of
    magnitude of alloca()), suitable for small (up to a few megabytes),
    short-lived (usually, bound to the current stack-frame) allocations.
    Unlike alloca(), gimp-scratch doesn't use the stack, and is therefore
    safer, and will also serve bigger requests, by falling-back to malloc().
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
764 765 766 767 768 769
  - 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
lillolollo's avatar
lillolollo committed
770
    during layer transforms, leading to discrepancies between the
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
771
    transformed layer and the transformed mask.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
772 773 774 775 776 777
  - 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.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
778 779 780
  - Layer groups are now rendered in bigger chunks rather than tile-by-tile
    (which used to pretty much eliminate multithreading for groups), which
    improves the rendering speed.
Jehan's avatar
Jehan committed
781 782 783 784 785 786
  - Make saving/exporting files more robust to errors. In particular if
    an error occurs during the process (be it a bug, a memory error, or
    anything else), GIMP won't overwrite anymore any existing file with
    incomplete contents, so that you won't end up with no valid files at
    all.
  - Fix a regression on support of various graphics tablet.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
787 788 789
  - Remove the "Edit -> Fade..." feature: it makes GIMP use two buffers
    instead of one (east into system resources), it's broken in 2.10, and
    we can make the UX better for filters.
Jehan's avatar
Jehan committed
790 791 792 793
  - New generic canvas modifier 'Alt + middle click' allowing to pick
    layers by clicking on pixels. The available layers will be looped
    through (starting from the upper one) while Alt key is hold and the
    picked layer name will be temporarily displayed in the status bar.
Jehan's avatar
Jehan committed
794 795 796 797
  - When clearing a channel, do nothing if the channel is already empty;
    otherwise, align the cleared rectangle to the channel buffer's tile
    grid, so that all affected tiles are dropped, rather than zeroed.
    Furthermore, only update the affected region of the channel.
Jehan's avatar
Jehan committed
798 799 800 801 802 803 804 805
  - Brush and pattern saving logics has been moved to core code (instead
    of plug-in).
  - Clipboard brushes and pattern can now be duplicated.
  - Parametric brushes are now 32-bit float to avoid posterization on
    large brushes.
    Note: raster brushes are still 8-bit and plug-ins only have access
    to 8-bit versions of high-precision brushes/patterns. New API will
    be required to handle high-precision data.
Jehan's avatar
Jehan committed
806 807
  - On-canvas preview while editing a color in the colormap of an
    indexed image.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
808 809 810 811

User interface:

  - Enabled HiDPI/Retina support for the GTK2/OSX build, fixes blurry icons. 
812 813 814 815 816
  - Add a tooltip to the "better compression" checkbox in save dialog to
    make it clearer it does not mean that the file size is necessarily
    smaller in every cases. In particular some best/worst case are
    possible when an algorithm less efficient in general may end up
    better on a particular image.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
817 818
  - Add basic support for cursors with a scale factor of 2 for HiDPI
    (artwork to be updated).
Jehan's avatar
Jehan committed
819 820 821 822
  - Foreground and background color icons, as well as color history will
    now display out-of-gamut warning on indexed images for colors
    outside of the palette, as well as on grayscale images, for non-gray
    colors.
Jehan's avatar
Jehan committed
823
  - Pack color picker and hexadecimal entry on same line in Color dock.
Michael Natterer's avatar
Michael Natterer committed
824
  - Add an "Open as Image" button to the brushes dialog.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
825 826 827 828 829 830 831 832 833 834 835

Usability:

  - Attempting to transform locked layers or paint on them now results in
    blinking around the status bar (where the warning message is displayed)
    and around the toolbar where lock toggles are. The same applies to
    attempting to move a selection where there is none — GIMP will blink
    around the toolbar where the moving target (layer, selection, path)
    is chosen.
  - GIMP now allows selecting default export file type for new projects.
    The choice is limited to PNG, JPEG, WebP, PSD, ORA, TIFF, BMP.
Jehan's avatar
Jehan committed
836 837 838 839 840 841 842 843 844 845
  - GimpSpinScale widget now has an optional feature to constrain the
    value to integer when dragging with a pointer (even if the scale
    allows for fractional numbers), set with new function
    gimp_spin_scale_set_constrain_drag().
    This is useful for settings where fractional numbers are technically
    possible, yet most common use case are with integers (such as pixel
    sizes, angles in degrees, etc.) so you want the easy interface to be
    constrained. Fractional numbers are still settable, for instance by
    keyboard edit; and arrow incrementation won't drop fraction parts.
    This is currently only activated for brush options in paint tools.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
846

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
847 848 849
Tools:

  - In scale tool, scale around center even when using numeric input.
850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871
  - New algorithm in the Bucket Fill tool when selecting the affected
    area "Fill by line art detection", based off the G'Mic algorithm for
    "smart colorization": https://hal.archives-ouvertes.fr/hal-01891876
    In a few words, it identifies painted pixels (either based on
    grayscale or opacity values) and tries to close line arts to allow
    filling even with not perfectly closed zones; the second step of the
    algorithm will flood the colors under line art pixels to prevent
    "holes" in the filling.
    It is possible to control a max size (in pixels) for the flooding,
    as well as max length of closing segments and splines.
  - The Bucket Fill tool got new interaction allowing to hold the click
    and move the mouse to fill based on several seed zones (for "Fill
    by line art detection" as well as "Fill similar colors"). You can
    now cancel the fill in progress with right click as in other tools.
  - The Bucket Fill tool now allows color picking with ctrl-click, same
    as every painting tool. It will pick either the foreground or
    background color depending on the selected Fill Type. The ctrl-alt
    modifier combination is also possible to pick the non-Fill Type
    color.
  - In the Bucket Fill tool, the Alt modifier will now switch to
    "FG color fill" when "Pattern fill" was set (instead of doing
    nothing).
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
872 873
  - In the Unified Transform tool, default to preserving aspect ratio
    when scaling up or down.
Jehan's avatar
Jehan committed
874 875 876 877 878
  - In the Healing tool, "Sample merged" now also work for the target
    pixels, allowing to draw in empty layers.
  - Selection by color is now parallelized, hence improving speed of the
    Select by Color tool (and any other processing which may share this
    piece of code now or in the future).
Jehan's avatar
Jehan committed
879 880 881
  - Add "Constrain handles" and "Around center" options to the
    perspective-transform tool's GUI, which are similar to the
    corresponding options of the unified-transform tool.
Jehan's avatar
Jehan committed
882 883
  - Improve color picking on indexed image to always select an indexed
    color corresponding to the picked pixel in the colormap.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
884

Jehan's avatar
Jehan committed
885 886 887 888
Plug-ins:

  - file-pdf-save GUI now clearly indicates the order the layers will be
    used to make multi-page PDFs.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
889 890 891 892 893 894
  - Add DDS loading/exporting plug-in originally developed by Shawn Kirst
    and Arne Reuter.
  - Rename the Guillotine plug-in to Slice Using Guides.
  - Add a new option saving a color profile when exporting PNG, JPEG, TIFF.
    Always save it when exporting to PSD.
  - Remove the "Advanced" expanders from the PNG and TIFF export dialogs.
Jehan's avatar
Jehan committed
895 896
  - Full rewrite of the Spyrogimp plug-in with much more options and
    better interaction.
Jehan's avatar
Jehan committed
897
  - Indexed TIFF with alpha channel now supported.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
898 899 900 901 902

Filters:

  - Add on-canvas GUI (simple lines) for circular, linear, and zoom motion
    blur.
Jehan's avatar
Jehan committed
903

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
904 905 906 907 908 909
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.

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
910 911 912
Installers:

  - Windows: proper fix for libthai to stop GIMP from crashing in the
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
913
    Thai locale. 
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
914 915 916

Translations:

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
917 918
  - Czech, Danish, French, Italian, Japanese, Marathi, Polish, Russian,
    Spanish, Swedish, Ukrainian.
919

Jehan's avatar
Jehan committed
920 921 922 923 924 925
Build:

  - Bumping GTK+ dependency to the micro update GTK+ 2.24.32 to handle
    several bugs on Windows (broken shortcuts on non-latin layouts and
    broken vector icons).

Michael Natterer's avatar
Michael Natterer committed
926

927 928 929 930 931 932 933 934 935
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.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
936
  - Add xyY color space to the color spaces for sampling colors.
937 938 939 940 941 942 943 944 945 946 947

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.
Øyvind "pippin" Kolås's avatar
Øyvind "pippin" Kolås committed
948 949 950
  - Transform and deformation operations now maintain color for fully
    transparent pixels, making unerase and curves manipulation of alpha
    channel more reliable.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
951 952 953 954 955 956 957 958
  - 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.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
959 960
  - New type of gradient interpolation called 'Step' for making multi-color
    hard-edge gradient fills.
961

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
962 963 964 965
Plug-ins:

  - Port all plug-ins to the new iterator API in GEGL.
  - Improve automatic detection of HEIC/HEIF files.
966 967
  - Improve RawTherapee discovery by looking up registry key (should
    become useful with RawTherapee 5.5 and more).
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
968

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
969
Usability and UI:
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
970 971 972 973 974 975 976 977

  - 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.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
978 979 980 981 982 983
  - 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.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
984

985 986 987 988 989 990 991 992 993 994 995 996 997 998
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
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
999
    through the Dashboard.
1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011
  - 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.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022
  - 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.
1023 1024 1025

Translations:

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
1026
  - Updated translations: Danish, Dutch, Finnish, German, Hungarian,
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
1027 1028
    Italian, Marathi, Polish, Portuguese (Brazil), Russian, Spanish,
    Swedish, Ukrainian.
1029 1030


Jehan's avatar
Jehan committed
1031 1032 1033 1034 1035 1036
Overview of Changes from GIMP 2.10.4 to GIMP 2.10.6
===================================================

Core:

  - Render drawable previews asynchronously.
Jehan's avatar
Jehan committed
1037 1038
  - Merge the file view filter and file format lists in GimpFileDialog.
    The presence of 2 lists was very confusing.
Jehan's avatar
Jehan committed
1039 1040 1041 1042
  - 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.
Jehan's avatar
Jehan committed
1043 1044 1045 1046

Filters:

  - New "Little Planet" (gegl:stereographic-projection) filter.
1047
  - New "Long Shadow" (gegl:long-shadow) filter.
Jehan's avatar
Jehan committed
1048

Jehan's avatar
Jehan committed
1049 1050 1051 1052 1053 1054 1055 1056 1057 1058
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.
Jehan's avatar
Jehan committed
1059 1060 1061 1062 1063 1064
  - 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
Jehan's avatar
Jehan committed
1065

Jehan's avatar
Jehan committed
1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076
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
Jehan's avatar
Jehan committed
1077 1078 1079
  - 12 translations were updated: Brazilian Portuguese, Dutch, French,
    German, Greek, Italian, Latvian, Polish, Romanian, Slovenian,
    Spanish, Swedish.
Jehan's avatar
Jehan committed
1080

Jehan's avatar
Jehan committed
1081 1082 1083 1084 1085
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/).
Jehan's avatar
Jehan committed
1086 1087 1088 1089
  - 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).
Jehan's avatar
Jehan committed
1090

1091

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
1092 1093 1094 1095 1096 1097 1098 1099
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.
Jehan's avatar
Jehan committed
1100 1101 1102 1103 1104
  - 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.
Jehan's avatar
Jehan committed
1105 1106
  - New tool option manager to better keep track of user context and
    paint options in a consistent manner.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
1107

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
1108 1109 1110 1111
User Interface:

  - The Dashboard dockable dialog now has a 'Memory' group that shows
    memory-usage information: the currently used memory size, the
1112 1113 1114 1115 1116 1117 1118
    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
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
1119
    read-from/written-to the tile swap, respetively. Additionally, the
1120 1121 1122 1123 1124 1125
    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.
Jehan's avatar
Jehan committed
1126 1127
  - Some icons fixed: larger spacing between broken chains and
    gimp-tool-ellipse-select made symmetrical.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
1128

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
1129 1130
Usability:

1131 1132 1133 1134
  - 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.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
1135

Jehan's avatar
Jehan committed
1136 1137
Tools:

1138 1139 1140 1141 1142 1143
  - 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.
Jehan's avatar
Jehan committed
1144

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
1145 1146
Build:

1147 1148
  - Installer: set compatibility options to run Python plugins in
    HiDPI-aware mode.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
1149
  - Put back compatibility DLLs for really old plugins.
Jehan's avatar
Jehan committed
1150 1151
  - Install binary tool `gimp-test-clipboard` on the system to allow
    people to help us debug clipboard bugs.
1152 1153 1154 1155
  - --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.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
1156
  
Jehan's avatar
Jehan committed
1157 1158 1159 1160
Plug-ins:

  - gimptool-2.0 binary now accepts source files with non-standard
    extensions if it can try to guess appropriate language from the
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
1161 1162
    compiler being used. It will also properly quote arguments for
    shell usage.
Jehan's avatar
Jehan committed
1163 1164 1165 1166
  - 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.
Jehan's avatar
Jehan committed
1167

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
1168 1169 1170
File Formats:

  - The PSD loader now provides an option to load "merged",
1171 1172 1173
    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
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
1174
    that GIMP doesn't currently support, and therefore can't render
1175 1176 1177 1178 1179 1180 1181 1182 1183
    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.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
1184

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
1185 1186
Translations:

1187 1188 1189
  - Updated translations: Catalan, Czech, Danish, Dutch, Finnish,
    Greek, Hungarian, Italian, Latvian, Polish, Romanian, Russian,
    Spanish, Swedish, Ukrainian.
Jehan's avatar
Jehan committed
1190

Michael Natterer's avatar
Michael Natterer committed
1191

1192 1193
Overview of Changes from GIMP 2.10.0 to GIMP 2.10.2
===================================================
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
1194

1195 1196 1197 1198
Core:

  - Discard fonts which fail to load and popup an info dialog to allow
    people debug their fonts.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
1199 1200 1201 1202
  - 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.
Jehan's avatar
Jehan committed
1203 1204
  - Tool options are now properly saved and reloaded per-device at
    startup.
1205

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
1206 1207
Plug-ins:

1208 1209
  - New plug-in for importing and exporting HEIF images.
  - Enable visibility of rasterized vector layer from PSD.
Jehan's avatar
Jehan committed
1210 1211 1212
  - 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%.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
1213

Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226
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.
1227 1228 1229
  - Improve mouse wheel zooming behavior to keep the same point
    centered under the pointer even if the image is completely visible
    in the canvas.
1230 1231
  - Add "View -> Center Image in Window" (Shift+J) as a quick way to
    center the image at any zoom level.
Alexandre Prokoudine's avatar
Alexandre Prokoudine committed
1232

1233 1234
Translations:

1235
  - Updated translations: Catalan, Danish, Dutch, French, German, Greek,
Jehan's avatar
Jehan committed
1236 1237
    Hungarian, Icelandic, Italian, Latvian, Polish, Russian, Spanish,
    Swedish, Ukrainian.
Jehan's avatar
Jehan committed
1238
  - New translation of Windows installer: Chinese (Taiwan)
Jehan's avatar
Jehan committed
1239

1240 1241 1242 1243 1244
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.
Jehan's avatar
Jehan committed
1245
  - Add a flatpak manifest for the gtk3-port branch.
1246
  - Remove the possibility to disable script-fu.
Jehan's avatar
Jehan committed
1247 1248 1249 1250 1251 1252 1253 1254
  - 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.
1255 1256
  - Add documentation skeletons for all enums in libgimpbase/, there is
    much room for improvement.