mirror of https://github.com/GNOME/gimp.git
172 lines
8.3 KiB
Plaintext
172 lines
8.3 KiB
Plaintext
------------------------------
|
|
GNU Image Manipulation Program
|
|
Development Branch
|
|
------------------------------
|
|
|
|
This is the unstable branch of GIMP.
|
|
|
|
|
|
Overview of Changes from GIMP 2.10.x to GIMP 2.99.2
|
|
===================================================
|
|
|
|
Core:
|
|
|
|
- Improved "space invasion".
|
|
- New extension format support (.gex a.k.a. GIMP Extension) which is
|
|
an archive containing various supported data. So far, it can
|
|
package: brushes, MyPaint brushes, dynamics, patterns, gradients,
|
|
palettes, tool presets, plug-ins, splash images and themes.
|
|
- New extension manager allowing to enable, disable or uninstall
|
|
installed extensions, with a dialog available in `Edit > Manage
|
|
Extensions`.
|
|
- Multi selection of layers now possible. Various tools and features
|
|
are now multi-selection aware.
|
|
- XCF format bumped to version 14 with awareness of multiple layer
|
|
selection.
|
|
- All code is year-2038-safe with deprecated time API replaced.
|
|
- "Alpha to Selection" various actions warn when the result selection
|
|
is empty.
|
|
- Color Profile Policy (import) now exposes a "Convert to Preferred
|
|
Profile" (fourth) choice and the import dialog default "Convert"
|
|
action will convert the image to the preferred profile (if any was
|
|
set, otherwise it falls back to the built-in profile). Converting to
|
|
the built-in profile will be still available as secondary action.
|
|
- A new "Metadata Rotation Policy" is now exposed in the Preferences
|
|
dialog, next to the "Color Profile Policy" (in page `Preferences >
|
|
Image Import & Export`) with 3 options: "Ask what to do", "Discard
|
|
metadata without rotating" and "Rotate the image then discard
|
|
metadata".
|
|
This policy used to be handled API-size, with a dialog generated by
|
|
libgimpui gimp_image_metadata_load_finish(), and saved in a global
|
|
parasite. The whole logics and GUI has been moved as core logics,
|
|
similar to the "Color Profile Policy".
|
|
|
|
User Interface:
|
|
|
|
- Whole interface ported to GTK+3:
|
|
* Proper HiDPI support, which will follow the system's scale factor
|
|
for all widgets. This is a core toolkit support, unlike the basic
|
|
better-than-nothing hacks from GIMP 2.10.x.
|
|
* GTK+3 CSS-like support. All themes for former versions are
|
|
therefore not working anymore.
|
|
* GTK+3 themes have the concept of "dark variant", so a same theme
|
|
may propose both a light and a dark versions. Preference for dark
|
|
variants can now be checked in `Preferences > Themes > Use dark
|
|
theme variant if available` checkbox, allowing for instance to use
|
|
your system theme in its light variant everywhere except in GIMP.
|
|
This option is checked by default as graphics software are often
|
|
prefered in dark modes.
|
|
* Symbolic icon themes are now recolored automatically according to
|
|
the theme colors (no theme and icon theme tweaking anymore to end
|
|
up with dark on dark or light on light interfaces), except for
|
|
color elements whose SVG style is marked as "!important".
|
|
* Native Wayland support.
|
|
* Various dialogs now use Client-Side decorations and modern GTK+
|
|
widgets are being used when relevant.
|
|
- Image display rendered faster with a render cache that keeps the
|
|
result of scaling, color management, display filters and shell mask
|
|
(for tools like fuzzy select).
|
|
- Shift-click on layer GimpContainerTreeView (typically the Layers
|
|
dockable) allows to expand/collapse all item groups but the clicked
|
|
one.
|
|
- Compact GimpSpinScale is now the only available version.
|
|
|
|
Devices:
|
|
|
|
- Device hotplug supported (thanks to GTK+3). In particular:
|
|
* you don't need to have your tablets and other devices plugged
|
|
before you start GIMP anymore;
|
|
* enabling your devices in the "Configure Input Devices" dialog is
|
|
not needed anymore. Tablets will work out-of-the box;
|
|
* you can safely unplug and replug the same or other input devices
|
|
while GIMP is running.
|
|
|
|
Plug-ins:
|
|
|
|
- Major rewrite of the API. So GIMP 2.10.x plug-ins and below must be
|
|
ported to the new API.
|
|
- Various objects are now proper GObject in the plug-in API, and not
|
|
just ID integers.
|
|
- The API is GObject Introspected into 2 modules: Gimp and GimpUi.
|
|
This means plug-ins can be written in various non-C languages. So
|
|
far the following languages have been tested and work well: Python
|
|
3, Lua, Javascript and Vala.
|
|
(Note: Python 2 is also still working, but considering that this
|
|
language is end-of-life since 2020, we don't really care).
|
|
- Every introspected binding which we test comes with a "Goat
|
|
Exercise", which is a demo plug-in popping a dialog and showing its
|
|
own source code. It processes a simple "gegl:invert" operation on a
|
|
drawable. All "Goat Exercises" must do the same thing in the same
|
|
way, simply in their respective languages, as documentation/example
|
|
code for a language binding.
|
|
- Plug-ins must be installed in their own subdirectory in
|
|
`$XDG_CONFIG_HOME/GIMP/2.99/plug-ins/`, thus preventing data mess
|
|
(with plug-ins coming with data and installing it all in the root
|
|
plug-ins/ directory) and DLL hell. The main plug-in executable must
|
|
be named the same as the directory (possibly with an added
|
|
extension).
|
|
E.g.: `plug-ins/my-cool-plug-in/my-cool-plug-in.py`
|
|
- HEIF export allows selecting color subsampling/pixel format (YUV444,
|
|
YUV420, RGB) and encoder speed (Slow, Balanced, Fast).
|
|
Lossless option delivers visually lossless output.
|
|
|
|
API:
|
|
|
|
- gimp_image_metadata_load_finish() is now fully GUI/GTK-code free.
|
|
The first consequence is that it is not in libgimpui anymore, but in
|
|
libgimp, as it should. The second consequence is that the boolean
|
|
`interactive` argument has been removed. Now all image rotation
|
|
logics (the part which needed a GUI) has been moved into core and
|
|
will be automatically run when normally loading images from GIMP's
|
|
interface, similarly as to how color profiles was already handled.
|
|
- 2 new libgimp API: gimp_image_policy_rotate() and
|
|
gimp_image_policy_color_profile() are now available to explicitly
|
|
call the Preferences-set policy on an image. This may result in a
|
|
dialog being presented to the user if `interactive` is TRUE and
|
|
settings is "Ask what to do".
|
|
It is unecessary to call these functions when developing a new
|
|
GimpLoadProcedure because the core will automatically do the right
|
|
thing and call these on normal image loading workflow.
|
|
Instead if a plug-in calls such GimpLoadProcedure through the PDB,
|
|
no such functions will be run automatically. It is up to the plug-in
|
|
to decide what to do (no conversion, mandatory conversion, or using
|
|
user settings, possibly with a dialog to decide, hence calling these
|
|
functions explicitly).
|
|
- All pygimp specific Python API does not exist anymore. Python will
|
|
use the same API as C plug-ins, introspected through GObject
|
|
Introspection.
|
|
|
|
Documentation:
|
|
|
|
- `devel-docs/xcf.txt` updated to handle XCF 14.
|
|
|
|
Build:
|
|
|
|
- New meson build system. Still deemed "experimental" for the time
|
|
being. Packagers are recommended to continue using the autotools
|
|
build system in order to avoid specific bugs.
|
|
- Continuous integration in Gitlab with:
|
|
- an autotools build with GCC on a Debian/testing runner
|
|
- a meson build with GCC on a Debian/testing runner
|
|
- a meson build with Clang on a Debian/testing runner
|
|
- a meson cross-build with Mingw-w64 for Windows 32-bit
|
|
- a meson cross-build with Mingw-w64 for Windows 64-bit
|
|
- static code analysis with cppcheck
|
|
|
|
Known blocker issues:
|
|
|
|
- GTK+3 port is functional but not complete as some deprecated APIs
|
|
are still being used.
|
|
- Space invasion is still a work-in-progress.
|
|
- Plug-ins API update is still a work-in-progress.
|
|
- GIMP extensions are still a work-in-progress.
|
|
- Multiple layer selection is still work-in-progress. Some issues are
|
|
expected, and possibly even some crashes in code paths which were
|
|
not updated yet.
|
|
- No custom theme yet, in particular we want a neutral gray theme with
|
|
light/dark variants, and a middle-gray theme too.
|
|
- We probably want to revive a "Small" theme as well with smaller
|
|
icons (useful on smaller displays, or mid-high density displays or
|
|
simply depending on tastes).
|
|
- Various blocking bugs happen on Wayland only.
|