Commit Graph

53116 Commits

Author SHA1 Message Date
Jehan b6196ec48f app: more accurate test and reference file names. 2024-09-20 01:47:03 +02:00
Jehan e10e4fc347 More digests from CI. 2024-09-19 15:00:51 +02:00
Jehan bc11597c49 Hmmm… 2024-09-19 02:51:36 +02:00
Jehan 80ea4cb73e more fixup. 2024-09-19 02:49:42 +02:00
Jehan 8cdb750320 fixup. 2024-09-19 02:36:53 +02:00
Jehan fbe8914e74 Again from CI.
Just a few pixels different, all perceptually identical!
2024-09-19 02:01:39 +02:00
Jehan ad715cd9d9 Plop. 2024-09-19 01:37:20 +02:00
Jehan a387ab3e83 gitlab, libgimp: also exporting as .data file and storing as artifact.
This will help debugging.
2024-09-19 01:11:29 +02:00
Jehan 182b43cea7 app: some of the CI runners computes different digest.
The data is perceptually identical or off-by-one pixels, which means
these are very likely consequence of float computation slight
differences, which make off-by-one u8 integers when converted back.
2024-09-19 00:54:33 +02:00
Jehan a2493defde libgimp: allow using the download server as fallback for data comparison storage.
This way, we can have the CI run data comparison for layer mode unit
testing without pushing huge data file in the repository. I don't add
any textual output about this feature though, because it's not like
anyone else but maintainers/admins can upload any files there anyway.
2024-09-19 00:46:25 +02:00
Jehan 9c99839a60 Adding different digest with no-SSE2 codepath. 2024-09-19 00:30:11 +02:00
Jehan 4575aaaed5 app: adding unit testing for the non-legacy layer modes too.
There were just too many possible cases, so I created a script
tools/compute-layer-mode-digests.py which I am going to commit in the
`gimp-2-10` branch.

These are the digests generated this way with GIMP 2.10 with SSE2.
"Color Erase" testing is disabled currently because it is very broken
(digests are different at each export!).

Some modes (Anti Erase and Replace) are not introspected, therefore they
cannot be tested. Pass-through is not tested right now because it
requires special-casing and a little more thought.

"Behind" is not in the list of layer modes in the Layers dockable, and
it could not be set in GIMP 2.10 API, but it could be set in GIMP 3.0
API. So I don't have GIMP 2.10 data. Let's use GIMP 3 data as our
baseline for this blending mode testing, from now on.
2024-09-19 00:30:11 +02:00
Jehan c2a6797c54 app: all legacy layer modes are now verified.
Some operations generate slightly different pixels but all differences
are minimal (in worst case, barely 0.3%) and the pixels are perceptually
identical, with basically off-by-one differences (e.g. in some case, I
had pixels whose value when converted to u8 would be 91.4999999…, which
meant that slight float computation different are enough to make it be
either 91 or 92).
Even more, in 2 builds of GIMP 2.10 (flatpak or custom build), I had
either the same result as 2.99 in one of the build, or sometimes a third
result.

But any case, none of these differences warrant being qualified as a
change in the render. Therefore I make the digest to compare to into a
list of digests. Hopefully we won't have to edit this list too often
with more slight variant renders.
2024-09-19 00:30:11 +02:00
Jehan 31aa586e7d app, libgimp: improve debugging ability in the layer mode unit testing.
I add a feature so that one can drop a data file of the result as
expected in the build folder. Then the unit testing framework will
compare it to the layer mode render and will list of the problematic
pixels, additionally to some statistical data to discover if we are
likely just dealing with off-by-one issues, or some more drastic render
differences.
2024-09-19 00:30:11 +02:00
Jehan 4cc6d44b45 app, libgimp: WIP new infrastructure for testing layer modes.
One of the points we care most about is for XCF code stability over
time. In particular, loading an old XCF should render visually the same.

This unit-testing infrastructure allows testing that we do not deviate
when editing layer mode code. It works on u8 so that float computation
precision does not come into account as well.

For now, I only run it on legacy layer modes.

Note that 6 legacy modes have different hash from their 2.10
counterparts (difference, subtract and all 4 HSV/HSL layer modes). In a
next step, I will look more closely into them to determine if we are
talking of minor, not-too relevant, differences or if we broke their
implementations somehow.
2024-09-19 00:30:11 +02:00
Jehan 998c65f4e2 NEWS: update. 2024-09-18 23:26:21 +02:00
Jehan 78665ca372 extensions: the lua binding (and its example plug-in) is now marked as experimental.
We have too many issues with the lua binding, so until someone finds a
solution, mark it officially as experimental.

