Commit graph

41110 commits

Author SHA1 Message Date
Michael Natterer
1663e63717 libgimp: forgot to deprecate gimp_gamma() 2018-06-18 02:59:24 +02:00
Michael Natterer
113829fd14 Issue #701 - Add the ability to embed the GIMP built-in sRGB profile...
...upon exporting an image

Step 1: make it configurable just like "Export EXIF" etc.

app, libgimp: add "export-color-profile" config option

Add it to the preferences dialog, and pass it on to plug-ins in the
GPConfig message. Add gimp_export_color_profile() to libgimp.

Nothing uses this yet.

(cherry picked from commit 8c9c091021)
2018-06-18 02:47:36 +02:00
Michael Natterer
9be8c0add3 app: cleanup in GimpClipboard
Mostly formatting and thortening variables. Only real change is adding
gimp_clipboard_new() and moving most init() code there.

(cherry picked from commit e0f46d1dc9)
2018-06-18 01:51:33 +02:00
Michael Natterer
d85932b9b7 Issue #1633 - Palette Editor is much too wide on GIMP 2.99
Make the bottom-left entry request only minimal width, it expands
anyway. Also replace the "Columns:" label by a "grid" icon and set a
tooltip on the columns spinbutton.

Addresses Issue #1223 too.

(cherry picked from commit 0aa018dec2)
2018-06-17 23:13:54 +02:00
Michael Natterer
35710903b6 app: make GimpCursorView fit narrow docks
Replace "Selection Bounding Box" by simply "Selection" and add a tooltip
to the frame that says it's the bounding box.

Addressed Issue #1223.

(cherry picked from commit 33d2595d22)
2018-06-17 23:08:14 +02:00
Edward E
8387984732 Issue #1240 - The drive or unc share you selected does not exist...
...or is not accessible

Installer: show install path on final confirmation page

(cherry picked from commit f18fcd468e)
2018-06-17 22:58:06 +02:00
Jehan
8df6f4c8a6 plug-ins: clearer plug-in-screenshot parameter description.
Our plug-ins have no "optional" parameters per-se. Clarify the
description to make explicit that the last 4 parameters are simply only
taken into account when the shoot type is SHOOT-REGION.

(cherry picked from commit 3a0c03a61c)
2018-06-17 22:17:22 +02:00
Ell
2009805ad0 app: fix filename in gimppropgui-recursive-transform.c license notice
(cherry picked from commit 6d8128e3e0)
2018-06-17 15:59:14 -04:00
Ell
313bb4bc2a app: merge back gegl:recursive-transform-plus propgui to recursive-transform
... following GEGL commit 6be0a86583f9c10c7710c96c21c261e4227c4727.

gegl:recursive-transform now allows applying multiple
transforamtions simultaneously, using multiple transform-grid
widgets.

(cherry picked from commit 56d15e83e9)
2018-06-17 15:50:08 -04:00
Michael Natterer
1779826da9 Issue #1611 - plug-in-screenshot does not work in non-interactive run mode
Turn the boolean "root" argument into enum ShootType and reorder that
enum to { WINDOW, ROOT, REGION } so that the "0", and "1" values match
the former boolean. Adapt parameter checking accordingly so that
callers without optional arguments (e.g. script-fu) can call all the
plug-ins's features.

(cherry picked from commit d94b954c2a)
2018-06-17 20:59:04 +02:00
Ell
226ea8863a Issue #1668 -- Smudge Tool - Wrong colors when painting on an image ...
... with a color profile other than the gimp built-in.

When initializing the smude tool's accum buffer, use
gimp_pickable_get_pixel_at(), instead of
gimp_pickable_get_color_at(), for picking the initial color to fill
the buffer with, so that we don't erroneously apply the image's
color tranform to it when the image has a profile.  Previously,
this would result in wrong colors when painting from the drawable
edges inward, with flow < 100%.

(cherry picked from commit 5a07876c78)
2018-06-17 14:25:29 -04:00
Michael Natterer
918043a9d9 app: make sure crash-saving of open images to XCF doesn't call the GUI
gimp_eek(): simply increase gimp->busy so XCF saving calling
gimp_set_busy() and gimp_unset_busy() won't call the GUI layer and do
whatever windowing system calls to set busy cursors.

(cherry picked from commit eaddef595e)
2018-06-17 19:45:36 +02:00
Ell
797bd3459b Issue #1668 - Smudge Tool - Wrong colors when painting on an image ...
... with a color profile other than the gimp built-in.

Remove the separate alpha-channel copy in
gimp_image_color_profile_srgb_to_pixel().  We no longer need it,
since GimpColorTransform already takes care of that itself.

