gimp/plug-ins
Jehan f200594d1c plug-ins: support CMYK import/export for JPEG.
We already had import support through littleCMS. We now use fully
babl/GEGL which makes our code more straightforward and identical,
whichever the input format.

The export support is totally new. It comes with a checkbox to propose
selecting CMYK export and a label displaying the CMYK profile which will
be used.

Now this whole implementation has a few drawbacks so far, but it will be
a good first sample for future CMYK-related improvements to come:

* The export profile I am using is what we call the "simulation
  profile" from the GimpColorConfig. This corresponds to the default
  "Soft-proofing" profile as set in Preferences. In particular, this is
  not the actual soft-proofing profile for this image which might have
  been changed through the View menu because this information is
  currently and unfortunately unavailable to plug-ins. It is not the
  "Preferred CMYK Profile" either, as set in Preferences.
  TODOS:
  - We really need to straighten the soft-proof profile core concept by
    storing it in the image and making it visible to plug-in.
  - Another interesting improvement could be to create a
    GimpColorProfile procedure argument which would be mapped to a color
    profile chooser widget, allowing people to choose profiles in
    plug-ins. For an export plug-in in particular, it could allow to
    select a profile different from the soft-proof one at export time.
* When we export, if no profile is choosen, babl will use a naive
  profile. It would be nice to store this naive profile into the JPEG if
  the "Save color profile" option is checked (same as we store a generic
  sRGB profile when no RGB profile is set).
* When we import, we just import the image as sRGB. Since CMYK gamuts
  are not necessarily within sRGB (some part of the spectrum is usually
  well within, but other well outside), other than the basic conversion
  accuracy issue, we may lose colors. It would be much nicer to be able
  to select an output RGB profile. Optionally if we could create a RGB
  color space which is made to contain the whole input CMYK profile
  color space, without explicit choice step, it would be nice too.
* I am using babl's "cmyk" format, not the expected "CMYK" format.
  "cmyk" is meant to be an inverted CMYK where 0.0 is full ink coverage
  and 1.0 none. Nevertheless when loading the resulting JPEG in other
  software (editors or viewers alike), the normal CMYK would always
  display inverted colors and the inverted cmyk would look fine.
  Finally I found a docs from libjpeg-turbo library, explaining that
  Photoshop was wrongly inverting CMYK color data while it should not.
  This text dates back from 1994, looking at the commit date which
  introduced this paragraph. In the 28 years since then, could this
  color inversion have become the de-facto standard for JPEG because one
  of the main editor would just output all its JPEG files this way?
  See: dfc63d42ee/libjpeg.txt (L1425-L1438)
2022-04-17 23:14:20 +02:00
..
common meson, plug-ins: further fix the no-pkg-config test for libmng. 2022-04-01 18:11:55 +02:00
file-bmp plug-ins: rename "write-color-space-info" arg into "write-color-space". 2022-02-12 01:43:48 +01:00
file-dds plug-ins: fix #7566 Import Issues with Indexed .dds Images 2021-12-01 15:01:48 -05:00
file-exr plug-ins: various g_file_get_path() replaced by g_file_peek_path(). 2021-10-01 18:47:30 +02:00
file-faxg3 plug-ins: various g_file_get_path() replaced by g_file_peek_path(). 2021-10-01 18:47:30 +02:00
file-fits plug-ins: various g_file_get_path() replaced by g_file_peek_path(). 2021-10-01 18:47:30 +02:00
file-fli plug-ins: various g_file_get_path() replaced by g_file_peek_path(). 2021-10-01 18:47:30 +02:00
file-ico plug-ins: change export dialog format name for Windows Cursors. 2022-02-12 13:54:20 +01:00
file-jpeg plug-ins: support CMYK import/export for JPEG. 2022-04-17 23:14:20 +02:00
file-psd Initialize variables that are not initialized to silence warnings. 2022-03-23 23:08:59 +00:00
file-raw Issue #7327: Cannot build GIMP3 on MSYS2 using Meson. 2021-10-12 17:06:18 +02:00
file-sgi plug-ins: various g_file_get_path() replaced by g_file_peek_path(). 2021-10-01 18:47:30 +02:00
file-tiff plug-ins: wrap the warning label to something smaller. 2022-03-11 18:01:29 +01:00
file-webp plug-ins: using a GimpSpinScale instead of a GimpScaleEntry in… 2022-02-19 02:26:11 +01:00
flame app, libgimp, pdb, plug-ins: more functions moved to get|set(). 2021-04-06 14:34:31 +02:00
fractal-explorer app, libgimp, pdb, plug-ins: more functions moved to get|set(). 2021-04-06 14:34:31 +02:00
gfig plug-ins: various g_file_get_path() replaced by g_file_peek_path(). 2021-10-01 18:47:30 +02:00
gimpressionist app, libgimp*, pdb, plug-ins: use g_memdup2() instead of g_memdup() 2021-08-26 17:32:09 +02:00
gradient-flare Fix warn -Warray-parameter gflare_read_gradient_name gflare_write_gradient_name 2022-03-29 16:33:58 +00:00
help Fix: unable to open online help 2022-03-23 15:40:28 -04:00
help-browser plug-ins: clean up the patch !519 as per review. 2022-03-25 14:55:25 +01:00
ifs-compose app, libgimp, pdb, plug-ins: more functions moved to get|set(). 2021-04-06 14:34:31 +02:00
imagemap plug-ins: various g_file_get_path() replaced by g_file_peek_path(). 2021-10-01 18:47:30 +02:00
lighting plug-ins: fix #5305 Lighting Effects crashes when I use a channel as Bumpmap 2021-12-17 12:06:18 -05:00
map-object app, libgimp, pdb, plug-ins: more functions moved to get|set(). 2021-04-06 14:34:31 +02:00
metadata plug-ins: replace deprecated gexiv2 functions in metadata-viewer 2022-03-09 11:30:56 -05:00
pagecurl app, libgimp, pdb, plug-ins: more functions moved to get|set(). 2021-04-06 14:34:31 +02:00
print app, libgimp, pdb, plug-ins: more functions moved to get|set(). 2021-04-06 14:34:31 +02:00
python app, libgimp, pdb, plug-ins: batch CLI options now interpreter aware. 2022-04-16 23:28:05 +02:00
screenshot Issue #4009: enables option to capture cursor in screenshot (Windows) 2022-01-19 01:28:47 +00:00
script-fu app, plug-ins: redirect plug-in-script-fu-eval to text console in… 2022-04-17 14:25:44 +02:00
selection-to-path plug-ins: fix all remaining GimpImageProcedure to new run() API. 2021-04-04 01:40:00 +02:00
twain plug-ins: fix many GimpImageProcedure to new run() API. 2021-04-04 01:40:00 +02:00
ui plug-ins: add translation context for tag values 2022-02-02 17:29:48 +00:00
.gitignore Added .gitignore files generated with git svn create-ignore. 2009-01-31 11:37:44 +00:00
Makefile.am plug-ins, extension: goat-exercises becomes a GIMP extension. 2020-10-09 15:30:54 +02:00
meson.build plug-ins, extension: goat-exercises becomes a GIMP extension. 2020-10-09 15:30:54 +02:00