Commit Graph

42014 Commits

Author SHA1 Message Date
Øyvind Kolås 5fdcc0dfbb configure/app: depend on babl 0.1.54 2018-07-23 04:44:58 +02:00
Piotr Drąg 550e2905dd Update Polish translation 2018-07-22 19:59:42 +02:00
Piotr Drąg 255e5a52a4 modules: fix typos in ACES RRT’s translatable strings 2018-07-22 18:58:46 +02:00
Piotr Drąg 2e6b8082c8 Update POTFILES.in 2018-07-22 18:55:43 +02:00
Øyvind Kolås 768a4d439d modules: rename filmic display filter to ACES RRT
Even though the ACES RRT is a filmic mapping, and the current code is only an
approximation of the luminance aspects (ignoring saturation and hue sweeteners)
the intent of this display filter will be to implement a non-LUT based close to
standard conformant parametric ACES RRT in C for use in ACES workflows.
2018-07-22 15:04:36 +02:00
Michael Schumacher 9a03a7f6cd icons: add missing Symbolic/24/gimp-color-space-non-linear.png 2018-07-22 01:09:40 +02:00
Michael Schumacher 97f6179281 icons: add missing Symbolic/16/gimp-color-space-non-linear.png 2018-07-22 00:50:50 +02:00
Michael Schumacher ce0d6b3799 icons: add missing file 16/gimp-color-space-non-linear.png 2018-07-22 00:36:25 +02:00
Michael Natterer e09e563a70 Initial space invasion commit in GIMP
All babl formats now have a space equivalent to a color profile,
determining the format's primaries and TRCs. This commit makes GIMP
aware of this.

libgimp:

- enum GimpPrecision: rename GAMMA values to NON_LINEAR and keep GAMMA
  as deprecated aliases, add PERCEPTUAL values so we now have LINEAR,
  NON_LINEAR and PERCPTUAL for each encoding, matching the babl
  encoding variants RGB, R'G'B' and R~G~B~.

- gimp_color_transform_can_gegl_copy() now returns TRUE if both
  profiles can return a babl space, increasing the amount of fast babl
  color conversions significantly.

- TODO: no solution yet for getting libgimp drawable proxy buffers in
  the right format with space.

plug-ins:

- follow the GimpPrecision change.

- TODO: everything else unchanged and partly broken or sub-optimal,
  like setting a new image's color profile too late.

app:

- add enum GimpTRCType { LINEAR, NON_LINEAR, PERCEPTUAL } as
  replacement for all "linear" booleans.

- change gimp-babl functions to take babl spaces and GimpTRCType
  parameters and support all sorts of new perceptual ~ formats.

- a lot of places changed in the early days of goat invasion didn't
  take advantage of gimp-babl utility functions and constructed
  formats manually. They all needed revisiting and many now use much
  simpler code calling gimp-babl API.

- change gimp_babl_format_get_color_profile() to really extract a
  newly allocated color profile from the format, and add
  gimp_babl_get_builtin_color_profile() which does the same as
  gimp_babl_format_get_color_profile() did before. Visited all callers
  to decide whether they are looking for the format's actual profile,
  or for one of the builtin profiles, simplifying code that only needs
  builtin profiles.

- drawables have a new get_space_api(), get_linear() is now get_trc().

- images now have a "layer space" and an API to get it,
  gimp_image_get_layer_format() returns formats in that space.

- an image's layer space is created from the image's color profile,
  change gimpimage-color-profile to deal with that correctly

- change many babl_format() calls to babl_format_with_space() and take
  the space from passed formats or drawables

- add function gimp_layer_fix_format_space() which replaces the
  layer's buffer with one that has the image's layer format, but
  doesn't change pixel values

- use gimp_layer_fix_format_space() to make sure layers loaded from
  XCF and created by plug-ins have the right space when added to the
  image, because it's impossible to always assign the right space upon
  layer creation

- "assign color profile" and "discard color profile" now require use
  of gimp_layer_fix_format_space() too because the profile is now
  embedded in all formats via the space.  Add
  gimp_image_assign_color_profile() which does all that and call it
  instead of a simple gimp_image_set_color_profile(), also from the
  PDB set-color-profile functions, which are essentially "assign" and
  "discard" calls.

- generally, make sure a new image's color profile is set before
  adding layers to it, gimp_image_set_color_profile() is more than
  before considered know-what-you-are-doing API.

- take special precaution in all places that call
  gimp_drawable_convert_type(), we now must pass a new_profile from
  all callers that convert layers within the same image (such as
  image_convert_type, image_convert_precision), because the layer's
  new space can't be determined from the image's layer format during
  the call.

- change all "linear" properties to "trc", in all config objects like
  for levels and curves, in the histogram, in the widgets. This results
  in some GUI that now has three choices instead of two.
  TODO: we might want to reduce that back to two later.

- keep "linear" boolean properties around as compat if needed for file
  pasring, but always convert the parsed parsed boolean to
  GimpTRCType.

- TODO: the image's "enable color management" switch is currently
  broken, will fix that in another commit.
2018-07-21 16:42:57 +02:00
Michael Natterer 5c94ebaed3 libgimpwidgets, icons: add gimp-color-space-non-linear icon
For now just a copy of the "perceptual" icon.
2018-07-20 17:21:53 +02:00
Rodrigo 9b9ca43777 Update Spanish translation 2018-07-19 11:20:23 +00:00
Rodrigo 69100f7e6d Update Spanish translation 2018-07-19 11:12:47 +00:00
Jehan 955136e74b app: do not show close button to extensions dialog.
The "OK" button next to the close button is quite redundant.
2018-07-19 12:56:49 +02:00
Daniel Korostil e49cfd0e44 Update Ukrainian translation 2018-07-19 10:26:07 +00:00
Rodrigo dec35b98e0 Update Spanish translation
(cherry picked from commit 8954a0e24c)
2018-07-19 09:01:51 +00:00
Ell 6b1d77b11c Issue #1874 - Critical error after selecting "Edit Text on Canvas" ...
... from layer context menu

In gimp_text_tool_set_layer(), do nothing if the input layer is the
currently-edited layer, otherwise we get a CRITICAL.
2018-07-19 02:27:07 -04:00
Jehan dbb9555d2f Issue #788: also install all python plug-ins in their own directory.
It seems I forgot to also install python plug-ins in a subdirectory
(because they are deactivated on master for the time being). I even
found a year-old patch from myself rotting in the tracker, and which was
doing exactly this.
I redid it, improved to fit changes.
2018-07-18 22:11:39 +02:00
Dimitris Spingos (Δημήτρης Σπίγγος) 1cd87e2e9a Update Greek translation 2018-07-18 17:08:11 +03:00
Ell 534e8aa92c app: improve file-handler sorting
... by falling back to the procedure name as a last resort.
2018-07-18 09:27:22 -04:00
Jehan 530a2bd9a5 INSTALL: add some recommended dependencies to GEGL.
This is a "for info" comment so that packagers don't forget them when we
sometimes depend on some specific GEGL dependencies.
2018-07-18 13:12:27 +02:00
Jehan c9a382f7bd app: connect the switch to start/stop the extension. 2018-07-18 12:11:14 +02:00
Jehan d68a68c54d app: add "running" property to extension.
And connect to this property in the extension manager to allow dynamic
reload when starting/stopping an extension. It doesn't work yet for
extensions with plug-ins but works with other kinds of data.
2018-07-18 12:08:57 +02:00
Jehan acdf169d97 app: set overrided system extensions as unsensitive.
When a user extension with same id as a system extension is installed,
set the system extension unsensitive in the GUI (as well as extensions
with missing requirements, though it is not implemented yet).

The reason why I broke this change in 2 commits (with the previous
commit) is because it will allow to easily cherry-pick the core code
commits whereas the GTK+ code will have to be reimplemented for
gimp-2-10 since this widget uses GTK+3 API.
2018-07-17 19:45:51 +02:00
Jehan 4d745743e8 app: functions to manage running extensions.
Add gimp_extension_manager_can_run() and rename function:
s/gimp_extension_manager_is_active/gimp_extension_manager_is_running/

A system extension cannot be run if it has been overrided by a
user-installed extension of same ID. Moreover extensions can have GIMP
version requirements as well as have dependency on other extensions
(though these are not implemented yet).
2018-07-17 19:45:51 +02:00
Jehan 02aec4c3d6 app: serialize and deserialize extensionrc from GimpExtensionManager.
We only save the active state of extensions so that we can reload all
extensions same as they were at previous exit. All other data are saved
as per-extension metadata and should not be saved in the rc file.

If an extension is not listed in extensionrc, we run it by default if
this is a system extension (so that new core extensions by the GIMP team
are run when installed after an updated), but not when they are
user-installed extensions.
2018-07-17 19:45:51 +02:00
Jehan bc427479e0 libgimpconfig: update some description comments.
Second parameter of gimp_scanner_parse_token() and
gimp_scanner_parse_identifier() is not a return value. It is a value to
compare with.
2018-07-17 19:45:51 +02:00
Piotr Drąg 3d6a9f3ab5 Update POTFILES.in 2018-07-17 16:35:21 +02:00
Øyvind Kolås fe14feaaff modules: add a filmic proof display filter
Add a display filter that can be used in scene-referred imaging workflows,
this is using a luminance-only approximation of the ACES filmic HDR to SDR
proofing mapping - see link in source comment for details.
2018-07-17 16:04:04 +02:00
Ell b2a9bb4688 app: fix dynamics editor "fade" curve color
In the dynamics editor, use the neutral curve color, which depends
on the current theme, for the "fade" curve, instead of hard-coding
it to dark gray, which is hardly visible with dark themes.
2018-07-17 09:18:06 -04:00
Ell bfc2681753 app: indentation fix in gimppluginmanager-restore.c 2018-07-17 03:18:13 -04:00
Ell 0320126254 Issue #1825 - PSD files are loaded as merged by default ...
... depending on UI language

Use gimp_register_file_handler_priority(), added in the previous
commit, to increase the priority of the merged PSD loader, so that
the non-merged loader is always preferred over it (unless
explicitly chosen), regardless of the UI language.
2018-07-17 02:56:20 -04:00
Ell b4ac956859 app, pdb: add gimp-register-file-handler-priority procedure
Add a gimp-register-file-handler-priority procedure, which can be
used to set the priority of a file-handler procedure.  When more
than one file-handler procedure matches a file, the procedure with
the lowest priority is used; if more than one procedure has the
lowest priority, it is unspecified which one of them is used.  The
default priority of file-handler procedures is 0.

Add the necessary plumbing (plus some fixes) to the plug-in manager
to handle file-handler priorities.  In particular, use two
different lists for each type of file-handler procedures: one meant
for searching, and is sorted according to priority, and one meant
for display, and is sorted alphabetically.
2018-07-17 02:56:18 -04:00
Øyvind Kolås e707e55f82 app: update babl API usage
The space constructor from icc profile is now name spaced in the same
prefix as all the other space constructors in babl.
2018-07-16 19:04:17 +02:00
Michael Natterer ac5f44eb74 app: opaque in gimp_layer_new() is 1.0 not 255
The value is later CLAMP()ed correctly, but fix the call in xcf-load.c
anyway.
2018-07-16 14:47:10 +02:00
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