Commit graph

46809 commits

Author SHA1 Message Date
Jehan
80c2f28375 MAINTAINERS: update.
According to GNOME docs, it looks like file is uneeded nowadays, in
favor of the doap file instead. Anyway as it's a bit easier to read and
to find for random people browsing the source tree, so let's keep it and
add myself.

Cf. https://wiki.gnome.org/MaintainersCorner#maintainers
2021-04-04 16:01:48 +02:00
Simon McVittie
dda65d85c3 app: Don't second-guess the dependency system
Removing this check makes the treatment of LittleCMS consistent with
all the other dependencies checked in the same file, which only check
that the runtime version is at least the required version.

As long as we were compiled against LittleCMS >= 2.8, and are now
running against a version that has at least the same symbols, it doesn't
necessarily matter whether the version we are running against is the
same one we were compiled against.

Distributions like Debian and Ubuntu track the versions in which
individual symbols were introduced, which allows runtime dependencies
to be weakened when no newer symbols are actually used; this is
practically necessary when working with very large numbers of packages,
to avoid a new version of a dependency library unnecessarily blocking
upgrade of dependent packages. However, this doesn't work if dependent
packages add their own checks that bypass this mechanism.

Signed-off-by: Simon McVittie <smcv@debian.org>
2021-04-04 12:08:51 +01:00
Yuri Chornoivan
957e3374a7 Update Ukrainian translation 2021-04-04 05:57:50 +00:00
Mario Daniel Ruiz Saavedra
809e045ead build: remove *.rs file association with SUN Raster images
Nowadays .rs is the extension for the Rust programming language files,
and it's confusing that GIMP is trying to associate with them.

A simple rename of existing .rs images to .ras will allow them to be
opened again.

Note by reviewer: ideally file association should not rely on filename
extension, and should be detected properly (i.e. file "magic"). This way
even extension clash would not be a problem (format would be detected
whatever the extension used). Unfortunately it's apparently not the case
on Windows.
Anyway since nowadays chances to see a Rust code file are likely much
higher than seeing a Sun Raster image file, let's just accept this patch
and drop association of `.rs` on Windows.
2021-04-04 01:22:42 +00:00
Jehan
de87a31825 libgimp, libgimpbase: update the .def files.
Argh, I will still forget these in 10 years, won't I?
2021-04-04 02:50:48 +02:00
Simon McVittie
e54bfa58b1 app: Print 2-digit LittleCMS minor versions correctly
LittleCMS 2.12.0 defines LCMS_VERSION as 2120. We want to print that
as 2.12.0, not 2.2.0.

Resolves: https://gitlab.gnome.org/GNOME/gimp/-/issues/6505
Signed-off-by: Simon McVittie <smcv@debian.org>
2021-04-03 23:47:39 +00:00
Jehan
b78eb953f2 libgimp: only add the generic metadata aux arguments once.
There was at least a case when gimp_procedure_create_config() was called
twice, hence so was gimp_save_procedure_add_metadata() when a plug-in
was run.
It was happening when calling a procedure with less arguments than the
procedure had. In such case, gimp_procedure_run() would create a config
to fill it with defaults.

Fixes warnings such as:

> LibGimp-WARNING **: 01:29:57.044: Auxiliary argument with name 'save-exif' already exists on procedure 'file-png-save'
2021-04-04 01:40:00 +02:00
Jehan
6dd48d1a82 app, libgimp, pdb: improve gimp_image_get_layers() docs.
I always found the docs misleading because when it says "Returns the
list of layers contained in the specified image", I really read "all the
layers, at any level", except it doesn't. It only returns the root
layers and it is up to the plug-in developer to loop through these if
one needs to go deeper.

So let's make the function docs clearer.
2021-04-04 01:40:00 +02:00
Jehan
931b9fb539 plug-ins: fix all remaining GimpImageProcedure to new run() API. 2021-04-04 01:40:00 +02:00
Jehan
79e608694e plug-ins: fix many GimpImageProcedure to new run() API.
No logics change so far.
2021-04-04 01:40:00 +02:00
Jehan
3f9c736592 libgimp: new gimp_plug_in_error_quark() / GIMP_PLUG_IN_ERROR.
We heavily rely on GError in libgimp to retrieve plug-in error messages.
In a lot of our code, we just use domain=0 for g_set_error*() functions
and alike, but this is actually forbidden and results in GLib warnings.

