Commit Graph

21986 Commits

Author SHA1 Message Date
8f33d5ea05 apply the same master patch 2019-11-29 22:06:28 +00:00
ce4865670b Windows backtrace: VEH must use stdcall
Fixes issue #2794

(cherry picked from commit cd54a8fee9)
2019-11-22 00:08:38 +01:00
b67fe859a7 app, devel-docs: remove dangling DBUS_GLIB_* variables.
dbus-glib is no more a dependency since commit c4460e84, i.e. already
since 2013!

(cherry picked from commit 5f2a6940e3)
2019-11-16 19:32:35 +01:00
Ell
f04d72d008 Issue #4218 - Color>Invert doesn't work on saved selection channel ...
... or copied RGB channel

In gimp_drawable_merge_filter(), make sure the drawable's source
node is constructed before applying the operation.  The
construction of the source node connects the drawable's filter
stack to the udnerlying source node (usually, the buffer-source
node), which we rely on when calling
gimp_gegl_apply_cached_operation(), since we pass
connect_src_buffer == FALSE.  Otherwise, the operation is applied
to an empty input, instead of the drawable content.

(cherry picked from commit 0e29fc1b21)
2019-11-11 19:01:40 +02:00
Ell
f16ce35f8d app: in GimpHistogram, don't initialize n_bins to 256
... it's no longer needed, and breaks the type's invariants.

(cherry picked from commit 2a292b02e3)
2019-11-11 18:18:55 +02:00
Ell
9f8e244ec1 Issue #4205 - The histogram dock scale is incorrect when an image is opened
In gimp_histogram_view_update_bins(), don't update the view's
range if there's no histogram or the histogram is empty, to avoid
discarding the existing range.  Additionally, improve the range
readjustment when the number of bins changes.

(cherry picked from commit 0c899394b4)
2019-11-11 18:18:55 +02:00
e7478071e8 Issue #4194: resolution passes from 300ppi to 72ppi after saving.
We are running gimp_image_set_imported_file() when saving, with NULL to
drop the tie with the imported file. Let's only change the default
resolutions when we actually set an imported file.

Also set the `resolution_set` flag even when it doesn't change the
current values (hence no undo or signals), for instance setting from 300
to 300 PPI. In such case, even though nothing changes, the resolution
has to still be considered as explicitly set.

In the reporter case, any one of these 2 fixes is enough.
See also commit fef9b1d2a3 (set to 72 PPI as default for imported files
only) and commit a8f552da2f (set imported file to NULL).

(cherry picked from commit 417bf199c8)
2019-11-08 14:07:51 +01:00
04997fc0ae Replace finite() with isfinite() by default
This is part of the C standard also also causing warning on macOS.
2019-11-07 09:09:22 +00:00
4cd23c64e9 Revert finite() fix as it needs to be done in pdb and configure 2019-11-06 21:16:26 +01:00
aff49550ee Fix "finite() is depricated" warning on macOS 2019-11-06 17:04:35 +01:00
Ell
ccd5ce6cce app: add "show all" support to the Bucket Fill tool in line-art mode
In the Bucket Fill tool, when using line-art mode, use a
GimpImageProxy as input for the GimpLineArt object, instead of
using the image direclty, when the line-art source is "all visible
layers".  Set the proxy's show-all mode according to the active
shell, so that the line-art uses the full image projection,
including out-of-canvas regions, when in show-all mode.

(cherry picked from commit 43a1c33ecf)
2019-11-04 13:33:47 +02:00
Ell
e79d852d3a app: (re-)add GimpDisplayShell::show-all property
... which corresponds to the shell's show-all mode.  We'll listen
to its "notify" signal in the bucket-fill tool.

(cherry picked from commit 02654b0ac0)
2019-11-04 13:33:47 +02:00
Ell
6349453ad3 app: in GimpLineArt, ref input pickable
... in particular, so that the GimpLineArt object can take
ownership over newly-created GimpImageProxy inputs.

(cherry picked from commit c8b5c81a41)
2019-11-04 13:33:47 +02:00
Ell
c5ff92d71d app: in GimpLineArt, add support for arbitrary buffer extents
In GimpLineArt, add support for arbitrary input-buffer extents,
by shifting/unshifting the input/output buffers before/after
passing them to the main algorithm, so that the algorithm keeps
working with buffers whose top-left corner is at (0, 0).

