Commit graph

56066 commits

Author SHA1 Message Date
Sabri Ünal
bf5331b3dc plug-ins: Unify Wavelet Decompose naming
I don't know Which form is better but let's try to unify strings.

It should be Title Case for procedure_dialog_new function.
2025-10-18 13:19:23 +03:00
Bruno Lopes
0895695d87
build/linux: Mention name: on preview and latest snap README 2025-10-17 20:21:09 -03:00
Alx Sa
3cb0eb2df5 plug-ins: Fix crash when removing flares in Gradient Flare
Resolves #15113
There is code in the Gradient Flare plug-in to prevent deleting
gradients when there is only one left. However, the flare count
was not being properly updated. Due to a stray unbounded IF
statement, "if (tmp->next == NULL)", the num_gflares variable
was only decremented if you deleted from the bottom of the list.
As a result, you could delete all the flares and cause the plug-in
to crash when it tried to render a non-existent flare.

This patch removes the stray IF statement and adds additional checks
to make sure dlg->gflare exists before trying to get a pointer from it.
2025-10-17 21:58:15 +00:00
Bruno Lopes
b3fe88323c
build/linux: Bump openexr module to 3.4.2
Synced from 7f1b70cbab
2025-10-17 15:02:20 -03:00
Bruno Lopes
4d64bab97a
devel-docs: Fix Color Notebook image label
See: Infrastructure/gimp-web-devel#35
2025-10-17 11:02:57 -03:00
Bruno Lopes
f771437242
devel-docs: Finish devel-docs cleanup
See: Infrastructure/gimp-web-devel#9

gitlab-mr.md was removed without replacement since the
package generation info is now on the MR template for
everyone's benefit (6245e4ee) and the test of the
text was mainly personal annotations.
2025-10-17 10:03:23 -03:00
Bruno Lopes
13d3643ad7
devel-docs: Move GIMP 3 porting guide to gimp-web-devel
See: Infrastructure/gimp-web-devel#9

Except API-for-resources.md, which is ugly and
not linked in the README. And GIMP3-API-Changes,
which seems to be just a personal annotation.
2025-10-17 09:23:57 -03:00
Alx Sa
6910945bd4 plug-ins: Set background fill for multi-page PDF
Resolves #14752
Our previous logic only worked for single-page PDFs.
If a multi-page PDF was exported, only the first layer
would have the background color set - the rest would
always be transparent regardless of user choice.

This patch moves the "fill background" logic deeper into
the layer drawing code, so that it is considered for each
layer rather than once at the beginning. It is also adjusted
for different situations, such as when the user wants group
layers to be combined.
2025-10-17 12:19:18 +00:00
Marco Ciampa
5b2680c660 Updated Italian translation 2025-10-17 14:00:33 +02:00
Bruno Lopes
768ff5bc5d
build/linux: Add instructions about gimp-plugins bump on preview Snap too 2025-10-17 08:40:02 -03:00
Bruno Lopes
21044e61f2
devel-docs: Move advanced concepts to gimp-web-devel
See: Infrastructure/gimp-web-devel#9

Also, drop interpreters.txt since we have an example file.
2025-10-17 08:37:10 -03:00
Bruno Lopes
d997fd39a6
devel-docs: Remove gimp-data-ish text 2025-10-17 08:37:06 -03:00
Alx Sa
1413921e78 plug-in: Export PDF vector layers
This patch adds support for exporting vector layers
as vectors via Cairo.
2025-10-17 10:07:34 +00:00
Marco Ciampa
09b3950f52 Updated Italian translation 2025-10-17 10:16:47 +02:00
Ekaterine Papava
974b2e78b7 Update Georgian translation 2025-10-17 08:15:19 +00:00
luming zh
3cd02709ef Update Chinese (China) translation 2025-10-17 00:22:03 +00:00
luming zh
af0cd77960 Update Chinese (China) translation 2025-10-17 00:15:25 +00:00
Bruno Lopes
ad2c3beded
build/linux: Add GIMP major version on content: of gimp-plugins plug
Similarly to Flatpak's "add-extensions"."org.gimp.GIMP.Plugin"."version".
Otherwise, we would have broken Snap plugins on GIMP 4 which breaks API.
2025-10-16 12:48:56 -03:00
Bruno Lopes
446f21d527
.gitlab: Update link to Image formats list page
See: Infrastructure/gimp-web-devel@d7e6312b
2025-10-16 11:00:38 -03:00
Bruno Lopes
ae32786a55
.gitlab: Mention Snap and MS Store packages on issue templates 2025-10-16 10:48:12 -03:00
Jehan
f175004be3 Issue #15099: --no-interface mode broken on macOS. 2025-10-16 01:26:25 +02:00
Jehan
11dc1c6b47 app: revert to previously selected drawables when getting out of quick mask. 2025-10-16 01:03:25 +02:00
Alx Sa
931f60923a core: Commit NDE filters on Quick Mask exit
Per Reju, NDE filters are not factored into the selection
created when turning off the Quick Mask.
This patch adds a call to gimp_drawable_merge_filters ()
on exit so that all active filters are merged down before
the selection is made.
2025-10-15 19:36:41 +00:00
Jehan
0358625b1c app: merge button should be insensitive on non-rasterized GimpRasterizable. 2025-10-15 21:07:55 +02:00
Jehan
5622708c0a app: improve layer and path selection logic.
- The "Create New Vector Layer" button is now always active, as long as
  there is an image.
