-
Notifications
You must be signed in to change notification settings - Fork 683
/
NEWS
3081 lines (2897 loc) · 158 KB
/
NEWS
1
2
3
4
5
6
7
8
9
10
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
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
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
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
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
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
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
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
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
------------------------------
GNU Image Manipulation Program
Development Branch
------------------------------
This is the unstable branch of GIMP.
Overview of Changes from GIMP 2.99.18 to GIMP 3.0.0-RC1
=======================================================
Core:
- Conversion to Indexed:
* color precision increased;
* error diffusion in linear RGB while keeping palette generation as
CIE Lab.
- GIMP's GEGL operations:
* Posterize operates with a perceptual gamma;
* Threshold: processing with non-linear RGB;
* Hue-Saturation: using HSLA float as processing space which should be
quicker than previous implementation.
- Welcome dialog:
* Multiple images can be selected and opened at once with Enter key.
* "Show on Start" is now displayed specifically in the "Create" tab.
- Non-destructive layer effects:
* can now be applied on group layers;
* cannot be reordered anymore while being edited.
- More GimpRGB code replaced by GeglColor (space invasion).
- New official software logo!
See: https://gitlab.gnome.org/GNOME/gimp-data/-/blob/main/images/logo/README.md
- Internal procedures are not shown as search actions.
- Non-destructive layer effects are copied together with the layer they belong
to.
- Accessibility: if the "Reduced Motion" (or other names for the same
feature depending on OS/desktop) is checked in macOS, Windows, GNOME
or KDE, then the following animations are disabled: animated credits
in About dialog and some easter eggs.
- New actions:
* layers-select-flattened-previous: moving the selection up visually
in the layers list.
* layers-select-flattened-next: moving the selection down visually
in the layers list.
- The default icon for GimpViewable is now gimp-image rather than
dialog-question. In particular this shows up in some interfaces like
GEGL filters with aux nodes (when the aux input has not been chosen
yet).
- XCF 22: the GEGL Operation version is now stored for each layer
filter.
- GIMP doesn't quit when running non-interactively (i.e. as
gimp-console or with --no-interface) without CLI option `--quit`.
The process can be interrupted anytime with SIGINT (Ctrl-C) which
will trigger a clean exit.
- "Luma Lighten/Darken Only" default blend space is now linear
(instead of perceptual).
- execinfo.h (backtrace() API) is made non-mandatory on Linux, with
proper meson summary showing that the Dashboard backtrace feature
(performance logs) will not work.
- `gimp -v` and crash debug dialog now contain Exiv2 and GExiv2
version information.
- XCF will now refuse to load some types of GEGL ops as
non-destructive layer filters:
* GeglOperationSink operations;
* GEGL Graph ("gegl:gegl") except if the environment variable
GIMP_ALLOW_GEGL_GRAPH_LAYER_EFFECT is set.
- On UNIX-like OSes, at first startup, if a 2.10 folder was not found
in the usual $XDG_CONFIG_HOME, we now lookup the flatpak folder
~/.var/app/org.gimp.GIMP/config/ so that we are able to migrate from
a config created by a flatpak 2.10. Not only this, but we also look
in /var/config/ which is a mount to the same folder, from the host,
inside the flatpak sandbox. This way, both a 3.0 flatpak and
non-flatpak will find the config of the 2.10 flatpak despite the
change done to the flatpak manifest to always use $XDG_CONFIG_HOME
(see Build section).
Tools:
- Gradient tool: the "Repeat" mode "Truncate" has been renamed "None
(truncate)" and reordered to be second in the list, just after "None
(extend)".
- Measure tool: guides can now be created off-canvas.
- Scissors Select: consistently name the tool "Scissors Select" by
dropping the alternate name "Intelligent Scissors" which was only
used in menus.
- GEGL filters:
* new "Merge filter" checkbox in the dialog to directly apply a
filter destructively (like in 2.10 and older).
* Filters with aux nodes can only be merged (no non-destructive
workflow possible for such filters yet).
* Auxiliary nodes now have their nicer name printed in the GUI.
- Paint Select tool now handles the standard Shift/Ctrl modifier for
adding or subtracting to selection. The tool is still experimental
and disabled by default though.
- Color Balance and Hue-Saturation effects work in sRGB space.
Graphical User Interface:
- New "gimp-effects" icon (used in the Layers dockable for non-destructive
layer effects).
- GimpSpinScale text area height is now reduced to improve usability (it is
now easier to find the area to *grab* the scale vs. area to edit the text;
the cursor changing helping to make out one from the other).
- Some cleanups done with test plug-ins and scripts in menus.
- Add option for "Huge" Preview Size in dockable menu.
- Usage of Up/Down and PageUp/Down keys in items tree views are now
multi-item selection aware. Up/Down keys select items in visual
order, walking through item groups (in and out), except when they
are collapsed. PageUp/Down keys select items while not leaving
previously selected items' group level.
- Dockbook: tab scrolling behavior (using scroll to switch between
dockable tabs) which was removed from GtkNotebook in GTK+3 got
reimplemented in our code.
- Palette colors are shown in their own space.
- GimpColorSelect widget (the default color selection tab on the left
of the color selection dialog) now displays the selected color model
(RGB, HSV or LCh) and not only the space/profile (the latter is not
even displayed anymore in LCh which is CIELAB-based).
- Legacy icon theme's tool icons are now all vector.
Plug-ins:
- Plug-ins ported to GimpProcedureDialog: Warp, decompose,
file-pdf-save-multi, qbist, file-xmc, file-tiff-load, file-icns,
file-ico, lava.scm.
- Script-Fu scripts ported to GimpProcedureDialog: addborder,
blend-anim, burn-in-anim, carve-it, chrome-it, circuit, clothify,
coffee, difference-clouds, distress-selection, drop-shadow,
fuzzyborder, old-photo, perspective-shadow, round-corners,
script-fu-set-cmap, selection-round, slide, unsharp-mask,
waves-anim, weave, xach-effect.
- PSD:
* unsupported layers are not dropped anymore (they will usually show
empty instead).
* add warning when exporting multi-layer indexed image (layers will
be merged because PSD does not support multi-layer indexed images,
unlike XCF).
- Script-Fu:
* "Refresh Scripts" (Filters > Development > Script-Fu) is now hidden. It
was broken and anyway not an ideal design choice.
* New call-with-output-string, call-with-input-string and any->string
functions.
* SF-VALUE type was removed.
* script-fu-register-procedure scheme function was added to create
procedures which are not image procedure. These Scheme plug-ins
will use GimpProcedureDialog. The legacy script-fu-register
function still works but is considered deprecated.
* Various plug-ins ported to script-fu-register-procedure:
gimp-online, gradient-example, mkbrush, palette-export,
paste-as-brush, paste-as-pattern, ts-helloworld.
* Colors can now be represented as grayscale with a list of 1 or 2
numerical values.
- All "file-*-save" (and "file-*-save-internal) plug-in procedures have been
renamed to "file-*-export" (respectively "file-*-export-internal").
- Ported to GimpVectorLoadProcedure: file-pdf-load, file-ps, file-svg
and file-wmf-load.
- Arguments ported to GimpChoice in the following plug-ins:
file-raw-data, file-jpeg, file-ps, decompose, blinds, curve-bend,
file-pcx, file-pnm, file-psp, hot, jigsaw, nl-filter, fits,
align-layer, border-average, contrast-retinex, despeckle,
screenshot, file-gif-export, file-heif, file-jp2-load, file-jpegxl,
file-mng, file-tga, file-bmp, file-sgi, file-webp.
- New file-plug-in testing framework. It comes with Gitlab junit reports.
- JPEG XL: half-float import support.
- file-darktable: use the new API which darktable developed from us
since version 4.6 (a new `--gimp` flag on command line). Fallback to
old usage for older versions.
- guides-new: guides can now be created off-canvas.
- ImageMap: zoom factor is now floating point allowing zooming out
past the 1:1 ratio.
- TIFF:
* Added support for loading Sketchbook TIFF layers.
- Goat Exercises:
* Renamed to "Plug-In Examples".
* "Sphere v3..." is now "Plug-in example in Scheme", showing up the
new types of Script-Fu scripts (with a standalone interpreter
rather than as scripts running on the Script-Fu always-on
extension). It is not the same as the historical Goat Exercises,
but it is our best "new Script-Fu" example.
* All other test plug-ins/scripts are hidden in stable releases.
- GIH: max size increased to GIMP_MAX_IMAGE_SIZE.
- Metadata Editor: add ability to set itself transient to any other
window (even across process).
- file-raw-data can now be run interactively.
- The lua binding is now marked experimental because of the too many
unstabilities we experienced.
- Script-fu:
* resource argument defaults are set as a string which is
the name of a resource, or the empty string or "from context" to
default to the context resource.
* Various compat aliases to ancient PDB procedures were removed.
- Python Console: history of commands is saved between runs.
- BMP: new support for loading 64bpp BMPs. Each channel uses 13 bits
(2^13 max value), so it's scaled to fit our 16 bit integer image
mode.
- gradient-save-as-css renamed python-fu-gradient-save-as-css and
histogram-export renamed python-fu-histogram-export for consistent
naming.
- python-fu-eval is now robust to failing script. Instead of crashing
too, it simply returns with a CALLING_ERROR status and pass along
the Python error to the core for proper output.
API:
- All public classes were marked as derivable or final through GObject
macros G_DECLARE_(DERIVABLE|FINAL)_TYPE. It will make it easier to
update them in the future without API/ABI breakage.
- Changes in libgimp:
* gimp_procedure_run_config() can run with no config objects (equivalent to
run the procedure with default arguments).
* New GimpParamColor type (obsoleting GeglParamColor within GIMP) which has
the additional setting `has_alpha` to advertize whether your plug-in
argument accepts only opaque colors or transparent ones (hence generated
GUI can be set accordingly).
* GimpSaveProcedure renamed to GimpExportProcedure.
* GimpSaveProcedureDialog renamed to GimpExportProcedureDialog.
* GimpExportProcedure does not have "drawables" and "num-drawables"
arguments anymore: after much reflection, these arguments were
mostly confusing and many plug-ins were already just using
gimp_image_list_layers() instead. For future advanced usage which
may come in the future, we will add a `GimpExportOptions` argument
instead.
* gimp_export_image() was simplified by removing the interactive
case (which was already hidden hence unused anyway).
* New GimpVectorLoadProcedure class: to be used specifically for
vector-based formats. It will allow to share a common graphical
interface (through the new GimpVectorLoadProcedureDialog), and
will also allow the core application to know which export
procedure is for a vector format, hence special-casing vector
file handling.
* GimpProcedureDialog: new fill_start() and fill_end() class methods
which are ensured to be run exactly once, unlike fill_list().
* gimp_image_add_(h|v)guide() functions can now create off-canvas
guides (same as we can in GUI, now).
* GimpChoice arguments can now generate a GimpIntRadioFrame as
alternative widget in a GimpProcedureDialog (combo box is still
the default widget).
* All GIMP_PROC_ARG_*() macros are now proper gimp_procedure_add_*_argument()
functions (same for aux argument and return value macros).
* gimp_procedure_add_*_from_property() functions were removed.
* gimp_procedure_add_argument(), gimp_procedure_add_aux_argument()
and gimp_procedure_add_return_value() were removed from public API.
* The skipping of _get_ functions by bindings in GIMP
2.99.12, in favor of their _list_ variant, was reverted. Now the
_list_ variants are skipped instead. The original reason was a
limitation of pygobject which is now fixed, and since _get_
functions are historically more common and consistent in our API,
this is what should take precedence.
* New GimpGroupLayer class (subclass of GimpLayer).
* GimpVectors was renamed to GimpPath and all gimp_vectors_ function
renamed gimp_path_ accordingly.
* gimp_buffer_get_image_type() return type is now GimpImageBaseType.
* New GimpExportOptions class and a better infrastructure to handle
intermediate image creation at export, replacing
gimp_export_image() with gimp_export_options_get_image(). This is
also a preparation for future API allowing generic settings during
export (resizing, cropping, adding filters or other actions at
export time).
* New functions:
- gimp_window_set_transient_for()
- gimp_palette_get_colormap()
- gimp_palette_set_colormap()
- gimp_image_set_palette()
- gimp_context_get_emulate_brush_dynamics()
- gimp_context_set_emulate_brush_dynamics()
- gimp_procedure_config_get_color_array()
- gimp_procedure_config_set_color_array()
- gimp_procedure_config_get_core_object_array()
- gimp_procedure_config_set_core_object_array()
* Renamed functions:
- gimp_path_export_to_file() to gimp_image_export_path_to_file()
- gimp_path_export_to_string() to gimp_image_export_path_to_string()
- gimp_path_import_from_file() to gimp_image_import_paths_from_file()
- gimp_path_import_from_string() to gimp_image_import_paths_from_string()
- gimp_palette_entry_get_color() to gimp_palette_get_entry_color()
- gimp_palette_entry_get_name() to gimp_palette_get_entry_name()
- gimp_palette_entry_set_color() to gimp_palette_set_entry_color()
- gimp_palette_entry_set_name() to gimp_palette_set_entry_name()
- gimp_plug_in_extension_enable() to gimp_plug_in_persistent_enable()
- gimp_plug_in_extension_process() to gimp_plug_in_persistent_process()
- gimp_procedure_extension_ready() to gimp_procedure_persistent_ready()
- gimp_buffers_get_list() to gimp_buffers_get_name_list()
- gimp_context_get_dynamics() to gimp_context_get_dynamics_name()
- gimp_context_set_dynamics() to gimp_context_set_dynamics_name()
- gimp_dynamics_get_list() to gimp_dynamics_get_name_list()
* Removed functions:
- gimp_image_get_colormap()
- gimp_image_set_colormap()
- gimp_image_metadata_load_prepare()
- gimp_image_metadata_load_finish()
- gimp_image_metadata_save_finish()
- gimp_resource_chooser_set_clickable()
- gimp_resource_chooser_set_drag_target()
- gimp_resource_select_new()
- gimp_resource_select_set()
+ gimp_fonts_get_by_name()
* GimpResource:
- The ParamSpec arguments (including every subtype) may now have a
default value.
- The ParamSpec arguments now have a default_to_context parameter,
which overrides any default value with a dynamic one
(context-dependant).
* GimpBrushSelect now chooses only a brush (no more widgets to
select a spacing, opacity or paint mode).
* All arrays of items, drawables, layers, channels, paths, resources
(and each specific subtypes of resources) and images as argument
in a libgimp function were now changed to NULL-terminated arrays.
* GimpRunImageFunc (the run() signature for GimpImageProcedure)
doesn't have a n_drawables argument anymore. The drawables
argument is simply NULL-terminated, consistently to other changes
in PDB.
* Various functions now return arrays of GeglColor or arrays of
specific resource types when relevant.
- Changes in libgimpwidgets:
* GimpColorArea: dropped colors are now passed as GeglColor.
* New functions:
- gimp_prop_choice_radio_frame_new()
- gimp_int_radio_frame_set_title()
- gimp_widget_animation_enabled()
* Updated functions:
- gimp_help_connect() has a new `tooltip` argument as a proper
advanced version of gimp_help_set_help_data().
* GimpFileEntry was made private because it is still used internally
but the whole API was deprecated since 2006.
- Changes in libgimpbase:
* GimpRGB and GimpRGB arrays are not supported anymore in the PDB and GIMP
Protocol (only GeglColor and GimpColorArray).
* GimpUnit:
- now a proper class instead of a weird int type extending an enum
type of the same name. This also makes unit parameters actually
introspectable.
- concepts of singular/plural removed from this class because it
just doesn't work out with proper internationalization.
* New functions:
- gimp_int32_array_get_values()
- gimp_int32_array_set_values()
- gimp_float_array_get_values()
- gimp_float_array_set_values()
- gimp_value_array_get_core_object_array()
* Removed functions:
- gimp_unit_get_singular()
- gimp_unit_get_plural()
- gimp_env_init()
- gimp_cpu_accel_set_use()
- gimp_signal_private()
* Renamed functions:
- gimp_unit_get_identifier() to gimp_unit_get_name()
- gimp_float_array_get_values() to gimp_double_array_get_values()
- gimp_float_array_set_values() to gimp_double_array_set_values()
- gimp_param_float_array_get_type() to gimp_param_double_array_get_type()
- gimp_param_spec_float_array() to gimp_param_spec_double_array()
- gimp_value_dup_float_array() to gimp_value_dup_double_array()
- gimp_value_get_float_array() to gimp_value_get_double_array()
- gimp_value_set_float_array() to gimp_value_set_double_array()
- gimp_value_set_static_float_array() to gimp_value_set_static_double_array()
- gimp_value_take_float_array() to gimp_value_take_double_array()
* New argument flag GIMP_PARAM_DONT_SERIALIZE.
* New type GimpParamSpecObject, which is basically a
GParamSpecObject with a default value. It is now used as parent
type for GimpParamSpecColor, GimpParamSpecUnit and all
GimpParamSpecResource subtypes.
* GIMP_PDB_PROC_TYPE_EXTENSION renamed GIMP_PDB_PROC_TYPE_PERSISTENT.
* GimpCoreObjectArray: new alias to NULL-terminated core objects,
such as images, items, etc. The main reason is to make it a boxed
type for proper handling as object properties and PDB argument.
* GimpObjectArray was removed.
* Deprecated GIMP_PRECISION_*_GAMMA enum values have been removed.
- Changes in libgimpcolor:
* All gimp_rgb_parse_*() functions now become gimp_color_parse_*() functions
(GeglColor based rather than GimpRGB).
* GimpRGB, GimpCMYK, GimpHSV, GimpHSL type and all usage was
removed. Related API were deleted too.
* GIMP_RGB_LUMINANCE* macros were made private. They are still used
internally by some core plug-ins but are not exposed anymore as
official API.
- Changes in libgimpconfig:
* Removed functions:
- gimp_config_serialize_strv()
- gimp_config_deserialize_strv()
* Renamed functions:
- gimp_scanner_parse_float() to gimp_scanner_parse_double()
- PDB:
* Triple-backtick blocks in PDB-generated functions' descriptions is
now recognized so that pre-formatted code is kept as-is. E.g.
indentation is not broken anymore in code samples on the gi-docgen
API documentation.
* New "format" PDB type to pass Babl format arguments.
* Most compat PDB procedures were removed, except the few ones we
still use in some of our core plug-ins or scripts.
* All int32 and float arrays are now passed through the PDB without
requiring a size argument preceding it.
Translations:
- New Bengali language support.
Build:
- Minimum dependency version bumps:
* babl 0.1.110
* GEGL 0.4.50
* harfbuzz 2.8.2
- Started a skeleton for unit testing framework for libgimp (only a few tests
so far but we eventually target exhaustivity).
- CI:
* Main CI jobs are now compiled with Clang, as well as Windows installer,
MSIX and Flatpak. Some benchmarks run by Øyvind show we can gain a bit
of performance in some situations in babl/GEGL/ctx codepaths, thanks to
better auto-vectorization support.
* x86 (32-bit) cross-build job for Windows removed.
* "packaging" stage merged back with "build" stage.
* "gimp-debian-x64" job now also generates an AppImage for every commit.
* LLD linker now used in all build jobs (except scheduled GCC and legacy
32-bit Windows jobs).
* Windows cross-builds are not triggered anymore until after GIMP
3.0 (when we'll handle the issues).
* Lua-related files are not shipped anymore with any of the official
builds.
- New gimp-data repository used as a git submodule:
* Various data were moved to gimp-data: icons, cursors, patterns, brushes
and application icon/logo.
* Various files are generated from the source logo: wilber.ico (for Windows
installer), gimp.icns (macOS), desktop application icons for Unix-like
systems, Wilber icons of the "Default" icon theme within the application.
* Splash image and Windows installer's BMP images are generated from the
splash image contributed as XCF.
- Support for .pdb debug symbol files (Visual Studio) was added for
Windows.
- Windows installer: new option to launch GIMP after install.
- Nightly flatpak: HEIC support is now an extension as in our beta
flatpak.
- macOS minimal support was bumped to version 11.
- Python plug-ins are made mandatory, not optional anymore.
- Our flatpak-s will now use $XDG_CONFIG_HOME config folder
unconditionally (not the `~/.var` folder). It won't depend anymore
on whether this config folder already existed or not.
- Only Lua 5.1 and luajit are supported. Later versions have
incompatibilities breaking Lua plug-ins. The detection of the lua
version (by parsing `lua -v output` if needed) is also improved.
- List of languages is now pre-parsed during build, which accelerates
startup a bit (especially on Windows).
- Better error messaging of the configure step when gimp-data
submodule was not initialized or when it is out-of-sync.
- Improved AppStream metadata file validation taking care of the case
when the release date is not yet known.
- The last of deprecated gdk_pointer_grab() calls are now removed.
- Build made more portables for non-GLibc or non-GNU coreutils
environments.
- enable-default-bin meson option now also installs a symlink for a
gimp-3 binary (additionally to default gimp-3.0 and gimp symlink),
or a renamed copy on Windows.
- Installer for Windows will use the new gimp-3.exe binary so that it
can properly register a registry entry based on the major version
only.
Overview of Changes from GIMP 2.99.16 to GIMP 2.99.18
=====================================================
Core:
- New snapping options:
* "Snap to Bounding Boxes": allows on-canvas snapping to either layer
borders or center.
* "Snap to Equidistance": allows to snap a layer to be at the same distance
from a second one that this second one is to a third one, either
horizontally or vertically.
- GIMP is now able to use fonts with custom styles, which Pango is unable to
work with.
- Font names are not unique anymore, which means that GIMP doesn't rename
identically named fonts with #1 or #2, etc. as it used to do. These fonts
with same name are now properly working despite the name clash.
- GimpData now have a concept of collection, which is either a controlled name
for internal data, or a string constructed from the local file path for
external data. This will be used to serialize data objects hence easily
retrieve the proper data even when some data may have duplicate names.
- New palette import support: SwatchBooker.
- Artificially set PANGOCAIRO_BACKEND=fc when running on Windows to use the
fontconfig backend, which enables anti-aliasing on Windows, unlike the
default pangocairo backend.
- XCF:
* Font information are more accurately stored (not only the font name, but
also storing various other attributes and even a file hash in the ideal
case where the exact same font file is available), allowing to find the
right font (if installed) on load with less errors.
* As a consequence of the previous point, new files with text layers will be
saved as a bumped XCF 19 version.
* Older XCF versions with text layers can still be saved using older XCF
versions as long as the text layers are untouched in an edit session.
- "view-zoom-*" actions are not radio actions anymore.
- Improve thumbnail loading algorithm:
1. If there is a GimpThumbnailProcedure, it is run first.
2. Otherwise we check if a thumbnail is in the metadata.
3. As last resort, we just load the full image.
- Generic inter-process transient window reimplemented using opaque GBytes
window identifiers instead of guint32. The goal is to have windows created
by plug-ins be transient to the calling core image window, but also the
other way around: some core dialogs are generated through PDB calls (in
particular resource and drawable chooser dialogs created by gimp_*_popup()
functions) and should be transient to plug-in dialogs.
This works on X11 and Wayland (the Wayland implementation is new, previous
code was X11-only). It should work on Windows too (code exists) but this was
left disabled as it leads to core process hanging (as described in
https://bugzilla.gnome.org/show_bug.cgi?id=359538) and is pending debugging.
There is no macOS implementation yet, and it seems to be missing from GDK as
well.
- Indexed images' colormap:
* Now possible to delete colors if unused.
- Updates for floating data's actions:
* New actions "edit-paste-float" and "edit-paste-float-in-place" for pasting
the contents of the clipboard as floating data with default positioning
algorithm or in-place respectively;
* renames "select-float" to "select-cut-float" which does a cut and paste as
float in one action;
* adds "select-copy-float" which does a copy and paste as float in one
action;
* reorganize a bit the `Edit > Paste as` submenu with sections for the
floating data variants;
* add a "Float" submenu in "Select" root menu, containing the 2 variant
actions "select-cut-float" and "select-copy-float".
- GEGL operation filters are now non-destructive by default: running these
filters create layer effects. The UI is still basic and will be improved
through iterations after GIMP 3 release.
- FG/BG color action code (e.g. "Increase the red channel") are made
contextual, relatively to the active image, working relatively to the
correct color space and TRC.
- Device Status dockable shows context-sensitive colors (the color profile's
name is displayed as tooltip when hovering a fg/bg color status).
- Palettes are now GeglColor-based and are stored with a lot more precision.
Older low-precision palettes are still loaded fine. A single palette can
contain mixed formats (different models and space). A concept of format
restriction was added, yet is currently only used for indexed images'
palettes (whose colors are always and only in the image's format).
- Color History is now space-invaded (colors are stored in their original
format and space).
- Various color selectors (core or modules) are now space-invaded when
relevant. For instance, they show colors in the active image space (not just
sRGB) and display the profile's name when relevant. Also when simulation is
active, some of the color selectors will update their out-of-gamut zone, not
only to be within the image's gamut, but also the soft-proof gamut.
Graphical User Interface:
- "Merge menu and title bar" option is not shown on macOS as it is not usable
there (the main menu is anyway out of the window from the start).
- Top menu has been special-cased for macOS (some items are removed with
"hidden-when" attribute set to "macos-menubar" value) for items which are
also available in the application menu.
- Menu section can now be named with the "section-name" attribute in
GtkBuilder ".ui" files. This can be used as a replacement of the former
"Placeholder" concept which we used to have (and has now been completely
removed).
Plug-ins or GEGL operations which want to make use of sections can use the
"[Section]" syntax. For instance installing a plug-in in the menu path
"<Image>/File/[Open]" will install the menu item at the end of the Open
section (i.e. after the various other open-file actions at the top of the
File menu).
- Some string or naming consistencies were fixed in source strings.
- GimpContainerEntry don't have inline completion anymore. Instead the result
pop-up always appear, even for one result. This is because a limitation of
GtkEntryCompletion: we cannot remove the case sensitivity search (see
gtk#275) which was very bad usage experience because when we reached a
single result, suddenly nothing happened anymore (no popup, no completion)
if case was different on any letter. It's just better to always have popup
with case insensitivity.
This widget is used for instance for on-canvas font selection.
- Some icons were modified with an added light border to make them better
visible on dark themes: gimp-tool-text icons in Color and Legacy icon themes
and gimp-tool-dodge in Color theme.
- Help menu rearranged to be better organized and also to move "About GIMP" as
the last item, which is its more conventional position.
- Many fixes to the default themes (including several cases of CSS rules
leaking from system themes).
- New settings in Preferences to set the interface base font size (this won't
work as well, or at all, for themes which would set absolute font sizes).
- "gimp-wilber-eek" icon is now reused as generic "image-missing" icon too.
- In dockables' grid view, the hovered icon is now highlighted with a
contrasted border.
- GimpPdbDialog (e.g. resource chooser dialogs) are now set to system defaults
for whether or not they use a header bar.
- Shift+Number-row default shortcuts are now transformed into the actual key
in the currently used layout (reciprocally, if numbers are direct access
key, their counterpart shortcuts are similarly updated).
- Colormap dockable:
* New "Delete" button available and sensitive only when selecting an unused
color in the palette.
- Windows: title bar will be switched to light or dark mode based on the
current theme.
- The quit dialog now adjusts its size relatively to monitor height.
- The heuristic to set a cursor when single or multi-selecting items in a tree
view got reviewed in order to avoid unnecessary scroll. As a general rule,
the cursor is always set to one of the selected elements, ideally the last
clicked element unless it is not selected (e.g. removed with Ctrl-click),
then a closest selected element is chosen to avoid unnecessarily scroll of
the item list.
- Pad buttons can now be configured in the "Input Devices" configuration dialog
to run any actions directly (without mapping shortcut key combinations as
intermediate). This only works on Wayland for the time being (yet may work on
more platforms in the future, depending on GTK evolution).
- Themes can now be proposed with up to 3 variants: dark, light and middle
gray, through gimp-dark.css, gimp-light.css and gimp-gray.css CSS files
respectively.
- As a consequence of the previous point, our Default and Gray themes are
merged as one with 3 possible variants.
- Our Color and Symbolic icon themes are merged as a single icon theme named
"Default".
- The "prefer-symbolic-icons" property which can be set in Preferences is only
used when the selected icon theme has both Color and Symbolic styles.
Otherwise the chosen icon theme style prevails. The presence of a style is
determined by the presence of the "gimp-wilber" icon (which becomes
therefore a de-facto mandatory icon in an icon theme) and/or its symbolic
variant.
- When "Override icon sizes" is checked, a few padding values are also
overridden by code in the loaded CSS.
- As a consequence of the previous point, we removed the "Compact" theme which
is now simply possible by overriding sizes to "Small" in Preferences (when
the theme is "Default", it will display the same as the former "Compact"
theme, though it will also work with any other theme).
- "Darker" theme is removed for lack of contributors actually caring for it.
It could be revived in the future as a "Contrast" theme with both a dark and
light variants at the very least.
- The search function in Layers dockable was moved over the Layers list (with
headers), the "link" icon replaced by "search" icon, and is now available
for both Layers, Channels and Vectors dockables (though unsaved for Vectors
because of lack in XCF support).
- The Welcome dialog was improved and its cases extended:
* A new "Personalize" tab contains duplicate settings taken from the
Preferences, in particular the more controversial settings, such as theme
or icon themes, HiPPI support (icon/font sizing), merged menu and title
bar, tool groups or update check.
* A new "Contribute" tab displays a few of the main links for people to
contribute to GIMP.
* A new "Create" tab proposes buttons to create new images or open existing
ones, as well as displaying a list of the last 8 opened images for easy
re-opening.
* A new checkbox (checked by default) allows the welcome dialog to be shown
at each and every startup. Except on new installations or version updates,
the first shown tab will be the new "Create" tab, which is probably the
most useful for day-to-day first dialog shown at startup (on updates, the
"Welcome" tab featuring the new splash screen and a small welcome text is
shown).
Tools:
- Text tool:
* improve markup creation logic when replacing selected text in
order not to create useless styling markup interfering with other
features.
* Alignment for RTL languages is now more consistent with how it works in
other software (such as LibreOffice or Scribus).
* Text layers can now be rendered in the full image's gamut (not sRGB only
anymore), though colors are trimmed to the gamut and are always 8-bit.
* Text outline colors are now rendered in float in the full image's gamut,
without precision loss.
- Paint tools: all painting tools now have an "Expand Layers" option
allowing to auto-expand layers when painting across layer
boundaries. A few additional sub-options customize how this
expansion happens (by how many pixels, filling with transparency,
color, pattern).
Expansion does not grow over canvas boundaries, unless "Show All" is
checked too.
- Color Picker:
* Picked color is internally kept as a GeglColor, doing only last-minute
conversion to the output model/space, hence with better precision.
* RGB, Grayscale and Pixel modes display the profile name of the output
color space (the active image's color space if relevant).
- The Gradient tool now uses GeglColor internally, though GIMP's gradient
format (GGR) still uses old RGB format.
Plug-ins:
- Farbfeld: new image format import/export support.
- OpenEXR:
* Files with single channels are always treated as grayscale, even when
they use non-conventional channel names. A notice message is also
presented to the user in a dialog for information.
- Metadata Editor:
* Various code cleanups and improvements;
* GUI improvements;
* Xmp.plus.ImageSupplierName can now only have one value;
* Improved Creation date handling;
* Synchronization (both for reading and writing) added between some Exif,
Xmp and Iptc equivalent tags. On reading, when equivalent tags have
different values at load, a terminal warning is now outputted.
- Script-fu:
* Generated dialog's titles are not prefixed with "Script-Fu: " anymore.
* Several scripts were removed and moved to gimp-data-extras: erase-rows,
grid-system, select-to-brush, select-to-image, select-to-pattern.
* script-fu-copy-visible was removed (and not moved to gimp-data-extras).
* New test scripts.
- New gimp-help-main script to link to the "Table of Contents" of the manual,
added to the "Help > User Manual" submenu.
- PSP:
* added support to load PSP ICC Profile data.
* fixed vulnerabilities: ZDI-CAN-22096, ZDI-CAN-22097.
* load active selection from PSP file.
* Load guides and grid info.
- Image Map: two new fields to the HTML Link tab and one new field to the
Javascript tab for area properties:
* accesskey: The same as the mnemonic key shortcuts in GTK, to activate an
area of the image map. Depending on the OS, you either hold ALT or
ALT+SHIFT and this key.
* tabindex: What order to select the area when the user presses Tab.
* onClick: Run a Javascript function when the user clicks on the area.
- Esm Software PIX: new import support.
- All plug-ins were ported to the new Gimp*Procedure API using
GimpProcedureConfig instead of GimpValueArray arguments.
- Add Border (script-fu): add a 'Allow resizing' toggle.
- Plug-ins ported to GimpProcedureDialog: van-gogh-lic, dds-write, flame,
histogram-export, lighting, fractal-explorer, map-object, sample-colorize,
compose, curve-bend, depth-merge, selection-to-path, pagecurl, file-cel,
file-svg, file-wmf, smooth-palette, small-tile, film, gradient-flare, tile,
web-page, screenshot.
- JPEG-XL:
* Load metadata via libjxl exclusively.
* Disable GIMP EXIF orientation support, using orientation stored in
codestream instead.
- HEIF:
* Load metadata via libheif exclusively.
* Disable GIMP EXIF orientation support.
- PDF:
* "Layers as Pages" works now for a single layer group with multiple
sub-layers.
- DDS:
* Add support for loading DDS 16- and 32-bit per channel RGBA. Loading is
supported for 16-bit half float, 32-bit float, 16 and 32-bit unsigned and
signed int.
This supports both the DX10 formats and the D3D FOURCC versions.
16- and 32-bit per channel images with less than 4 channels are not yet
supported.
* Add DDS support for loading R8G8, R16 and R16G16 formats.
GIMP can load DXGI variants as well as the older D3DF versions, including
handling of the signed versions.
We also set signed when the pixelformat flag DDPF_BUMPDUDV is set.
* New option to vertically flip dds image on import. This is needed by some
game engines.
* All mipmap generation is done at 32-bit floating-point precision.
* A new cubic filter has also been added (Catmull-Rom) which
rounds-out the existing lineup of cubic filters.
* Better handling of DX10+ files in ddsread.
* Always interpret BC1 cutout pixels as black pixels with 0 alpha,
per the official format specification.
* Import code was rewritten and improved for maintainability and
readability. Importer now supports nearly all non-video
uncompressed formats.
- GIF:
* Remember when a file was stored as a GIF animation to be reused when
overwriting.
- PNG:
* Import/export safe-to-copy PNG chunks.
- HEJ2: new import support. HEJ2 is JPEG 2000 image coded images in HEIF
containers.
- PSD: better wording of the export warning for the path of less surprise.
- Python Console uses theme colors for font colors instead of hardcoded
colors which don't work well on darker themes.
Data:
- Clarified our capitalization rule for data titles: part of titles
inside parentheses also follow title casing.
- "(Hardedge)" generated gradients got renamed "(Hard Edge)".
Translations:
- Many non-translatable strings were made translatable. Various other
localization bugs were handled.
- New Belarusian translation in the Windows installer.
API:
- Changes in libgimpconfig:
* GimpConfig serialization doesn't break anymore if one property
serialization fails. GIMP will now continue to serialize the rest. In
particular, it will allow to retrieve as many arguments as possible
between plug-in runs.
* GBytes (de)serialization support added. It supports gracefully a NULL
GBytes value.
* GeglColor (de)serialization support added. Former GimpRGB properties can
be gracefully converted to GeglColor properties when needed (e.g. to be
able to convert old property or resource files, containing GimpRGB values,
to newer GeglColor).
- Changes in libgimp:
* GimpResource can now be (de)serialized using the data name and collection
so that we are now able to retrieve a used resource quite reliably between
runs.
* For GimpProcedure with no run-mode parameter, the run-mode is considered
non-interactive (e.g. for decision algorithm about whether to reuse
previous settings or not).
* Arguments of type GimpResource and its subtypes are now supported and
GimpProcedureDialog will generate appropriate chooser widgets.
* Arguments of type GimpLayer and GimpChannel will have a proper widget
generated (GimpDrawableChooser) by GimpProcedureDialog, limited to only
the proper drawable subtype.
* All GimpProcedure and its subtypes now have a run() method using a
GimpConfig instead of a GimpValueArray. In particular, the type of the run
argument changed in gimp_procedure_new(), gimp_batch_procedure_new(),
gimp_image_procedure_new(), gimp_load_procedure_new(),
gimp_save_procedure_new() and gimp_thumbnail_procedure_new().
The following 2 run function types had further evolutions:
+ GimpRunLoadFunc: by default, a GimpLoadProcedure will try and load
metadata from a file (if Exiv2 knows the format). The run() function
will be allowed to edit the GimpMetadata object but also the load flags
before it is actually attached to the image, allowing plug-ins to have
custom metadata handling code when needed.
+ GimpRunSaveFunc: metadata handling is integrated in this new version of
the API, since the run() function will pass a prepared metadata object,
which can be modified by plug-in code (if needed). This GimpMetadata
object will be stored automatically by the GimpSaveProcedure
infrastructure if the mimetype argument is set in
gimp_save_procedure_new().
* On plug-in exit, we do not display memory reference hold warnings for Lua,
Javascript and Python plug-ins anymore. The GObject-Introspection bindings
for these languages seem to hold references of their own in some
conditions and anyway plug-in developers don't have any memory management
capabilities available in the chosen languages. It's not like they can do
anything.
* New functions:
+ gimp_procedure_dialog_set_sensitive_if_in()
+ gimp_procedure_dialog_set_ok_label()
+ gimp_procedure_dialog_fill_notebook()
+ gimp_procedure_dialog_fill_notebook_list()
+ gimp_procedure_dialog_fill_paned()
+ gimp_procedure_config_get_choice_id()
+ gimp_prop_brush_chooser_new()
+ gimp_prop_font_chooser_new()
+ gimp_prop_gradient_chooser_new()
+ gimp_prop_palette_chooser_new()
+ gimp_prop_pattern_chooser_new()
+ gimp_resource_select_button_get_label()
+ gimp_pattern_get_buffer()
+ gimp_drawables_close_popup()
+ gimp_drawables_popup()
+ gimp_drawables_set_popup()
+ gimp_prop_drawable_chooser_new()
+ gimp_font_get_pango_font_description()
+ gimp_fonts_get_by_name()
+ gimp_image_get_palette()
+ gimp_procedure_run_config()
+ gimp_procedure_run_valist()
+ gimp_procedure_dialog_get_drawable_preview()
* Removed functions:
+ gimp_procedure_config_begin_run()
+ gimp_procedure_config_end_run()
+ gimp_procedure_config_begin_export()
+ gimp_procedure_config_end_export()
+ gimp_procedure_config_get_values()
+ gimp_procedure_config_set_values()
+ gimp_pdb_run_procedure_argv()
+ gimp_pdb_run_procedure()
+ gimp_pdb_run_procedure_valist()
+ gimp_pdb_run_procedure_array()
+ gimp_pdb_run_procedure_config()
+ gimp_procedure_new_arguments()
+ gimp_pdb_set_data() a.k.a. gimp_set_data()
+ gimp_pdb_get_data() a.k.a. gimp_get_data()
+ gimp_pdb_get_data_size() a.k.a. gimp_get_data_size()
* Modified functions:
+ gimp_procedure_dialog_get_label():
1. Added `is_markup` and `with_mnemonic` boolean arguments.
2. `label_id` argument can be a string property to sync to, or a new
widget ID to create, using `text` as initialization contents.
+ gimp_label_spin_set_increments(): made more generic and robust to handle
integer spin or modifiable min/max.
+ gimp_param_spec_get_desc():
- Also handles new GimpChoice arguments by listing all valid string
values for a given argument.
- Returned string is now pango-markup formatted.
+ gimp_display_get_window_handle() and gimp_progress_get_window_handle():
the return value is now an opaque GBytes which is to be interpreted
differently depending on the running platform.
+ All gimp_*_popup() functions now have a `parent_window` argument which
is the opaque window handle of the calling plug-in dialog, such as can
be returned by gimp_dialog_get_native_handle().
+ gimp_brush_get_pixels() replaced by gimp_brush_get_buffer() and
gimp_brush_get_mask().
+ gimp_text_layer_set_font() now uses a GimpFont.
+ gimp_text_layer_get_font() now returns a GimpFont.
+ gimp_text_layer_new() now uses a GimpFont.
+ gimp_text_fontname() renamed gimp_text_font().
+ gimp_text_get_extents_fontname() renamed gimp_text_get_extents_font().
+ gimp_ui_init() now implies a gegl_init().
+ gimp_procedure_run() now uses a variable argument list of (name, value)
pairs.
* New classes:
+ GimpPickableSelect
+ GimpDrawableChooser
* Modified classes or structure:
+ GimpProgress:
- GimpProgressVtableGetWindowFunc function type now returns GBytes.
- get_window() abstract method is renamed get_window_handle().
+ GimpResourceSelectButton:
- Class made abstract.
- It now has a label which is used in the size group in
GimpProcedureDialog.
+ GimpBrushSelectButton: big UX improvements.
+ GimpPatternSelectButton: big UX improvements.
+ All Gimp*SelectButton widgets were renamed to Gimp*Chooser.
* New GimpProcedure argument types:
+ GimpChoice: this will replace cases when we used to use int arguments to
represent custom enum types, which was particularly non-usable when the
list of valid choices was long and the string docs was not kept
up-to-date.
It comes with GIMP_PROC_ARG_CHOICE(), GIMP_PROC_AUX_ARG_CHOICE(),
GIMP_PROC_VAL_CHOICE(), GIMP_VALUES_GET_CHOICE() and
GIMP_VALUES_SET_CHOICE() macros.
The advantages of this new type:
- No need to keep the list of valid choices up-to-date anymore within
the docs string.
- Since the docs string doesn't contain long list of arguments, we don't
have long opaque and non-understandable tooltips assigned to graphical
interface widgets.
- Calling a PDB procedure with a human-readable string is much more
understandable than with an opaque int.
- This type handles invalid input for generic error handling.
- We can easily generate a list of the valid string values. E.g. this is
now used in the Procedure Browser through gimp_param_spec_get_desc().
- Choices can be made insensitive if needed.
- A proper widget (GimpStringComboBox) will be generated by
GimpProcedureDialog by default.
* PDB: the big change in the PDB is that we decided not to warrant argument
orders anymore. In particular, it means that the libgimp functions to run
PDB procedures are not based on an ordered array of arguments anymore but
on named arguments only.
+ The first consequence is that it will be possible to add arguments, and
even order them however we want in the list of arguments. For
backward-compatibility, what will matter is only that the procedure
using the default values for the new arguments will behave the same way
it did when it used not to have said arguments. Then scripts won't break
as we add new arguments and we won't have to create alternative v2 or v3
PDB procedures each time we wish to add a new feature.
+ The second consequence is that calling PDB procedures is now much more
semantic. Firstly we can ignore arguments for which we keep the default
values; secondly every argument will be accompanied by a name instead of
being a long list of int or boolean values.
Typically while we used to call a PDB like this:
```C
gimp_pdb_run_procedure (gimp_get_pdb (),
"file-png-save",
GIMP_TYPE_RUN_MODE, GIMP_RUN_NONINTERACTIVE,
GIMP_TYPE_IMAGE, image,
G_TYPE_INT, 1,
GIMP_TYPE_OBJECT_ARRAY, args,
G_TYPE_FILE, file,
G_TYPE_BOOLEAN, FALSE,
G_TYPE_INT, 9,
G_TYPE_BOOLEAN, FALSE,
G_TYPE_BOOLEAN, FALSE,
G_TYPE_BOOLEAN, FALSE,
G_TYPE_BOOLEAN, FALSE,
G_TYPE_BOOLEAN, FALSE,
G_TYPE_BOOLEAN, FALSE,
G_TYPE_NONE);
```
We can now call it like this (with a shorter list of arguments, ignoring
all the ones which we keep default, not bothering about arg order and
tagging each arg with a semantic name):
```C
gimp_procedure_run (gimp_pdb_lookup_procedure (gimp_get_pdb (),
"file-png-save"),
"run-mode", GIMP_RUN_NONINTERACTIVE,
"image", image,
"num-drawables", 1,
"drawables", drawables,
"file", file,
"bkgd", FALSE,
"phys", FALSE,
"time", FALSE,
NULL);
```
+ The few libgimp functions of the form `gimp_pdb_run_procedure*()` were
removed and moved directly to `gimp_procedure_run*()` variant. The
presence of both interfaces was making it confusing.
+ For bindings not able to replicate variable arguments functions, the
bindable function will be gimp_procedure_run_config() only, which will
be renamed to gimp_procedure_run() in bindings.
+ Note that internally the argument order is still relevant for any system
which interfaces directly with the PDB instead of libgimp. In other
words, it is still relevant for script-fu which generates functions out
of PDB procedures directly (not libgimp).
+ GimpObjectArray arguments now allow NULL through the pipe as meaning an
empty array.
- Changes in libgimpbase:
* New classes:
+ GimpChoice: meant to represent a list of allowed strings values.
* GimpRotationType values were changed by prepending "DEGREES" without
hyphen before the numeric value (e.g.: GIMP_ROTATE_90 becomes
GIMP_ROTATE_DEGREES90), because the older naming breaks introspection for
some languages, such as Python where Gimp.RotationType.90 syntax would be
forbidden.
* GIMP Protocol can now exchange GeglColor values across the wire.
- Changes in libgimpwidgets:
* New functions:
+ gimp_widget_set_native_handle()
+ gimp_dialog_get_native_handle()
+ gimp_preview_area_reset()
+ gimp_cairo_set_source_color()
+ gimp_color_selection_set_format()
* New classes:
+ GimpLabelStringWidget: makes any widget with a "value" string property
into a GimpLabeled.
* Modified classes: