Commit Graph

42080 Commits

Author SHA1 Message Date
Michael Natterer ac57af58a2 libgimpcolor: add gimp_color_profile_get_space()
which returns the Babl space matching the profile.
2018-07-16 14:06:32 +02:00
Ell a810c6b60b app: update GimpToolCompass when display is scaled/rotated
In GimpToolCompass (and, as a consequence, in the measure tool),
update the measured angle when the shell is scaled, rotated, or
flipped, so that we always satisfy the compass's constrains, and
render correctly.
2018-07-16 04:44:47 -04:00
Ell 0f03f9e9f5 app: in GimpToolCompass, add visual distinction between angle lines
When using a GimpToolCompass in 3-point mode, add a small gap after
the angle arc to the line corresponding to the "second" non-origin
point, so that it's visually distinguishable from the line
corresponding to the "first" point.  This has significance for the
measure tool, since it determines the direction of the rotation
when straightening the image (the first point is rotated toward the
second point.)
2018-07-16 02:17:09 -04:00
Ell f026a3fc2d app: keep display-enums.h (sort-of) alphabetically sorted 2018-07-16 01:42:17 -04:00
Ell 2e08c9164a Issue #1850 - Undoing the "straighten" operation in the Measure tool ...
... does not restore the measure points

Halt the measure tool after straightening, thus removing the
expectation that undoing the operation should restore the original
points.

Halting the tool, rather than making undo work "as expected",
sidesteps several issues:

  - Implementing undo correctly is tricky, since image-undo and
    tool-undo are handled separately.

  - In fact, the measure tool doesn't provide tool-undo, so that
    image edits can be undone while the tool is active without
    affecting the tool, and it's not clear that we want to change
    this behavior.  However, this makes undoing a straighten
    operation a special case, and it's not entirely clear what the
    behavior should be when undoing other kinds of transformations,
    or when the measure points had changed since the straighten
    operation.

  - Perhaps most importantly, measure tool points are restricted to
    the pixel grid, which means that when measuring an angle
    against an orientation that's not fully horizontal or vertical
    in image space (either using a 3-point angle, or when the
    canvas is rotated), the resulting transformed point after
    straightening doesn't generally land on the pixel grid, causing
    it to be rounded, which can result in a non-zero angle after
    the rotation.  This is especially ugly, since clicking
    "straighten" again at this point would cause another non-
    trivial rotation.
2018-07-16 01:02:08 -04:00
Ell 7a91aabf37 app: bind "orientation" measure-tool option to compass
Bind the "orientation" property of the measure-tool options to the
tool's compass widget's "orientation" property, instead of manually
synchronizing their values.
2018-07-15 19:58:43 -04:00
Michael Natterer 47a008be97 Issue #1805 - Sample Points keep resetting themselves to "Pixel"
Rename XCF property PROP_SAMPLE_POINT to PROP_OLD_SAMPLE_POINT and add
new PROP_SAMPLE_POINT.

The new property saves the sample point's pick mode plus some padding
for whatever else we might want to add. Always save the old property
too so nothing changes for older GIMP versions, and avoid loading the
old property if the new one was loaded before.
2018-07-16 01:42:19 +02:00
Ell cb3b7a1ba5 Issue #1851 - Measure tool straighten rotation is always to the horizontal.
Add an "orientation" option to the measure tool, corresponding to
the "orientation" property of GimpToolCompass (i.e., it controls
the orientation against which the angle is measured, when not in 3-
point mode.)  The orientation is "auto" by default, so that the
angle is always <= 45 deg.  Note that the "orientation" option
affects the tool's "straighten" function, so that the layer is
rotated toward the current orientation.

Use the "pixel-angle" and "unit-angle" properies of
GimpToolCompass to read the measured angle, instead of duplicating
the angle-measurement logic, in particular, so that we benefit from
the improvements/fixes of the previous commit.
2018-07-15 19:09:06 -04:00
Ell d2f33cf1be app: add "orientation" property to GimpToolCompass + improvements
Add an "orientation" property to GimpToolCompass, which can be one
of "auto", "horizontal", or "vertical", and which controls the
orientation of the line against which the angle is measured, when
not in 3-point mode (previously, the line would always be
horizontal.)  When "orientation" is "auto", the orientation is
automatically set to either horizontal or vertical, such that the
measured angle is <= 45 deg.

Keep the line horizontal, or vertical, in display-space, rather
than in image-space, so that the compass works correctly even when
the canvas is rotated and/or flipped.

Fix the compass's behavior when the image's horizontal and vertical
resolutions are different, both with and without dot-for-dot.

