No description
Find a file
Jehan 8bb79dc671 app: port Colorize to GeglColor property.
While doing this, I could find a lot of problems in the algorithm:

1. It looks like the original intent (from GUI and code) is that you set hue and
   saturation but not really the intended lightness, rather its increase or
   decrease, relatively to every pixel current lightness. I.e. that every pixel
   will be set to the selected hue and saturation, and only the lightness will
   change. The "lightness" field is therefore a relative value (pixel per
   pixel). The first problem is that instead of lightness, we compute the
   luminance, which is related but different and set this in the lightness
   field.
2. The second issue is that we were using gimp_hsl_to_rgb() which after testing
   (because its documentation doesn't give any TRC/space info at all) looks like
   it computes a color from HSL to non-linear RGB of the same space. Yet we were
   outputting to a linear RGB space. So we compute the wrong values. On the
   other hand, because of the first problem, I realize (after testing) that it
   makes our render closer to the intended render by chance (at least when the
   TRC is sRGB's). It's still wrong, but if we were to change the output to
   "R'G'B'A float" instead, the render would be much darker. In both cases, it's
   wrong anyway.
   I would not say that the 2 problems are canceling each others, but they are
   making the final result somewhat OK.
3. Ideally we should be using babl to convert colors, and this is the best way
   to actually implement the original filter intent. Unfortunately so far, doing
   this is much slower (though I save a lot of time by moving out of the samples
   loop and processing data in chunks, it's still slower than the current,
   nearly instant, implementation).
4. Because of all previous implementation irregularities, the render is
   different depending on the actual image space. I.e. that the exact same image
   filtered through Colorize with the exact same operation parameters will
   render differently. I would need to test further, and maybe it's normal since
   HSL is also space-dependant (and that's where we work on in this operation),
   but I'm wondering if the result should not be independant of the working
   space.
5. I implemented our own prepare() method because the one in
   GimpOperationPointFilter parent seems to allow other input or output models.
   Even though in all my tests, it was always linear RGB (which is what we want
   here), let's make sure by having a custom prepare() method explicitly setting
   these. It's also the opportunity to create some babl fishes.

In any case, I'm leaving the code as-is for now, because it's how this operation
has been since forever (at least for as long as I was around) and I don't think
it's the right idea to change it on a whim.

This raises even more the concern of versionning GEGL operation, which we have
been discussing with pippin on IRC lately, because if ever we want to change
this one, now that operations are not just applied, but possibly
non-destructively recreated at load, we need to make sure that we recreate the
render expected at the time of creation of a XCF while allowing us to have the
filters improving when needed.
2024-02-15 23:55:06 +01:00
.gitlab Set the bug template as default 2023-08-06 20:45:25 +00:00
.vscode Add .vscode/settings.json compliant with Coding Style 2024-01-19 16:06:06 -03:00
app app: port Colorize to GeglColor property. 2024-02-15 23:55:06 +01:00
app-tools Remove autotools 2023-05-27 00:03:52 +02:00
build build/windows: Update manifest to conform with 5c96851431 2024-02-14 11:20:31 +00:00
cursors Remove autotools 2023-05-27 00:03:52 +02:00
data build/windows, data, extensions, plug-ins: Fix Build omissions 2024-01-02 10:49:31 +00:00
desktop app, desktop: add demo scenarios for 2 release note items. 2024-02-14 16:50:26 +01:00
devel-docs devel-docs: Update content according to 'gimp-web-devel' 2024-01-18 19:05:04 +00:00
docs build, docs, etc: drop hardcoding of GIMP version 2024-01-13 18:15:10 -03:00
etc build, docs, etc: drop hardcoding of GIMP version 2024-01-13 18:15:10 -03:00
extensions build/windows, data, extensions, plug-ins: Fix Build omissions 2024-01-02 10:49:31 +00:00
icons correction : keep <rec> node and put opacity to 0 2024-02-10 19:56:15 +00:00
libgimp libgimp: add macros for GeglColor arguments for GimpProcedure. 2024-02-14 23:46:03 +01:00
libgimpbase Issue #10811: implement GeglParamColor missing in some places. 2024-02-13 21:58:40 +01:00
libgimpcolor libgimpcolor: work around babl_format_has_alpha() bug with some formats. 2024-02-11 23:28:04 +01:00
libgimpconfig Issue #10834: [Color Space Invasion] Filter Presets not loading deserialized GeglColors. 2024-02-14 18:00:25 +01:00
libgimpmath libgimp*: removing now useless Makefile.gi files. 2023-10-01 20:52:02 +02:00
libgimpmodule app, libgimp*, plug-ins, tools: settings custom check colors now space-invaded. 2024-02-11 23:28:02 +01:00
libgimpthumb app, libgimp*, plug-ins, tools: settings custom check colors now space-invaded. 2024-02-11 23:28:02 +01:00
libgimpwidgets libgimpwidgets: fix initializing a GimpLabelColor. 2024-02-14 23:36:39 +01:00
menus Issue #10153: introducing new floating data actions. 2023-11-11 16:40:44 +01:00
modules libgimpwidgets, modules: display the exact space/profile name for… 2024-02-11 23:28:03 +01:00
pdb Issue #10814: [Color Space Invasion] crash in channel_get_color_invoker. 2024-02-13 23:25:41 +01:00
plug-ins 2.99 ScriptFu: change wording of "Coffee Stain" filter 2024-02-15 15:40:20 +00:00
po Update Swedish translation 2024-02-14 21:02:25 +00:00
po-libgimp Update Ukrainian translation 2024-02-12 18:23:41 +00:00
po-plug-ins Update Spanish translation 2024-02-13 17:44:07 +00:00
po-python Update Belarusian translation 2024-02-06 23:38:39 +00:00
po-script-fu Update Swedish translation 2024-02-15 20:20:24 +00:00
po-tags build, devel-docs, po-*, tools: remove Autotools remnants 2024-01-14 10:38:12 -03:00
po-tips Update Lithuanian translation 2024-01-15 20:41:15 +00:00
po-windows-installer Update Spanish translation 2024-02-13 17:45:41 +00:00
themes themes: removing "Darker" theme. 2024-01-31 15:27:50 +01:00
tools app, libgimp*, plug-ins, tools: settings custom check colors now space-invaded. 2024-02-11 23:28:02 +01:00
.clang-format clang-format: update. 2022-03-14 18:16:14 +01:00
.dir-locals.el
.gitignore .gitignore: Delete unused exceptions 2024-01-19 15:43:46 -03:00
.gitlab-ci.yml gitlab-ci, build: BUILD_TYPE not set for packaging-win-a64 job. 2024-02-08 21:00:07 +00:00
.kateconfig
AUTHORS AUTHORS: update. 2022-02-25 21:06:17 +01:00
authors.dtd
authors.xml authors: update. 2022-08-21 12:24:20 +02:00
authors.xsl
authors4gimp-web.xsl
ChangeLog.pre-1-0
ChangeLog.pre-1-2
ChangeLog.pre-2-0
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-git
COPYING
gimp.doap DOAP: Replace defunct mailing list 2023-12-13 10:16:27 +03:00
INSTALL.in meson: requires Pango >= 1.50. 2023-09-12 14:23:40 +00:00
LICENSE LICENSE: add a note about data/ licensing for future added data. 2023-03-16 23:20:44 +01:00
MAINTAINERS
meson.build app, libgimp, pdb, plug-ins: GimpText* using GeglColor. 2024-02-11 23:28:02 +01:00
meson_dist_script.sh meson: remove a reference to autotools files in the meson dist script. 2023-06-06 23:49:39 +02:00
meson_options.txt meson: Add explicit options for cfitsio and openmp 2023-09-03 22:41:04 +02:00
NEWS NEWS: update. 2024-02-14 16:48:51 +01:00
NEWS.pre-2-0
NEWS.pre-2-2
NEWS.pre-2-4
NEWS.pre-2-6
NEWS.pre-2-8
NEWS.pre-2-10
README README: some updates. 2023-11-05 22:25:09 +01:00
README.i18n

                   ------------------------------
                   GNU Image Manipulation Program
                      2.99 Development Branch
                   ------------------------------

This is an unstable development release, an intermediate state on the
way to the next stable release: GIMP 3.0. GIMP 2.99 may or may not do
what you expect. Save your work early and often. If you want a stable
version, please use GIMP 2.10 instead.

If you think you found a bug in this version, please make sure that it
hasn't been reported earlier and that it is not just new stuff that is
still being worked on and obviously not quite finished yet.

If you want to hack on GIMP, please read the file devel-docs/README.md.
For detailed installation instructions, see the file INSTALL.


1. Web Resources
================

GIMP's home page is at:

	https://www.gimp.org/

Please be sure to visit this site for information, documentation,
tutorials, news, etc.  All things GIMP-ish are available from there.

The latest version of GIMP can be found at:

	https://www.gimp.org/downloads/

We also have a website dedicated to documentation at:

        https://docs.gimp.org/


2. Contributing
===============

GIMP source code can be found at:

	https://gitlab.gnome.org/GNOME/gimp/

Resources for contributors:

        https://developer.gimp.org/

In particular, you may want to look in the "Core Development" section. Some
articles of particular interest for newcomers could be:

* Setting up your developer environment: https://developer.gimp.org/core/setup/
* GIMP Coding Style: https://developer.gimp.org/core/coding_style/
* Submit your first patch: https://developer.gimp.org/core/submit-patch/


3. Discussion Channels
======================

We have several discussion channels dedicated to GIMP user and
development discussion. There is more info at:

        https://www.gimp.org/discuss.html

For the real junkies, there are IRC channels (e.g. #gimp or #gimp-user)
devoted to GIMP on GIMPNet (a private free software oriented network).
Many of the developers hang out there. Some of the GIMPNet servers are:

	irc.gimp.org:6667
	irc.us.gimp.org:6667
	irc.eu.gimp.org:6667

More discussion channels, such as forums, will be listed on the above
"discuss" page when they are moderated by a team member.
Links to archives of former discussion methods (e.g. mailing lists) are
also included in that page.

4. Customizing
==============

The look of GIMP's interface can be customized like any other GTK+ app
by editing files in `${XDG_CONFIG_HOME}/gtk-3.0/` (settings.ini and
gtk.css in particular) or by using "themes" (ready-made customizations).
Additionally, GIMP reads `${XDG_CONFIG_HOME}/GIMP/2.99/gimp.css` so you
can have settings that only apply to GIMP.

You can also manually change the keybindings to any of your choice by
editing: `${XDG_CONFIG_HOME}/GIMP/2.99/shortcutsrc`.


Have fun,

  Spencer Kimball
  Peter Mattis
  Federico Mena
  Manish Singh
  Sven Neumann
  Michael Natterer
  Dave Neary
  Martin Nordholts
  Jehan