(cherry picked from commit bce96eb690)
2019-11-04 13:33:47 +02:00
Ell
174f1ea622 app: in GimpImageProxy, implement GimpPickable
In GimpImageProxy, implement the GimpPickable interface, so that
the proxy can be used as both a viewable and a pickable for the
image projection, with direct control over the show-all mode.  This
will allow us to use a GimpImageProxy as input for a GimpLineArt.

(cherry picked from commit 0e02795128)
2019-11-04 13:33:47 +02:00
Ell
d1324ad802 app: rename GimpImageViewable to GimpImageProxy
We're going to have GimpImageProxy implement GimpPickable, so that
it can be used as either a viewable or a pickable proxy for an
image.

(cherry picked from commit 8d8cc12f40)
2019-11-04 13:33:47 +02:00
Ell
defe920d43 app: rename gimpimageviewable.[ch] to gimpimageproxy.[ch]
... in preparation for actually renaming the class, but as a
separate step to keep the history.

(cherry picked from commit 0ddd3330b8)
2019-11-04 13:33:47 +02:00
Ell
e2fe79d859 app: add gimp_image_get_preview_format()
Add an internal gimp_image_get_preview_format(), which returns the
format to use for preview buffers, and use it in both
gimpimage-preview and GimpImageViewable, to reduce duplication.

(cherry picked from commit 74009c8b1e)
2019-11-04 13:33:47 +02:00
e13e7fd8b6 Set required variables if is running from Apple application bundle 2019-10-31 14:51:24 +00:00
0b49a26d6a app: when interpreter not found in interpreter DB, leave shebang as-is.
In particular, if the shebang is `#!/usr/bin/env lang` and we have not
registered a specific interpreter for `lang`, the system should leave
the env tool search the right interpreter for us. We only bypass env
when we set our own explicit interpreter.

(cherry picked from commit 9e844ae1d7)

Slight modification from master commit: not applying to
palette-to-gradient.py plug-in.
2019-10-30 13:55:13 +01:00
f4c87c048e app: fix typo in gimptoolrectangle.c 2019-10-27 16:57:21 +01:00
775d3b1099 configure,app: depend on babl-0.1.72
(cherry picked from commit fe3e945154)
2019-10-27 06:54:09 +02:00
2fde53eef1 configure. app: depend on gegl-0.4.18 2019-10-27 01:43:54 +02:00
Ell
6bedbe5c79 app: don't use the deprecated GTimeVal in gimp-test-session-utils.c
GTimeVal, as well as g_file_info_get_modification_time(), have been
deprecated in GLib 2.62.  Use g_file_info_get_attribute_uint64()
instead.

(cherry picked from commit 549a606b2f)
2019-10-26 22:34:51 +03:00
7caeb46e65 app: don't use the deprecated GTimeVal in file-remote.c
Use g_get_monotonic_time() instead.

(cherry picked from commit 3f84fbee1e)
2019-10-26 22:34:05 +03:00
Ell
6239c3926f app: add babl version info to $ gimp -v
... and any other users of gimp_version().

(cherry picked from commit 211b7de729)
2019-10-24 14:01:17 +03:00
Ell
ed1d5364a4 app, menus: add gegl:normal-map to Filters -> Generic
(cherry picked from commit 6adf77e13a)
2019-10-23 20:04:49 +03:00
Ell
412fa7822b app: avoid spurious channel switch in histogram editor when switching drawbles
Add an n_components parameter to gimp_histogram_clear_values(),
which allows to set the new component count when clearing the
histogram.  This is useful to seed the histogram with the correct
number of channels, for display purposes, before starting an async
histogram calculation.  We use this in GimpHistogramEditor, to
avoid resetting the view's channel back to "Value" each time the
active drawable changes.

(cherry picked from commit eb6f544c18)
2019-10-22 16:12:53 +03:00
Ell
ed40f0763e app: fix gimp_hisotgram_n_components() for empty histograms
(cherry picked from commit 8bd4ae34f5)
2019-10-22 16:12:53 +03:00
Ell
a2fe44ed8c app: streamline GimpHistogram; avoid spurious channel switch in histogram view
In GimpHistogram, get rid of the "n-channels" property and
corresponding gimp_histogram_n_channels() function.  The former
returned the actual number of channels, but this wasn't too useful,
as channel values may not be sequential; the latter returned the
number of components.  Instead, add an "n-components" property and
a corresponding gimp_histogram_n_components() function, both of
which return the number of components.  Furthermore, add a
gimp_histogram_has_channel() function, which determines if the
histogram has a given channel; this allows for simple testing for
channel availability, which was done wrong in various places.

Adjust the GimpHistogram code for the changes, and clean it up,
fixing a few bugs.