Add "pixel-angle" and "unit-angle" read-only properties, which
return the measured angle either with or without taking the image's
resolution into account, respectively.  These properties will be
used by the measure tool in the next commit, instead of having it
implement its own angle calculation.
2018-07-15 19:09:06 -04:00
Ell 4fefab1798 app: fix line-angle constraint when xres != yres
Fix gimp_constrain_line() and friends to properly constrain line
angles when the image's horizontal and vertical resolutions are
different, and dot-for-dot is disabled.
2018-07-15 19:09:06 -04:00
Michael Natterer a0129504c8 Issue #1805 - Sample Points keep resetting themselves to "Pixel"
Remember the sample point's GimpColorPickMode in the sample point
itself, so it is remembered across switching between images.

Not persistent in the XCF yet tho...
2018-07-16 00:43:31 +02:00
Michael Natterer 2aaa133442 libgimpmodude: increment GIMP_MODULE_ABI_VERSION
We don't want 2.x modules to be loaded into 2.99
2018-07-16 00:24:39 +02:00
Michael Natterer f676f2aa79 app: move GimpColorFrameMode to the core and name it GimpColorPickMode 2018-07-15 23:24:50 +02:00
Michael Natterer a7a277efe7 app: sort core-enums.h alphabetically
Sorry for messing with git diffs, but this unsorted mess has been
annoying since forever.
2018-07-15 22:25:43 +02:00
Michael Natterer 827faa2a25 app: minor cleanup in gimpguide.c 2018-07-15 22:25:03 +02:00
Piotr Drąg bac29b4d67 Update Polish translation 2018-07-15 19:59:18 +02:00
Daniel Korostil 18e0aedde3 Update Ukrainian translation 2018-07-15 17:37:50 +00:00
Michael Natterer 2cd829eb85 app: add GimpAuxItem as base class for GimpGuide and GimpSamplePoint
and GimpAuxItemUndo for their respective undo classes.
2018-07-15 17:08:06 +02:00
Michael Natterer b4c244b839 app: turn GimpSamplePoint into a GObject, just like GimpGuide
In fact, they are so similar now, they should get a common abstract
parent class.
2018-07-15 15:58:24 +02:00
Michael Natterer e76eb736d4 app: some cosmetic cleanup in the guide code 2018-07-15 15:51:40 +02:00
Michael Natterer b140b283dc app: rename enum GimpColorPickMode to GimpColorPickTarget
This is just some preparation for fixing issue #1805, but actually
"target" is a much better name so I went the full way and also changed
GUI labels and the color picker tool options config property
accordingly.

If anyone notices at all, how horrible is it to lose your saved pick
target...
2018-07-15 14:32:53 +02:00
Michael Natterer 8b71d32659 app: fix GimpControllerWheel for smooth scrolling events
gimp_controller_wheel_scroll(): attempt to translate smooth scroll
deltas to GdkScrollDirection, controller events are always discrete
steps.

Works fine on X11, no idea how it behaves on other backends, please
check and report.
2018-07-15 13:56:44 +02:00
Ell 432a884715 app: flush async-operations queue when setting async thread count to 0
In gimp-parallel, always flush the async-operations queue (by
executing all remaining operations on the caller thread) when
setting the async-pool thread count to 0 (as happens when setting
GEGL_THREADS=1, per the previous commit,) and not only when
shutting GIMP down.  Otherwise, pending asynchronous operations
can "get lost" when setting GEGL_THREADS to 1.

Additionally, in gimp_gegl_init(), initialize gimp-parallel before
before connecting to GimpGeglConfig's "notify::num-processors"
signal, so that the number of async threads is set *before*
GEGL_THREADS, in order to avoid setting GEGL_THREADS to 1 while
async operations are still executing.

