Commit Graph

39339 Commits

Author SHA1 Message Date
81fe78bd9b app: derive GimpFgBgEditor from GtkEventBox instead of GtkDrawingArea
it doesn't need a visible GdkWindow.
2017-05-19 12:02:48 +02:00
54e2c196b7 app: use 2/3 of the area's shorter side for GimpFgBgEditor's oog color too 2017-05-19 11:55:54 +02:00
331fc27f11 libgimpwidgets: draw GimpColorArea's border on top of the oog indicator
and reduce the indicator to 2/3 of the area's shorter side.
2017-05-19 11:54:59 +02:00
297ec3fdab app: add an out-of-gamut indicator to GimpFgBgEditor 2017-05-19 11:00:38 +02:00
c4dfef0779 libgimpwidgets: add an out-of-gamut indicator to GimpColorArea 2017-05-19 11:00:38 +02:00
Ell
cd5930d813 warp: reorder warp tool options
... to be more similar to the paint options.
2017-05-19 04:56:30 -04:00
Ell
40afffbebc app: add option to stroke the warp tool during cursor motion ...
... and to disable/control the rate of the periodic stroke.

The warp tool is now fast enough to enable stroking directly in
the motion handler, which gives better-quality response to motion
than stroking periodically.  It's not quite fast enough to enable
exact motion, though :/

Allow individually enabling/disabling stroking during motion and
periodically, and allow controlling the rate of the periodical
stroke.
2017-05-19 04:55:29 -04:00
Ell
13b619c474 app: use different samplers for preview and commit in warp tool
Use a fast nearest-neighbor sampler for the map-relative node
during preview, and a slower cubic sampler when comitting/animating.
2017-05-19 04:55:09 -04:00
05874c1268 libgimpconfig: don't gimp_rgb_clamp() in gimp_scanner_parse_color()
so config files can now contain oog RGB values too.
2017-05-19 02:05:57 +02:00
6ab57a12cf Bug 749902 - Add Hue-Chroma operation/tool and LCH color selector
Last bit for now: allow GimpColorScales' spinbuttons to go further
than its color scales. Please review the new min/max values of the
individual channels.
2017-05-18 19:53:47 +02:00
0c2ec6ad86 libgimpwidgets: simplify gimp_scale_entry a lot by using GBindings
Always use separate GtkAdjustments for the scale and the spinbutton,
and link them with a GBinding, either 1:1 or using logarithmic
transform functions.

This change also enables modifying both widgets' ranges independently
after construction, thus enabling the "constrain" feature also for
gimp_color_scale_entry_new().
2017-05-18 18:24:35 +02:00
4f903a69b3 app: set the palette import dialog's "# Colors" scale to logarithmic
because the scale is useless otherwise with its range of 2..10000,
and because I needed a test case for the next commit (the
gimp_scale_entry_set_logarithmic() API was unused).
2017-05-18 18:21:51 +02:00
9d482309bb libgimpwidgets: mark out-of-gamut colors also in the RGB and HSV color areas
instead of showing weird clipped or wrapped RGB values.
2017-05-18 17:59:49 +02:00
5b4dcbfb3e Bug 782759 - strict validation of appdata file fails.
Command line: appstream-util validate-strict gimp.appdata.xml.in
This fixes only the following warning:
value-missing         : <!-- Copyright [year] [name] --> is not present
Screenshot has not the right ratio. We will have to find one or more
replacement screenshots.
2017-05-18 14:18:12 +02:00
Ell
3814ac9056 app: in warp tool, avoid nop strokes with the MOVE behavior
When using the MOVE behavior, don't append the current cursor
position to the stroke path in the timeout proc if the cursor
hasn't moved since last time.  It has no effect, except for
requiring an unnecessary update.
2017-05-17 15:22:47 -04:00
Ell
5be79bc8c4 app: in warp tool, compress motion events
We stroke the last-reported coords in a timeout proc, so there's
no real need for exact motion notification.
2017-05-17 15:22:38 -04:00
Ell
a0b30d542d app: in warp tool, improve update region calc.
... as a result of a stroke change.
2017-05-17 15:21:33 -04:00
2b167d6337 Bug 749902 - Add Hue-Chroma operation/tool and LCH color selector
Add LCH to the color selectors, patch by Elle Stone and myself.

- Extend enum GimpColorSelectorChannel by LCH channels
- Support them in GimpColorScale, GimpColorScales and GimpColorSelect
- Did not yet remove the HSV channels until things are working 100% ok
- Change drawing in GimpColorSelect to be much faster, to compensate
  for babl_process() making the LCH modes pretty slow
- Clean up stuff in GimpColorSelect

