Commit graph

42310 commits

Author SHA1 Message Date
Ell
d4cb2d57bd app: in gimppaintcore-loops, make sure dest_buffer is the primary iterator buffer
In gimppaintcore-loops, in the DO_LAYER_BLEND paint algorithm, and
in the CanvasBufferIterator algorithm helper-class, initialize the
iterator *before* initializing the base class, to make sure that
dest_buffer, or canvas_buffer, respectively and in that order, is
the primary buffer of the iterator.  In particular, this avoids the
mask buffer being the primary buffer.  This is desirable, since
most of the buffers we iterate over are tile-aligned to the dest/
canvas buffers.

(cherry picked from commit f9c072c328)
2019-02-12 09:26:22 -05:00
Ell
aa7de29f9e app: in gimppaintcore-loops, add MaskBufferIterator algorithm helper-class
In gimppaintcore-loops, add a MaskBufferIterator algorithm helper-
class, which provides read-only iterator access to the mask buffer,
if one is used.

Use the new class in DoLayerBlend, instead of manually managing the
mask-buffer iterator.

(cherry picked from commit 44281ce2c4)
2019-02-12 09:26:22 -05:00
Ell
5a4ffd4495 app: in gimppaintcore-loops, add [Temp]CompMask algorithm helper-classes
In gimppaintcore-loops, add a CompMask algorithm helper-class,
which provides access to the mask buffer used for compositing, to
be used by the DO_LAYER_BLEND algorithm instead of the image mask
buffer.

CompMask itself doesn't provide the storage for the mask; this is
rather the responsibility of the algorithms that use it.  The
TempCompMask algorithm helper-class provides temporary storage for
the compositing mask, and can be used by algorithms that need a
temporary mask.

(cherry picked from commit e36847febb)
2019-02-12 09:26:21 -05:00
Ell
1a06fa0c0a app: in gimppaintcore-loops, name algorithms more consistently
In gimppaintcore-loops, make the algorithm names, and the names of
the corresponding functions, more consistent.

(cherry picked from commit d23e239fed)
2019-02-12 09:26:19 -05:00
Ell
470f760eee app: in gimppaintcore-loops, allow specifying dependencies to BasicDispatch
... which are dispatched before the algorithm, as in
AlgorithmDispatch.

(cherry picked from commit 2788444df4)
2019-02-12 09:24:58 -05:00
Ell
197ec919cd app: in gimppaintcore-loops, add finalize[_step]() algorithm functions
In gimppaintcore-loops, add finalize() and finalize_step()
algorithm functions, which get called at the end of processing the
entire area, and at the end of processing each chunk, respectively.
Algorithms can use these functions to clean up allocated resources.

(cherry picked from commit 4d2ce15400)
2019-02-12 09:24:58 -05:00
Ell
deda2699b9 app: in gimppaintcore-loops, make CanvasBufferIterator self-contained
In gimppaintcore-loops, make the CanvasBufferIterator algorithm
helper-class self-contained, not having to rely on AlgorithmBase.

(cherry picked from commit 0d1f724112)
2019-02-12 09:24:57 -05:00
Ell
9a13c66d96 app: in gimppaintcore-loops, use dynamic iterator indices
In the various gimppaintcore-loops algorithms, assign each
algorithm's iterator indices dynamically, rather than statically,
so that algorithms have more freedom in the way they initialize the
iterator.

(cherry picked from commit 9d1d21e716)
2019-02-12 09:24:56 -05:00
Marco Ciampa
162250c3fb Typo in Italian translation 2019-02-12 14:25:25 +01:00
Michael Natterer
5dc78980f4 app: implement pattern saving in the core
Add GimpData::save() implementation to GimpPattern, and change some
glue code to make patterns editable.

Also implement GimpData::duplicate() in GimpPatternClipboard, which
makes it possible to simply copy an area and duplicate the clipboard
pattern to create a new persistent pattern.

(cherry picked from commit e93fd73fac)
2019-02-11 21:02:36 +01:00
Marco Ciampa
1595f9f4e3 Updated Italian translation 2019-02-11 20:59:57 +01:00
Michael Natterer
4f00422bd4 app: add an "Open as Image" button to the brushes dialog
It was probably forgotten to add in the first place (the patterns
dialog also has one).

(cherry picked from commit fc609d12dd)
2019-02-11 20:53:57 +01:00
Piotr Drąg
2c53aa2067 Update Polish translation 2019-02-11 20:27:34 +01:00
Michael Natterer
b3797079bc app: move file-pat-load from the file-pat plug-in to the core
(cherry picked from commit 410ffc435e)
2019-02-11 18:39:04 +01:00
Michael Natterer
616f5aac11 app, plug-ins: start consolidating brush and pattern loading/saving code
We currently have brush and pattern I/O code in both the core and
plug-ins. This commit starts removing plug-in code in favor of having
one copy of the code in the core, much like XCF loading and saving is
implemented.

Add app/file-data/ module with file procedure registering code, for
now just with an implementation of file-gbr-load.