Some plug-ins instead create their own domain, other use G_FILE_ERROR
nearly everywhere, even in some cases where the choice is really
questionable. Since anyway this is mostly useful for passing the error
message through, it is much nicer to provide a generic domain
GIMP_PLUG_IN_ERROR, which can be used by all plug-ins when they don't
want to bother with the error domain.
2021-04-04 01:40:00 +02:00
Jehan
353c73457a app, libgimp, libgimpconfig, extensions: image procedures now with…
… drawable array instead of a single drawable.

Instead of expecting a single drawable, GimpImageProcedure's run()
function will now have an array of drawable as parameter.
As a consequence, all existing plug-ins are broken again. I am going to
fix them in the next commit so that this change can be easily reviewed
and examined if needed later.

I only fix the Vala demo plug-in now (or rather, I just use the first
layer in the array for now) because otherwise the build fails.
2021-04-04 01:40:00 +02:00
Jehan
dc7853233b app, libgimp, pdb: new API to advertize when procedures are sensitive.
The new function gimp_procedure_set_sensitivity_mask() allows plug-ins
to tell when a procedure should be marked as sensitive or not.
gimp_procedure_get_sensitivity_mask() retrieves this information.

Currently plug-ins are automatically marked as sensitive when an image
is present and a single drawable is selected. Nowadays, we can have
multiple selected layers so we should allow plug-ins to tell us if they
support working on multiple drawables. Actually we could even imagine
new plug-ins which would be made to work only on multiple drawables.
Oppositely, there are a lot of plug-ins which don't care at all if any
drawable is selected at all (so we should allow no drawable selected).

Finally why not even imagine plug-ins which don't care if no image is
shown? E.g. plug-ins to create new images or whatnot. This new API
allows our core to know all this and show procedure sensitivity
accordingly. By default, when the function is not called, the 1 image
with 1 drawable selected case is the default, allowing existing plug-ins
easier update.

Note: this only handles the sensitivity part right now. A plug-in which
would advertize working on several layer would still not work, because
the core won't allow sending several layers. It's coming in further
commits.
2021-04-04 01:40:00 +02:00
Jehan
b1fed22763 libgimpbase: new GimpProcedureSensitivityMask type.
This will be used by plug-ins to advertize their usage. Until now, we
were assuming that a plug-in wants a single drawable selected. Yet
multiple drawables can be selected now. Moreover even this information
is not so useful as many plug-ins don't care about what is being
selected. There is possibly even plug-ins which don't care whether an
image is opened (a plug-in to create new images for instance).

Note that this new type is skipped from the PDB because it is used as a
mask, hence not necessary, and was breaking script-fu (which was
incrementing through enums, hence assuming successive int values, not
bit mask values).
2021-04-04 01:40:00 +02:00
Yaron Shahrabani
fb98b180c1 Update Hebrew translation 2021-04-03 21:58:01 +00:00
Yaron Shahrabani
c6150f6486 Add Hebrew translation 2021-04-03 21:38:20 +00:00
Piotr Drąg
158bb126c9 Update Polish translation 2021-04-03 13:48:25 +02:00
Rodrigo Lledó
a539c6d3c7 Update Spanish translation 2021-04-03 10:00:06 +00:00
Bruce Cowan
9b6d59f38a Update British English translation 2021-04-02 13:42:31 +00:00
Jehan
5e68a953ee app: fix the test for XCF version with off-canvas guides. 2021-03-30 23:53:02 +02:00
Philipp Kiemle
ae96f4308c Update German translation 2021-03-30 18:31:26 +00:00
Jordi Mas
1a4b69c23f Update Catalan translation 2021-03-29 22:52:21 +02:00
Jehan
513fc9daa7 gimp.doap: adding myself as maintainer in the doap file.
If not mistaken, this is used by GNOME's Gitlab to set maintainer role,
which is also needed to push release tags.

This has been discussed with mitch and schumaml on IRC and agreed upon
by everyone.
2021-03-28 23:46:04 +02:00
Jehan
b1e16dbf67 NEWS: remove some points which were actually backported to 2.10.24. 2021-03-28 18:54:09 +02:00
Jehan
758f25944a NEWS: update. 2021-03-28 18:21:47 +02:00
Jehan
f3ee39c3c4 devel-docs: quick command to get the right flatpak runtime version.
For debugging the flatpak, we often ask people to install the SDK and
debug data. Yet there might be several branches of the GNOME SDK
installed at once, hence flatpak will ask which version to install.