Also, allow setting the number of gimp-parallel-distribute threads
while a gimp-parallel-distribute function is running (which can
happen if gimp-parallel-distribute is used in an async operation,
as is the case for histogram calculation), by waiting for the
parallel-distribute function to finish before setting the number of
threads.
2018-07-15 05:07:20 -04:00
Rodrigo 8dce3f3323 Update Spanish translation 2018-07-15 08:39:02 +00:00
Ell 408540659f app: disable parallel asynchronous operations when GEGL_THREADS=1
When GEGL_THREADS=1, concurrent access to the same buffer is not
safe, which can result in errors if asynchronous operations are
allowed to run in parallel to the main thread (see
https://gitlab.gnome.org/GNOME/gimp/issues/1721#note_265898.)

Disable parallel execution of asynchronous operations when
GEGL_THREADS=1 for now, to fix this.  Ultimately, GEGL should be
able to remain thread-safe even when GEGL_THREADS=1.  Note that we
want to execute asynchronous operations on a separate thread even
when GEGL_THREADS=1, since the goal here is mainly to avoid
blocking the main thread during their execution, rather than
speeding their execution up (in particular, it's benecifical to run
asynchronous operations in parallel even on a single-core machine,
while parallelizing GEGL operations generally isn't.)
2018-07-15 03:44:18 -04:00
luz.paz 719059fb4e gimptoolpolygon.c source typo
Found via `codespell`
2018-07-14 19:07:44 +00:00
luz.paz 732bcb463e Misc. comment typos
Found via `codespell`
2018-07-14 19:07:43 +00:00
Michael Natterer 680642e37c plug-ins, pdb: remove the unsharp-mask plug-in and add a PDB compat proc 2018-07-14 17:11:25 +02:00
Michael Natterer bab75b7365 Change a bazillion URLs to https://
Including all user-visible link and links called from code, like
the help pages.
2018-07-14 14:19:27 +02:00
Michael Natterer c7272d779c po-python: apparently I missed one bugzilla URL before 2018-07-14 13:58:34 +02:00
Michael Natterer 02160a26b0 libgimpthumb: update the URL of the thumbnail spec 2018-07-14 13:25:41 +02:00
Bruno Lopes da Silva 491ebb0619 Update Brazilian Portuguese translation
(cherry picked from commit a7e98a33f5)
2018-07-14 01:07:59 +00:00
Michael Natterer 0fa991fb5f app: undeprecate gimpdisplayshell-selection.c 2018-07-13 19:09:01 +02:00
Michael Natterer 44b469e493 Issue #1841 - Export As... mng swaps width and height
layer_cols and layer_rows were swapped.
2018-07-13 17:55:19 +02:00
Jehan 573ab95315 build: add Wayland socket and bump LibRaw.
Apparently the LibRaw 0.18 was taken down as soon as 0.19 got released.
Thanks to solid_black for reporting it on IRC.
2018-07-13 16:25:11 +02:00
Bruno Lopes da Silva a88279ba4d Update Brazilian Portuguese translation
(cherry picked from commit 9340b68e81)
2018-07-13 14:05:15 +00:00
Michael Natterer 149e4af170 app: remove forgotten prototype from gui.c 2018-07-13 15:28:25 +02:00
Michael Natterer ab30b9537c app: include extensions-dialog.h in dialogs-constructors.c 2018-07-13 15:01:13 +02:00
Michael Natterer af44a5161d libgimpwidgets: fix GimpIntComboBox popup-shown appearance
The old hack doesn't work any longer, there is only one cell layout in
GTK+ 3.x, not separate ones for the button and the popup. Switch back
to recreating the cells in notify::popup-shown.

Also simplify the code, we only need to remember one cell renderer in
our struct, and remove manual resizing code that was only needed in
older GTK+ 2.x vrsions.
2018-07-13 14:50:06 +02:00
Michael Natterer 03feba0f35 libgimpbase, app: remove the plug-in menu_path compat code
Registering a full menu path as a procedure's menu label is now
forbidden and causes the procedure to be rejected.

Bump the plug-in protocol version so a pluginrc containing such cruft
is not used.
2018-07-13 14:07:44 +02:00
Michael Natterer 9ef39b507b app: relax precondition checks in gimp_operation_config_get_type()
Only require the parent type if the requested type is not already
registered.
2018-07-13 13:57:02 +02:00
Daniel Mustieles fd29af341d Update Spanish translation
(cherry picked from commit bfc3b5f780)
2018-07-13 11:54:18 +00:00
Michael Natterer 9629fc8785 app: small formatting fix in gimpfiltertool-widgets.c 2018-07-13 12:39:49 +02:00
Caio Nascimento 55707166f5 Update Brazilian Portuguese translation 2018-07-13 09:17:57 +00:00
Bruno Lopes da Silva ac8b70aa48 Update Brazilian Portuguese translation
(cherry picked from commit edd1d01b41)
2018-07-13 08:42:50 +00:00
Michael Natterer b5b48e51c8 app: remove duplicate include in gimpcurvesconfig.c 2018-07-13 01:17:16 +02:00
Bruno Lopes da Silva a918437f81 Update Brazilian Portuguese translation
(cherry picked from commit 127a982232)
2018-07-12 16:16:55 +00:00
Michael Natterer 397ae027ba Issue #1834 - (gimp-context-get-gradient) could return a gradient name...
...not found if language changed since last session

For various reasons, (gimp-context-get-brush, pattern, gradient, ...)
can return "Standard" which is the untranslatable name of the internal
fallback object.

Therefore, we must accept "Standard" as fallback in all PDB functions
that take brush, pattern, gradient etc. names.
2018-07-12 12:42:49 +02:00
Michael Natterer c3d37140eb Issue #1833 - (gimp-context-get-gradient-repeat-mode) always warns...
...and successfully fails

Commit d2ad2928 removed "gradient-repeat" from GimpPaintOptions, not
considering that it is also used in the PDB.

Move "gradient-repeat" from GimpGradientOptions back to
GimpPaintOptions, and add a comment that it is only used by the
gradient tool, not for painting.
2018-07-12 11:39:42 +02:00
Michael Natterer 829f12040d Forgot two license links... 2018-07-12 00:11:22 +02:00