Commit Graph

45128 Commits

Author SHA1 Message Date
Ell a335827896 app: add "Composited preview" option to transform tools
Add a "Composited preview" option to all transform-grid tools,
which displays the transform preview as part of the image
composition (i.e., as it would actually look when applying the
transformation, keeping the layer at the right position in the
stack, and with the right layer mode), instead of using an overlay.

This option is off by default, since it's generally slower to
render than an overlay, due to the lack of mipmap rendering.  We're
also still using an overlay when transfoming a selection, and not a
whole layer.
2020-01-16 00:32:23 +02:00
Ell 2e26603a55 app: freeze drawable preview in transform tools
In GimpTransformGridTool, when transforming a drawable, freeze the
drawable's preview while the tool is active, so that its ancestors'
previews don't get unnecessarily updated in response to hiding it.
2020-01-16 00:23:56 +02:00
Ell 006f300fff libgimpmath: add gimp_matrix3_equal()
... which compares two matrices.
2020-01-16 00:23:55 +02:00
Ell b9a801f7d4 app: add gimp_drawable_filter_set_override_constraints()
In GimpDrawableFilter, add a
gimp_drawable_filter_set_override_constraints() function, which
allows bypassing certain constraints applied to the filter, based
on the drawable type and state.

Yes, this is a bit of a hack, added mostly as a quick-and-dirty way
to allow us to add filters to layer masks that affect their
bounding box, in preparation for composited transform previews.
2020-01-16 00:23:54 +02:00
Ell 1f81c31405 app: add gimp_drawable_filter_set_add_alpha()
Add an optional "format" parameter to gimp_drawable_merge_filter(),
which specifies the format to use for the output, possibly changing
the drawable's format.

In GimpDrawableFilter, add a gimp_drawable_filter_set_add_alpha()
function, which allows the filter to add an alpha channel to the
drawable when committed (by passing an appropriate format to
gimp_drawable_merge_filter()).
2020-01-16 00:23:52 +02:00
Ell cb5a63e260 app: calculate drawable bounding box according to graph by default
Change the default implementation of
GimpDrawable::get_bounding_box() to return the drawable source
node's bounding box, instead of the drawable's item bounds.  This
allows filters to affect the size of all drawables, including, in
particular, layer masks.

Change GimpLayer's implementation of get_bounding_box() to return
the intersection of the layer's own bounding box, and the layer
mask's bounding box (if it has one), and update the layer's
bounding box when the mask is enabled/disabled, or when its
bounding box changes.
2020-01-16 00:22:19 +02:00
Jehan 4a4359d3da libgimp: (meson) build GIR file silently.
In case of errors or warnings, they will still be displayed, but it is
better to not show outputs when everything is building fine.
2020-01-15 22:24:48 +01:00
Ell 7f84f10154 app: implement GimpPickable::flush in GimpGroupLayer
... by synchronously flushing the group's projection.  This is
necessary for pass-through groups, since their projection is
normally flushed asynchronously.
2020-01-15 22:03:51 +02:00
Ell bb8ee0e686 app: handle GimpTileHandlerValidate::invalidated in gimp:buffer-source-validate
In gimp:buffer-source-validate, invalidate the node in response to
GimpTileHandlerValidate::invalidated, added in the previous commit,
in addition to GeglBuffer::changed.
2020-01-15 21:50:11 +02:00
Ell 3ea391602e app: add GimpTileHandlerValidate::invalidated signal
Add a new GimpTileHandlerValidate::invalidated signal, which is
emitted when a region of the buffer is invalidated.  This would
allow us to properly invalidate the graph in response; this
normally happens in response to GeglBuffer::changed, but this
signal is not emitted when a region is merely invalidated.
2020-01-15 21:50:11 +02:00
Ell ba6040bbcd app: allow calling gimp_tile_handler_validate_validate() with a NULL rect
... and validate the entire buffer.
2020-01-15 21:50:11 +02:00
Oleksii Samorukov 3e78c674d8 Return FALSE on gimp_osx_focus_window to avoid endless loop 2020-01-15 17:40:23 +01:00
Ell 0271f4c861 libgimpmath: add version annotations to new matrix functions 2020-01-15 18:24:20 +02:00
Ell 469f8d6193 icons: fix PNG 3D-transform icons in makefile 2020-01-15 18:15:00 +02:00
Jehan ec9dbd8115 libgimpwidgets, app, plug-ins: fix last GIR warnings.
gimp_int_radio_group_new() was still complaining about the scope of
radio_button_callback(). Make it (scope notified) because it needs to
stay alive after the function returns and may be called multiple times.