This quick command can be copy-pasted as it's a way to detect which
runtime is being used by your flatpak-ed GIMP.
2021-03-28 17:18:52 +02:00
Anders Jonsson
21add2c994 Update Swedish translation 2021-03-27 22:19:48 +00:00
Øyvind Kolås
95900ae6f1 configure,meson,app: depend on GEGL-0.4.30 2021-03-27 20:26:52 +01:00
Matej Urbančič
804c322102 Update Slovenian translation 2021-03-26 19:18:39 +00:00
Matej Urbančič
4b4a578f6a Update Slovenian translation 2021-03-26 19:07:09 +00:00
Matej Urbančič
cad00abbdb Update Slovenian translation 2021-03-26 18:04:10 +00:00
Jehan
03d6bc9726 app: do not use PATH_MAX and realpath() on macOS.
See the comments in MR!424.
Basically realpath relies on false assumptions (probably ones which used
to be true when the API got created) on the max size of a path. Actually
nowadays paths can be much bigger than what the macro advertizes or can
even be unbounded.
The Linux version of realpath() allows the second parameter to be NULL,
in which case it would allocate the buffer, exactly for this reason
(written in the BUGS section on the man). Unfortunately this behavior is
not standardized in POSIX and the man from Apple I found does not
indicate it will do this.

So let's use g_canonicalize_filename() instead, which seems to do the
right thing. Similarly use g_strdup_printf instead of g_snprintf().
2021-03-25 03:15:50 +01:00
Jacob Boerema
5d14c59d2e plug-ins: fix incorrect saving of Iptc.Application2.Caption in metadata-editor.
The saved value for Iptc.Application2.Caption is copied from Xmp.dc.description.
However the last one is multiline but the former should be single line. This
caused only the first line to be saved instead of all lines.

To fix this we set Iptc.Application2.Caption to single and use a different
conversion based on whether the tags from Xmp and Iptc are both
multiline or whether Iptc is single line.
2021-03-24 12:51:59 -04:00
Yuri Chornoivan
4b940f886e Update Ukrainian translation 2021-03-24 06:35:46 +00:00
Jehan
708f075f80 plug-ins: make the applied pattern in qbist a bit more prominent.
The qbist plug-in shows a grid of 9 patterns, it was not clear at all
which one will be applied. Also it looked like selecting a pattern would
make it disappear and loading a same file twice would not create the
same patterns (as said in commit 7fb696206e).

Actually the plug-in works fine, but it is simply not clear at all what
is happening until we look at the code. The center pattern is the main
one: the one which will be applied and the only one which will be stored
or loaded in/from a file if we decide to save the pattern. Also when
selecting a pattern, it does not disappear, it is moved to the center
(but you don't necessarily realize it, especially as several will look
the same). And the reason why you get different result when loading a
saved pattern is that it only reimports the center pattern; all others
are indeed randomized from this stable source.

So my fix is attempting to have this center pattern standing out a bit
more by framing it with a "Pattern" title. It's not perfect, and I'm not
very happy with this design, but I don't find a nice widget for better
framing the center pattern, nor do I want to spend too much time on
this. It's better than before at least.
2021-03-24 01:03:44 +01:00
Jehan
8396fc5022 plug-ins: tweak the pattern preview size relatively to the scale ratio.
Avoiding having tiny preview areas on displays with bigger scale ratio.
2021-03-23 23:40:01 +01:00
Jacob Boerema
93f591931b plug-ins: fix incorrect values for ModelReleaseStatus and PropertyReleaseStatus.
While testing the metadata-editor I noticed that certain values for 
ModelReleaseStatus and PropertyReleaseStatus were incorrectly
read back.

Apparently while copy pasting some values were forgotten to be
updated which caused incorrect values to be saved.

There probably are not many users of these metadata tags
since in all these years there hasn't been a bug report about this.
2021-03-23 16:44:02 -04:00
Jacob Boerema
0a902456ac plug-ins: Do not write to Iptc.Application2.DateCreated if no date was set.
The metadata-editor allowed Iptc tags to be set if an empty string was
used contrary to Xmp tags. In the case of DateCreated this cause an
invalid date "0-00-00" to be written.