This is WIP and should not be considered finished, biggest TODO is
displaying out-of-gamut values in GimpColorScales' spinbuttons.
2017-05-17 19:28:40 +02:00
127e7daeb2 Bug 773461 - Color picker lacks L*a*b* mode
Add LAB readout to Pointer and Sample Points dialogs
2017-05-17 10:27:53 -04:00
Ell
9c7cae6220 app: maintain warp tool graph structure during undo/redo
When undoing a warp stroke, don't disconnect the current warp node
from its predecessor; rather, keep the graph as-is, and only
reconnect the render_node to the previous node.  This avoids
invalidating the undone node, so that redoing it (which, likewise,
only involves reconnecting the render_node) doesn't require
reprocessing, making it much faster.
2017-05-16 20:35:46 -04:00
Ell
13e274d82e app: add "spacing" parameter to warp tool; change "hardness" range
The spacing parameter controls the stroke spacing of the warp op.
It's similar, but not identical, to the brush spacing parameter of
the paint tools.  It provides a tradeoff between speed and quality.

Change the UI range of the hardness parameter from [0, 1] to [0, 100],
to match the other parameters.
2017-05-16 20:35:42 -04:00
f807cbe10b libgimpconfig: change GimpColorConfig's out-of-gamut color to magenta
I have no clue why it was some gray.
2017-05-16 22:43:21 +02:00
ff44cb59d3 libgimpcolor: disable gimp_rgb_clamp() in GimpParamSpecRGB
so from now on all GimpRGB object properties will allow unbounded
sRGB, let's see what happens.
2017-05-16 22:39:55 +02:00
8a0e65e0cb Small fix in Italian translation 2017-05-16 10:26:10 +02:00
d4283316ad Updated Italian translation 2017-05-16 08:47:09 +02:00
0dbdf232d5 app, menus: rename confusing layers-text-tool and vectors-path-tool.
"layers-text-tool" action shows as "Text Tool" while "vectors-path-tool"
shows as "Path Tool". That's very confusing with tools-text and
tools-vectors respectively.
These actions are mostly about entering in edit mode with the active
layer or path. For text layers, it will enter text edition on canvas,
whereas just open the attributes edition dialog on other layers. For
consistency, layers-text-edit is renamed as well too layers-edit-text.
This also fix the side effect of commits 10099bd and 526918b where I
didn't realize that layers-text-tool was also working on non text layers
on purpose (being very badly named). Now there is a separate layers-edit
and layers-edit-text.
Thanks to Pat David for English corrections. :-)
2017-05-16 00:04:24 +02:00
002e7fc98f plug-ins: darktable: implement support for locating darktable on macOS 2017-05-15 14:37:05 +02:00
8199003afa plug-ins: darktable: have separate function to obtain executable name 2017-05-15 14:37:05 +02:00
bb17bcd665 Update German translation 2017-05-15 11:37:22 +00:00
8f2471b112 Bug 772667 - instant freeze on rotate
Limit the number of lines drawn in the transform tool canvas grid to
one line every 5 image pixels. This should probably be done in display
pixels, didn't change that yet.
2017-05-14 22:28:51 +02:00
8534307391 Update Polish translation 2017-05-14 16:01:28 +02:00
f25c0cb9c9 Bug 121446 - Transform tool bounding box for path
When transform tools are applied on a path, set their bounding box as follow:
- if a selection exists, use the selection bounds
- else if the path has a valid bounding box, use it
- else use the image canvas bounds

Also disable transform tools on an empty path (path without strokes) since
there is no data to transform.
2017-05-13 23:04:22 +02:00
Ell
bb2417c299 app: add ui_meta keys for controlling some UI attributes dynamically
Add support for The following GEGL op property keys, which shall
contain GUM expressions of the specified type, controlling the
corresponding UI attributes of the property's widget:

  - sensitive [boolean]: controls widget sensitivity.

  - visible [boolean]: controls widget visibility.

  - label [string]: controls widget label (or the label of the
    associated label widget).

  - description [string]: controls widget tooltip text.

When any of above keys are present, the values they evaluate to take
precedence over the static values the corresponding attributes would
otherwise have.
2017-05-13 16:55:24 -04:00
Ell
d6eb927b9e app: add interpreter for the GUM language
GUM is a small DSL, used in some property keys of GEGL operations
to dynamically control UI attributes based on context.  This commit
only adds an interpreter for the language; see the next commit for
the actual handling of the relevant keys.

See the comment at the top of gimppropgui-eval.c for a description
of the language.