See discussion in: https://gitlab.gnome.org/GNOME/gimp/-/issues/11895#note_2225885
2024-09-18 22:54:02 +02:00
Jehan 8f3931a45e app: continue running GIMP when run non-interactively without --quit.
Right now, running GIMP non-interactively (i.e. either as gimp-console
or with --no-interface) without --quit, the process was still exiting
immediately, yet not properly cleaning after itself. This is a
regression, since there used to be use cases with people wanting
long-running GIMP (for instance with a long-running plug-in waiting for
input through whatever inter-process communication method).

With this commit:

* GIMP now continues running when run non-interactively without --quit;
* It will catch SIGINT (typically Ctrl-C) and will quit cleanly when the
  signal happens.
* At the end of the normal process (processing command line options,
  such as opening images or running batch commands) and before going
  on-hold, it will display some info text saying that the process can be
  exited with SIGINT and informing that --quit exists if you were in
  fact intending to quit immediately after the normal process actions.
* This also fixes the "gimp_finalize: list of contexts not empty upon
  exit" WARNING we had when it was exiting without --quit (because of no
  proper cleanup).

Note that I add some CLI text which ideally should be localized. But
since we are in string freeze, I am letting them untranslated with a
TODO (also assuming CLI-using people have more chances being used to
English, which may be or not a wrong assumption; but anyway most people
don't read the terminal output, and people running GIMP
non-interactively are even less).
Since this was not just an enhancement but also really a regression fix,
I prefer to do this now despite the string freeze and lack of
localization.
2024-09-18 22:27:19 +02:00
Jehan 2d063d8876 app: add the exact GimpContext subtype for stale context at exit.
It helps a bit for debugging.
2024-09-18 22:14:23 +02:00
Tim Sabsch 7fed33ec84 Update German translation 2024-09-18 18:41:12 +00:00
lloyd konneker d67676a48b Plugins: Decor>Stencil Chrome use v3 binding and style changes
No intended change to function.
Style changes for easier reading.

Use v3 binding of PDB returns (elide many car), TRUE=>#t, etc.

Also condense trailing right parens to one line
2024-09-18 11:34:18 -04:00
lloyd konneker 4f9a860569 Plugins: Decor>Stencil Chrome: relax image mode requirements (sensitivity)
Was "GRAY" without alpha.
Now "*" i.e. any image mode, w or w/o alpha.
The effect is more or less the same,
and should be exactly the same if the user submits a GRAY.
2024-09-18 11:34:18 -04:00
lloyd konneker dd241e9c71 Plugin: Stencil Chrome: allow user not to choose a secondary image
When the user does not choose a file of a secondary image,
use a copy of the primary image as the secondary image.
Rather than throw an error.
The filter still has effects, if not quite the same as when user
chooses a secondary image that is not the primary image.
2024-09-18 11:34:18 -04:00
lloyd konneker f4ae230e4d ScriptFu: fix handling of args for GFiles
Represent passed Gfile args having unknown files
or invalid GFile by an empty string.
Instead of by an error string.
A script can treat an empty string as a None choice of file,
or as a user error.
2024-09-18 11:34:18 -04:00
Yuri Chornoivan 0f96855613 Update Ukrainian translation 2024-09-18 06:55:31 +00:00
Luming Zh 269531123b Update Chinese (China) translation 2024-09-18 01:54:37 +00:00
Bruno 528df2143f
build/windows: Comment .ps1 scripts regarding 'gimp-release' 2024-09-17 21:43:28 -03:00
Jehan 67bd7b677b plug-ins: "history" is supposed to be an aux argument.
This got mistakenly changed in commit 4bf5dc7b97.
2024-09-18 01:34:46 +02:00
lloyd konneker d7f9c5e57e Fix #12044 broken build gcc14 incompatible pointers 2024-09-17 14:12:21 -04:00
Jehan 0bab4c356a meson: update the "Detailed backtraces" optional feature summary.
This was mixing 2 features: the debug on crash and performance logs in
the Dashboard dockable.

1. DrMingw is for debug on crash on Windows and has already a report in
   the meson summary. So I remove it from the test.