We added a check to only write text Iptc metadata if the value is
not empty.
2021-03-23 15:24:07 -04:00
Jacob Boerema
a229454915 plug-ins: Do not write empty ModelReleaseStatus and DigitalSourceType.
Fixes issue #3656 Empty metadata tags are written to XCF at least.

Xmp.plus.ModelReleaseStatus and Xmp.iptcExt.DigitalSourceType are
defined as combo boxes with a fixed number of possible values.
However there was no option to leave it empty so there always was
a value written when saving metadata in the metadata-editor.

We added a "select value" as default option and only write
metadata if a different value was chosen.

As a bonus we replaced the fixed loop numbers with
the current actual number of defined choices.
2021-03-23 15:24:07 -04:00
Jehan
7fb696206e plug-ins: fix crash of qbist when loading files.
Contents of these arrays are assumed to be limited to a specific range.
While it did work sometimes (because a further processing would randomly
regenerate some of the indexes and correctly limit the range), it often
crashed.

This commit fixes the crash, but I am not sure this plug-in is working
exactly as expected regarding data load/save. It feels like you would
expect to always get the same patterns with a same source data. Yet
there is further randomization going on.

Oppositely when saving data, and re-loading it later, I would expect
once again to get back the exact same patterns I had when saving the
data. So it would be a way to save the result of randomization (as
chances to get back a pattern one liked are slim by definition when it's
created randomly).

Right now, it doesn't behave at all like this. Files are only used as
some kind of random seed, not as a way to save/load patterns. I feel
this was not the purpose of the file handling here.
2021-03-23 19:36:43 +01:00
Enrico Nicoletto
2c965139cd Update Brazilian Portuguese translation 2021-03-23 16:25:29 +00:00
Enrico Nicoletto
c15537bf26 Update Brazilian Portuguese translation 2021-03-23 15:18:49 +00:00
Rodrigo Costa
fac9d9b5d5 Update Brazilian Portuguese translation
(cherry picked from commit 8c1e7679a0)
2021-03-23 15:06:16 +00:00
Jacob Boerema
34463786b1 plug-ins: interpret Exif.Photo.UserComment before showing in metadata-viewer. 2021-03-22 16:07:13 -04:00
Jacob Boerema
352b5885b1 libgimp: fix issue #6050 Phantom comments on pictures.
Since version 0.27.3 exiv2 has changed how it returns
comments for Exif.Photo.UserComment. We now get
the comment including the charset=Ascii value.

Let's remove anything that's not part of the actual
comment. To not complicate things we will  only
handle charset=Ascii for now since I've never seen
any other charset used.
2021-03-22 16:06:54 -04:00
Axel Viala
9e4bc86f8a Fix -Wsign-compare in gimpbase/gimpparamspecs. 2021-03-22 13:14:56 +00:00
Anders Jonsson
f4fd1f55e5 Update Swedish translation 2021-03-21 17:51:07 +00:00
Jacob Boerema
5eb9a998bb libgimp: improve saving xmp metadata.
1. Convert xmp /Iptc4xmpExt tag parts to /iptcExt because
exiv2 fails when we try to use the default namespace.

2. Don't only set structs from a fixed list but find all
xmp array elements and check what the best struct
type is: bag or seq.

3. Work around a sorting issue in (g)exiv2 by using a natural
sorting algorithm ourselves.

4. Added some g_debug statements to make it easier to
determine the cause of issues.
2021-03-21 13:04:30 -04:00
Jehan
362e00f209 libgimpbase: get rid of one more PATH_MAX.
See commit 47fbfc2f0e for the reason.
2021-03-20 21:15:15 +01:00
Jehan
8586f16f31 libgimpbase: fix _gimp_reloc_init_lib().
While testing the relocatable code paths, I realized that
_br_find_exe_for_symbol() was always returning NULL. The reason is that
our code looking at /proc/self/maps was expecting that the searched
pointer would be in a "r-xp" memory region. On my machine though, it was
in a "r--p" region.
Maybe in some cases or some older kernel, the "r-xp" permission is/was
right, I have no idea, so now let's just not make any assumption on the
region's permission, where we expect to find our static string, i.e.
let's not do any test on the region permission anymore.
2021-03-20 20:42:29 +01:00