Remove the file-gbr-load code from the file-gbr plug-in.

(cherry picked from commit a4e77e57f6)
2019-02-11 12:56:56 +01:00
Michael Natterer
270bd71658 app: add all missing festures from file-gbr-load to the core brush loader
gimp_brush_load_brush(): support legacy gpb brushes, and port a check
for gsize overflow what was added to the plug-in.

(cherry picked from commit 619f999280)
2019-02-11 12:36:02 +01:00
Rodrigo Lledó
c05a700ccc Update Spanish translation 2019-02-11 07:53:20 +00:00
Rodrigo Lledó
c000c7a8a2 Update Spanish translation 2019-02-11 07:51:36 +00:00
Rodrigo Lledó
dfe1dbe0ad Update Spanish translation 2019-02-11 07:49:19 +00:00
Ell
4a7988b9fa Issue #2935 - GIMP 2.10 - options hidden in filter dialogs
gtk2 doesn't propagate the child requisition to the scrolled-window
requisition, so we have to do it manually.
2019-02-10 17:53:16 -05:00
Balázs Úr
c1e84c494d Update Hungarian translation 2019-02-10 17:37:22 +00:00
Ryuta Fujii
2465aecb4f Update Japanese translation 2019-02-10 15:46:38 +00:00
Ryuta Fujii
b7c1664273 Update Japanese translation 2019-02-09 13:02:04 +00:00
Marco Ciampa
d501a28807 Updated Italian translation 2019-02-09 01:18:28 +01:00
Piotr Drąg
d115e1d777 Update Polish translation 2019-02-08 20:36:16 +01:00
Ell
0f727e4f2f libgimpwidgets: in GimpChainButton, emit "toggled" signal when "active" changes
In GimpChainButton, emit the "toggled" signal whenever the chain
button's "active" property changes, either due to user interaction,
or programatically.  Previously, it would only get emitted when the
button was actually clicked.

In particular, this fixes an issue where the aspect ratio of a
coordinates size-entry won't get updated when its chain button got
toggled programatically, as can happen with the scale tool.

(cherry picked from commit c0c055b4e9)
2019-02-08 08:22:45 -05:00
Jehan
d815f355bb Issue #2922: Some sentences appear untranslated.
Again some missing context when requesting the strings (while they were
declared with context in static NC_()).
Also some mixup with some zoom actions strings declared with different
context in the same GimpEnumActionEntry.

(cherry picked from commit 6c5b6c6135)
2019-02-08 13:33:47 +01:00
Jehan
95be8d0769 po: fix msgctxt s/view-action/view-zoom-action/ for 5 strings.
Similar to master commit cb025cec64,
except that I just redid the search-replace as there were annoying
conflict merge (was easier to just redo massive search-replace).
2019-02-08 13:30:39 +01:00
Jehan
7067c3add3 Issue #2922: Some sentences appear untranslated.
(cherry picked from commit 60c334a779)
2019-02-08 11:44:51 +01:00
Balázs Meskó
7909409a03 Update Hungarian translation 2019-02-07 23:33:44 +00:00
Jehan
66803bc2b3 po: fix the context (msgctx) for 2 strings.
See commit f8f3a74971.
The context change was basically a bug fix, and nothing changed in the
original string, nor its actual GUI context/usage. Therefore there is no
need to invalidate the translations (mark it "fuzzy", which would be
what would happen automatically after this change) for the 43 languages
which already translated these. Let's just search-and-replace all the po
files with the correct context.

For the record, I got the green light from several translators on
gnome-i18n ML so let's fix. :-)

(cherry picked from commit 7a5e5be35e)
2019-02-07 18:42:53 +01:00
Jehan
5796cc46e4 app: improve line art bucket fill by filling unsignificant areas.
The line art imaginary segments/splines are not added when they create
too small zones, unless when these are just too small ("unsignificant").
Why the original algorithm keeps such micro-zones is because there may
be such zones created when several splines or segments are leaving from
a same key point (and we don't necessarily won't to forbid this). Also
we had cases when using very spiky brushes (for the line art) would
create many zones, and such micro-zones would appear just too often
(whereas with very smooth lines, they are much rarer, if not totally
absent most of the time).
Also it is to be noted that the original paper would call these
"unsignificant" indeed, but these are definitely significant for the
artists. Therefore having to "fix" the filling afterwards (with a brush
for instance) kind of defeat the whole purpose of this tool.

I already had code which would special-case (fill) 1-pixel zones in the
end, but bigger micro zones could appear (up to 4 pixels in the current
code, but this could change). Also I don't want to use the "Remove
Holes" (gimp:flood) operation as I want to make sure I remove only
micro-holes created by the line art closure code (not micro-holes from
original line arts in particular).

This code takes care of this issue by filling the micro-holes with
imaginary line art pixels, which may later be potentially bucket filled
when water-filling the line art.

(cherry picked from commit 72092fbdbc)
2019-02-07 18:42:46 +01:00
Jehan
1825392dbe Issue #2920: Dilate and Erode filters' tooltips are untranslatable.
Wrong message contexts!