We used babl_process() to copy the alpha, which would also
transform the input color from R'G'B' to the output color space.
When the same buffer was used for both input and output, this call
would overwrite the input to the subsequent
gimp_color_transform_process_pixels() call; when the output color
space was different than R'G'B', this meant we'd pass the input to
gimp_color_transform_process_pixels() in the wrong color space,
producing wrong results.  This was the case when converting the
foreground color for use with the smudge tool.

(cherry picked from commit e58e2ec5dc)
2018-06-17 13:38:34 -04:00
Piotr Drąg
9dbd051bad Update Polish translation 2018-06-17 17:13:49 +02:00
Michael Natterer
ac9fff1f1d Isse #1476 - strange behavior in Layer resize dialog
resize_dialog_new(): create the preview with "popup = TRUE", so we
really get a preview of layer size and not of the layer within the
image context like used for the layers dialog.

(cherry picked from commit 93d28ceccc)
2018-06-17 15:36:43 +02:00
Michael Natterer
8e12d8998d app: don't g_return_if_fail() in gimp_device_info_set_device()
when the GimpDeviceInfo already has a device. This is not a programming
error that should trigger a bug report popup, it's something else about
non-uniqueness of device names, or whatever. Simply g_printerr() a more
useful message that can help to debug this and bail out.

(cherry picked from commit f06d0485e6)
2018-06-17 15:20:43 +02:00
Michael Natterer
6ba0a4d6b8 app: some g_return_if_fail() were missing or non-standard in GimpContext
(cherry picked from commit 552a60b8bf)
2018-06-17 15:16:57 +02:00
Michael Natterer
c2d9f5e254 app: some cleanup in GimpContext
Use more g_clear_object() and g_clear_pointer() and remove useless
comments.

(cherry picked from commit 4260fa3e78)
2018-06-17 14:44:57 +02:00
Michael Natterer
4ea171c50e Issue #1213 - Text Tool Preset does not restore font face/name...
...after program restart

GimpContext was always supposed to keep the names of objects (brush,
pattern, font etc.) around even if these objects don't exist, for
cases like refreshing the data in a GimpDataFactory (which worked
fine), but also for deserializing the names of objects which don't
exist *yet* (delayed loading, no-data or whatever).

This commit fixes the delayed loading case (particularly affects fonts):

gimp_context_deserialize_property(): always keep the name of the
object around when it is not found, not only in the no-data case.

gimp_context_copy_property(): always copy the object *and* its name to
the dest context.

Add GimpConfig::duplicate() and ::copy() implementations which chain
up for duplicating/copying all properties and additionally copy all
object names to the new/dest context.

(cherry picked from commit ed1e2b1524)
2018-06-17 14:19:36 +02:00
Michael Natterer
c8e880dfc3 app: add GIMP_CONTEXT_PROP_MASK_TOOL_PRESET to GIMP_CONTEXT_PROP_MASK_ALL
It seems it was simply forgotten. PROP_MASK_ALL is used at some very
central places, so this commit might fix a few subtle bugs, or
introduce new ones, everybody look for strange tool preset behavior
please :)

(cherry picked from commit b3690b48d9)
2018-06-17 13:41:16 +02:00
Jehan
f4a54c5ab8 NEWS: keep up-to-date. 2018-06-16 03:51:34 +02:00
Salamandar
a42746c71d Specify utf-8 for rc file.
(cherry picked from commit 02edd1c8eb)
2018-06-16 03:50:14 +02:00
Salamandar
c176b0888e Fix encoding. The world should be utf-8.
(cherry picked from commit 8feb51954b)
2018-06-16 03:50:14 +02:00
Jehan
f3c5ed55c8 app: also search interpreters executable in $PATH.
Same as we did for binfmt-style lines, if the executable part (for
instance in `pygimp.interp`) is not an absolute path, let's allow
ourselves to find it in the environment $PATH.
2018-06-16 03:18:19 +02:00
Félix Piédallu
2265701268 Fix Python files:
* Prefer python2 to python that may point on python3 on modern installs.
* Fix indent/spaces consistency.
2018-06-16 02:49:54 +02:00
Jehan
769325e51b plug-ins: recognize "python2" env to launch the python interpreter. 2018-06-16 02:49:54 +02:00
Jehan
03ea9cac54 m4macros, plug-ins: run more accurately the "python2" interpreter.
Our configure test checks the presence of a Python2, but then uses
"python" as interpreter, which is a problem nowadays as the default
python is set to be Python 3 on some distributions (and this will be
more and more the case). So GIMP may end up trying to run our plug-ins
through Python 3 (which would fail) even if Python 2 is present.
Now AM_PATH_PYTHON2() m4 macro will set $PYTHON to a more accurate
Python version as priority.

