Commit graph

10087 commits

Author SHA1 Message Date
lloyd konneker
771dd219f6 ScriptFu: rename script-fu-register-regular => -procedure
As suggested by reviewers, use a better word.
Regular denotes size.
Procedure is the same word used in the classes in the code.
Procedure denotes a general procedure, without specialization.

Renames only where visible externally by script authors.
Internally, some functions are still named "_regular".
That can be changed later as a style issue.
2024-09-27 14:35:50 +00:00
lloyd konneker
96e02122b8 ScriptFu: plugins: port to script-fu-register-regular
Ported all supported/shipped Scheme plugins in the repo
that formerly called script-fu-register.
No test plugins were ported.

The plugins now use the new dialog, GimpProcedureDialog.

These are the plugins that are not filters i.e. not GimpImageProcedure,
which were ported earlier to script-fu-register-filter.

The test plugin Demo>Sphere demonstrates that while script-fu-register
is now deprecated, it still works, showing the old dialog.

Misc bug fix to prior commits.

Misc porting of same plugins to v3 binding of PDB return values.

Misc fixes: invalid default font names, and deprecated PDB calls.
2024-09-27 14:35:50 +00:00
lloyd konneker
d0a6c4c758 ScriptFu: add Scheme language function script-fu-register-regular
Building on prior commits, with a few small fixes to them.

First demonstrable changes towards #12605.

Font map plugin is ported as a test case.

Old-style plugins using script-fu-register still work.
2024-09-27 14:35:50 +00:00
lloyd konneker
d361256977 ScriptFu: add methods for running regular procs
A chain of methods starting with the run_fun script_fu_run_regular_procedure.
To use GimpProcedureDialog for scripts that are not ImageProcedure.
2024-09-27 14:35:50 +00:00
lloyd konneker
a96211fcb7 ScriptFu: refactor script-fu-command
No functional changes.

    Extract methods to be in common with script_fu_fu_regular_proc
    i.e. to run a GimpProcedure instead of GimpImageProcedure
2024-09-27 14:35:50 +00:00
lloyd konneker
0a2b64352c ScriptFu: refactor script-fu-dialog
No functional changes.

Extract methods to be in common with script_fu_fu_regular_proc
i.e. to run a GimpProcedure instead of GimpImageProcedure
2024-09-27 14:35:50 +00:00
lloyd konneker
4ffc99b75d ScriptFu: fix 8463 obsolete SF-VALUE
Any third-party scripts using SF-VALUE will need porting.
2024-09-27 06:41:29 -04:00
Alx Sa
439a5c9831 scripts: Remove last use of SF-VALUE
This patch replaces SF-VALUE in burn-in-anim.scm with
SF-ADJUSTMENT, allowing us to deprecate and remove
SF-VALUE from the API.
2024-09-24 13:12:25 +00:00
Jacob Boerema
f84e4ee04d plug-ins: fix failure to write IPTC TimeCreated
The IPTC TimeCreated tag does not allow fractions of a second, while
Xmp.Photoshop.DateCreated (which includes the time) does allow this.

In our metadata editor we base our date/time on the last value and then
synchronize it with the IPTC date and time values.
While doing that, we did not check if the seconds had a fractional part.

To fix this we first check for the presence of a fraction by checking
for a dot in the time string.
Complicating factor is that a timezone difference may follow that,
which we want to keep if present. So we check for that too and
concatenate the parts we want.
2024-09-23 13:37:29 -04:00
Jehan
151cb9c40c app, libgimp, pdb, plug-ins: rename gimp_palette_entry_[gs]et_*().
These function names look like they should be applied to a
GimpPaletteEntry, which is a type which doesn't exist in libgimp. This
naming is much more appropriate.
2024-09-23 18:37:27 +02:00
Jehan
1b7f8533ee libgimp, plug-ins: fix a case of not showing dialog.
Fix a generic case when gimp_window_set_transient() is called on an
already mapped window: the handle argument was missing.

