Commit Graph

42455 Commits

Author SHA1 Message Date
Ell
21f76df21b app: fix unused variable warning in gimp_tool_gui_new()
... due to commit b23fae86f0.

(cherry picked from commit 7fb1d05ca4)
2019-03-07 16:49:03 -05:00
Ell
ab060c110f app: implement readjust() in various transform tools
Implement GimpTransformGridTool::radjust(), added in the previous
commit, in various transform tools:

The unified-transform, scale, and perspective tools readjust the
transformation such that the grid is centered relative to the view,
and its handles are fully within view under arbitrary rotation.

The rotate tool readjusts the transformation such that the pivot is
centered, and the grid is unrotated, relative to the view.

(cherry picked from commit 5e5118c1db)
2019-03-07 16:27:30 -05:00
Ell
a8292fedf2 app: add "Readjust" function to transform-grid tools
Add an optional GimpTransformGridTool::radjust() virtual function,
which subclasses can implement to radjust the transformation based
on the current state of the display, such that it's easy to
control.  This is especially useful when the image is zoomed-in,
and the transform handles, which are initially across the layer
bounds, are out of view.

When a transform tool implements radjust(), show a "Readjust"
button in the tool GUI.  While readjusting the transformation, we
modify the opposite transformation such that the overall transform
remains unchanged, as if both transform-directions were linked, so
that only the transform grid is readjusted.

(cherry picked from commit 5055dd10d5)
2019-03-07 16:27:29 -05:00
Ell
8d20b7c665 app: add gimp_tool_gui_add_button()
In GimpToolGui, add gimp_tool_gui_add_button() and
gimp_tool_gui_add_buttons_valist(), which allow adding dialog
buttons after construction.

(cherry picked from commit b23fae86f0)
2019-03-07 16:27:27 -05:00
ffe71f6c5b Update French translation 2019-03-07 11:40:45 +00:00
Ell
dfca360b66 app: various fixes to last commit
(cherry picked from commit caad9ca649)
2019-03-06 15:56:12 -05:00
Ell
977c4d0718 app: allow canceling line-art computation
Line-art computation can take a long time, and it's therefore
desirable for it to be interruptable.  While we do cancel the line-
art async when its result is no longer needed, most parts of the
computation don't respond to the cancelation request, leaving the
async operation running in the background, blocking subsequent
async operations.

Implement cancelation support of line-art computation, by passing
down the async object to the various functions, and periodically
checking for its cancelation at various points.  When the async is
canceled, we quickly abort the operation.

Even though cancelation now happens relatively quickly, some parts
of the computation are still uninterruptable and may incur some
latency, so we avoid waiting for the async opration to be aborted
after cancelation, as we did before.

(cherry picked from commit d8e69d66bc)
2019-03-06 15:24:18 -05:00
f73e13f49f Update Turkish translation 2019-03-06 19:06:27 +00:00
c6f2ad1bce Update Turkish translation 2019-03-06 19:05:07 +00:00
f84135e3d9 Update Turkish translation 2019-03-06 18:57:21 +00:00
7eae8e8cda Update Polish translation 2019-03-06 19:09:48 +01:00
8014fa6ba8 Update Spanish translation 2019-03-06 11:06:39 +00:00
Ell
d918502aac app: use gimp_gegl_buffer_copy() in various places
... instead of gegl_buffer_copy().  The former parallelizes the
format conversion.

(cherry picked from commit bb7f61c919)
2019-03-06 06:00:10 -05:00
9bbcaac5d2 Update Turkish translation 2019-03-06 10:55:30 +00:00
5f7d6951f7 Update Turkish translation 2019-03-06 10:54:15 +00:00
44703c03ff Update Turkish translation 2019-03-06 10:51:51 +00:00
Ell
cd159e4bd4 app: fix indepndent-async thread priority on Windows
Positive and negative priorities got swapped...

(cherry picked from commit 190095c97b)
2019-03-06 00:08:05 -05:00
Ell
08be2affee app: use independent async for resolving performance-log symbol information
... so that performance logs can be recorded during long-running
async operations, without those operations blocking the
finalization of the log.

