Updated with upstream update
This commit is contained in:
@ -45,6 +45,25 @@ Core:
|
||||
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.
|
||||
|
||||
Graphical User Interface:
|
||||
|
||||
@ -78,6 +97,28 @@ Graphical User Interface:
|
||||
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 unecessary scroll. As a general rule,
|
||||
the cursor is always set to one of the selected element, 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 unecessarily scroll of
|
||||
the item list.
|
||||
|
||||
Tools:
|
||||
|
||||
@ -111,7 +152,11 @@ Plug-ins:
|
||||
* 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.
|
||||
- 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
|
||||
@ -119,11 +164,27 @@ Plug-ins:
|
||||
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.
|
||||
- PSD: fixed vulnerabilities: ZDI-CAN-22094.
|
||||
- DDS: fixed vulnerabilities: ZDI-CAN-22093.
|
||||
- All plug-ins were ported to the new Gimp*Procedure API using
|
||||
GimpProcedureConfig instead of GimpValueArray arguments.
|
||||
- GIF:
|
||||
* Added support of non-square aspect ratio by setting different vertical and
|
||||
horizontal resolution when a loaded file has the PixelAspectRatio metadata
|
||||
set.
|
||||
- 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.
|
||||
|
||||
Translations:
|
||||
|
||||
- Many non-translatable strings were made translatable. Various other
|
||||
localization bugs were handled.
|
||||
- New Belarusian translation in the Windows installer.
|
||||
|
||||
API:
|
||||
|
||||
@ -132,10 +193,233 @@ API:
|
||||
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.
|
||||
- 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()
|
||||
* 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 modifyable 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.
|
||||
- Changes in libgimpwidgets:
|
||||
* New functions:
|
||||
+ gimp_widget_set_native_handle()
|
||||
+ gimp_dialog_get_native_handle()
|
||||
+ gimp_preview_area_reset()
|
||||
* New classes:
|
||||
+ GimpLabelStringWidget: makes any widget with a "value" string property
|
||||
into a GimpLabeled.
|
||||
* Modified classes:
|
||||
+ GimpStringComboBox:
|
||||
- add a "value" string property to GimpStringComboBox (which makes it
|
||||
usable by GimpLabelStringWidget).
|
||||
- New method gimp_string_combo_box_set_sensitivity()
|
||||
- Changes in libgimpui:
|
||||
* Modified functions:
|
||||
+ gimp_window_set_transient_for_display() and gimp_window_set_transient()
|
||||
now use an internal implementation similar to core
|
||||
gimp_window_set_transient_for(), with the same improvements (works even
|
||||
at construction when the window is not visible yet + works for Wayland
|
||||
too).
|
||||
* Removed functions:
|
||||
- gimp_ui_get_progress_window()
|
||||
- gimp_ui_get_display_window()
|
||||
|
||||
Build:
|
||||
|
||||
@ -148,6 +432,12 @@ Build:
|
||||
- Pango 1.50 or higher is now required as a result of using
|
||||
pango_attribute_as_font_desc(). Also pango, pangocairo and pangoft2 now use
|
||||
the same minimum version requirement.
|
||||
- New Aarch64/Windows build jobs in CI.
|
||||
- The universal Windows installer generated by the CI now detects and installs
|
||||
a native Aarch64 build on ARM 64-bit architecture.
|
||||
- Meson: alternatively to luajit, we now search also lua5.1, then 5.2 and 5.3
|
||||
(5.1 first, because apart luajit, it is the only one with lua-lgi support in
|
||||
MSYS2 right now).
|
||||
|
||||
|
||||
Overview of Changes from GIMP 2.99.14 to GIMP 2.99.16
|
||||
|
Reference in New Issue
Block a user