Adjust users of GimpHisotgram for the changes.  In particular,
in GimpHisotgramView, fix the channel-availability test when
setting the view's histogram (which happens whenever the active
drawable's preview is frozen), to avoid erroneously swithcing the
view's channel back to "Value" when a non-RGB channel is selected.

(cherry picked from commit fc17f0ed0c)
2019-10-22 15:50:24 +03:00
e729d0b6bb Issue #4119: GIMP main window not restored from Taskbar under MS Windows
Tested in a VM. Minimized window is properly deiconified and showed to
the front. Though a window in the back (not minimized) is not moved to
the front.

(cherry picked from commit 2f01751907)
2019-10-20 19:48:20 +02:00
aeadaaeb6c CID 225808 Arguments in wrong order
Swapped arguments: height is passed to width. width is passed to height.

Please check the function in /app/core/gimpbrush.c at line: 606

void
gimp_brush_transform_size (GimpBrush     *brush,
                           gdouble        scale,
                           gdouble        aspect_ratio,
                           gdouble        angle,
                           gboolean       reflect,
                           gint          *width,
                           gint          *height)
2019-10-20 13:06:19 +00:00
c326552872 225614 Copy-paste error
Copy-paste error: extensions in proc->extensions looks like a copy-paste error.
Should it say prefixes instead?
2019-10-20 12:47:15 +00:00
3a34f80d45 Issue #4068: default pixel density should be 72.0 for loaded images.
New images should obviously still default to the template pixel density
(defaulting to 300.0 PPI when no specific template is selected).

Loaded images though should use a more conservative default of 72 PPI,
first because this is what other software defaults to when no density is
set (so we should keep consistent when possible), and this is also what
the Exif standard (I checked both last version 2.32, and older 2.3)
recommends when no resolution is set.

Technically we differentiate a loaded from a newly created image by
whether or not an imported_file has been set. Of course, any explicitly
set resolution will always override whatever default.

(cherry picked from commit fef9b1d2a3)
2019-10-12 17:12:15 +02:00
32235fba15 Issue #4049: Colour fill on Line Art Detection misaligned when…
… different layer size/location used.

We need to use the source coordinate space when generating the first
fill buffer, then transform to the target layer coordinate space when
applying the drawable filter.

(cherry picked from commit 16d9c1f00d)
2019-10-12 17:12:01 +02:00
dfda00d5f7 app: fix "Result is not floating-point (UNINTENDED_INTEGER_DIVISION)".
See #3996.
This was a warning raised by the Coverity scan on one of the lines. I
fix also in the same time other arithmetics mixing int and double.
Better be thorough.
The specific warning was on:
> circ = 2.0 * G_PI * (private->width / 2)
where the division was integer, which was probably not intended. Of
course that error (display item only) was likely barely visible anyway,
still…

(cherry picked from commit c809e221ec)
2019-10-12 17:09:57 +02:00
Ell
4c55475af9 app: restore behavior of gimp_gegl_apply_operation() with NULL src_buffer
Restore the behavior of gimp_gegl_apply_operation() prior to
11629fde66 when src_buffer is NULL:
keep the existing operation-node input, instead of using an empty
input.  Unlike gimp_gegl_apply_cached_operation(),
gimp_gegl_apply_operation() doesn't have an explicit
connect_src_buffer parameter.

This fixes empty output when merging layers.

(cherry picked from commit 076d9b2a28)
2019-10-05 09:43:27 +03:00
Ell
b89ad56a35 app: don't extend layers with no alpha channel when applying filters
In GimpFilterTool, don't provide a clipping option for layers with
no alpha channel, and always clip the result to the layer bounds,
since the extended regions of the result usually require alpha to
be meaningful.

Similarly to last commit, the ideal solution would be to
automatically add an alpha channel as necessary.

(cherry picked from commit 4b58e178a5a4206cd84ae6402a967862897f14bb)
2019-10-03 22:21:36 +03:00
Ell
ada1a3cf69 app: clip floating selection to layers with no alpha channel
Alawys clip a floating selection to its base layer, if the layer
has no alpha channel.  This avoids arbitrarily filling the extended
regions of the layer with, or compositing the floating selection
against, black color.

This is a temporary solution.  Ideally, we'd automatically add an
alpha channel to the layer as necessary.