(cherry picked from commit f8f3a74971)
2019-02-07 18:33:01 +01:00
Ell
f5e652d762 app, pdb: use compat formats for brushes/patterns in plug-ins
Plug-ins are not prepared to handle high-precision brushes/
patterns, even when they're otherwise aware of high-precision
drawables, so make sure to always use compat formats when
communicating brush/pattern data to plug-ins.

Allowing plug-ins to handle high-precision brush/pattern data would
require some additional API.

(cherry picked from commit 82c449496e)
2019-02-07 09:19:27 -05:00
sabri ünal
57b81c424b 2 sentences are marked as translatable.
These sentences are in use on "Preferences - Interface - Help System" page.

(cherry picked from commit 1853770660)
2019-02-07 14:56:54 +01:00
Jehan
29706cdc48 libgimpbase: style cleanup of gimpreloc.c
No code change, only indentation fixed and opening braces on newline, as
per our style guidelines.

(cherry picked from commit 757b8bba7d)
2019-02-07 14:56:26 +01:00
Jehan
6645cc7ba5 app, libgimpbase: --enable-relocatable-bundle replaces --enable-binreloc
Older --enable-binreloc configure option had basically the same purpose
as the newer --enable-relocatable-bundle, though the old binreloc was
only used for gimpenv.c code.
As a consequence, commit 10ce702188 was still not working fine since
gimp_installation_directory_file() also need binreloc enabled (to be
actually relocatable).

Let's get rid of this whole mess, by implying we want binreloc code to
be used when --enable-relocatable-bundle is ON. We don't need the
m4macros anymore, since AM_BINRELOC was basically just checking that
`/proc/self/maps` was present. But anyway being present at compile time
does not mean it will be at runtime (nor the opposite). So this test is
not that useful. The binreloc code will anyway fallback gracefully to
the non-binreloc code (i.e. trying to use build-time install paths) if
the procfs is lacking at runtime.

(cherry picked from commit 4d84c1d7ee)
2019-02-07 14:56:26 +01:00
Ell
a335eb0e6e app: avoid unnecessary calls to gimp_temp_buf_data_clear()
Avoid unnecessary calls to gimp_temp_buf_data_clear() in various
places, where either the entire buffer is being written to, or most
of it is, only requiring clearing the edges.

(cherry picked from commit 9d19e804ed)
2019-02-06 16:51:07 -05:00
Ell
1e0530e730 app: small fix in gimpbrushcore-kernels.h
(cherry picked from commit cbe40000f5)
2019-02-06 16:51:06 -05:00
Ell
d39634a914 Issue #2372 - Reduced quality of the Parametric brush in 2.10
Promote the precision of generated brushes to 32-bit float, and
modify brush preview generation, and gimpbrushcore-loops, to handle
float brushes.  This avoids posterization in large brushes.

Note that non-generated brushes are still uint8.

(cherry picked from commit 8ef1113dee)
2019-02-06 14:30:56 -05:00
Ell
8f31f8fa3c app: add gimp_temp_buf_{lock,unlock}()
In GimpTempBuf, add gimp_temp_buf_lock() and gimp_temp_buf_unlock()
functions, which lock/unlock the buffer for data access.  Unlike
gimp_temp_buf_get_data(), which returns a direct pointer to the
buffer's data, the new functions take a format parameter and may
return a temporary buffer, allowing the buffer to be accessed using
an arbitrary format.

(cherry picked from commit 12dde445c4)
2019-02-06 14:30:55 -05:00
Ryuta Fujii
d4e87e4d51 Update Japanese translation 2019-02-06 13:36:59 +00:00
Ryuta Fujii
99c59d92f3 Update Japanese translation 2019-02-06 13:07:58 +00:00
Ell
c9f4735669 libgimp: avoid libgimp tile-cache in the plug-in tile backend
In GimpTileBackendPlugin, avoid storing read/written tiles in the
libgimp tile-cache, since caching is already done by GEGL.

(cherry picked from commit 47dcd4b93a)
2019-02-05 17:26:23 -05:00
Rodrigo Lledó
17f355e9f3 Update Spanish translation 2019-02-05 14:22:37 +00:00
Rodrigo Lledó
f936089bcb Update Spanish translation 2019-02-05 14:21:34 +00:00
Ell
8878ff5f04 app: in GimpRotateTool, improve fuzzy comparisons
(cherry picked from commit b002f20412)
2019-02-05 04:39:11 -05:00
Ell
a771662420 libgimpwidgets: add gimp_chain_button_{get,size}_icon_size() to gimpwidgets.def
(cherry picked from commit 0714510802)
2019-02-05 03:49:51 -05:00
Ell
b5caa2ea2e po-python: add spyro_plus.py copy to POTFILES.skip
(cherry picked from commit 1b2ec2961c)
2019-02-05 02:50:30 -05:00
Balázs Meskó
d368fabf8e Update Hungarian translation 2019-02-04 22:55:15 +00:00