The part in bmp-export though, in fact, I am still a bit at a loss.
Somehow calling gimp_window_set_transient() was making the dialog not
showing up at all, yet kinda blocking the bmp plug-in (waiting for a
response to the non-displayed dialog) and various features in the main
GIMP GUI too.
Calling gtk_widget_show() first, before setting transient was enough to
make the dialog finally work as it should, but this is really not ideal.
I compared to other cases in other plug-ins where the set_transient()
function was called before the dialog was shown and it is working fine.
I just cannot find the proper reason. So this will do for now.
2024-09-23 18:20:46 +02:00
Jehan
2e1bf0e44c plug-ins: get rid of all remaining usage of gimp_image_[gs]et_colormap().
When I see that we are just using R'G'B' format with no space
everywhere, I'm pretty sure some of this code must be wrong (even though
for some formats, maybe only sRGB is supported, I am guessing that for
some others, the palette may be in specific color spaces).
This will have to be improved with time.
2024-09-23 18:20:14 +02:00
Jehan
9ad05ee6fa app, libgimp, pdb, plug-ins: change gimp_palette_set_colormap() to take a C array.
Similar to previous commit.
2024-09-23 00:01:06 +02:00
Jehan
c60512514c app, libgimp, pdb: change gimp_palette_get_colormap() to return a C array.
GBytes are a bit annoying to handle, so I'm renaming the PDB procedure
to a private _gimp_palette_get_bytes() instead, and making a wrapper
function which returns a C array and both the number of colors or number
of bytes. The latter is needed for introspection (otherwise the binding
can't know the size of the C array), but for the C API, both these
returned integers can be considered redundant (since one can be computed
from the oher), so only one at a time is mandatory.
2024-09-23 00:01:06 +02:00
Jehan
c3488ad0c5 plug-ins: port various plug-ins to gimp_palette_[gs]et_colormap() and …
… gimp_image_[gs]et_palette().
2024-09-22 23:26:33 +02:00
Jehan
94c7ca6809 plug-ins: support saving the history of commands.
Since I use the Python console a lot myself to test GIMP API, the
ability to recall previously ran commands is extremely useful. Let's
just add support for this as an AUX argument. This was already done in
the Script-fu console, now in the Python console too!
2024-09-22 23:26:33 +02:00
Jacob Boerema
79faa06693 script-fu: fix failure to load SF_FILENAMEs on Windows
A path on Windows contains backslashes, which got interpreted as
escape sequences in script-fu when selecting a filename by the call
to g_string_append_printf.
This caused failures in e.g. Stencil Chrome after selecting an
environment map image.

Use script_fu_strescape to escape the filepath, so that we correctly
interpret the Windows path.

See also
https://gitlab.gnome.org/GNOME/gimp/-/merge_requests/1851#note_2225989
2024-09-22 17:34:09 +00:00
Anders Jonsson
c812da7e23 Issue #8832: fix metadata string corrupted on Linux
On Linux the string for GPS coordinates was broken when the
string it was strtok:d from was freed. Move the free until we
have finished using the resulting string.
2024-09-21 14:12:52 +00:00
lloyd konneker
697efa72aa Plugins: fix old font defaults giving missing resource warnings
A plugin declaring a default font that is invalid warns at startup.
No such plugins should be installed by GIMP, even for a testing build.
2024-09-20 10:34:41 -04:00
lloyd konneker
b7376a57a7 ScriptFu: fix compiler warning "format string is not a string literal" 2024-09-20 10:58:50 +00:00
lloyd konneker
653cca0993 Plugins: Stain, convert to v3 ScriptFu binding of PDB return values
Easier to read, more canonical Scheme
2024-09-20 10:58:50 +00:00
lloyd konneker
eb57122365 Plugins: fix Stain plugin call to changed Distress Selection plugin
Symptom is "Arg 3 invalid or out of range".  Issue not formally reported.

Broke because Distress Selection plugin signature changed: arg Threshold type Int=>Float
2024-09-20 10:58:50 +00:00
lloyd konneker
f7f71ae292 ScriptFu: enhance error messages for range errors in calls to PDB
Refactor: extract methods for int and float range errors

Enhance by naming the called PDB procedure

This helps script authors find the location of an error.

These errors can occur either when first authoring a plugin,
when a user stresses a plugin in a way not previously tested,
or when a called PDB procedure or plugin changes an argument type or range.

Note that calls from SF scripts to other SF plugins
are not always via a PDB call and then not range checked.
2024-09-20 10:58:50 +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
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
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
Alx Sa
62c86a5e72 plug-ins: Replace GimpRGB in map-object 2024-09-13 12:32:34 +00:00
Alx Sa
f8e04894ed libgimpcolor, operations, plug-ins: Replace GimpRGB in GimpAdaptiveSuperSample
GimpRGB replaced with gdouble arrays.
Note that some temporary intermediate
GimpRGBs objects were added, which will
be removed when map-object and
gimpoperationgradient are fully converted
in a separate commit.
2024-09-13 01:12:13 +00:00
Alx Sa
165f616fb7 script-fu: Port image scripts to GimpProcedureDialog 2024-09-12 19:01:15 +00:00
Alx Sa
0d6754efd7 plug-ins: Remove GimpRGB from Lighting Effects plug-in 2024-09-11 14:33:24 +00:00
Jehan
b8712b27de Issue #12011: gimp-path-import-from-file etc. are misnamed. 2024-09-11 16:26:45 +02:00
Jehan
bceba808df plug-ins: allow running file-raw-data non-interactively.
The code was perfectly working already, yet we were blocking the
non-interactive case only to stop automatic runs, such as generating
thumbnails. The chosen solution is not perfect either as it would break
on the odd case where a given raw data file's expected dimensions were
the default. Yet it's a start.
2024-09-11 13:16:28 +02:00
Jehan
79d047141a plug-ins: fix s/bpp/bpc/ in "pixel-format" argument.
Fortunately I caught this one, because the string values of the
GimpChoice argument would have been part of the API and confusing bits
per pixel and per channel is not so good for a graphic program! 😅

Only places this was alright were the grayscale ones, with no alpha
(where there is only one channel, so bpc and bpp are the same). I
hesitated a lot of I should write BPC to be consistent with other args
or not. In the end, I stick to BPP there, since I find it somehow
clearer this way.

Luckily this doesn't break string freeze because there was no mention of
what the bit-sizes represent in the arg labels.
2024-09-11 13:16:28 +02:00
Alx Sa
7a77d6f338 plug-ins: Remove GimpRGB from Van Gogh LIC
Also, use linear RGBA for bilinear calculations per
discussion with Pippin and Jehan.
2024-09-08 23:32:54 +00:00
Alx Sa
fc8194ccf3 plug-ins: Fix inverted logic in file-bmp
Resolves #12018

During the port to GimpProcedureDialog, we accidentally
inverted the set_sensitive () logic for using RLE and the
RGB format. RLE was being locked for indexed images while
the RGB format was being locked for RGB images.
This patch inverts the two conditions to fix the issue.
2024-09-08 18:51:05 +00:00
Alx Sa
b54a70af69 libgimpcolor, plug-ins: Replace gimp_bilinear_rgb/a()...
..with gimp_bilinear_rgb ().
This function takes in a double array of raw pixels,
a boolean to determine if the pixels have an alpha channel,
and a reference to return the final pixel to.
2024-09-08 15:00:49 +00:00
Alx Sa
74c272ce69 script-fu: Port lava.scm to GimpProcedureDialog
Resolves #10822

After improvements by Lloyd Konneker and Jehan,
Script-fu's implementation of GimpProcedureDialog retains
defaults for GimpResources.
This patch ports lava.scm to use the new API, and also switches
the default gradient to Incandescent.
2024-09-08 01:38:41 +00:00
Jehan
6cd39dc442 plug-ins: fix test-dialog after commit 75a50ce87b. 2024-09-06 17:33:49 +02:00
Jehan
75a50ce87b app, libgimp, pdb, plug-ins: add ability to default to context for all resource args.
Also fixes the passing of the resource param definitions through PDB.
There was some weird assumption, with a comment, in commit 73733335c8
that this was unneeded, which meant that we were not able to properly
recreate the right param spec over the wire.
2024-09-06 16:33:24 +02:00
Jehan
7f9b8e8dbf plug-ins: fix typo and install rules for test-dialog. 2024-09-05 22:44:10 +02:00
Alx Sa
753980e514 plug-ins: Replaced deprecated gdk_pointer_grab()...
...in plug-ins/common/animation-play.c
We use gtk_seat_grab/ungrab() elsewhere in the codebase,
so it makes sense to port to that.
2024-09-05 16:16:59 +00:00
Alx Sa
80ed0268e3 plug-ins, operation: Remove uses of GimpHSL
GimpOperationHueSaturation did not do
conversions since the source was already
HSL, so its GimpHSL object was replaced
with a float array.
Van-Gogh plug-in's RGB -> HSL
conversion was replaced with an
HSL float Babl format with gegl_buffer_sample ().
2024-09-05 12:15:29 +00:00
Alx Sa
118ae3a3db plug-ins: Replace GimpRGB in Page Curl plug-in
Since no conversion operations are performed, just getting the
RGBA values from the gradient and then using them, this replaces
GimpRGB and GimpRGB * with gdouble * equivalents.
2024-09-05 03:55:28 +00:00
Anders Jonsson
4c2ff66bdd python: rename Vectors to Path
spyro-plus ran into errors since it called old names
containing Vectors. Fix this by changing to Path to
follow the current API.
2024-09-04 22:29:14 +00:00