- When a path is selected with no matching vector layer, the button's
  label will be "Create Vector Layer from Path", indicating that it will
  create a new vector layer from the current path.
- When selecting a path while the Path tool is active, let's update the
  selected layers to all the layers (it may be several layers!) tied to
  this path. Otherwise, this can be quite confusing, showing a path
  while another layer is selected, or worse, showing a path while the
  selected layer is a vector layer (but not tied to this path).
2025-10-15 21:07:55 +02:00
Bruno Lopes
4d7135f6f2
build: Make CI_COMMIT_TAG check more robust 2025-10-15 12:48:56 -03:00
Bruno Lopes
3490dcc042
gitlab-ci: Fix Store pipeline rules: after cbe56ff3 2025-10-15 12:04:20 -03:00
Jehan
884dc6bf59 NEWS: update. 2025-10-15 15:23:04 +02:00
Jehan
e960ed0d12 app, menus: delete "layers-vector-fill-stroke" action.
Cf. discussions on IRC with Alx.
Since this is editable directly in the Path tool options, we likely
don't need to have the separate action for it. It feels redundant.

It is still available on a double-click, though I am not sure if it's a
good idea. Maybe the double-click should rather activate the path tool,
from which you can edit all these (just as what happens with the text
tool). To be continued after more UX discussions?
2025-10-15 15:11:03 +02:00
Jehan
0f65d3923e app: show a menu path to advertize how to "Rasterize" and blink the selected layer.
This is the result of a UX session with Aryeom. Just showing a message
forbidding editing of non-rasterized text/link/vector layers is
problematic, because it doesn't help people understand how to unblock
their situation (if they really want to just edit directly the layer).
Additionally we are now blinking the layer.

A possible alternative could have been to pop a dialog up, with the
same message but also with a quick-action button to allow rasterize in a
click (similar to how we are popping a dialog up to revert the
rasterization when clicking on a text layer with the text tool or a
vector layer with the path tool). The problem is that even though the
need to edit directly a non-raster layer arises from time to time, most
of the time, when you use such layers, you don't intend to edit these
(unlike editing text/path with matching tools, you more often wanted to
edit the relevant data).
Therefore it is more often than not just a mistake when you try to paint
directly on such a layer. I.e. that very often, you were intending to
paint on another layer, or add a new layer above your non-raster layer.
Therefore a dialog popping up every time you made such a mistake would
be annoying and workflow-breaking. A simple error message and some
blinking leave for a fluid process.
2025-10-15 14:57:36 +02:00
Jehan
50fd97b28b app: better logic to generically prevent drawing on rasterizable drawables.
The previous code was preventing initializing, but some succession of
actions could go round this check: Rasterize then Revert Rasterize. In
this state, the next click would not try to initialize again, which
first is not very good if the initialization was necessary, and second
would allow drawing on a non-rasterized text/link/vector layer.

So let's just have all the code blocking drawing on rasterizable
drawables in the generic gimp_tool_button_press() code only.
2025-10-15 13:00:44 +02:00
James Addison
ea0574b86c app: allow gimp command-line to run in console mode
When non-interactive mode is requested (the -i command-line flag),
_and_ we've compiled the app with UI support enabled, allow `gimp`
to branch into the console-based version of the app -- equivalent to
running it using `gimp-console`.

