Commit Graph

39339 Commits

Author SHA1 Message Date
Ell
d4cb1623ea app: add persistent handle selection to GimpToolLine
En route to on-canvas gradient editing, add support for persistent
handle selection to GimpToolLine (a handle being either an endpoint
or a slider).  Handles are selected through clicking, however,
unlike before, the selection persists after the mouse is released.
A new "selection" property specifies the currently-selected handle
(who knows, maybe in the future we'll add multi-selection), and a
new "selection-changed" signal is emitted when the selection changes.

The visual feedback has been changed to better suit the new behavior,
and the behaviors yet to be added:  The selected handle is marked
using highlighting; the highlighting doesn't change while hovering
over other handles.  Only the hit-test circle is used as hover
indication, however, we use a fixed-size circle, and only show the
circle for the currently hovered-over handle -- no more trippy
expanding circles :)

A few minor changes along the way:

  - The selected handle is now the (first) one that's closest to the
    cursor, instead of the first one to pass hit-testing.

  - We don't move the selectd handle upon button-press, only upon
    motion, so that handles can be selected without moving them.

  - Show a MOVE cursor modifier when hovering over a handle.
2017-10-09 12:48:49 -04:00
Ell
042650e18c app: rename slider-value variables in GimpToolLine
Rename the "t" variables, representing slider values, to "value".
2017-10-09 12:48:49 -04:00
Ell
fb31a592c6 app: add gimp_tool_line_get_slider()
... and use it instead of using g_array_index() on the slider array
directly.
2017-10-09 12:48:48 -04:00
f47df72dc6 plug-ins: link file-raw aginst libgimpcolor and libgimpconfig explicitly
otherwise, implicit transitive linking will pull in the installed
libs, not the ones from the source tree, and the build can fail when
any of the libs' APIs changes.

Also remove some useless #includes.
2017-10-09 18:33:02 +02:00
Ell
adff950d58 app: in file-psd, make layer-group saving more Photoshop-like
Tweak the layer group saving code so that the saved PSDs match
Photoshop-produced PSDs a bit more closely.  For the most part, it
doesn't seem to matter much, but it does somewhat improve
compatibility with other programs that read PSDs.
2017-10-09 10:45:52 -04:00
Ell
9e015f4b7d plug-ins: in file-psd, fix bad sign extension in decode_packbits() 2017-10-09 08:48:03 -04:00
d01e182c7b Bug 787457 - Paint brush settings display system language (e.g. zh_TW)
... and ignore language setting (e.g. en_US).
The problem came from the fact that these settings names are class
properties of GimpPaintOptions/GimpContext which is first instanciated
when the Gimp object is created. This unfortunately happened before
language_init() since we needed these objects when loading gimprc
(making inversion of calls rather complicated).
Therefore they were localized with the system language, not the
configured language.
The solution was to create a very simple object GimpLangRC which
implements the GimpConfig interface, for sole purpose to read the
language from `gimprc` in a first pass. gimp_load_config() will still
happen later as a second pass to properly load the rest of the
configuration.
2017-10-09 00:36:44 +02:00
18cb45f250 Updated Italian translation 2017-10-08 23:23:35 +02:00
e1afed3ddd Update Polish translation 2017-10-08 19:05:47 +02:00
b62b442550 Updated Italian translation 2017-10-08 17:00:21 +02:00
6a9f4588c9 build: fix previous commit and add xdg-config/gtk-3.0 access.
I had an error in the previous commit (2 args in 1). Also adding access
so that the file `bookmarks` is visible from the contained GIMP
(otherwise bookmarked folders are lost in flatpak and that's bad
experience).
2017-10-07 23:31:20 +02:00
925a77e205 build: only grant access to needed services in flatpak.
No full bus access, as proposed by flatpak upstream.
2017-10-07 23:11:09 +02:00
34ac56e770 build: using cmake-ninja for jasper build system in flatpak.
As asked by upstream at: https://github.com/flathub/flathub/pull/124
2017-10-07 18:27:57 +02:00
e75ea3c2af build: add a stable flatpak manifest.
Yeah for the BaseApp! It took me no time to make a new manifest for the
stable branch (current 2.8).
2017-10-07 03:43:34 +02:00
789cb3ce6e build: workaround for broken cleanup of flatpak.
For some reason, the "cleanup" tag won't delete the files produced by
the BaseApp inside the main GIMP manifest (I still need them for build,
but want to delete them for runtime).
This is a workaround to delete them with a few command lines for now.
See: https://github.com/flatpak/flatpak/issues/1082
2017-10-06 16:40:26 +02:00
Ell
80a526861f Bug 788461 - Selection with a Fixed size is created with an ...
... off-by one size in special cases

