Commit Graph

43035 Commits

Author SHA1 Message Date
5db729bdbe Update Russian translation 2019-08-07 14:23:25 +03:00
6a36bdacf1 Update Russian translation 2019-08-07 14:02:37 +03:00
0c97288782 Update Russian translation, fix #3763 2019-08-07 13:51:03 +03:00
0e8cdd0f74 m4macros: fix pythondev.m4.
My previous commit was bugged. Fix it and simplify the code a bit. No
need to check for existence for non-versionned include directory on
Windows. Just add the non-versionned dirs at the end, without other
condition that the target platform being Windows. This way, whether the
headers are installed in the versionned or non-versionned dirs, they
will be found.
2019-08-06 19:09:00 +02:00
ac0c81b38f m4macros: Windows may have a versioned directory for headers.
Basically the same fix as 61c11b04c1, on
pythondev.m4 (for Python2) instead of python3dev.m4.
2019-08-06 16:38:49 +02:00
30e4a7ee5e Issue #3112 - Missing mnemonics. 2019-08-05 20:06:50 +00:00
9587c125d4 pdb: fix the names of the oilify compat PDB wrappers
(cherry picked from commit 21d63d6c65)
2019-08-04 23:32:27 +02:00
176219020a libgimpbase: remove the gimp protocol mutex and gp_lock()/gp_unlock()
The protocol is supposed to be used recursively, the locks just
deadlock in some situations. Threaded use of the wire protocol is
simply forbidden.
2019-08-04 22:49:25 +02:00
ea09260012 Update German translation 2019-08-04 19:25:33 +00:00
23a94b32fc Update Polish translation 2019-08-04 15:19:02 +02:00
f3f3d066a6 app: better error reporting in gimp_pdb_dialog_run_callback()
Display the error returned from trying to run the temp procedure.

(cherry picked from commit 910828bf51)
2019-08-03 17:32:35 +02:00
Ell
965756b17f Issue #3723 - Symmetry Painting with random colour isn't symmetrical
In GimpPaintbrush, calculate grad_point in
_gimp_paintbrush_motion() independently of any stroke, and pass
its value down to GimpPaintbrush::get_paint_params() at each
stroke, so that the color is the same for all strokes, even when
using a color/random dynamics.

(cherry picked from commit 95429ad704)
2019-08-02 22:29:49 +03:00
Ell
2c8006896d app: in GimpFilterTool, add "clipping" option
In GimpFilterTool, add a new "clipping" option, which can be either
Adjust or Clip.  This option is controllable for layers, when
there's no selection mask.

When set to Adjust, which is used by default, the filter's output
may extent past the drawable's boundary, and the drawable will be
resized to match the output when committed.

(cherry picked from commit eaec9443c3)
2019-08-02 00:40:31 +03:00
Ell
97d666ff41 app: add gimp_drawable_filter_set_clip()
In GimpDrawableFilter, add a new gimp_drawable_filter_set_clip()
function, which controls whether the filter clips the result to the
drawable's boundary, or extends it past it.  The latter is only
possible for layers, when the selection mask is empty.

(cherry picked from commit b7f53262fc)
2019-08-02 00:40:27 +03:00
Ell
ed46ba4ded app: add "clip" parameter to gimp_drawable_merge_filter()
Add a new "clip" parameter to gimp_drawable_merge_filter().  When
set to FALSE, the function resizes the drawable to the bounding box
of the filter's output, instead of clipping the output to the
drawable's boundary.

(cherry picked from commit 89a9cf7e49)
2019-08-02 00:40:27 +03:00
Ell
bba810a9e5 app: in gimp_gegl_apply_cached_operation(), copy cached result *before* rejigging graph
In gimp_gegl_apply_cached_operation(), copy the cached results to
the destination buffer *before* reconnecting the operation node, as
this may cause the cache to be cleared (see commit
gegl@4347255cd9d5031e6757c70fdde5c63539d5f508).

(cherry picked from commit 35729ee02a)
2019-08-02 00:40:27 +03:00
Ell
114da41d61 app: in gimp:replace, implement GeglOperation::get_bounding_box()
... similarly to gimp:layer-mode, however, assume the destnation
(backdrop) is not included when the layer's opacity is 1, and
there's no mask.

(cherry picked from commit 998f89e3cb)
2019-08-02 00:40:26 +03:00
Ell
ea5b5e305a app: in gimp:layer-mode, implement GeglOperation::get_bounding_box()
... to take the layer's composite mode and opacity into account.

(cherry picked from commit 89c97bcf26)
2019-08-02 00:40:26 +03:00
Ell
05a2061776 app: in gimp:mask-components, implement GeglOperation::get_bounding_box()
... to forward the input/aux bounding box when the component mask
is fully clear/set, respectively.