(cherry picked from commit 7a8c79e7e75812d683430be163950b68a3d3498a)
2019-10-03 22:20:46 +03:00
Ell
3bb181cb03 app: update drawable bounding box when detaching floating selection
(cherry picked from commit 783b475b7b)
2019-10-03 21:31:28 +03:00
Ell
97c549198e app: avoid dropping cached data when committing filters
In gimp_gegl_apply_cached_operation(), add a boolean
connect_src_buffer parameter, which determines whether to connect
the source buffer to the operation-node's input, or to use its
existing input.  In gimp_drawable_merge_filter(), pass FALSE for
connect_src_buffer, so that the existing filter-node input is used.
This produces an equivalent result, however, it avoids invalidating
the filter node, and dropping cached data as a result.  In
operations that cache larger areas than the ROI, this avoids
reprocessing already-cached data when processing the rest of the
operation.

Additionally, in gimp_gegl_apply_cached_operation(), use an empty
input for the operation if src_buffer is NULL and
connect_src_buffer is TRUE; previously, we'd use the operation-
node's existing input when src_buffer was NULL.  Furthermore, crop
the operation-node's input to the destination rect when crop_input
is TRUE, even if connect_src_buffer is FALSE.

(cherry picked from commit 11629fde66)
2019-10-03 20:12:23 +03:00
Ell
eb0cf2d3f5 app: update drawable bounding box when floating-selection bounding box changes
When the bounding box of a floating selection changes, update the
bounding box of the associated drawable, since floating selections
are no longer clipped to the drawable's bounds in general.

(cherry picked from commit ec6bbd1937)
2019-10-02 21:35:23 +03:00
Ell
862821b98f app: fix CRITICAL when translating selected content
Fix a CRITICAL when creating a floating selection by Alt-dragging a
selection using one of the selection tools.

(cherry picked from commit 1e9bf288ba)
2019-10-02 18:38:05 +03:00
Ell
72eeee39db Issue #2837 - Floating selection is clipped to base layer
When attaching a floating selection to a layer, don't clip the
floating selection to the layer's boundary, and instead resize the
layer to include the entire floating selection when it's anchored.
As per the last commit, this can be prevented by locking the
layer's position.

(cherry picked from commit 64b979c2f3)
2019-10-02 18:22:28 +03:00
Ell
58e486ad93 app: don't resize layer when applying filter if its position/size are locked
When applying a filter to a layer whose position and size are
locked, avoid resizing the layer to the result size in ADJUST mode.
We do this by always returning GIMP_TRANSFORM_RESIZE_CLIP in
gimp_item_get_clip() when the position is locked, and properly
updating the drawable-filter's clip mode, and the filter-tool's UI,
when the position lock changes.

(cherry picked from commit 6ed6cd78d8)
2019-10-02 18:22:27 +03:00
Ell
b8177906a2 app: fix use of Clone tool with "sample merged" across images
In GimpSourceCore, when "sample merged" is enabled, derive the
source pickable from the source drawable's image according to the
paint-core's show-all flag manually, instead of using
gimp_paint_core_get_image_pickable(), which uses the destination
image, and would therefore only work when the source and
destination images are the same.

In GimpSourceTool, override GimpPaintTool::paint_prepare() to set
the paint-core's show-all flag according to the source display,
rather than the destination display.

(cherry picked from commit aa02f1f35c)
2019-10-02 17:16:00 +03:00
Ell
8f290dccce app: add GimpPaintTool::paint_prepare() vfunc
... which is called when starting to paint, before the tool's
paint-core is started, allowing the tool to configure the core.
Move the call to gimp_paint_core_set_show_all() to the default
implementation of paint_prepare().

(cherry picked from commit ffd6c2eda2)
2019-10-02 17:16:00 +03:00
Ell
78aeba77e2 app: add missing SET_SENSITIVE() for new filter actions
(cherry picked from commit 6b8ffd419d)
2019-10-01 19:03:26 +03:00
Ell
08f59073de Issue #3994 - Artifacts when committing half-cached filters
In gimp_gegl_apply_cached_operation(), when applying a non-point
filter with the same source and destination buffers, render the
result to a temporary buffer to avoid chunking artifacts.  We'd
previously duplicate the source buffer instead (with commit
35729ee02a erroneously copying the
cached results to the source/destination buffer before duplicating
it, causing this bug), but we now use a temporary result buffer
instead; this has roughly the same overhead, but would allow us to
keep the original operation-node input when committing a drawable
filter in a future commit, which would avoid dropping any cached
data.

(cherry picked from commit 88c6f8296d)
2019-09-30 10:25:19 +03:00
Ell
dd1525cf75 app: add missing change to last commit
(cherry picked from commit 24731851e4)
2019-09-28 11:36:30 +03:00