Similarly let's use "python2" in the binfmt string for extension search.
2018-06-16 02:05:08 +02:00
Jehan
6080178a39 app: gimp_interpreter_db_add_extension() should check $PATH if needed.
So basically our binfmt set for Python simply never worked since we just
set 'python' and not a full path, but current code was not looking in
the $PATH environment. This was dead code. Now it's fixed.
2018-06-16 02:05:08 +02:00
Jehan
8509117fe6 app: actually resolve the interpreter through extension as last resort.
Current code of gimp_interpreter_db_resolve() was only resolving the
interpreter by the file extension when the file could not be opened for
reading or if it was empty/coult not be read. This basically made this
test completely useless.
Let's fix this. Now it will be run all the time, but simply at the end,
if shebang and magic failed.
2018-06-16 02:05:08 +02:00
Ell
d6792c973b app: fix scaling around center in scale tool; avoid negative width/height
In GimpScaleTool, fix scaling around the center-point, and make
sure the width and height are always >= 1 when updating the
transformation in response to a widget change.

(cherry picked from commit 1516bfc14b)
2018-06-15 16:05:13 -04:00
Ell
c7895c9752 app: clean up GimpTransformGridTool; adapt subclasses
Get rid of GimpTransformGridTool::recalc_matrix() and
gimp_transform_grid_tool_recalc_matrix(), and have
GimpTransformGridTool and its subclasses use
GimpTransformTool::recalc_matrix() and
gimp_transform_tool_recalc_matrix() directly instead.

In order to break the GimpToolWidget::changed/
GimpTransformTool::recalc_matrix() loop, add a
GimpTransformGridTool::update_widget() vfunc, which subclasses
should override to update their tool-widget (instead of doing this
in ::recalc_matrix()), and ::widget_changed(), which is called when
the tool-widget changes (and which subclasses should override
instead of connecting to the tool-widget's "changed" signal
directly.)  GimpTransformGridTool calls these functions as
necessary, instead of relying on extra parameters passed to
recalc_matrix().

Adapt all the direct and indirect subclasses of
GimpTransformGridTool to the change.

(cherry picked from commit 6a3fc6c1b9)
2018-06-15 16:05:13 -04:00
Jehan
130ef5ce59 Issue #248: Python console doesn't support input()/raw_input().
As noted by Massimo, we can just make the argument of raw_input() an
optional argument.

Also adding a modal implementation for input() so that it doesn't lock
the Python console waiting from input from the plug-in stdin. As noted
in Python doc, input() is equivalent to `eval(raw_input(prompt))`.
Not all that safe, but in the end, it is the developer's responsibility.
2018-06-15 18:34:57 +02:00
Jehan
b3cf7abd20 configure, tools: actually use GIMP_PKGCONFIG_VERSION and...
... GIMP_TOOL_VERSION rather than hardcoding versions.

Mostly cherry picked from commit 276d9b60b3
except pkg-config still checks gtk+-2.0 (not 3.0) on gimp-2-10 branch.
2018-06-15 17:36:33 +02:00
Ell
387cc35c58 Issue #1624 - Crashes when using Scissor Select Tool
In GimpTool, always clear tool->drawable upon halting, even for
tools that don't use it explicitly.

GimpTool sets tool->drawable in its default button_press()
implementation, and we potentially access it in
gimp_display_shell_initialize_tool(), so failing to clear it when
halting the tool may leave it as a dangling pointer, which can
result in a segfault when trying to initialize the tool in the
above function.  In particular, this happens with the iscissors
tool.

(cherry picked from commit 58c96f596e)
2018-06-15 08:19:51 -04:00
Simon Mueller
aac958607d plug-ins: use g_fopen(filename, "w+b")...
...because g_fopen(filename, "wb+") fails on Windows.

(cherry picked from commit 541f730f44)
2018-06-15 11:02:24 +02:00
Michael Schumacher
73c67d9612 plug-ins: use g_fopen(filename, "w+b") instead of "wb+" to fix SGI format export on the Microsoft Windows platforms
(cherry picked from commit c93727e791)
2018-06-15 08:06:25 +00:00
Ell
32993ab12d Issue #1646 - Transform preview looks wrong with selection
In GimpCanvasTransformPreview, when the image mask is not empty,
make sure to align it with the drawable using a gegl:translate
node, before combining both at the gegl:opacity node.  Otherwise,
the mask is applied at the wrong offset when the drawable's offset
is not (0, 0).