(cherry picked from commit 9900fb74f2)
2019-08-02 00:40:25 +03:00
Ell
a0742047b5 app: in gimp:compose-crop, fix x/y properties lower bound
... from 0 to G_MININT.

(cherry picked from commit 332f662cda)
2019-08-02 00:40:25 +03:00
Ell
8c7d13541d app: calculate bounding box of group layers
In GimpGroupLayer, when recalculating the group's size as a result
of a change to one of the child layers (now including in response
to a child layer's GimpDrawable::bounding-box-changed signal),
calculate the group's bounding box (the bounding box of all its
child layers' bounding boxes) alongside its logical bounds.  Like
in GimpLayer, use the logical bounds as the bounding box if the
group has a mask.

This bounding box is passed to the group's projection, via
GimpGroupLayer's GimpProjectable::get_bounding_box()
implementation, resulting in a buffer whose extent is the same as
the bounding box.

(cherry picked from commit ad1f3d20fb)
2019-08-02 00:40:25 +03:00
Ell
1359c1cb47 app: add support for projectables with an arbitrary bounding box
In GimpProjectable, replace gimp_projectable_get_size(), which only
returned a width and a height, with
gimp_projectable_get_bounding_box(), which returns a full
rectangle.  This allows projectables to have an arbitrary bounding
box, not limited to a (0, 0) top-left corner.

Adapt GimpProjection, creating a buffer with corresponding extent
to the projectable's bounding box.

Adapt GimpImage and GimpGroupLayer.

(cherry picked from commit 8ff43942d6)
2019-08-02 00:40:24 +03:00
Ell
ea27923868 app: implement GimpDrawable::get_bounding_box() for GimpLayer
Implement GimpDrawable::get_bounding_box() for GimpLayer, by
returning the bounding box of its source node.  If the layer has a
mask, we simply return its logical boundary, since the layer can't
extend past the mask.

(cherry picked from commit 7a05d15f7e)
2019-08-02 00:40:24 +03:00
Ell
917f46f184 app: maintain drawable bounding box separately from its logical boundary
Maintain the bounding box of drawables (i.e., the bounds of their
actual rendered content) separately from their logical boundary (as
shown in the UI).

The bounding box is calculated through the new
GimpDrawable::get_bounding_box() virtual function, which has a
corresponding gimp_drawable_get_bounding_box() function; the
default implementation simply returns the drawable's logical
boundary.  The bounding box is specified in drawable coordinates,
i.e., it's not affected by the drawable's offset.

The bounding box is recalculated through
gimp_drawable_update_bounding_box(), which should be called
whenever a change may affect the bounding box (for example, when
setting a new buffer, as done implicitly by GimpDrawable's
::set_buffer() implementation, or when a drawable filter's
properties change, as will be done by GimpDrawableFilter in a
following commit).  When the bounding box changes, the affected
regions of the drawable are updated, and the
GimpDrawable::bounding-box-changed signal is emitted.

When gimp_drawable_update() is called with negative width/height
values, the entire drawable's bounding box is updated, rather than
only its logical boundary.

Likewise, GimpDrawableStack and GimpLayerStack are adapted to use
the bounding box, instead of the logical bounds, when updating the
drawable's area.

(cherry picked from commit 153cb33eec)
2019-08-02 00:40:23 +03:00
Ell
c217876a47 app: in GimpDrawable::set_buffer(), take bounds rect instead of offset only
In GimpDrawable::set_buffer(), and the corresponding
gimp_drawable_set_buffer_full() function, take a bounds rectangle,
which specifies both the drawable's new offset and its new size,
instead of only taking the new offset.  In
gimp_drawable_real_set_buffer(), set the item size according to the
rect dimensions, instead of the buffer dimensions.  The rect's
width/height may be 0, in which case the buffer's dimensions are
used.

Adapt the rest of the code.

We do this in preparation for maintaining the drawable's bounding
box separately from its logical bounds, allowing the drawable
content to extend beyond its bounds.

(cherry picked from commit 3afdd7c5c2)
2019-08-02 00:40:17 +03:00
8bf31bd8d1 libgimpcolor: fix "Since:" on gimp_param_spec_rgb_get_default() 2019-08-01 12:53:07 +02:00
30e02aeeac libgimpbase: capitalize some docs section titles
(cherry picked from commit d66b845bac)
2019-08-01 12:52:55 +02:00
3822dec73f Update Russian translation 2019-08-01 00:20:35 +03:00
1f5131720a Update Spanish translation 2019-07-31 12:51:29 +00:00
Ell
2bdbc2f16d app: fix #include in gimpdrawable.c
Local foo leak.

(cherry picked from commit 2331b88d7d)
2019-07-30 21:37:02 +03:00
Ell
29aede6722 app: guarantee fully-COWed copies in more cases in paint code
(cherry picked from commit fb679f9efa)
2019-07-30 20:32:56 +03:00
Ell
ca98ff3c27 app: use gimp_gegl_buffer_dup() everywhere
... instead of gegl_buffer_dup().

(cherry picked from commit 2d80d4d138)
2019-07-30 20:32:56 +03:00
Ell
c0e04c3b5f app: add gimp_gegl_buffer_dup()
... as a drop-in replacement for gegl_buffer_dup(), which COWs all
tiles of the source buffer, including ones that aren't fully
included within buffer's extent.

(cherry picked from commit 5798cefe1b)
2019-07-30 20:32:55 +03:00
Ell
6cc671074a app: in gimp_gegl_buffer_copy(), allow tiles outside the abyss to be COWed
In gimp_gegl_buffer_copy(), assume that the area outside the abyss
is empty, and so, when the abyss policy is NONE, allow data otuside
the source/destination abyss to be copied, by temporarily modifying
the abyss.  This allows tiles that aren't fully contained within
the abyss to be COWed, unlike gegl_buffer_copy(), which has to be
more general.

(cherry picked from commit 69ce5e7e02)
2019-07-30 20:32:55 +03:00
Ell
b72aad57f2 app: remove gimp_gegl_rectangle_align_to_tile_grid()
... and replace it with gegl_rectangle_align_to_buffer().

(cherry picked from commit ab94251ae9)
2019-07-30 20:32:54 +03:00
e81061afc7 plug-ins: and in ifs-compose too...
(cherry picked from commit a47789fcb8)
2019-07-30 18:38:35 +02:00
82450330f0 libgimpconfig: fix float parsing in gimp_config_deserialize_fundamental() too
(cherry picked from commit 2d471ce049)
2019-07-30 18:38:24 +02:00
c9ded16963 Use g_ascii_dtostr() instead of g_ascii_formatd()
The latter is broken and doesn't guarantee a decimal point with the
current bug. Also, g_ascii_dtostr() doesn't need the format parameter
and produces nicer output.

(cherry picked from commit c0fb66254e)
2019-07-30 16:00:06 +02:00
77dd2982a5 libgimpconfig: make gimp_scanner_parse_float() less strict
A number without a decimal point can be put into a gdouble just fine,
no need to refuse them. Moreover, g_ascii_dtostr() serializes doubles
without fractional part without a decimal point, and we are soon going
to use it.

(cherry picked from commit 2c97bc8327)
2019-07-30 14:36:06 +02:00
d32b049577 Installer: handle associations better 2019-07-29 00:23:09 +02:00
Ell
fc5a641d2e app: use longer iteration inteval (= bigger chunks) when applyng an op
In gimp_gegl_apply_[cached_]operation(), use a longer iteration
interval (resulying in bigger chunks) when processing the op, than
the iteration interval used for rendering the projection.  In
particular, use an even longer interval when processing area
filters, since their may be particularly sensitive to the chunk
size (see, for example, issue #3711).  Likewise, use the asme
longer interval when not showing progress indication, since we
don't need to stay responsive in this case (but don't avoid
chunking altogether, to reduce the space required for intermediate
results).

This allows us to process an op faster when committing a filter,
while still remaining responsive (if overall slower) during
preview.

(cherry picked from commit 5a500b4a12)
2019-07-28 12:10:29 +03:00
Ell
1e06f5df5c app: add gimp_gegl_node_is_area_filter_operation()
... which determines if a node is an area filter operation.  If the
node is a meta op, we conservatively return TRUE, as it may involve
an area-filter op.

(cherry picked from commit f6c4e4912a)
2019-07-28 12:10:29 +03:00
Ell
0712504d0c app: in the gradient tool, set the graph's underlying node
... to the gimp:gradient node

(cherry picked from commit a1f676aabd)
2019-07-28 12:10:28 +03:00
0b26db7471 libgimpcolor: add gimp_param_spec_rgb_get_default()
(cherry picked from commit 3597e92a20)
2019-07-27 16:12:11 +02:00
1aab38f066 Update Polish translation 2019-07-27 15:36:21 +02:00
de10e027f3 Update Catalan translation 2019-07-27 11:52:18 +02:00
01b50782f7 Update Russian translation 2019-07-27 04:38:11 +03:00
0a36d273f9 desktop: new <release> appdata tag for GIMP 2.10.14.
(cherry picked from commit 2e03300eb7)
2019-07-26 19:45:19 +02:00
22e20cb222 Update Spanish translation 2019-07-26 07:40:45 +00:00
75ab528105 build, app: require babl-0.1.68 or newer
(cherry picked from commit 23ade7b80b)
2019-07-25 23:15:13 +02:00