Note that the interpreter is licensed under the LGPL.
2017-05-13 16:51:32 -04:00
bb977263ca app: layers-text-tool should give the focus to the canvas.
If focus is on the layer list for instance, running this action from
right-click menu raises the on-canvas toolbar, ready for edition, with a
visible text cursor. But if the canvas has no focus (since you clicked
on the layer list, it has the focus), you still have to move your mouse
over and click the text on canvas. That doesn't make sense and there
would be barely any reason to use this over selecting the text tool then
clicking the canvas.
2017-05-13 01:03:44 +02:00
526918b26c app: layers_text_tool_cmd_callback() is not supposed to be run on...
... non-text layers.
Since commit 10099bd, the action will be non-sensitive with non-text
layers, so if it happens, there is a bug somewhere. Therefore
g_return_if_fail() on this condition.
Moreover opening the edit attributes dialog was absolutely confusing on
what this action is supposed to do. We should not have these kind of
random behaviors.
2017-05-13 00:01:56 +02:00
10099bdaf7 app: layers-text-tool action should only be sensitive when active...
... layer is a text layer.
It doesn't make sense to activate the text tool on any other kind of
layer.
2017-05-13 00:00:35 +02:00
Ell
99ab780d9f app: update layer backdrop only after removing from stack
When a layer is removed from a layer stack, and its backdrop needs
invalidating, emit the UPDATE signals for the backdrop only after
the layer has been removed from the container.
2017-05-12 15:54:08 -04:00
Ell
dd8e2e9b5e app: don't invalidate layer when invalidating its backdrop
Harmless, but unnecessary.
2017-05-12 15:54:07 -04:00
590924f856 build: update the flatpak-howto.
In particular, I didn't have the correct metadata because I was missing
appstream-compose. This should be a dependency of flatpak. But for the
time being, let's just have a note in our howto.
2017-05-12 21:44:41 +02:00
Ell
07ac78ef8d app: add GimpLayerStack
A subclass of GimpDrawableStack, for layer stacks.  Invalidates the
layers' backdrop as/when necessary, according to the value of their
excludes_backdrop property.

Make gimp_drawable_stack_update() protected, instead of private, so
that we can use it in GimpLayerStack.
2017-05-11 17:44:56 -04:00
Ell
a051002295 app: add GimpLayer::excludes_backdrop property
A boolean flag, specifying whether the backdrop is clipped to the
layer.  That's the case when the layer's composite mode is dst-atop
or src-in.

This is a read-only property, derived from the other attributes of
the layer.  We compute its value through a virtual function, so that
GimpGroupLayer will eventually be able to specialize it for pass-
through groups.

The next commit uses this property to actually do something useful.
2017-05-11 17:44:55 -04:00
Ell
a67135658e app: add gimp_layer_mode_get_included_region()
Takes a layer mode and a composite mode, and returns the region
included in the composition.

Use this function in GimpOperationLayerMode, instead of testing
for specific composite modes directly.  Will also be used by
the next commit.

Indentation cleanup in gimp_layer_modes.h
2017-05-11 17:44:55 -04:00
Ell
c78cecd76d app: rename GimpLayerModeAffectMask to GimpLayerCompositeRegion
... so that we can use it for other functions that involve
compositing regions (which we do in the next commit).

Rename gimp_operation_layer_mode_get_affect_mask() and
friends to _get_affected_region().
2017-05-11 17:44:55 -04:00
Ell
b5974d3457 app: make LCH lightness select-criterion faster
babl already has a faster path for getting L only, than going
through LCH.
2017-05-11 17:44:55 -04:00
465eba3260 app: factor out button-2-motion handling code in GimpDisplayShell
less code in the huge gimp_display_shell_canvas_tool_events().
Also fix the rotating cursor in gimp_display_shell_start_scrolling().
2017-05-11 21:31:41 +02:00
a78098bcd1 INSTALL: add GIO and glib-networking in the list of required packages.
Also do a bit of reformating in the table.
2017-05-10 22:11:52 +02:00
bb19660769 configure: add hard dependency on glib-networking.
Use a code test inspired by libsoup configure test.
This is a hard dependency because HTTPS should not be considered an
option anymore. Nowadays most websites will use HTTPS by default, HTTP
gives SEO penalties and browsers are starting to display various
security warnings on HTTP websites.
Also the experience will be significantly degraded without SSL/TLS
support since the help browser will fail to load the manual remotely,
and opening various remote files on secure protocols will fail.
Note: the test cannot be performed while cross-compiling. In this case,
we will just display a warning for packagers to be at least well aware
of this dependency.
2017-05-10 22:06:54 +02:00
0c98028f3b app: don't hide the transformed layer for the flip tool
flip has no interaction.
2017-05-10 15:12:21 +02:00
fb9e957714 Updated Italian translation 2017-05-10 13:14:44 +02:00