(cherry picked from commit d3a3c35317)
2018-06-15 01:59:45 -04:00
Ell
e486537ce0 Issue #1613 - foreground select tool raises a CRITICAL when committing
Make gimp_free_select_tool_halt() protected, and call it in
gimp_foreground_select_tool_set_trimap(), so that the free-select
subobject of the foreground-select tool is properly shut down
before switching to trimap mode.  In particular, this clears the
free-select tool widget at the right point; failing to do this
leads to CRITICALs later on.

(cherry picked from commit e15733236c)
2018-06-14 19:51:55 -04:00
Ell
08294f9ea7 Issue #1602 - Numeric selection size wrong after switching tools
In GimpToolRectangle, call gimp_tool_rectangle_update_options()
when the "[xy][12]" properties change, so that the "x", "y",
"width", and "height" properties are updated accordingly.

In particular, we set these properties when committing an empty
rectangle select tool, to init the rectangle to the current
selection bounds, and this call is necessary so that the "x", "y",
"width", and "height" tool options are properly updated as well.

(cherry picked from commit 47b7e7be7d)
2018-06-14 12:33:56 -04:00
Jehan
1a14f7e8c9 INSTALL: libheif must also be built with libx265.
(cherry picked from commit 33749491af)
2018-06-14 16:35:32 +02:00
Jehan
8ede025cee icons: clean the symbolic vector file.
All icons are now in the file.

(cherry picked from commit 3096fd295a)
2018-06-14 16:35:08 +02:00
Jehan
98763dded9 icons: fix symbolic icons.
With the symbolic-awareness of GTK+, vector icons are recolored (using
fg, success, warning and error colors). Unfortunately it was also
recoloring some rectangles with neither fill nor stroke, which were
using only to get appropriate icon size (these icons were therefore
displayed as just a square).

I made a quick pass in our icons to "fix" these. I expect I may have
missed some icons, or at the opposite, I may have broken other icons by
removing rectangles which should not have been removed. If you find any
such icon, please fix.
Also some icons do not look quite right just now. We will have to create
new guidelines on how to make symbolic icons and fix/redesign some, I
guess.

(cherry picked from commit 0c3659c5f1)
2018-06-14 16:35:08 +02:00
Jehan
dc8f44c6fa desktop: start a <release> tag for 2.10.4.
The 2 major changes seem to be the much-awaited font loading in
background, and this new "Auto straighten" option on Measurement tool.

Please everyone, feel free to tweak the release description while it is
still commented out. Once we remove the comment tags, it will be
submitted for translation.
2018-06-14 16:20:29 +02:00
Anders Jonsson
7412507c82 Update Swedish translation 2018-06-14 11:12:27 +00:00
Ell
5e53d06f74 app: make sure image colormaps always have at least one color
In gimp_image_set_colormap(), make sure the image's colormap always
has at least one color -- babl palette formats must have at least
one color.

If the function is called with 0 colors, use black.  We still need
to support this case, in particular, since existing XCFs may have
an empty colormap, and since plug-ins can call
gimp-image-set-colormap with 0 colors.

(cherry picked from commit c16c68e63e)
2018-06-14 03:19:29 -04:00
Jehan
f634757266 Revert "Issue #1612: Symmetry Painting dock needs a design tweak."
This reverts commit 55c5ebea3c.
Argh "valign" is a GTK+3 property. And actually testing now, I realize
this bug was only in the GIMP 3 codebase.
2018-06-14 03:59:04 +02:00
Jehan
5b628d422f plug-ins: add busy-dialog plug-in in plugin-defs.pl.
Introduced in commit 032e95fad6, Makefile.am was apparently directly
edited instead of plugin-defs.pl. This also fixes a typo:
s/bust-dialog/busy-dialog/

(cherry picked from commit 4117c98655)
2018-06-14 03:25:41 +02:00
Jehan
55c5ebea3c Issue #1612: Symmetry Painting dock needs a design tweak.
Make symmetry painting dock top-aligned.

(cherry picked from commit 035cef696a)
2018-06-14 03:25:32 +02:00
Michael Natterer
738bf71200 Issue #1634 - PNG image opens as a blank one in GIMP
Set the libpng error_fn to NULL *after* png_read_end() not before.
png_read_end() can throw errors and we recover what's partially loaded
from an image in the error handler.

(cherry picked from commit db08271d16)
2018-06-13 19:09:51 +02:00
Hannie Dumoleyn
0e61cb1203 Update Dutch translation 2018-06-13 11:18:18 +00:00