Also adding a GDestroyNotify to free the callback data once the widget
is destroyed (additionally it will also serve as a notifier for bindings
to properly free the callback closure itself, not only it's data).

With this last one done, GObject Introspection generation now happens
without any warning output.
2020-01-15 14:00:19 +01:00
sicklylife 44300b134f Update Japanese translation 2020-01-13 14:23:22 +00:00
Piotr Drąg ccdb91e713 Update Polish translation 2020-01-12 19:29:38 +01:00
sicklylife f823538f9e Update Japanese translation 2020-01-12 16:11:46 +00:00
sicklylife 64b971f096 Update Japanese translation 2020-01-12 16:08:41 +00:00
Alexandre Prokoudine 2116f587eb Update Russian translation 2020-01-12 18:00:14 +03:00
Alex Samorukov d8aa0d36a0 Add macOS support for the GIMP dashboard
(cherry picked from commit 215fd5195e)
2020-01-12 08:28:54 +01:00
Elad Shahar 36dd48aea6 Issue #4484: Add reflection option for mandala symmetry 2020-01-11 23:54:40 +01:00
sicklylife a195dcaccc Update Japanese translation 2020-01-11 16:19:59 +00:00
sicklylife d97f54dd07 Update Japanese translation 2020-01-11 16:15:02 +00:00
Ell 7b2e6b7595 app: clip transform-tools preview according to clipping mode
Add a "clip" property to GimpCanvasTransformPreview, specifying the
transform's clipping mode, and clip the preview accordingly.

In GimpTransformGridTool, sync the tool's clipping mode with the
preview's clipping mode.
2020-01-11 17:13:07 +02:00
Ell d79ef34f87 app: fix spacing in gimptooltransform3dgrid.c 2020-01-10 23:21:36 +02:00
Ell 30132fc2da app: add unified interaction mode to the 3D Transform tool
Add a "Unified interaction" option to the 3D Transform tool, and a
corresponding "unified" property to GimpToolTransform3DGrid.  When
active, all three interaction modes of the grid (camera, move, and
rotate) are available simultaneously, regardless of the active
dialog page.  In this mode, the inner and outer regions of the item
are used for moving and rotation, respectively, and the vanishing-
point is controlled through through a handle.
2020-01-10 23:21:36 +02:00
Ell bcaaa453c4 app: in 3D Transform tool, fix rotation direction when rotating arouns local Z axis
In GimpToolTransform3DGrid, fix the test for determining which side
of the plane is facing the viewer, affecting the direction of
rotation when rotating around the local Z axis.
2020-01-10 22:18:06 +02:00
Alex Samorukov 05d6b8a591 Move comment to match the description 2020-01-10 16:48:33 +00:00
Oleksii Samorukov 0de790137e Move macos menu init to the gui related code and reparent it with a main window.
Closes #1258

(cherry picked from commit eb4b8fbd05)
2020-01-10 16:48:33 +00:00
Ell 58d04375c9 app: improve placement of new tools with existing toolrc
When ordering tools according to an existing toolrc file (which
is always present in a pre-existing profile), preserve the default
placement of newly-added tools, instead of always adding them to
the bottom of the list.
2020-01-10 18:44:58 +02:00
Sabri Ünal 0ca59165ff Update Turkish translation 2020-01-10 15:58:51 +00:00
Sabri Ünal 9c6fc184f2 Update Turkish translation 2020-01-10 15:56:38 +00:00
Sabri Ünal 0e4e236167 Update Turkish translation 2020-01-10 15:44:19 +00:00
Ell 9fe33702fb Issue #4354 - When using color to fade dynamics and gradient with transparency ...
... brush does not have transparency

In the PAINT_MASK_TO_COMP_MASK paintcore-loops algorithm, used when
painting incrementally, multiply the paint mask values by the paint
opacity.  Previously, the paint opacity was ignored, breaking
various dynamics affecting the opacity.
2020-01-09 22:36:41 +02:00
sicklylife 4a59c8919d Update Japanese translation 2020-01-09 15:05:03 +00:00
Ell 8d534dfde0 app: snap spin scale to page increments when holding Ctrl
When click-dragging a GimpSpinScale while holding Ctrl, in either
absolute or relative mode, snap the value (or the delta) to the
page increment.
2020-01-09 01:48:50 +02:00
Ell ac8bf47fa6 libgimpwidgets: control GimpSpinButton scroll increments using modifiers
In GimpSpinButton, adjust the scroll step in response to modifiers:
normal scrolling uses the step increment, Ctrl uses the page
increment, and Shift scales the step increment down by the ratio
between the page and step increments (up to the minimal precision
of the spin button).

This applies to all spin buttons used in GIMP, including spin
scales.
2020-01-08 21:00:57 +02:00
sicklylife 90022de2f4 Update Japanese translation 2020-01-08 18:06:29 +00:00
sicklylife b89aff0064 Update Japanese translation 2020-01-08 18:01:33 +00:00
Ell f1c448e0f4 app: fix integer overflow when reporting operation progress
In gimp_gegl_apply_cached_operation(), use gint64 for storing the
total and processed pixel counts used for reporting progress, to
avoid overflowing when applying an operation to a large image.
2020-01-08 11:40:02 +02:00
Ell 32da86b6ed menus: add the 3D Transform tool to the Tools menu 2020-01-07 23:04:27 +02:00
Ell a3cbf6bc13 icons: add pivot icons to meson 2020-01-07 22:24:39 +02:00
Ell c93e5a2eae app: fix wrong fix to gimpbacktrace-windows.c
This fixes commit 468f3e84d8.
2020-01-07 22:18:43 +02:00
Jehan 095e8299a0 icons: install the new icons on meson build too.
The whole icon installation is a bit of a mess. We should really look
more closely into it.
2020-01-07 14:52:30 +01:00
Ryuta Fujii 376aa86515 Update Japanese translation 2020-01-07 11:11:36 +00:00
Ell e74994feaf pdb: in plug_in_compat.pdb, set underlying op nodes
In plug_in_compat.pdb, when wrapping an op node inside a graph, set
the op node as the graph node's underlying operation.  This allows
gimp_gegl_apply_operation() to perform certain optimizations.
2020-01-07 10:53:00 +02:00
Ell 8b7bafa43a Issue #4204 - "Add Bevel" Has No Effect
In plug_in_compat.pdb, don't add child nodes to nodes containing an
op, since this turns them into graphs and discards the op.
Instead, add a new wrap_in_graph() helper function, which takes a
node op and wraps it in a simple "input -> op -> output" graph.
Use the graph as the container for child nodes, and as the node
passed to gimp_drawable_apply_operation().  (This is similar to
what we used to do before commit
afdd573136, except that we now pass
the parent node to gimp_drawable_apply_operation(), instead of the
op node).
2020-01-07 10:52:59 +02:00
Ell 49221167c3 app: fix indentation in gimppivotselector.h 2020-01-07 10:03:27 +02:00
Ell 9d015b7b1a libgimpmath: add new matrix functions to .def file
... and fix docs for gimp_matrix4_transform_point().
2020-01-07 10:03:26 +02:00