This avoids GTK-related failures open a display when one is not
not available (for example, when running `gimp` within a container
or a VM without a graphical display).
2025-10-14 23:20:12 +00:00
Jehan
ecd47d3d23 NEWS: update. 2025-10-15 00:52:34 +02:00
Jehan
c90a485fad plug-ins: add support for exporting pattern of fill and stroke of vector layers. 2025-10-15 00:47:17 +02:00
Jehan
cf9cfbb4ab app, libgimp, pdb: new procedures gimp_vector_layer_get_(fill|stroke)_pattern(). 2025-10-15 00:12:42 +02:00
Jehan
e1b6e93727 NEWS: update. 2025-10-14 23:04:14 +02:00
Jehan
104d0f978d plug-ins: small cleanup.
- Some useless space cleanups.
- Properly free a string.
- Localize procedure documentation strings, except the help text for the
  load procedure as it focuses on rendering to raster, which is true
  now, but soon should not be! Let's not give useless work to
  translators if we soon plan to change this. Also I don't think that
  naming the library we use has much interest in a creator-facing
  string.
- Fix export documentation strings (we don't export only vector
  layers!).
2025-10-14 22:52:19 +02:00
Jehan
79f2de0625 libgimp: fix a function's doc-comment. 2025-10-14 22:30:32 +02:00
Jehan
faa288300f libgimpwidgets: consider NULL value of GimpLabelEntry as empty string.
Fixes:

> (file-svg:125356): Gtk-CRITICAL **: 22:11:43.459: gtk_entry_buffer_set_text: assertion 'chars != NULL' failed

… when running file-svg-export because the default of the "title" string
argument is NULL.

I did hesitate considering this was a bug in file-svg code on the
premises that a NULL value was not valid (hence replacing it as ""), but
in the end, I went with the more flexible solution, which is that NULL
is considered equivalent to "". So GimpLabelEntry code will just
transform the NULL pointer internally to an empty string.
2025-10-14 22:28:37 +02:00
Jehan
c5cdea4842 app: copy the rasterization state for all 3 types implementing GimpRasterizable. 2025-10-14 22:06:04 +02:00
Jehan
6cca90a3c2 plug-ins: determine correctly whether to export a raster object or not.
There were 3 bugs which were kinda countering each other and
participating to some confusion regarding actual layer types to export.

First the previous commit as we were looking whether a layer had been
rasterized to determine the object type on libgimp side. Secondly this
commit as the plug-in was using the previously wrong procedures. Lastly
with the upcoming commit, when we were duplicating an image, we were
disregarding any rasterization.
2025-10-14 22:06:04 +02:00
Jehan
58d84dfc2b app, pdb: check the real instance type to determine text, link and vector layers.
Without this, libgimp was creating raster GimpLayer objects when these
had been rasterized, which only made kinda sense when the old "discard"
procedures were not reversible. Yet even this was not entirely true,
since it was still possible to undo, but unfortunately these objects are
long lived. Once you get a GimpLayer, it won't ever change into a
GimpTextLayer (or others)!

So we need to have an object of the correct child type then we'll use
gimp_rasterizable_is_rasterized() to decide how to make use of the
object.
2025-10-14 22:06:04 +02:00
Dr. David Alan Gilbert
7d971a05c6 plugins: Remove unused struct 'camera_t' on sphere-designer 2025-10-14 16:46:41 -03:00
Jehan
8c07034dcf app, libgimp, pdb: fix authorship and initial version for vector layer API. 2025-10-14 21:11:09 +02:00
Jehan
3e414e6698 libgimp: better fix for procedure blurb in GimpProcView.
Commit 6874c47544 was not correct as we generate some type/values
description, extensively using Pango markup.

This additional fix does not change the logic from the aforementionned
commit, which is that the blurb still is just plain text (nor markup),
which we properly escape to display as-is, mixed with Pango markup.
2025-10-14 21:11:09 +02:00
Jehan
903195f429 plug-ins: indentation fix. 2025-10-14 21:11:09 +02:00
Yuri Chornoivan
7c613b43a8 Update Ukrainian translation 2025-10-14 18:44:02 +00:00
luming zh
294b181252 Update Chinese (China) translation 2025-10-14 01:49:36 +00:00
Bruno Lopes
67040c7f99
build/linux: Do not allow creating gimp snap with master gimp
Also, do some improvements on babl/gegl check.
2025-10-13 20:46:05 -03:00
Nathan Follens
1c8cb9e651 Update Dutch translation 2025-10-13 21:08:57 +00:00