2. Linux specifically with libbacktrace and/or libunwind and Windows but
   only x86 (32/64) only are supported. Test updated.
3. Summary field updated to "Detailed backtraces (Dashboard)" for more
   clarity.
2024-09-17 19:10:06 +02:00
Martin eb4d99b080 Update Slovenian translation 2024-09-17 15:15:03 +00:00
lloyd konneker 15ae108150 ScriptFu: fix defaults for script args of type Resource
Script authors declare defaults by name strings.
Which can be valid name, or empty string, or "from context".

ScriptFu declares formal arguments to the PDB,
either with a default GimpResource, or defaulting dynamically from context.

Works with both new-style dialogs (ProcedureDialog and ProcedureConfig)
or with old-style dialog (script-fu-interface.c)
2024-09-17 12:06:37 +00:00
Alx Sa 1513f41614 plug-ins: Restore drag arrows in Sample Colorize
This feature was broken during the initial
port to GimpProcedureConfig, due to the
Out Level parameters not being properly
clamped when interacted with. This patch
fixes the clamping and restores the call
to level_in_draw () to show the arrows.
It also sets the gamma widget's increments
to match 2.10's range.
2024-09-17 12:06:32 +00:00
Alx Sa 290e46b912 script-fu: Fix missing label in Distress Selection
Since the port to GimpProcedureDialog,
the Threshold label was not being shown
due to it accidentally having an invalid
tag, <-->.
This patch renames it to just "Threshold"
and updates the range to be clearer,
which was the purpose of the original
extended label.
2024-09-17 11:15:13 +00:00
Alexander Shopov fde9567e58 Update Bulgarian translation 2024-09-17 07:17:57 +00:00
Alexander Shopov 339cb976c4 Update Bulgarian translation 2024-09-17 05:18:12 +00:00
Alexander Shopov b0647c2365 Update Bulgarian translation 2024-09-17 04:46:23 +00:00
Alexander Shopov ed39d83091 Update Bulgarian translation 2024-09-17 04:43:28 +00:00
Tim Sabsch 313770a0c1 Update German translation 2024-09-16 19:19:26 +00:00
Bruno e898791a10 build/windows: Fix acidental revisions in scheduled pipelines
Some maintainers use the common pratice of evaluating variables to 1,
which breaks the revision detection code. Let's special case this.
2024-09-16 14:41:01 +00:00
Jehan b5cbe4e9dc gitlab-ci, gimp-data: always test the install phase too.
See: https://gitlab.gnome.org/GNOME/gimp-data/-/issues/3
2024-09-16 12:04:29 +02:00
Bruno ca9d57a417
build/windows: Generate checksums again in MSIX script
This fixes a regression introduced with bd288617
2024-09-15 17:19:44 -03:00
Jehan 537df7f9d8 gimp-data: update.
Two data-related bugs are fixed in the gimp-data repository.
2024-09-15 19:05:26 +02:00
Jehan 12370d7dab Issue #11808: The RGBA channels cannot be duplicated anymore or used with…
… the selection commands.
2024-09-15 17:14:37 +02:00
Jehan d225d58a22 app: fixing "unused variable" warning.
The warning appeared as consequence of commit 281548a022 which made the
drawable variable (and consequently tool too) unused.
2024-09-15 17:03:16 +02:00
Bruno aa10a33db9
build/linux: Sync with Beta manifest regarding imath, poppler, suitesparse and graphviz
Ported from: 1ddf27837b
2024-09-14 17:44:04 -03:00
Tim Sabsch 45e23b25a6 Update German translation 2024-09-14 19:21:45 +00:00
Alx Sa 281548a022 app/tools: Use existing filter's drawable to get filter stack
Resolves #12034

Previously, we used the Filter Tool's drawable when updating an
existing filter. However, if the user has a different layer selected than
what the edited filter is attached to, the edited filter is always put at
the top of the filter stack.
This patch retrieves the drawable from the existing filter itself, rather
than assuming the filter tool's drawable is the same one.
2024-09-14 02:10:29 +00:00
Kolbjørn Stuestøl 837d26cae4 Update Norwegian Nynorsk translation 2024-09-13 19:45:39 +00:00
Alx Sa 62c86a5e72 plug-ins: Replace GimpRGB in map-object 2024-09-13 12:32:34 +00:00