The last commit wasn't drastic enough.  We changed SIGNED_ROUND()
to use RINT(), which, in turn, may use rint().  However, rint()
effectively breaks ties to even, so that we get stuff like
'rint (1.5) - rint (0.5) == 2.0 - 0.0 == 2.0'.  This can't be
good--it's entirely possible that we're bitten by this in other
cases without noticing.

Avoid rint() entirely in RINT(), and always use 'floor (x) + 0.5'
instead, which always breaks ties up.  Hopefully, this doesn't
break anything else...
2017-10-05 17:50:07 -04:00
Ell
e8b37a7a25 Bug 788461 - Selection with a Fixed size is created with an ...
... off-by one size in special cases

SIGNED_ROUND(), which is used by GimpToolRectangle, among other
things, used to round negative values which lie exactly between
two integers, i.e., -foo.5, down.  This could lead to the rectangle
being one pixel bigger than expected, in either dimension, when one
of its edges had a negative coordinate, and the opposite edge had a
positive coordinate.

Fix SIGNED_ROUND() to always round such values up, regardless of
sign.
2017-10-05 16:16:09 -04:00
Ell
9fee677b5c libgimpwidgets: use default unit for eevl ratio quantity in size boxes
Pass the ratio quantity to be used for eevl ratio expressions in
terms of the default unit of the size box, instead of as a
dimensionless value.
2017-10-05 08:54:10 -04:00
1e7bb051b5 build: delete gimptool and gimp-console from the finale flatpak. 2017-10-05 04:49:49 +02:00
54f4f4457f build: base both the dev and nightly builds off a BaseApp.
Keeping all dependencies inside the main manifest is very annoying
because flatpak-builder will check them every time the package is
rebuilt. Worse, sometimes the cache won't be hit (even though it should
have), resulting into a rebuild of many dependencies. I create a BaseApp
build which is the recommended process (and not creating our own runtime
based on GNOME one's, as I first thought) which won't need to be built
as often as the main manifests. The other advantage is obviously that
this BaseApp can be shared between the dev and nightly (and likely even
the stable later) builds. I will only keep differences inside the main
manifests (for instance lcms2 which requires a higher version on master
than on the GNOME runtime and the last dev release).
I also move webkitgtk as the first dependencies since it takes too long
and flatpak uses a sequential dependency graph (so any change to a
previously listed dependency, even when actually unrelated, was
triggering a rebuild of webkitgtk!).
Only remaining issue is that I don't manage yet to run the cleanup of
the BaseApp at the end of the main manifests (for files needed for
building, but not at runtime).
2017-10-05 03:14:13 +02:00
e545116b89 build: run flatpak-builder with --ccache option for faster builds.
So I discover today that there is an option --ccache to request
flatpak-builder to compile using ccache, which is obviously a great idea
when rebuilding the same deps too often. Update the howto with the info.
2017-10-05 00:16:34 +02:00
55083baa98 app: also make options_box into a GWeakRef.
While I am at it, let's spread the improvement to options_box which was
also a weak pointer with g_object_add_weak_pointer(). Let's make it
rather a GWeakRef for the same reason as I did options_gui.
2017-10-05 00:11:36 +02:00
7be856a47d app: use GWeakRef instead of g_object_add_weak_pointer().
Other than multi-threading (which here is not the problem), using
GWeakRef has the other advantage that it makes the type of pointer
obvious, hence avoiding the kind of errors as fixed in commit 12df796.
One can't just change the pointer value directly, and has to use
g_weak_ref_set(), so such problem won't happen again.
2017-10-04 23:38:24 +02:00
12df7960ad Bug 788442 - Gimp crashes not using GEGL Operation tool.
Properly set the pointer as a weak pointer, same as in GimpOperationTool
parent class, to make sure it is resetted to NULL upon destruction.
2017-10-04 23:25:08 +02:00
Ell
e06a18b944 app: use a single size entry for the pos/size props of GimpRectangleOptions
Repalce the two separate size entries, used for the position and
size properties of GimpRectangleOptions, with a single size entry
with two fields, so that they accept ratio expressions.  Note that
this doesn't change the UI.
2017-10-04 14:25:02 -04:00
Ell
f2a80a093a libgimpwidgets: enable ratio expressions for size entries with two fields
When a size entry has exactly two fields, enable ratio expressions
in eevl.  Set the reference value to the value of the field that is
not currently being evaluated, and invert the ratio when evaluating
the second field.
2017-10-04 14:25:01 -04:00
Ell
6caae9c53b libgimpwidgets: add ratio expressions to eevl
Ratio expressions have the form 'x : y' (the ':' operator has the
highest precedence for a binary operator, and is left-associative).
Given a reference value 'a', the expression evaluates to
'a * (x / y)'.

Ratio expressions can be controlled by the caller by:

  - Enabling or disabling them:  They're meant to be used when the
    eevl servers two paired entries, and can be disabled otherwise.

  - Setting the reference value:  That's normally the value of the
    "other" entry of the pair--the one not currently being
    evaluated.

  - Inverting the ratios:  Normally, one entry refers to the
    antecedent term of the ratio, and the other entry refers to the
    consequent term of the ratio.  When evaluating the latter one,
    the ratio should be inverted.
2017-10-04 14:25:01 -04:00
Ell
7362d47922 libgimpwidgets: use struct, not parameters, to pass eevl options
Pass the evaluation options to gimp_eevl_evaluate() using a single
parameter of type GimpEevlOptions, instead of using individual
parameters for each option.  Add a GIMP_EEVL_OPTIONS_INIT macro,
used to initialize a GimpEevlOptions struct to the default set of
options.  This would allow us to add evaluation options more
easily.
2017-10-04 14:25:01 -04:00
Ell
0ae7acd594 app: in xcf-load, avoid writing buffer data for empty tiles
When loading tile data, avoid copying the data into the GEGL
buffer when the tile is empty (i.e., all its bytes are 0), so that
GEGL doesn't allocate memory for it unnecessarily.
2017-10-04 06:51:34 -04:00
2a0c610e02 app: don't show the manual language list when no manuals are installed. 2017-10-04 00:36:45 +02:00
b1f8f60229 app: fix building GUI language store instead of empty manual language...
... store.
2017-10-03 23:37:21 +02:00
e6b55392d2 NEWS: add Wavelet Decompose improvements and update localization list. 2017-10-03 22:52:55 +02:00
656914a344 NEWS: add new capability of reading manual of any localization...
... not only the GUI localization.
If you installed other manuals, these will be proposed.
2017-10-03 21:17:42 +02:00
3061333fdb app: the manual language can now be customized through the Preferences. 2017-10-03 20:49:27 +02:00
6608196978 app: reuse GimpLanguageComboBox to show available manual languages.
Better factorize by reusing code rather than recreating a combo box
which does basically the same thing. I only added a boolean parameter to
retrieve only the sublist of manual language.
It also takes advantage of the self-translated language names from
initialization.
2017-10-03 20:49:27 +02:00
d0bb3efff4 libgimpcolor: follow API updates in babl 2017-10-03 16:15:46 +02:00
a7620b08aa Bug 788399 - Corrupted display of sample points
In gimp_canvas_sample_point_get_extents(), use the drawn number's
actual size instead of some random constant that was good enough for
my own font size.
2017-10-01 19:39:56 +02:00
8f3cee4241 app: also fix the calls to xcf_read,write-component() 2017-10-01 17:43:10 +02:00
4503dad78c app: also, it's not the number of pixels but the number of components, sigh 2017-10-01 17:39:54 +02:00
ebbcaddae7 app: enable XCF version 12 which finally saves big-endian tile data only 2017-10-01 17:28:20 +02:00
2e0035c9df app: XCF endian swapping was still not correct
The number of pixels is "tile_size / bpp", not "tile_size / n_components".
2017-10-01 17:27:04 +02:00
bda06dd450 Update Polish translation 2017-10-01 14:09:51 +02:00
46e7d02d5a Update German translation 2017-09-30 13:58:03 +00:00
Ell
33b05cd367 Bug 786844 - Issue with grain merge layer mode
Use 128/255, rather than 0.5, as the half-intensity value for
legacy layer modes that use it explicitly, to match 2.8 results.
2017-09-28 10:31:39 -04:00
7da0153f17 Update Galician translation 2017-09-28 13:56:47 +00:00
6efbe67dc4 Update Russian translation 2017-09-28 04:25:44 +03:00
290c5f54e3 wavelet-decompose: marke user-visible messages for translation 2017-09-28 04:10:55 +03:00
fbf0d33323 Mark user-visible messages for translation 2017-09-28 03:59:44 +03:00
88e6dc46af plug-ins: use a domain on g_set_error().
Without a domain error, glib outputs on console:
> g_error_new_valist: runtime check failed: (domain != 0)
Let's just create a domain error for the file-pdf-load plugin.
2017-09-26 23:48:52 +02:00
f4d9aa00f1 Bug 788175 - New string in file-pdf-load.c needs plurals. 2017-09-26 23:43:55 +02:00