(cherry picked from commit 652a2a90cf)
2019-03-06 00:02:11 -05:00
Ell
a3cd8c96d0 app: add gimp_parallel_run_async_independent_full()
... which is equivalent to gimp_parallel_run_async_independent(),
except that it takes an additional "priority" parameter, which
specifies the task's priority, with 0 being the default priority,
and lower values indicating higher priority.  Unlike
gimp_parallel_run_async_full(), the priority parameter doesn't
directly control the task's priority in a queue, but rather, we use
it to control the priority of the task's dedicated thread, on
supported platforms (previously, all independent async tasks would
run with low priority.)

Use low priority when loading fonts, which can take a long time, to
keep the existing behavior.

(cherry picked from commit fa2e4dcce0)
2019-03-06 00:02:10 -05:00
Ell
a465b9c341 app: clean up last commit
Remove gimp_item_tree_clear(), added in last commit, and move its
code to gimp_item_tree_dispose().  Likewise, in
gimp_image_dispose(), use g_object_run_dispose() on the image item-
trees, instead of gimp_item_tree_clear().

(cherry picked from commit b0de51b6bf)
2019-03-05 16:42:50 -05:00
Ell
c76076ec14 app: fix segfault when closing an image with a floating selection
Add gimp_item_tree_clear(), which removes all the items of a
GimpItemTree, and clear the layers/channels/vectors item trees in
gimp_image_dispose(), *before* finalizing the image, so that the
corresponding items' desctructors are called while the image is
still alive.  In particular, this allows the destructors to safely
call gimp_item_is_attached(), which happens when the image has a
floating selection, since commit
8d4e5e0ff7.

(cherry picked from commit d7e3a1e226)
2019-03-05 09:33:07 -05:00
Ell
4eda127c52 Issue #3062 - Picking by hue using "Select by Color" goes awry ...
... in GIMP 2.10.9 from git

In gimppickable-contiguous-region's pixel_difference() function,
which is used, among other things, by the select-by-color and
fuzzy-select tools, when selecting by LCh/HSV hue, treat a pair of
colors as inifinitely far apart if one of them has positive chroma/
saturation, and the other has chroma/saturation that's very close
to 0; conversely, treat a pair of colors as equal if both of them
have chroma/sautation that's close to 0.

As a result, when the seed color is saturated, gray pixels are
never selected, while when the seed color is desaturated, all, and
only, gray pixels are selected.

(cherry picked from commit 9886b69dac)
2019-03-05 09:01:45 -05:00
9173e42274 Update Turkish translation 2019-03-05 00:35:09 +00:00
51585bb802 Update Turkish translation 2019-03-05 00:32:28 +00:00
71800dfd21 Update Turkish translation 2019-03-04 22:18:28 +00:00
00c3c068d0 Update Turkish translation 2019-03-04 22:12:56 +00:00
28232d166c Update Turkish translation 2019-03-04 21:34:57 +00:00
07080d4540 app: improve line art filling when clicking on a line art closure.
When clicking on a line art pixel, only this pixel gets colored, which
is fine for actual (original) line art pixels. But on generated ones
(closure pixels, which are internal only), you end up with a single
pixel colored while the whole surrounding area is empty. This feels like
a bug (even though it was not one technically) as you have no way to
guess you are clicking on a closure pixel.
Instead, when this happens, simulate clicks on all neighbour pixels,
hence potentially coloring all surrounding regions, which is most likely
what you wanted.

(cherry picked from commit f310db6c21)
2019-03-04 19:01:44 +01:00
03744e3012 app: fixing the line art GimpBusyBox visibility.
Commit bc187cc5cc was a bit wrong as it was possible to get some race
conditions when changing settings quickly in a short time frame.

(cherry picked from commit 3a317e72aa)
2019-03-04 19:01:44 +01:00
a9ec675b77 app: avoid useless line art closure recomputation.
On various property changes, only recompute the line art when the
property actually changed. Also add a gimp_line_art_bind_gap_length() to
avoid computing twice the line art when changing both type of closure
(splines and segments) together, as is currently the case.

(cherry picked from commit c0996241f6)
2019-03-04 19:01:44 +01:00
4233d90961 app: add a GimpBusyBox near the "Line Art Detection" label in…
… Bucket Fill tool options.
This will provide feedback when the line art closure is being computed,
which may be useful on big images where it may take some time. Otherwise
painter may be left hanging without knowing what takes time.

(cherry picked from commit bc187cc5cc)
2019-03-04 19:01:44 +01:00
Ell
6ae957088a app: improve warp-tool cropped-area calculation
In the warp tool, use the gegl:map-relative node to calculate the
affected drawable area to which the filter is cropped, to account
for box filtering.

(cherry picked from commit daa09ef602)
2019-03-04 08:44:32 -05:00
2758a34b02 desktop: update a bit the 2.10.10 appdata.
(cherry picked from commit 8fce349c4e)
2019-03-04 12:18:35 +01:00
0ed30bd1eb Update Spanish translation 2019-03-04 09:34:37 +00:00
1f641546a9 Update Swedish translation 2019-03-03 21:40:06 +00:00
Ell
9b6604d011 app: add "real-time preview" option to the warp tool
Add a "real-time preview" option to the warp tool, which, when
toggled, causes the preview to be rendered synchronously during
motion.  This is slower, but gives better feedback.

(cherry picked from commit a93af839fe)
2019-03-03 16:24:05 -05:00
Ell
40a9b38b5c app: properly implement "spacing" option in the warp tool
The "spacing" option of the warp tool used to be handled by the
gegl:warp op, and have little effect.  Instead, implement it in the
warp tool directly, having the same effect as the other paint
tools.

Having a properly-working "spacing" option allows us to use EXACT
motion mode without cirppling down performance, which means that
the stroke now follows the pointer exactly, even when processing
takes a while.

Decrease the default "spacing" value to 10.

(cherry picked from commit e8a39d5c49)
2019-03-03 16:24:05 -05:00
Ell
579562f177 app: improve warp-tool invalidated-area calculation
In the warp tool, use the gegl:map-relative node to calculate the
invalidated drawable area when the displacement field changes, to
account for box filtering.

(cherry picked from commit aa91528084)
2019-03-03 16:24:05 -05:00
Ell
bf89b9a9bc app: set warp-tool scroll-lock to TRUE
In the warp tool, set scroll-lock to TRUE, so that the image isn't
scrolled when click-dragging outside the canvas, like the rest of
our paint tools.

(cherry picked from commit 6acedc7ebb)
2019-03-03 16:24:05 -05:00
1c66573f4c app: optimize gimp_layer_invalidate_boundary()
Don't mess with the image's mask if the layer is not attached or not
visible.
2019-03-03 20:25:40 +01:00
4ee74a11e6 app, plug-ins: move brush pipe saving from the file-gih plug-in to the core
As with .gbr and .pat, only the actual saving code, not the export
logic and GUI.

(cherry picked from commit cc7e07fecb)
2019-03-03 20:07:07 +01:00
2071f3bdc6 app: factor file_gbr_drawable_to_brush() out of file_gbr_image_to_brush()
(cherry picked from commit 861106a0b3)
2019-03-03 20:05:35 +01:00
d8aab75c09 app: factor out gimp_brush_pipe_set_params() from gimp_brush_pipe_load()
(cherry picked from commit e742b4a95b)
2019-03-03 20:00:25 +01:00
590f58abff NEWS: keep up-to-date.
Not updated for a while, let's try to keep the file up-to-date so that
we can make relevant news. If I forgot stuff, please add them! :-)
2019-03-03 19:20:33 +01:00
d50abef3a2 #3050 - Four tooltips marked as translatable
(cherry picked from commit 3c64697878)
2019-03-03 17:52:48 +01:00
15038f8f3d Updated Danish translation of gimp-python 2019-03-03 15:08:38 +01:00
fe0cf5777c Updated Danish translation of gimp-plug-ins 2019-03-03 15:08:38 +01:00
481cca3907 Updated Danish translation of gimp-libgimp 2019-03-03 15:08:38 +01:00
92ec0bb6a3 Updated Danish translation 2019-03-03 15:05:58 +01:00
Ell
1705333141 libgimpwidgets: fix gimp_spin_button_new_with_range()
(cherry picked from commit 19eb9fb1bf)
2019-03-03 04:22:30 -05:00