[gimp] app: move layer mode enums and gimp-layer-modes.[ch] to operations/
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app: move layer mode enums and gimp-layer-modes.[ch] to operations/
- Date: Sun, 5 Feb 2017 15:02:23 +0000 (UTC)
commit 2950fecf0758ce1e65e131869972d1e90a2c8a9c
Author: Michael Natterer <mitch gimp org>
Date: Sun Feb 5 15:59:29 2017 +0100
app: move layer mode enums and gimp-layer-modes.[ch] to operations/
and to operations/layer-modes/, respectively.
Add gimp_layer_modes_init() which asserts on the correct order of the
GimpLayerModeInfo array, and switch to accessing the array directly in
gimp_layer_mode_info().
app/core/Makefile.am | 2 -
app/core/core-enums.c | 218 ----
app/core/core-enums.h | 109 --
app/core/gimp-layer-modes.c | 574 ----------
app/gegl/gimp-gegl-nodes.c | 2 +-
app/operations/gimp-operations.c | 3 +
app/operations/layer-modes/Makefile.am | 2 +
app/operations/layer-modes/gimp-layer-modes.c | 1175 ++++++++++++++++++++
.../layer-modes}/gimp-layer-modes.h | 17 +
.../layer-modes/gimpoperationlayermode.c | 570 +----------
.../layer-modes/gimpoperationlayermode.h | 20 -
app/operations/operations-enums.c | 218 ++++
app/operations/operations-enums.h | 116 ++-
app/paint/gimpbrushcore.c | 3 +-
app/paint/gimpink.c | 3 +-
app/paint/gimppaintcore-loops.c | 3 +-
app/paint/gimppaintcore.c | 3 +-
app/widgets/gimplayermodebox.c | 2 +-
app/widgets/gimplayermodecombobox.c | 2 +-
tools/pdbgen/enums.pl | 48 +-
20 files changed, 1566 insertions(+), 1524 deletions(-)
---
diff --git a/app/core/Makefile.am b/app/core/Makefile.am
index 3a28eb4..20f439f 100644
--- a/app/core/Makefile.am
+++ b/app/core/Makefile.am
@@ -44,8 +44,6 @@ libappcore_a_sources = \
gimp-gradients.h \
gimp-gui.c \
gimp-gui.h \
- gimp-layer-modes.c \
- gimp-layer-modes.h \
gimp-memsize.c \
gimp-memsize.h \
gimp-modules.c \
diff --git a/app/core/core-enums.c b/app/core/core-enums.c
index c76109f..25c04c9 100644
--- a/app/core/core-enums.c
+++ b/app/core/core-enums.c
@@ -285,224 +285,6 @@ gimp_histogram_channel_get_type (void)
}
GType
-gimp_layer_mode_get_type (void)
-{
- static const GEnumValue values[] =
- {
- { GIMP_LAYER_MODE_NORMAL, "GIMP_LAYER_MODE_NORMAL", "normal" },
- { GIMP_LAYER_MODE_DISSOLVE, "GIMP_LAYER_MODE_DISSOLVE", "dissolve" },
- { GIMP_LAYER_MODE_BEHIND, "GIMP_LAYER_MODE_BEHIND", "behind" },
- { GIMP_LAYER_MODE_MULTIPLY_LEGACY, "GIMP_LAYER_MODE_MULTIPLY_LEGACY", "multiply-legacy" },
- { GIMP_LAYER_MODE_SCREEN_LEGACY, "GIMP_LAYER_MODE_SCREEN_LEGACY", "screen-legacy" },
- { GIMP_LAYER_MODE_OVERLAY_LEGACY, "GIMP_LAYER_MODE_OVERLAY_LEGACY", "overlay-legacy" },
- { GIMP_LAYER_MODE_DIFFERENCE_LEGACY, "GIMP_LAYER_MODE_DIFFERENCE_LEGACY", "difference-legacy" },
- { GIMP_LAYER_MODE_ADDITION_LEGACY, "GIMP_LAYER_MODE_ADDITION_LEGACY", "addition-legacy" },
- { GIMP_LAYER_MODE_SUBTRACT_LEGACY, "GIMP_LAYER_MODE_SUBTRACT_LEGACY", "subtract-legacy" },
- { GIMP_LAYER_MODE_DARKEN_ONLY_LEGACY, "GIMP_LAYER_MODE_DARKEN_ONLY_LEGACY", "darken-only-legacy" },
- { GIMP_LAYER_MODE_LIGHTEN_ONLY_LEGACY, "GIMP_LAYER_MODE_LIGHTEN_ONLY_LEGACY", "lighten-only-legacy" },
- { GIMP_LAYER_MODE_HSV_HUE_LEGACY, "GIMP_LAYER_MODE_HSV_HUE_LEGACY", "hsv-hue-legacy" },
- { GIMP_LAYER_MODE_HSV_SATURATION_LEGACY, "GIMP_LAYER_MODE_HSV_SATURATION_LEGACY",
"hsv-saturation-legacy" },
- { GIMP_LAYER_MODE_HSV_COLOR_LEGACY, "GIMP_LAYER_MODE_HSV_COLOR_LEGACY", "hsv-color-legacy" },
- { GIMP_LAYER_MODE_HSV_VALUE_LEGACY, "GIMP_LAYER_MODE_HSV_VALUE_LEGACY", "hsv-value-legacy" },
- { GIMP_LAYER_MODE_DIVIDE_LEGACY, "GIMP_LAYER_MODE_DIVIDE_LEGACY", "divide-legacy" },
- { GIMP_LAYER_MODE_DODGE_LEGACY, "GIMP_LAYER_MODE_DODGE_LEGACY", "dodge-legacy" },
- { GIMP_LAYER_MODE_BURN_LEGACY, "GIMP_LAYER_MODE_BURN_LEGACY", "burn-legacy" },
- { GIMP_LAYER_MODE_HARDLIGHT_LEGACY, "GIMP_LAYER_MODE_HARDLIGHT_LEGACY", "hardlight-legacy" },
- { GIMP_LAYER_MODE_SOFTLIGHT_LEGACY, "GIMP_LAYER_MODE_SOFTLIGHT_LEGACY", "softlight-legacy" },
- { GIMP_LAYER_MODE_GRAIN_EXTRACT_LEGACY, "GIMP_LAYER_MODE_GRAIN_EXTRACT_LEGACY", "grain-extract-legacy" },
- { GIMP_LAYER_MODE_GRAIN_MERGE_LEGACY, "GIMP_LAYER_MODE_GRAIN_MERGE_LEGACY", "grain-merge-legacy" },
- { GIMP_LAYER_MODE_COLOR_ERASE, "GIMP_LAYER_MODE_COLOR_ERASE", "color-erase" },
- { GIMP_LAYER_MODE_OVERLAY, "GIMP_LAYER_MODE_OVERLAY", "overlay" },
- { GIMP_LAYER_MODE_LCH_HUE, "GIMP_LAYER_MODE_LCH_HUE", "lch-hue" },
- { GIMP_LAYER_MODE_LCH_CHROMA, "GIMP_LAYER_MODE_LCH_CHROMA", "lch-chroma" },
- { GIMP_LAYER_MODE_LCH_COLOR, "GIMP_LAYER_MODE_LCH_COLOR", "lch-color" },
- { GIMP_LAYER_MODE_LCH_LIGHTNESS, "GIMP_LAYER_MODE_LCH_LIGHTNESS", "lch-lightness" },
- { GIMP_LAYER_MODE_NORMAL_LINEAR, "GIMP_LAYER_MODE_NORMAL_LINEAR", "normal-linear" },
- { GIMP_LAYER_MODE_BEHIND_LINEAR, "GIMP_LAYER_MODE_BEHIND_LINEAR", "behind-linear" },
- { GIMP_LAYER_MODE_MULTIPLY, "GIMP_LAYER_MODE_MULTIPLY", "multiply" },
- { GIMP_LAYER_MODE_MULTIPLY_LINEAR, "GIMP_LAYER_MODE_MULTIPLY_LINEAR", "multiply-linear" },
- { GIMP_LAYER_MODE_SCREEN, "GIMP_LAYER_MODE_SCREEN", "screen" },
- { GIMP_LAYER_MODE_SCREEN_LINEAR, "GIMP_LAYER_MODE_SCREEN_LINEAR", "screen-linear" },
- { GIMP_LAYER_MODE_OVERLAY_LINEAR, "GIMP_LAYER_MODE_OVERLAY_LINEAR", "overlay-linear" },
- { GIMP_LAYER_MODE_DIFFERENCE, "GIMP_LAYER_MODE_DIFFERENCE", "difference" },
- { GIMP_LAYER_MODE_DIFFERENCE_LINEAR, "GIMP_LAYER_MODE_DIFFERENCE_LINEAR", "difference-linear" },
- { GIMP_LAYER_MODE_ADDITION, "GIMP_LAYER_MODE_ADDITION", "addition" },
- { GIMP_LAYER_MODE_ADDITION_LINEAR, "GIMP_LAYER_MODE_ADDITION_LINEAR", "addition-linear" },
- { GIMP_LAYER_MODE_SUBTRACT, "GIMP_LAYER_MODE_SUBTRACT", "subtract" },
- { GIMP_LAYER_MODE_SUBTRACT_LINEAR, "GIMP_LAYER_MODE_SUBTRACT_LINEAR", "subtract-linear" },
- { GIMP_LAYER_MODE_DARKEN_ONLY, "GIMP_LAYER_MODE_DARKEN_ONLY", "darken-only" },
- { GIMP_LAYER_MODE_LIGHTEN_ONLY, "GIMP_LAYER_MODE_LIGHTEN_ONLY", "lighten-only" },
- { GIMP_LAYER_MODE_HSV_HUE, "GIMP_LAYER_MODE_HSV_HUE", "hsv-hue" },
- { GIMP_LAYER_MODE_HSV_SATURATION, "GIMP_LAYER_MODE_HSV_SATURATION", "hsv-saturation" },
- { GIMP_LAYER_MODE_HSV_COLOR, "GIMP_LAYER_MODE_HSV_COLOR", "hsv-color" },
- { GIMP_LAYER_MODE_HSV_VALUE, "GIMP_LAYER_MODE_HSV_VALUE", "hsv-value" },
- { GIMP_LAYER_MODE_DIVIDE, "GIMP_LAYER_MODE_DIVIDE", "divide" },
- { GIMP_LAYER_MODE_DIVIDE_LINEAR, "GIMP_LAYER_MODE_DIVIDE_LINEAR", "divide-linear" },
- { GIMP_LAYER_MODE_DODGE, "GIMP_LAYER_MODE_DODGE", "dodge" },
- { GIMP_LAYER_MODE_DODGE_LINEAR, "GIMP_LAYER_MODE_DODGE_LINEAR", "dodge-linear" },
- { GIMP_LAYER_MODE_BURN, "GIMP_LAYER_MODE_BURN", "burn" },
- { GIMP_LAYER_MODE_BURN_LINEAR, "GIMP_LAYER_MODE_BURN_LINEAR", "burn-linear" },
- { GIMP_LAYER_MODE_HARDLIGHT, "GIMP_LAYER_MODE_HARDLIGHT", "hardlight" },
- { GIMP_LAYER_MODE_HARDLIGHT_LINEAR, "GIMP_LAYER_MODE_HARDLIGHT_LINEAR", "hardlight-linear" },
- { GIMP_LAYER_MODE_SOFTLIGHT, "GIMP_LAYER_MODE_SOFTLIGHT", "softlight" },
- { GIMP_LAYER_MODE_SOFTLIGHT_LINEAR, "GIMP_LAYER_MODE_SOFTLIGHT_LINEAR", "softlight-linear" },
- { GIMP_LAYER_MODE_GRAIN_EXTRACT, "GIMP_LAYER_MODE_GRAIN_EXTRACT", "grain-extract" },
- { GIMP_LAYER_MODE_GRAIN_EXTRACT_LINEAR, "GIMP_LAYER_MODE_GRAIN_EXTRACT_LINEAR", "grain-extract-linear" },
- { GIMP_LAYER_MODE_GRAIN_MERGE, "GIMP_LAYER_MODE_GRAIN_MERGE", "grain-merge" },
- { GIMP_LAYER_MODE_GRAIN_MERGE_LINEAR, "GIMP_LAYER_MODE_GRAIN_MERGE_LINEAR", "grain-merge-linear" },
- { GIMP_LAYER_MODE_VIVID_LIGHT, "GIMP_LAYER_MODE_VIVID_LIGHT", "vivid-light" },
- { GIMP_LAYER_MODE_VIVID_LIGHT_LINEAR, "GIMP_LAYER_MODE_VIVID_LIGHT_LINEAR", "vivid-light-linear" },
- { GIMP_LAYER_MODE_PIN_LIGHT, "GIMP_LAYER_MODE_PIN_LIGHT", "pin-light" },
- { GIMP_LAYER_MODE_PIN_LIGHT_LINEAR, "GIMP_LAYER_MODE_PIN_LIGHT_LINEAR", "pin-light-linear" },
- { GIMP_LAYER_MODE_LINEAR_LIGHT, "GIMP_LAYER_MODE_LINEAR_LIGHT", "linear-light" },
- { GIMP_LAYER_MODE_LINEAR_LIGHT_LINEAR, "GIMP_LAYER_MODE_LINEAR_LIGHT_LINEAR", "linear-light-linear" },
- { GIMP_LAYER_MODE_HARD_MIX, "GIMP_LAYER_MODE_HARD_MIX", "hard-mix" },
- { GIMP_LAYER_MODE_HARD_MIX_LINEAR, "GIMP_LAYER_MODE_HARD_MIX_LINEAR", "hard-mix-linear" },
- { GIMP_LAYER_MODE_EXCLUSION, "GIMP_LAYER_MODE_EXCLUSION", "exclusion" },
- { GIMP_LAYER_MODE_EXCLUSION_LINEAR, "GIMP_LAYER_MODE_EXCLUSION_LINEAR", "exclusion-linear" },
- { GIMP_LAYER_MODE_LINEAR_BURN, "GIMP_LAYER_MODE_LINEAR_BURN", "linear-burn" },
- { GIMP_LAYER_MODE_LINEAR_BURN_LINEAR, "GIMP_LAYER_MODE_LINEAR_BURN_LINEAR", "linear-burn-linear" },
- { GIMP_LAYER_MODE_LUMA_DARKEN_ONLY, "GIMP_LAYER_MODE_LUMA_DARKEN_ONLY", "luma-darken-only" },
- { GIMP_LAYER_MODE_LUMINANCE_DARKEN_ONLY, "GIMP_LAYER_MODE_LUMINANCE_DARKEN_ONLY",
"luminance-darken-only" },
- { GIMP_LAYER_MODE_LUMA_LIGHTEN_ONLY, "GIMP_LAYER_MODE_LUMA_LIGHTEN_ONLY", "luma-lighten-only" },
- { GIMP_LAYER_MODE_LUMINANCE_LIGHTEN_ONLY, "GIMP_LAYER_MODE_LUMINANCE_LIGHTEN_ONLY",
"luminance-lighten-only" },
- { GIMP_LAYER_MODE_ERASE, "GIMP_LAYER_MODE_ERASE", "erase" },
- { GIMP_LAYER_MODE_REPLACE, "GIMP_LAYER_MODE_REPLACE", "replace" },
- { GIMP_LAYER_MODE_ANTI_ERASE, "GIMP_LAYER_MODE_ANTI_ERASE", "anti-erase" },
- { 0, NULL, NULL }
- };
-
- static const GimpEnumDesc descs[] =
- {
- { GIMP_LAYER_MODE_NORMAL, NC_("layer-mode", "Normal"), NULL },
- { GIMP_LAYER_MODE_DISSOLVE, NC_("layer-mode", "Dissolve"), NULL },
- { GIMP_LAYER_MODE_BEHIND, NC_("layer-mode", "Behind"), NULL },
- { GIMP_LAYER_MODE_MULTIPLY_LEGACY, NC_("layer-mode", "Multiply (legacy)"), NULL },
- { GIMP_LAYER_MODE_SCREEN_LEGACY, NC_("layer-mode", "Screen (legacy)"), NULL },
- { GIMP_LAYER_MODE_OVERLAY_LEGACY, NC_("layer-mode", "Old broken Overlay"), NULL },
- { GIMP_LAYER_MODE_DIFFERENCE_LEGACY, NC_("layer-mode", "Difference (legacy)"), NULL },
- { GIMP_LAYER_MODE_ADDITION_LEGACY, NC_("layer-mode", "Addition (legacy)"), NULL },
- { GIMP_LAYER_MODE_SUBTRACT_LEGACY, NC_("layer-mode", "Subtract (legacy)"), NULL },
- { GIMP_LAYER_MODE_DARKEN_ONLY_LEGACY, NC_("layer-mode", "Darken only (legacy)"), NULL },
- { GIMP_LAYER_MODE_LIGHTEN_ONLY_LEGACY, NC_("layer-mode", "Lighten only (legacy)"), NULL },
- { GIMP_LAYER_MODE_HSV_HUE_LEGACY, NC_("layer-mode", "Hue (HSV) (legacy)"), NULL },
- { GIMP_LAYER_MODE_HSV_SATURATION_LEGACY, NC_("layer-mode", "Saturation (HSV) (legacy)"), NULL },
- { GIMP_LAYER_MODE_HSV_COLOR_LEGACY, NC_("layer-mode", "Color (HSV) (legacy)"), NULL },
- { GIMP_LAYER_MODE_HSV_VALUE_LEGACY, NC_("layer-mode", "Value (HSV) (legacy)"), NULL },
- { GIMP_LAYER_MODE_DIVIDE_LEGACY, NC_("layer-mode", "Divide (legacy)"), NULL },
- { GIMP_LAYER_MODE_DODGE_LEGACY, NC_("layer-mode", "Dodge (legacy)"), NULL },
- { GIMP_LAYER_MODE_BURN_LEGACY, NC_("layer-mode", "Burn (legacy)"), NULL },
- { GIMP_LAYER_MODE_HARDLIGHT_LEGACY, NC_("layer-mode", "Hard light (legacy)"), NULL },
- { GIMP_LAYER_MODE_SOFTLIGHT_LEGACY, NC_("layer-mode", "Soft light (legacy)"), NULL },
- { GIMP_LAYER_MODE_GRAIN_EXTRACT_LEGACY, NC_("layer-mode", "Grain extract (legacy)"), NULL },
- { GIMP_LAYER_MODE_GRAIN_MERGE_LEGACY, NC_("layer-mode", "Grain merge (legacy)"), NULL },
- { GIMP_LAYER_MODE_COLOR_ERASE, NC_("layer-mode", "Color erase"), NULL },
- { GIMP_LAYER_MODE_OVERLAY, NC_("layer-mode", "Overlay"), NULL },
- { GIMP_LAYER_MODE_LCH_HUE, NC_("layer-mode", "Hue (LCH)"), NULL },
- { GIMP_LAYER_MODE_LCH_CHROMA, NC_("layer-mode", "Chroma (LCH)"), NULL },
- { GIMP_LAYER_MODE_LCH_COLOR, NC_("layer-mode", "Color (LCH)"), NULL },
- { GIMP_LAYER_MODE_LCH_LIGHTNESS, NC_("layer-mode", "Lightness (LCH)"), NULL },
- { GIMP_LAYER_MODE_NORMAL_LINEAR, NC_("layer-mode", "Normal (linear)"), NULL },
- { GIMP_LAYER_MODE_BEHIND_LINEAR, NC_("layer-mode", "Behind (linear)"), NULL },
- { GIMP_LAYER_MODE_MULTIPLY, NC_("layer-mode", "Multiply"), NULL },
- { GIMP_LAYER_MODE_MULTIPLY_LINEAR, NC_("layer-mode", "Multiply (linear)"), NULL },
- { GIMP_LAYER_MODE_SCREEN, NC_("layer-mode", "Screen"), NULL },
- { GIMP_LAYER_MODE_SCREEN_LINEAR, NC_("layer-mode", "Screen (linear)"), NULL },
- { GIMP_LAYER_MODE_OVERLAY_LINEAR, NC_("layer-mode", "Overlay (linear)"), NULL },
- { GIMP_LAYER_MODE_DIFFERENCE, NC_("layer-mode", "Difference"), NULL },
- { GIMP_LAYER_MODE_DIFFERENCE_LINEAR, NC_("layer-mode", "Difference (linear)"), NULL },
- { GIMP_LAYER_MODE_ADDITION, NC_("layer-mode", "Addition"), NULL },
- { GIMP_LAYER_MODE_ADDITION_LINEAR, NC_("layer-mode", "Addition (linear)"), NULL },
- { GIMP_LAYER_MODE_SUBTRACT, NC_("layer-mode", "Subtract"), NULL },
- { GIMP_LAYER_MODE_SUBTRACT_LINEAR, NC_("layer-mode", "Subtract (linear)"), NULL },
- { GIMP_LAYER_MODE_DARKEN_ONLY, NC_("layer-mode", "Darken only"), NULL },
- { GIMP_LAYER_MODE_LIGHTEN_ONLY, NC_("layer-mode", "Lighten only"), NULL },
- { GIMP_LAYER_MODE_HSV_HUE, NC_("layer-mode", "Hue (HSV)"), NULL },
- { GIMP_LAYER_MODE_HSV_SATURATION, NC_("layer-mode", "Saturation (HSV)"), NULL },
- { GIMP_LAYER_MODE_HSV_COLOR, NC_("layer-mode", "Color (HSV)"), NULL },
- { GIMP_LAYER_MODE_HSV_VALUE, NC_("layer-mode", "Value (HSV)"), NULL },
- { GIMP_LAYER_MODE_DIVIDE, NC_("layer-mode", "Divide"), NULL },
- { GIMP_LAYER_MODE_DIVIDE_LINEAR, NC_("layer-mode", "Divide (linear)"), NULL },
- { GIMP_LAYER_MODE_DODGE, NC_("layer-mode", "Dodge"), NULL },
- { GIMP_LAYER_MODE_DODGE_LINEAR, NC_("layer-mode", "Dodge (linear)"), NULL },
- { GIMP_LAYER_MODE_BURN, NC_("layer-mode", "Burn"), NULL },
- { GIMP_LAYER_MODE_BURN_LINEAR, NC_("layer-mode", "Burn (linear)"), NULL },
- { GIMP_LAYER_MODE_HARDLIGHT, NC_("layer-mode", "Hard light"), NULL },
- { GIMP_LAYER_MODE_HARDLIGHT_LINEAR, NC_("layer-mode", "Hard light (linear)"), NULL },
- { GIMP_LAYER_MODE_SOFTLIGHT, NC_("layer-mode", "Soft light"), NULL },
- { GIMP_LAYER_MODE_SOFTLIGHT_LINEAR, NC_("layer-mode", "Soft light (linear)"), NULL },
- { GIMP_LAYER_MODE_GRAIN_EXTRACT, NC_("layer-mode", "Grain extract"), NULL },
- { GIMP_LAYER_MODE_GRAIN_EXTRACT_LINEAR, NC_("layer-mode", "Grain extract (linear)"), NULL },
- { GIMP_LAYER_MODE_GRAIN_MERGE, NC_("layer-mode", "Grain merge"), NULL },
- { GIMP_LAYER_MODE_GRAIN_MERGE_LINEAR, NC_("layer-mode", "Grain merge (linear)"), NULL },
- { GIMP_LAYER_MODE_VIVID_LIGHT, NC_("layer-mode", "Vivid light"), NULL },
- { GIMP_LAYER_MODE_VIVID_LIGHT_LINEAR, NC_("layer-mode", "Vivid light (linear)"), NULL },
- { GIMP_LAYER_MODE_PIN_LIGHT, NC_("layer-mode", "Pin light"), NULL },
- { GIMP_LAYER_MODE_PIN_LIGHT_LINEAR, NC_("layer-mode", "Pin light (linear)"), NULL },
- { GIMP_LAYER_MODE_LINEAR_LIGHT, NC_("layer-mode", "Linear light"), NULL },
- { GIMP_LAYER_MODE_LINEAR_LIGHT_LINEAR, NC_("layer-mode", "Linear light (linear)"), NULL },
- { GIMP_LAYER_MODE_HARD_MIX, NC_("layer-mode", "Hard mix"), NULL },
- { GIMP_LAYER_MODE_HARD_MIX_LINEAR, NC_("layer-mode", "Hard mix (linear)"), NULL },
- { GIMP_LAYER_MODE_EXCLUSION, NC_("layer-mode", "Exclusion"), NULL },
- { GIMP_LAYER_MODE_EXCLUSION_LINEAR, NC_("layer-mode", "Exclusion (linear)"), NULL },
- { GIMP_LAYER_MODE_LINEAR_BURN, NC_("layer-mode", "Linear burn"), NULL },
- { GIMP_LAYER_MODE_LINEAR_BURN_LINEAR, NC_("layer-mode", "Linear burn (linear)"), NULL },
- { GIMP_LAYER_MODE_LUMA_DARKEN_ONLY, NC_("layer-mode", "Luma darken only"), NULL },
- { GIMP_LAYER_MODE_LUMINANCE_DARKEN_ONLY, NC_("layer-mode", "Luminance darken only"), NULL },
- { GIMP_LAYER_MODE_LUMA_LIGHTEN_ONLY, NC_("layer-mode", "Luma lighten only"), NULL },
- { GIMP_LAYER_MODE_LUMINANCE_LIGHTEN_ONLY, NC_("layer-mode", "Luminance lighten only"), NULL },
- { GIMP_LAYER_MODE_ERASE, NC_("layer-mode", "Erase"), NULL },
- { GIMP_LAYER_MODE_REPLACE, NC_("layer-mode", "Replace"), NULL },
- { GIMP_LAYER_MODE_ANTI_ERASE, NC_("layer-mode", "Anti erase"), NULL },
- { 0, NULL, NULL }
- };
-
- static GType type = 0;
-
- if (G_UNLIKELY (! type))
- {
- type = g_enum_register_static ("GimpLayerMode", values);
- gimp_type_set_translation_context (type, "layer-mode");
- gimp_enum_set_value_descriptions (type, descs);
- }
-
- return type;
-}
-
-GType
-gimp_layer_mode_group_get_type (void)
-{
- static const GEnumValue values[] =
- {
- { GIMP_LAYER_MODE_GROUP_DEFAULT, "GIMP_LAYER_MODE_GROUP_DEFAULT", "default" },
- { GIMP_LAYER_MODE_GROUP_LINEAR, "GIMP_LAYER_MODE_GROUP_LINEAR", "linear" },
- { GIMP_LAYER_MODE_GROUP_PERCEPTUAL, "GIMP_LAYER_MODE_GROUP_PERCEPTUAL", "perceptual" },
- { GIMP_LAYER_MODE_GROUP_LEGACY, "GIMP_LAYER_MODE_GROUP_LEGACY", "legacy" },
- { 0, NULL, NULL }
- };
-
- static const GimpEnumDesc descs[] =
- {
- { GIMP_LAYER_MODE_GROUP_DEFAULT, NC_("layer-mode-group", "Default"), NULL },
- { GIMP_LAYER_MODE_GROUP_LINEAR, NC_("layer-mode-group", "Linear light"), NULL },
- { GIMP_LAYER_MODE_GROUP_PERCEPTUAL, NC_("layer-mode-group", "Perceptual"), NULL },
- { GIMP_LAYER_MODE_GROUP_LEGACY, NC_("layer-mode-group", "Legacy"), NULL },
- { 0, NULL, NULL }
- };
-
- static GType type = 0;
-
- if (G_UNLIKELY (! type))
- {
- type = g_enum_register_static ("GimpLayerModeGroup", values);
- gimp_type_set_translation_context (type, "layer-mode-group");
- gimp_enum_set_value_descriptions (type, descs);
- }
-
- return type;
-}
-
-GType
gimp_matting_engine_get_type (void)
{
static const GEnumValue values[] =
diff --git a/app/core/core-enums.h b/app/core/core-enums.h
index 75b59a1..44b2e75 100644
--- a/app/core/core-enums.h
+++ b/app/core/core-enums.h
@@ -148,115 +148,6 @@ typedef enum
} GimpHistogramChannel;
-#define GIMP_TYPE_LAYER_MODE (gimp_layer_mode_get_type ())
-
-GType gimp_layer_mode_get_type (void) G_GNUC_CONST;
-
-typedef enum
-{
- /* Modes that exist since ancient times */
- GIMP_LAYER_MODE_NORMAL, /*< desc="Normal" >*/
- GIMP_LAYER_MODE_DISSOLVE, /*< desc="Dissolve" >*/
- GIMP_LAYER_MODE_BEHIND, /*< desc="Behind" >*/
- GIMP_LAYER_MODE_MULTIPLY_LEGACY, /*< desc="Multiply (legacy)" >*/
- GIMP_LAYER_MODE_SCREEN_LEGACY, /*< desc="Screen (legacy)" >*/
- GIMP_LAYER_MODE_OVERLAY_LEGACY, /*< desc="Old broken Overlay" >*/
- GIMP_LAYER_MODE_DIFFERENCE_LEGACY, /*< desc="Difference (legacy)" >*/
- GIMP_LAYER_MODE_ADDITION_LEGACY, /*< desc="Addition (legacy)" >*/
- GIMP_LAYER_MODE_SUBTRACT_LEGACY, /*< desc="Subtract (legacy)" >*/
- GIMP_LAYER_MODE_DARKEN_ONLY_LEGACY, /*< desc="Darken only (legacy)" >*/
- GIMP_LAYER_MODE_LIGHTEN_ONLY_LEGACY, /*< desc="Lighten only (legacy)" >*/
- GIMP_LAYER_MODE_HSV_HUE_LEGACY, /*< desc="Hue (HSV) (legacy)" >*/
- GIMP_LAYER_MODE_HSV_SATURATION_LEGACY, /*< desc="Saturation (HSV) (legacy)">*/
- GIMP_LAYER_MODE_HSV_COLOR_LEGACY, /*< desc="Color (HSV) (legacy)" >*/
- GIMP_LAYER_MODE_HSV_VALUE_LEGACY, /*< desc="Value (HSV) (legacy)" >*/
- GIMP_LAYER_MODE_DIVIDE_LEGACY, /*< desc="Divide (legacy)" >*/
- GIMP_LAYER_MODE_DODGE_LEGACY, /*< desc="Dodge (legacy)" >*/
- GIMP_LAYER_MODE_BURN_LEGACY, /*< desc="Burn (legacy)" >*/
- GIMP_LAYER_MODE_HARDLIGHT_LEGACY, /*< desc="Hard light (legacy)" >*/
- GIMP_LAYER_MODE_SOFTLIGHT_LEGACY, /*< desc="Soft light (legacy)" >*/
- GIMP_LAYER_MODE_GRAIN_EXTRACT_LEGACY, /*< desc="Grain extract (legacy)" >*/
- GIMP_LAYER_MODE_GRAIN_MERGE_LEGACY, /*< desc="Grain merge (legacy)" >*/
- GIMP_LAYER_MODE_COLOR_ERASE, /*< desc="Color erase" >*/
-
- /* Since 2.8 */
- GIMP_LAYER_MODE_OVERLAY, /*< desc="Overlay" >*/
- GIMP_LAYER_MODE_LCH_HUE, /*< desc="Hue (LCH)" >*/
- GIMP_LAYER_MODE_LCH_CHROMA, /*< desc="Chroma (LCH)" >*/
- GIMP_LAYER_MODE_LCH_COLOR, /*< desc="Color (LCH)" >*/
- GIMP_LAYER_MODE_LCH_LIGHTNESS, /*< desc="Lightness (LCH)" >*/
-
- /* Since 2.10 */
- GIMP_LAYER_MODE_NORMAL_LINEAR, /*< desc="Normal (linear)" >*/
- GIMP_LAYER_MODE_BEHIND_LINEAR, /*< desc="Behind (linear)" >*/
- GIMP_LAYER_MODE_MULTIPLY, /*< desc="Multiply" >*/
- GIMP_LAYER_MODE_MULTIPLY_LINEAR, /*< desc="Multiply (linear)" >*/
- GIMP_LAYER_MODE_SCREEN, /*< desc="Screen" >*/
- GIMP_LAYER_MODE_SCREEN_LINEAR, /*< desc="Screen (linear)" >*/
- GIMP_LAYER_MODE_OVERLAY_LINEAR, /*< desc="Overlay (linear)" >*/
- GIMP_LAYER_MODE_DIFFERENCE, /*< desc="Difference" >*/
- GIMP_LAYER_MODE_DIFFERENCE_LINEAR, /*< desc="Difference (linear)" >*/
- GIMP_LAYER_MODE_ADDITION, /*< desc="Addition" >*/
- GIMP_LAYER_MODE_ADDITION_LINEAR, /*< desc="Addition (linear)" >*/
- GIMP_LAYER_MODE_SUBTRACT, /*< desc="Subtract" >*/
- GIMP_LAYER_MODE_SUBTRACT_LINEAR, /*< desc="Subtract (linear)" >*/
- GIMP_LAYER_MODE_DARKEN_ONLY, /*< desc="Darken only" >*/
- GIMP_LAYER_MODE_LIGHTEN_ONLY, /*< desc="Lighten only" >*/
- GIMP_LAYER_MODE_HSV_HUE, /*< desc="Hue (HSV)" >*/
- GIMP_LAYER_MODE_HSV_SATURATION, /*< desc="Saturation (HSV)" >*/
- GIMP_LAYER_MODE_HSV_COLOR, /*< desc="Color (HSV)" >*/
- GIMP_LAYER_MODE_HSV_VALUE, /*< desc="Value (HSV)" >*/
- GIMP_LAYER_MODE_DIVIDE, /*< desc="Divide" >*/
- GIMP_LAYER_MODE_DIVIDE_LINEAR, /*< desc="Divide (linear)" >*/
- GIMP_LAYER_MODE_DODGE, /*< desc="Dodge" >*/
- GIMP_LAYER_MODE_DODGE_LINEAR, /*< desc="Dodge (linear)" >*/
- GIMP_LAYER_MODE_BURN, /*< desc="Burn" >*/
- GIMP_LAYER_MODE_BURN_LINEAR, /*< desc="Burn (linear)" >*/
- GIMP_LAYER_MODE_HARDLIGHT, /*< desc="Hard light" >*/
- GIMP_LAYER_MODE_HARDLIGHT_LINEAR, /*< desc="Hard light (linear)" >*/
- GIMP_LAYER_MODE_SOFTLIGHT, /*< desc="Soft light" >*/
- GIMP_LAYER_MODE_SOFTLIGHT_LINEAR, /*< desc="Soft light (linear)" >*/
- GIMP_LAYER_MODE_GRAIN_EXTRACT, /*< desc="Grain extract" >*/
- GIMP_LAYER_MODE_GRAIN_EXTRACT_LINEAR, /*< desc="Grain extract (linear)" >*/
- GIMP_LAYER_MODE_GRAIN_MERGE, /*< desc="Grain merge" >*/
- GIMP_LAYER_MODE_GRAIN_MERGE_LINEAR, /*< desc="Grain merge (linear)" >*/
- GIMP_LAYER_MODE_VIVID_LIGHT, /*< desc="Vivid light" >*/
- GIMP_LAYER_MODE_VIVID_LIGHT_LINEAR, /*< desc="Vivid light (linear)" >*/
- GIMP_LAYER_MODE_PIN_LIGHT, /*< desc="Pin light" >*/
- GIMP_LAYER_MODE_PIN_LIGHT_LINEAR, /*< desc="Pin light (linear)" >*/
- GIMP_LAYER_MODE_LINEAR_LIGHT, /*< desc="Linear light" >*/
- GIMP_LAYER_MODE_LINEAR_LIGHT_LINEAR, /*< desc="Linear light (linear)" >*/
- GIMP_LAYER_MODE_HARD_MIX, /*< desc="Hard mix" >*/
- GIMP_LAYER_MODE_HARD_MIX_LINEAR, /*< desc="Hard mix (linear)" >*/
- GIMP_LAYER_MODE_EXCLUSION, /*< desc="Exclusion" >*/
- GIMP_LAYER_MODE_EXCLUSION_LINEAR, /*< desc="Exclusion (linear)" >*/
- GIMP_LAYER_MODE_LINEAR_BURN, /*< desc="Linear burn" >*/
- GIMP_LAYER_MODE_LINEAR_BURN_LINEAR, /*< desc="Linear burn (linear)" >*/
- GIMP_LAYER_MODE_LUMA_DARKEN_ONLY, /*< desc="Luma darken only" >*/
- GIMP_LAYER_MODE_LUMINANCE_DARKEN_ONLY, /*< desc="Luminance darken only" >*/
- GIMP_LAYER_MODE_LUMA_LIGHTEN_ONLY, /*< desc="Luma lighten only" >*/
- GIMP_LAYER_MODE_LUMINANCE_LIGHTEN_ONLY,/*< desc="Luminance lighten only" >*/
-
- /* Internal modes, not available to the PDB */
- GIMP_LAYER_MODE_ERASE = 1000, /*< pdb-skip, desc="Erase" >*/
- GIMP_LAYER_MODE_REPLACE = 1001, /*< pdb-skip, desc="Replace" >*/
- GIMP_LAYER_MODE_ANTI_ERASE = 1002 /*< pdb-skip, desc="Anti erase" >*/
-} GimpLayerMode;
-
-
-#define GIMP_TYPE_LAYER_MODE_GROUP (gimp_layer_mode_group_get_type ())
-
-GType gimp_layer_mode_group_get_type (void) G_GNUC_CONST;
-
-typedef enum /*< pdb-skip >*/
-{
- GIMP_LAYER_MODE_GROUP_DEFAULT, /*< desc="Default" >*/
- GIMP_LAYER_MODE_GROUP_LINEAR, /*< desc="Linear light" >*/
- GIMP_LAYER_MODE_GROUP_PERCEPTUAL, /*< desc="Perceptual" >*/
- GIMP_LAYER_MODE_GROUP_LEGACY, /*< desc="Legacy" >*/
-} GimpLayerModeGroup;
-
-
#define GIMP_TYPE_MATTING_ENGINE (gimp_matting_engine_get_type ())
GType gimp_matting_engine_get_type (void) G_GNUC_CONST;
diff --git a/app/gegl/gimp-gegl-nodes.c b/app/gegl/gimp-gegl-nodes.c
index 548ed80..86fa66f 100644
--- a/app/gegl/gimp-gegl-nodes.c
+++ b/app/gegl/gimp-gegl-nodes.c
@@ -24,7 +24,7 @@
#include "gimp-gegl-types.h"
-#include "core/gimp-layer-modes.h"
+#include "operations/layer-modes/gimp-layer-modes.h"
#include "gimp-gegl-nodes.h"
#include "gimp-gegl-utils.h"
diff --git a/app/operations/gimp-operations.c b/app/operations/gimp-operations.c
index fc26091..9f40021 100644
--- a/app/operations/gimp-operations.c
+++ b/app/operations/gimp-operations.c
@@ -84,6 +84,7 @@
#include "layer-modes-legacy/gimpoperationsoftlightlegacy.h"
#include "layer-modes-legacy/gimpoperationsubtractlegacy.h"
+#include "layer-modes/gimp-layer-modes.h"
#include "layer-modes/gimpoperationantierase.h"
#include "layer-modes/gimpoperationbehind.h"
#include "layer-modes/gimpoperationerase.h"
@@ -96,6 +97,8 @@
void
gimp_operations_init (void)
{
+ gimp_layer_modes_init ();
+
g_type_class_ref (GIMP_TYPE_OPERATION_BLEND);
g_type_class_ref (GIMP_TYPE_OPERATION_BORDER);
g_type_class_ref (GIMP_TYPE_OPERATION_CAGE_COEF_CALC);
diff --git a/app/operations/layer-modes/Makefile.am b/app/operations/layer-modes/Makefile.am
index 2764580..59d4117 100644
--- a/app/operations/layer-modes/Makefile.am
+++ b/app/operations/layer-modes/Makefile.am
@@ -19,6 +19,8 @@ noinst_LIBRARIES = \
libapplayermodes.a
libapplayermodes_generic_a_sources = \
+ gimp-layer-modes.c \
+ gimp-layer-modes.h \
gimpoperationlayermode.c \
gimpoperationlayermode.h \
gimplayermodefunctions.c \
diff --git a/app/operations/layer-modes/gimp-layer-modes.c b/app/operations/layer-modes/gimp-layer-modes.c
new file mode 100644
index 0000000..2ae01c7
--- /dev/null
+++ b/app/operations/layer-modes/gimp-layer-modes.c
@@ -0,0 +1,1175 @@
+/* GIMP - The GNU Image Manipulation Program
+ * Copyright (C) 1995 Spencer Kimball and Peter Mattis
+ *
+ * gimp-layer-modes.c
+ * Copyright (C) 2017 Michael Natterer <mitch gimp org>
+ * Øyvind Kolås <pippin gimp org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "config.h"
+
+#include <glib-object.h>
+
+#include "../operations-types.h"
+
+#include "gimp-layer-modes.h"
+
+
+/* static variables */
+
+static GimpLayerModeInfo layer_mode_infos[]=
+{
+ { GIMP_LAYER_MODE_NORMAL,
+ "gimp:normal",
+ 0,
+ GIMP_LAYER_COMPOSITE_SRC_OVER,
+ },
+
+ { GIMP_LAYER_MODE_DISSOLVE,
+ "gimp:dissolve",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_OVER,
+ },
+
+ { GIMP_LAYER_MODE_BEHIND,
+ "gimp:behind",
+ 0,
+ GIMP_LAYER_COMPOSITE_DST_ATOP,
+ },
+
+ { GIMP_LAYER_MODE_MULTIPLY_LEGACY,
+ "gimp:multiply-legacy",
+ GIMP_LAYER_MODE_FLAG_LEGACY,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ },
+
+ { GIMP_LAYER_MODE_SCREEN_LEGACY,
+ "gimp:screen-legacy",
+ GIMP_LAYER_MODE_FLAG_LEGACY,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ },
+
+ { GIMP_LAYER_MODE_OVERLAY_LEGACY,
+ "gimp:overlay-legacy",
+ GIMP_LAYER_MODE_FLAG_LEGACY,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ },
+
+ { GIMP_LAYER_MODE_DIFFERENCE_LEGACY,
+ "gimp:difference-legacy",
+ GIMP_LAYER_MODE_FLAG_LEGACY,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ },
+
+ { GIMP_LAYER_MODE_ADDITION_LEGACY,
+ "gimp:addition-legacy",
+ GIMP_LAYER_MODE_FLAG_LEGACY,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ },
+
+ { GIMP_LAYER_MODE_SUBTRACT_LEGACY,
+ "gimp:subtract-legacy",
+ GIMP_LAYER_MODE_FLAG_LEGACY,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ },
+
+ { GIMP_LAYER_MODE_DARKEN_ONLY_LEGACY,
+ "gimp:darken-only-legacy",
+ GIMP_LAYER_MODE_FLAG_LEGACY,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ },
+
+ { GIMP_LAYER_MODE_LIGHTEN_ONLY_LEGACY,
+ "gimp:lighten-only-legacy",
+ GIMP_LAYER_MODE_FLAG_LEGACY,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ },
+
+ { GIMP_LAYER_MODE_HSV_HUE_LEGACY,
+ "gimp:hsv-hue-legacy",
+ GIMP_LAYER_MODE_FLAG_LEGACY,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ },
+
+ { GIMP_LAYER_MODE_HSV_SATURATION_LEGACY,
+ "gimp:hsv-saturation-legacy",
+ GIMP_LAYER_MODE_FLAG_LEGACY,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ },
+
+ { GIMP_LAYER_MODE_HSV_COLOR_LEGACY,
+ "gimp:hsv-color-legacy",
+ GIMP_LAYER_MODE_FLAG_LEGACY,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ },
+
+ { GIMP_LAYER_MODE_HSV_VALUE_LEGACY,
+ "gimp:hsv-value-legacy",
+ GIMP_LAYER_MODE_FLAG_LEGACY,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ },
+
+ { GIMP_LAYER_MODE_DIVIDE_LEGACY,
+ "gimp:divide-legacy",
+ GIMP_LAYER_MODE_FLAG_LEGACY,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ },
+
+ { GIMP_LAYER_MODE_DODGE_LEGACY,
+ "gimp:dodge-legacy",
+ GIMP_LAYER_MODE_FLAG_LEGACY,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ },
+
+ { GIMP_LAYER_MODE_BURN_LEGACY,
+ "gimp:burn-legacy",
+ GIMP_LAYER_MODE_FLAG_LEGACY,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ },
+
+ { GIMP_LAYER_MODE_HARDLIGHT_LEGACY,
+ "gimp:hardlight-legacy",
+ GIMP_LAYER_MODE_FLAG_LEGACY,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ },
+
+ { GIMP_LAYER_MODE_SOFTLIGHT_LEGACY,
+ "gimp:softlight-legacy",
+ GIMP_LAYER_MODE_FLAG_LEGACY,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ },
+
+ { GIMP_LAYER_MODE_GRAIN_EXTRACT_LEGACY,
+ "gimp:grain-extract-legacy",
+ GIMP_LAYER_MODE_FLAG_LEGACY,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ },
+
+ { GIMP_LAYER_MODE_GRAIN_MERGE_LEGACY,
+ "gimp:grain-merge-legacy",
+ GIMP_LAYER_MODE_FLAG_LEGACY,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ },
+
+ { GIMP_LAYER_MODE_COLOR_ERASE,
+ "gimp:color-erase",
+ 0,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ },
+
+ { GIMP_LAYER_MODE_OVERLAY,
+ "gimp:layer-mode",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
+ GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL
+ },
+
+ { GIMP_LAYER_MODE_LCH_HUE,
+ "gimp:layer-mode",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
+ GIMP_LAYER_COLOR_SPACE_LAB
+ },
+
+ { GIMP_LAYER_MODE_LCH_CHROMA,
+ "gimp:layer-mode",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
+ GIMP_LAYER_COLOR_SPACE_LAB
+ },
+
+ { GIMP_LAYER_MODE_LCH_COLOR,
+ "gimp:layer-mode",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
+ GIMP_LAYER_COLOR_SPACE_LAB
+ },
+
+ { GIMP_LAYER_MODE_LCH_LIGHTNESS,
+ "gimp:layer-mode",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
+ GIMP_LAYER_COLOR_SPACE_LAB
+ },
+
+ { GIMP_LAYER_MODE_NORMAL_LINEAR,
+ "gimp:normal",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ },
+
+ { GIMP_LAYER_MODE_BEHIND_LINEAR,
+ "gimp:behind",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ },
+
+ { GIMP_LAYER_MODE_MULTIPLY,
+ "gimp:layer-mode",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
+ GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL
+ },
+
+ { GIMP_LAYER_MODE_MULTIPLY_LINEAR,
+ "gimp:layer-mode",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR
+ },
+
+ { GIMP_LAYER_MODE_SCREEN,
+ "gimp:layer-mode",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
+ GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL
+ },
+
+ { GIMP_LAYER_MODE_SCREEN_LINEAR,
+ "gimp:layer-mode",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR
+ },
+
+ { GIMP_LAYER_MODE_OVERLAY_LINEAR,
+ "gimp:layer-mode",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR
+ },
+
+ { GIMP_LAYER_MODE_DIFFERENCE,
+ "gimp:layer-mode",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
+ GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL
+ },
+
+ { GIMP_LAYER_MODE_DIFFERENCE_LINEAR,
+ "gimp:layer-mode",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR
+ },
+
+ { GIMP_LAYER_MODE_ADDITION,
+ "gimp:layer-mode",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
+ GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL
+ },
+
+ { GIMP_LAYER_MODE_ADDITION_LINEAR,
+ "gimp:layer-mode",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR
+ },
+
+ { GIMP_LAYER_MODE_SUBTRACT,
+ "gimp:layer-mode",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
+ GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL
+ },
+
+ { GIMP_LAYER_MODE_SUBTRACT_LINEAR,
+ "gimp:layer-mode",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR
+ },
+
+ { GIMP_LAYER_MODE_DARKEN_ONLY,
+ "gimp:layer-mode",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR
+ },
+
+ { GIMP_LAYER_MODE_LIGHTEN_ONLY,
+ "gimp:layer-mode",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR
+ },
+
+ { GIMP_LAYER_MODE_HSV_HUE,
+ "gimp:layer-mode",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
+ GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL
+ },
+
+ { GIMP_LAYER_MODE_HSV_SATURATION,
+ "gimp:layer-mode",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
+ GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL
+ },
+
+ { GIMP_LAYER_MODE_HSV_COLOR,
+ "gimp:layer-mode",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
+ GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL
+ },
+
+ { GIMP_LAYER_MODE_HSV_VALUE,
+ "gimp:layer-mode",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
+ GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL
+ },
+
+ { GIMP_LAYER_MODE_DIVIDE,
+ "gimp:layer-mode",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
+ GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL
+ },
+
+ { GIMP_LAYER_MODE_DIVIDE_LINEAR,
+ "gimp:layer-mode",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR
+ },
+
+ { GIMP_LAYER_MODE_DODGE,
+ "gimp:layer-mode",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
+ GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL
+ },
+
+ { GIMP_LAYER_MODE_DODGE_LINEAR,
+ "gimp:layer-mode",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR
+ },
+
+ { GIMP_LAYER_MODE_BURN,
+ "gimp:layer-mode",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
+ GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL
+ },
+
+ { GIMP_LAYER_MODE_BURN_LINEAR,
+ "gimp:layer-mode",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR
+ },
+
+ { GIMP_LAYER_MODE_HARDLIGHT,
+ "gimp:layer-mode",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
+ GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL
+ },
+
+ { GIMP_LAYER_MODE_HARDLIGHT_LINEAR,
+ "gimp:layer-mode",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR
+ },
+
+ { GIMP_LAYER_MODE_SOFTLIGHT,
+ "gimp:layer-mode",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
+ GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL
+ },
+
+ { GIMP_LAYER_MODE_SOFTLIGHT_LINEAR,
+ "gimp:layer-mode",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR
+ },
+
+ { GIMP_LAYER_MODE_GRAIN_EXTRACT,
+ "gimp:layer-mode",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
+ GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL
+ },
+
+ { GIMP_LAYER_MODE_GRAIN_EXTRACT_LINEAR,
+ "gimp:layer-mode",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR
+ },
+
+ { GIMP_LAYER_MODE_GRAIN_MERGE,
+ "gimp:layer-mode",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
+ GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL
+ },
+
+ { GIMP_LAYER_MODE_GRAIN_MERGE_LINEAR,
+ "gimp:layer-mode",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR
+ },
+
+ { GIMP_LAYER_MODE_VIVID_LIGHT,
+ "gimp:layer-mode",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
+ GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL
+ },
+
+ { GIMP_LAYER_MODE_VIVID_LIGHT_LINEAR,
+ "gimp:layer-mode",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR
+ },
+
+ { GIMP_LAYER_MODE_PIN_LIGHT,
+ "gimp:layer-mode",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
+ GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL
+ },
+
+ { GIMP_LAYER_MODE_PIN_LIGHT_LINEAR,
+ "gimp:layer-mode",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR
+ },
+
+ { GIMP_LAYER_MODE_LINEAR_LIGHT,
+ "gimp:layer-mode",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
+ GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL
+ },
+
+ { GIMP_LAYER_MODE_LINEAR_LIGHT_LINEAR,
+ "gimp:layer-mode",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR
+ },
+
+ { GIMP_LAYER_MODE_HARD_MIX,
+ "gimp:layer-mode",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
+ GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL
+ },
+
+ { GIMP_LAYER_MODE_HARD_MIX_LINEAR,
+ "gimp:layer-mode",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR
+ },
+
+ { GIMP_LAYER_MODE_EXCLUSION,
+ "gimp:layer-mode",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
+ GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL
+ },
+
+ { GIMP_LAYER_MODE_EXCLUSION_LINEAR,
+ "gimp:layer-mode",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR
+ },
+
+ { GIMP_LAYER_MODE_LINEAR_BURN,
+ "gimp:layer-mode",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
+ GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL
+ },
+
+ { GIMP_LAYER_MODE_LINEAR_BURN_LINEAR,
+ "gimp:layer-mode",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR
+ },
+
+ { GIMP_LAYER_MODE_LUMA_DARKEN_ONLY,
+ "gimp:layer-mode",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
+ GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL
+ },
+
+ { GIMP_LAYER_MODE_LUMINANCE_DARKEN_ONLY,
+ "gimp:layer-mode",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR
+ },
+
+ { GIMP_LAYER_MODE_LUMA_LIGHTEN_ONLY,
+ "gimp:layer-mode",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
+ GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL
+ },
+
+ { GIMP_LAYER_MODE_LUMINANCE_LIGHTEN_ONLY,
+ "gimp:layer-mode",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
+ GIMP_LAYER_COLOR_SPACE_RGB_LINEAR
+ },
+
+ { GIMP_LAYER_MODE_ERASE,
+ "gimp:erase",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ GIMP_LAYER_COMPOSITE_SRC_ATOP
+ },
+
+ { GIMP_LAYER_MODE_REPLACE,
+ "gimp:replace",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ },
+
+ { GIMP_LAYER_MODE_ANTI_ERASE,
+ "gimp:anti-erase",
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
+ }
+};
+
+static const GimpLayerMode layer_mode_group_default[] =
+{
+ GIMP_LAYER_MODE_NORMAL,
+ GIMP_LAYER_MODE_DISSOLVE,
+
+ GIMP_LAYER_MODE_LIGHTEN_ONLY,
+ GIMP_LAYER_MODE_LUMINANCE_LIGHTEN_ONLY,
+ GIMP_LAYER_MODE_SCREEN,
+ GIMP_LAYER_MODE_DODGE,
+ GIMP_LAYER_MODE_ADDITION,
+
+ GIMP_LAYER_MODE_DARKEN_ONLY,
+ GIMP_LAYER_MODE_LUMINANCE_DARKEN_ONLY,
+ GIMP_LAYER_MODE_MULTIPLY,
+ GIMP_LAYER_MODE_BURN,
+
+ GIMP_LAYER_MODE_OVERLAY,
+ GIMP_LAYER_MODE_SOFTLIGHT,
+ GIMP_LAYER_MODE_HARDLIGHT,
+ GIMP_LAYER_MODE_VIVID_LIGHT,
+ GIMP_LAYER_MODE_PIN_LIGHT,
+ GIMP_LAYER_MODE_LINEAR_LIGHT,
+ GIMP_LAYER_MODE_HARD_MIX,
+
+ GIMP_LAYER_MODE_DIFFERENCE,
+ GIMP_LAYER_MODE_SUBTRACT,
+ GIMP_LAYER_MODE_GRAIN_EXTRACT,
+ GIMP_LAYER_MODE_GRAIN_MERGE,
+ GIMP_LAYER_MODE_DIVIDE,
+
+ GIMP_LAYER_MODE_LCH_HUE,
+ GIMP_LAYER_MODE_LCH_CHROMA,
+ GIMP_LAYER_MODE_LCH_COLOR,
+ GIMP_LAYER_MODE_LCH_LIGHTNESS,
+
+ GIMP_LAYER_MODE_EXCLUSION,
+ GIMP_LAYER_MODE_LINEAR_BURN
+};
+
+static const GimpLayerMode layer_mode_group_linear[] =
+{
+ GIMP_LAYER_MODE_NORMAL_LINEAR,
+ GIMP_LAYER_MODE_DISSOLVE,
+
+ GIMP_LAYER_MODE_LIGHTEN_ONLY,
+ GIMP_LAYER_MODE_LUMINANCE_LIGHTEN_ONLY,
+ GIMP_LAYER_MODE_SCREEN_LINEAR,
+ GIMP_LAYER_MODE_DODGE_LINEAR,
+ GIMP_LAYER_MODE_ADDITION_LINEAR,
+
+ GIMP_LAYER_MODE_DARKEN_ONLY,
+ GIMP_LAYER_MODE_LUMINANCE_DARKEN_ONLY,
+ GIMP_LAYER_MODE_MULTIPLY_LINEAR,
+ GIMP_LAYER_MODE_BURN_LINEAR,
+
+ GIMP_LAYER_MODE_OVERLAY_LINEAR,
+ GIMP_LAYER_MODE_SOFTLIGHT_LINEAR,
+ GIMP_LAYER_MODE_HARDLIGHT_LINEAR,
+ GIMP_LAYER_MODE_VIVID_LIGHT_LINEAR,
+ GIMP_LAYER_MODE_PIN_LIGHT_LINEAR,
+ GIMP_LAYER_MODE_LINEAR_LIGHT_LINEAR,
+ GIMP_LAYER_MODE_HARD_MIX_LINEAR,
+
+ GIMP_LAYER_MODE_DIFFERENCE_LINEAR,
+ GIMP_LAYER_MODE_SUBTRACT_LINEAR,
+ GIMP_LAYER_MODE_GRAIN_EXTRACT_LINEAR,
+ GIMP_LAYER_MODE_GRAIN_MERGE_LINEAR,
+ GIMP_LAYER_MODE_DIVIDE_LINEAR,
+
+ GIMP_LAYER_MODE_EXCLUSION_LINEAR,
+ GIMP_LAYER_MODE_LINEAR_BURN_LINEAR
+};
+
+static const GimpLayerMode layer_mode_group_perceptual[] =
+{
+ GIMP_LAYER_MODE_NORMAL,
+ GIMP_LAYER_MODE_DISSOLVE,
+
+ GIMP_LAYER_MODE_LIGHTEN_ONLY,
+ GIMP_LAYER_MODE_LUMA_LIGHTEN_ONLY,
+ GIMP_LAYER_MODE_SCREEN,
+ GIMP_LAYER_MODE_DODGE,
+ GIMP_LAYER_MODE_ADDITION,
+
+ GIMP_LAYER_MODE_DARKEN_ONLY,
+ GIMP_LAYER_MODE_LUMA_DARKEN_ONLY,
+ GIMP_LAYER_MODE_MULTIPLY,
+ GIMP_LAYER_MODE_BURN,
+
+ GIMP_LAYER_MODE_OVERLAY,
+ GIMP_LAYER_MODE_SOFTLIGHT,
+ GIMP_LAYER_MODE_HARDLIGHT,
+ GIMP_LAYER_MODE_VIVID_LIGHT,
+ GIMP_LAYER_MODE_PIN_LIGHT,
+ GIMP_LAYER_MODE_LINEAR_LIGHT,
+ GIMP_LAYER_MODE_HARD_MIX,
+
+ GIMP_LAYER_MODE_DIFFERENCE,
+ GIMP_LAYER_MODE_SUBTRACT,
+ GIMP_LAYER_MODE_GRAIN_EXTRACT,
+ GIMP_LAYER_MODE_GRAIN_MERGE,
+ GIMP_LAYER_MODE_DIVIDE,
+
+ GIMP_LAYER_MODE_HSV_HUE,
+ GIMP_LAYER_MODE_HSV_SATURATION,
+ GIMP_LAYER_MODE_HSV_COLOR,
+ GIMP_LAYER_MODE_HSV_VALUE,
+
+ GIMP_LAYER_MODE_LCH_HUE,
+ GIMP_LAYER_MODE_LCH_CHROMA,
+ GIMP_LAYER_MODE_LCH_COLOR,
+ GIMP_LAYER_MODE_LCH_LIGHTNESS,
+
+ GIMP_LAYER_MODE_EXCLUSION,
+ GIMP_LAYER_MODE_LINEAR_BURN
+};
+
+static const GimpLayerMode layer_mode_group_legacy[] =
+{
+ GIMP_LAYER_MODE_NORMAL,
+ GIMP_LAYER_MODE_DISSOLVE,
+
+ GIMP_LAYER_MODE_LIGHTEN_ONLY_LEGACY,
+ GIMP_LAYER_MODE_SCREEN_LEGACY,
+ GIMP_LAYER_MODE_DODGE_LEGACY,
+ GIMP_LAYER_MODE_ADDITION_LEGACY,
+
+ GIMP_LAYER_MODE_DARKEN_ONLY_LEGACY,
+ GIMP_LAYER_MODE_MULTIPLY_LEGACY,
+ GIMP_LAYER_MODE_BURN_LEGACY,
+
+ GIMP_LAYER_MODE_SOFTLIGHT_LEGACY,
+ GIMP_LAYER_MODE_HARDLIGHT_LEGACY,
+
+ GIMP_LAYER_MODE_DIFFERENCE_LEGACY,
+ GIMP_LAYER_MODE_SUBTRACT_LEGACY,
+ GIMP_LAYER_MODE_GRAIN_EXTRACT_LEGACY,
+ GIMP_LAYER_MODE_GRAIN_MERGE_LEGACY,
+ GIMP_LAYER_MODE_DIVIDE_LEGACY,
+
+ GIMP_LAYER_MODE_HSV_HUE_LEGACY,
+ GIMP_LAYER_MODE_HSV_SATURATION_LEGACY,
+ GIMP_LAYER_MODE_HSV_COLOR_LEGACY,
+ GIMP_LAYER_MODE_HSV_VALUE_LEGACY
+};
+
+static const GimpLayerMode layer_mode_groups[][4] =
+{
+ {
+ GIMP_LAYER_MODE_NORMAL,
+ GIMP_LAYER_MODE_NORMAL_LINEAR,
+ GIMP_LAYER_MODE_NORMAL,
+ GIMP_LAYER_MODE_NORMAL
+ },
+
+ {
+ GIMP_LAYER_MODE_DISSOLVE,
+ GIMP_LAYER_MODE_DISSOLVE,
+ GIMP_LAYER_MODE_DISSOLVE,
+ GIMP_LAYER_MODE_DISSOLVE
+ },
+
+ {
+ GIMP_LAYER_MODE_BEHIND,
+ GIMP_LAYER_MODE_BEHIND_LINEAR,
+ GIMP_LAYER_MODE_BEHIND,
+ GIMP_LAYER_MODE_BEHIND
+ },
+
+ {
+ GIMP_LAYER_MODE_MULTIPLY,
+ GIMP_LAYER_MODE_MULTIPLY_LINEAR,
+ GIMP_LAYER_MODE_MULTIPLY,
+ GIMP_LAYER_MODE_MULTIPLY_LEGACY
+ },
+
+ {
+ GIMP_LAYER_MODE_SCREEN,
+ GIMP_LAYER_MODE_SCREEN_LINEAR,
+ GIMP_LAYER_MODE_SCREEN,
+ GIMP_LAYER_MODE_SCREEN_LEGACY
+ },
+
+ {
+ GIMP_LAYER_MODE_OVERLAY,
+ GIMP_LAYER_MODE_OVERLAY_LINEAR,
+ GIMP_LAYER_MODE_OVERLAY,
+ -1
+ },
+
+ {
+ GIMP_LAYER_MODE_DIFFERENCE,
+ GIMP_LAYER_MODE_DIFFERENCE_LINEAR,
+ GIMP_LAYER_MODE_DIFFERENCE,
+ GIMP_LAYER_MODE_DIFFERENCE_LEGACY
+ },
+
+ {
+ GIMP_LAYER_MODE_ADDITION,
+ GIMP_LAYER_MODE_ADDITION_LINEAR,
+ GIMP_LAYER_MODE_ADDITION,
+ GIMP_LAYER_MODE_ADDITION_LEGACY
+ },
+
+ {
+ GIMP_LAYER_MODE_SUBTRACT,
+ GIMP_LAYER_MODE_SUBTRACT_LINEAR,
+ GIMP_LAYER_MODE_SUBTRACT,
+ GIMP_LAYER_MODE_SUBTRACT_LEGACY
+ },
+
+ {
+ GIMP_LAYER_MODE_DARKEN_ONLY,
+ GIMP_LAYER_MODE_DARKEN_ONLY,
+ GIMP_LAYER_MODE_DARKEN_ONLY,
+ GIMP_LAYER_MODE_DARKEN_ONLY_LEGACY
+ },
+
+ {
+ GIMP_LAYER_MODE_LIGHTEN_ONLY,
+ GIMP_LAYER_MODE_LIGHTEN_ONLY,
+ GIMP_LAYER_MODE_LIGHTEN_ONLY,
+ GIMP_LAYER_MODE_LIGHTEN_ONLY_LEGACY
+ },
+
+ {
+ -1,
+ -1,
+ GIMP_LAYER_MODE_HSV_HUE,
+ GIMP_LAYER_MODE_HSV_HUE_LEGACY
+ },
+
+ {
+ -1,
+ -1,
+ GIMP_LAYER_MODE_HSV_SATURATION,
+ GIMP_LAYER_MODE_HSV_SATURATION_LEGACY
+ },
+
+ {
+ -1,
+ -1,
+ GIMP_LAYER_MODE_HSV_COLOR,
+ GIMP_LAYER_MODE_HSV_COLOR_LEGACY
+ },
+
+ {
+ -1,
+ -1,
+ GIMP_LAYER_MODE_HSV_VALUE,
+ GIMP_LAYER_MODE_HSV_VALUE_LEGACY
+ },
+
+ {
+ GIMP_LAYER_MODE_DIVIDE,
+ GIMP_LAYER_MODE_DIVIDE_LINEAR,
+ GIMP_LAYER_MODE_DIVIDE,
+ GIMP_LAYER_MODE_DIVIDE_LEGACY
+ },
+
+ {
+ GIMP_LAYER_MODE_DODGE,
+ GIMP_LAYER_MODE_DODGE_LINEAR,
+ GIMP_LAYER_MODE_DODGE,
+ GIMP_LAYER_MODE_DODGE_LEGACY
+ },
+
+ {
+ GIMP_LAYER_MODE_BURN,
+ GIMP_LAYER_MODE_BURN_LINEAR,
+ GIMP_LAYER_MODE_BURN,
+ GIMP_LAYER_MODE_BURN_LEGACY
+ },
+
+ {
+ GIMP_LAYER_MODE_HARDLIGHT,
+ GIMP_LAYER_MODE_HARDLIGHT_LINEAR,
+ GIMP_LAYER_MODE_HARDLIGHT,
+ GIMP_LAYER_MODE_HARDLIGHT_LEGACY
+ },
+
+ {
+ GIMP_LAYER_MODE_SOFTLIGHT,
+ GIMP_LAYER_MODE_SOFTLIGHT_LINEAR,
+ GIMP_LAYER_MODE_SOFTLIGHT,
+ GIMP_LAYER_MODE_SOFTLIGHT_LEGACY
+ },
+
+ {
+ GIMP_LAYER_MODE_GRAIN_EXTRACT,
+ GIMP_LAYER_MODE_GRAIN_EXTRACT_LINEAR,
+ GIMP_LAYER_MODE_GRAIN_EXTRACT,
+ GIMP_LAYER_MODE_GRAIN_EXTRACT_LEGACY
+ },
+
+ {
+ GIMP_LAYER_MODE_GRAIN_MERGE,
+ GIMP_LAYER_MODE_GRAIN_MERGE_LINEAR,
+ GIMP_LAYER_MODE_GRAIN_MERGE,
+ GIMP_LAYER_MODE_GRAIN_MERGE_LEGACY
+ },
+
+ {
+ GIMP_LAYER_MODE_COLOR_ERASE,
+ -1,
+ GIMP_LAYER_MODE_COLOR_ERASE,
+ -1,
+ },
+
+ {
+ GIMP_LAYER_MODE_VIVID_LIGHT,
+ GIMP_LAYER_MODE_VIVID_LIGHT_LINEAR,
+ GIMP_LAYER_MODE_VIVID_LIGHT,
+ -1
+ },
+
+ {
+ GIMP_LAYER_MODE_PIN_LIGHT,
+ GIMP_LAYER_MODE_PIN_LIGHT_LINEAR,
+ GIMP_LAYER_MODE_PIN_LIGHT,
+ -1
+ },
+
+ {
+ GIMP_LAYER_MODE_LINEAR_LIGHT,
+ GIMP_LAYER_MODE_LINEAR_LIGHT_LINEAR,
+ GIMP_LAYER_MODE_LINEAR_LIGHT,
+ -1
+ },
+
+ {
+ GIMP_LAYER_MODE_HARD_MIX,
+ GIMP_LAYER_MODE_HARD_MIX_LINEAR,
+ GIMP_LAYER_MODE_HARD_MIX,
+ -1
+ },
+
+ {
+ GIMP_LAYER_MODE_EXCLUSION,
+ GIMP_LAYER_MODE_EXCLUSION_LINEAR,
+ GIMP_LAYER_MODE_EXCLUSION,
+ -1
+ },
+
+ {
+ GIMP_LAYER_MODE_LINEAR_BURN,
+ GIMP_LAYER_MODE_LINEAR_BURN_LINEAR,
+ GIMP_LAYER_MODE_LINEAR_BURN,
+ -1
+ },
+
+ {
+ GIMP_LAYER_MODE_LUMINANCE_DARKEN_ONLY,
+ GIMP_LAYER_MODE_LUMINANCE_DARKEN_ONLY,
+ GIMP_LAYER_MODE_LUMA_DARKEN_ONLY,
+ -1
+ },
+
+ {
+ GIMP_LAYER_MODE_LUMINANCE_LIGHTEN_ONLY,
+ GIMP_LAYER_MODE_LUMINANCE_LIGHTEN_ONLY,
+ GIMP_LAYER_MODE_LUMA_LIGHTEN_ONLY,
+ -1
+ },
+
+ {
+ GIMP_LAYER_MODE_ERASE,
+ GIMP_LAYER_MODE_ERASE,
+ -1,
+ -1
+ },
+
+ {
+ GIMP_LAYER_MODE_REPLACE,
+ GIMP_LAYER_MODE_REPLACE,
+ -1,
+ -1
+ },
+
+ {
+ GIMP_LAYER_MODE_ANTI_ERASE,
+ GIMP_LAYER_MODE_ANTI_ERASE,
+ -1,
+ -1
+ },
+};
+
+
+/* public functions */
+
+void
+gimp_layer_modes_init (void)
+{
+ gint i;
+
+ for (i = 0; i < G_N_ELEMENTS (layer_mode_infos); i++)
+ {
+ g_assert ((GimpLayerMode) i == layer_mode_infos[i].layer_mode);
+ }
+}
+
+const GimpLayerModeInfo *
+gimp_layer_mode_info (GimpLayerMode mode)
+{
+ g_return_val_if_fail (mode < G_N_ELEMENTS (layer_mode_infos),
+ &layer_mode_infos[0]);
+
+ return &layer_mode_infos[mode];
+}
+
+gboolean
+gimp_layer_mode_is_legacy (GimpLayerMode mode)
+{
+ const GimpLayerModeInfo *info = gimp_layer_mode_info (mode);
+ if (!info)
+ return FALSE;
+ return (info->flags & GIMP_LAYER_MODE_FLAG_LEGACY) != 0;
+}
+
+gboolean
+gimp_layer_mode_wants_linear_data (GimpLayerMode mode)
+{
+ const GimpLayerModeInfo *info = gimp_layer_mode_info (mode);
+ if (!info)
+ return FALSE;
+ return (info->flags & GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA) != 0;
+}
+
+GimpLayerColorSpace
+gimp_layer_mode_get_blend_space (GimpLayerMode mode)
+{
+ const GimpLayerModeInfo *info = gimp_layer_mode_info (mode);
+ if (!info)
+ return GIMP_LAYER_COLOR_SPACE_RGB_LINEAR;
+ return info->blend_space;
+}
+
+GimpLayerColorSpace
+gimp_layer_mode_get_composite_space (GimpLayerMode mode)
+{
+ const GimpLayerModeInfo *info = gimp_layer_mode_info (mode);
+ if (!info)
+ return GIMP_LAYER_COLOR_SPACE_RGB_LINEAR;
+ return info->composite_space;
+}
+
+GimpLayerCompositeMode
+gimp_layer_mode_get_composite_mode (GimpLayerMode mode)
+{
+ const GimpLayerModeInfo *info = gimp_layer_mode_info (mode);
+ if (!info)
+ return GIMP_LAYER_COMPOSITE_SRC_OVER;
+ return info->composite_mode;
+}
+
+const gchar *
+gimp_layer_mode_get_operation (GimpLayerMode mode)
+{
+ const GimpLayerModeInfo *info = gimp_layer_mode_info (mode);
+ if (!info)
+ return "gimp:layer-mode";
+ return info->op_name;
+}
+
+static gboolean
+is_mode_in_array (const GimpLayerMode *modes,
+ gint n_modes,
+ GimpLayerMode mode)
+{
+ gint i;
+
+ for (i = 0; i < n_modes; i++)
+ if (modes[i] == mode)
+ return TRUE;
+
+ return FALSE;
+}
+
+GimpLayerModeGroup
+gimp_layer_mode_get_group (GimpLayerMode mode)
+{
+ if (is_mode_in_array (layer_mode_group_default,
+ G_N_ELEMENTS (layer_mode_group_default), mode))
+ {
+ return GIMP_LAYER_MODE_GROUP_DEFAULT;
+ }
+ else if (is_mode_in_array (layer_mode_group_linear,
+ G_N_ELEMENTS (layer_mode_group_linear), mode))
+ {
+ return GIMP_LAYER_MODE_GROUP_LINEAR;
+ }
+ else if (is_mode_in_array (layer_mode_group_perceptual,
+ G_N_ELEMENTS (layer_mode_group_perceptual), mode))
+ {
+ return GIMP_LAYER_MODE_GROUP_PERCEPTUAL;
+ }
+ else if (is_mode_in_array (layer_mode_group_legacy,
+ G_N_ELEMENTS (layer_mode_group_legacy), mode))
+ {
+ return GIMP_LAYER_MODE_GROUP_LEGACY;
+ }
+
+ return GIMP_LAYER_MODE_GROUP_DEFAULT;
+}
+
+const GimpLayerMode *
+gimp_layer_mode_get_group_array (GimpLayerModeGroup group,
+ gint *n_modes)
+{
+ g_return_val_if_fail (n_modes != NULL, NULL);
+
+ switch (group)
+ {
+ case GIMP_LAYER_MODE_GROUP_DEFAULT:
+ *n_modes = G_N_ELEMENTS (layer_mode_group_default);
+ return layer_mode_group_default;
+
+ case GIMP_LAYER_MODE_GROUP_LINEAR:
+ *n_modes = G_N_ELEMENTS (layer_mode_group_linear);
+ return layer_mode_group_linear;
+
+ case GIMP_LAYER_MODE_GROUP_PERCEPTUAL:
+ *n_modes = G_N_ELEMENTS (layer_mode_group_perceptual);
+ return layer_mode_group_perceptual;
+
+ case GIMP_LAYER_MODE_GROUP_LEGACY:
+ *n_modes = G_N_ELEMENTS (layer_mode_group_legacy);
+ return layer_mode_group_legacy;
+
+ default:
+ g_return_val_if_reached (NULL);
+ }
+}
+
+gboolean
+gimp_layer_mode_get_for_group (GimpLayerMode old_mode,
+ GimpLayerModeGroup new_group,
+ GimpLayerMode *new_mode)
+{
+ gint i;
+
+ g_return_val_if_fail (new_mode != NULL, FALSE);
+
+ for (i = 0; i < G_N_ELEMENTS (layer_mode_groups); i++)
+ {
+ if (is_mode_in_array (layer_mode_groups[i], 4, old_mode))
+ {
+ *new_mode = layer_mode_groups[i][new_group];
+
+ if (*new_mode != -1)
+ return TRUE;
+
+ return FALSE;
+ }
+ }
+
+ *new_mode = -1;
+
+ return FALSE;
+}
diff --git a/app/core/gimp-layer-modes.h b/app/operations/layer-modes/gimp-layer-modes.h
similarity index 81%
rename from app/core/gimp-layer-modes.h
rename to app/operations/layer-modes/gimp-layer-modes.h
index dbd04df..fb3df8c 100644
--- a/app/core/gimp-layer-modes.h
+++ b/app/operations/layer-modes/gimp-layer-modes.h
@@ -23,6 +23,23 @@
#define __GIMP_LAYER_MODES_H__
+typedef struct _GimpLayerModeInfo GimpLayerModeInfo;
+
+struct _GimpLayerModeInfo
+{
+ GimpLayerMode layer_mode;
+ gchar *op_name;
+ GimpLayerModeFlags flags;
+ GimpLayerCompositeMode composite_mode;
+ GimpLayerColorSpace composite_space;
+ GimpLayerColorSpace blend_space;
+};
+
+
+void gimp_layer_modes_init (void);
+
+const GimpLayerModeInfo *gimp_layer_mode_info (GimpLayerMode mode);
+
gboolean gimp_layer_mode_is_legacy (GimpLayerMode mode);
gboolean gimp_layer_mode_wants_linear_data (GimpLayerMode mode);
diff --git a/app/operations/layer-modes/gimpoperationlayermode.c
b/app/operations/layer-modes/gimpoperationlayermode.c
index b899a2d..20de360 100644
--- a/app/operations/layer-modes/gimpoperationlayermode.c
+++ b/app/operations/layer-modes/gimpoperationlayermode.c
@@ -1980,574 +1980,6 @@ static inline GimpBlendFunc gimp_layer_mode_get_blend_fun (GimpLayerMode mode)
case GIMP_LAYER_MODE_ANTI_ERASE:
return (void*)dummy_fun;
}
- return (void*)dummy_fun;
-}
-
-struct _GimpOperationLayerModeInfo
-{
- GimpLayerMode layer_mode;
- gchar *mode_name;
- gchar *op_name;
- GimpLayerModeFlags flags;
- GimpLayerCompositeMode composite_mode;
- GimpLayerColorSpace composite_space;
- GimpLayerColorSpace blend_space;
-};
-static GimpLayerModeInfo gimp_layer_mode_infos[]=
-{
- { GIMP_LAYER_MODE_NORMAL,
- "gimp:normal",
- 0,
- GIMP_LAYER_COMPOSITE_SRC_OVER,
- },
- { GIMP_LAYER_MODE_DISSOLVE,
- "gimp:dissolve",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_OVER,
- },
- { GIMP_LAYER_MODE_BEHIND,
- "gimp:behind",
- 0,
- GIMP_LAYER_COMPOSITE_DST_ATOP,
- },
- { GIMP_LAYER_MODE_MULTIPLY_LEGACY,
- "gimp:multiply-legacy",
- GIMP_LAYER_MODE_FLAG_LEGACY,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- },
- { GIMP_LAYER_MODE_SCREEN_LEGACY,
- "gimp:screen-legacy",
- GIMP_LAYER_MODE_FLAG_LEGACY,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- },
- { GIMP_LAYER_MODE_OVERLAY_LEGACY,
- "gimp:overlay-legacy",
- GIMP_LAYER_MODE_FLAG_LEGACY,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- },
- { GIMP_LAYER_MODE_DIFFERENCE_LEGACY,
- "gimp:difference-legacy",
- GIMP_LAYER_MODE_FLAG_LEGACY,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- },
- { GIMP_LAYER_MODE_ADDITION_LEGACY,
- "gimp:addition-legacy",
- GIMP_LAYER_MODE_FLAG_LEGACY,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- },
- { GIMP_LAYER_MODE_SUBTRACT_LEGACY,
- "gimp:subtract-legacy",
- GIMP_LAYER_MODE_FLAG_LEGACY,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- },
- { GIMP_LAYER_MODE_DARKEN_ONLY_LEGACY,
- "gimp:darken-only-legacy",
- GIMP_LAYER_MODE_FLAG_LEGACY,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- },
- { GIMP_LAYER_MODE_LIGHTEN_ONLY_LEGACY,
- "gimp:lighten-only-legacy",
- GIMP_LAYER_MODE_FLAG_LEGACY,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- },
- { GIMP_LAYER_MODE_HSV_HUE_LEGACY,
- "gimp:hsv-hue-legacy",
- GIMP_LAYER_MODE_FLAG_LEGACY,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- },
- { GIMP_LAYER_MODE_HSV_SATURATION_LEGACY,
- "gimp:hsv-saturation-legacy",
- GIMP_LAYER_MODE_FLAG_LEGACY,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- },
- { GIMP_LAYER_MODE_HSV_COLOR_LEGACY,
- "gimp:hsv-color-legacy",
- GIMP_LAYER_MODE_FLAG_LEGACY,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- },
- { GIMP_LAYER_MODE_HSV_VALUE_LEGACY,
- "gimp:hsv-value-legacy",
- GIMP_LAYER_MODE_FLAG_LEGACY,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- },
- { GIMP_LAYER_MODE_DIVIDE_LEGACY,
- "gimp:divide-legacy",
- GIMP_LAYER_MODE_FLAG_LEGACY,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- },
- { GIMP_LAYER_MODE_DODGE_LEGACY,
- "gimp:dodge-legacy",
- GIMP_LAYER_MODE_FLAG_LEGACY,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- },
- { GIMP_LAYER_MODE_BURN_LEGACY,
- "gimp:burn-legacy",
- GIMP_LAYER_MODE_FLAG_LEGACY,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- },
- { GIMP_LAYER_MODE_HARDLIGHT_LEGACY,
- "gimp:hardlight-legacy",
- GIMP_LAYER_MODE_FLAG_LEGACY,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- },
- { GIMP_LAYER_MODE_SOFTLIGHT_LEGACY,
- "gimp:softlight-legacy",
- GIMP_LAYER_MODE_FLAG_LEGACY,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- },
- { GIMP_LAYER_MODE_GRAIN_EXTRACT_LEGACY,
- "gimp:grain-extract-legacy",
- GIMP_LAYER_MODE_FLAG_LEGACY,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- },
- { GIMP_LAYER_MODE_GRAIN_MERGE_LEGACY,
- "gimp:grain-merge-legacy",
- GIMP_LAYER_MODE_FLAG_LEGACY,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- },
- { GIMP_LAYER_MODE_COLOR_ERASE,
- "gimp:color-erase",
- 0,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- },
- { GIMP_LAYER_MODE_OVERLAY,
- "gimp:layer-mode",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
- GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL
- },
- { GIMP_LAYER_MODE_LCH_HUE,
- "gimp:layer-mode",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
- GIMP_LAYER_COLOR_SPACE_LAB
- },
- { GIMP_LAYER_MODE_LCH_CHROMA,
- "gimp:layer-mode",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
- GIMP_LAYER_COLOR_SPACE_LAB
- },
- { GIMP_LAYER_MODE_LCH_COLOR,
- "gimp:layer-mode",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
- GIMP_LAYER_COLOR_SPACE_LAB
- },
- { GIMP_LAYER_MODE_LCH_LIGHTNESS,
- "gimp:layer-mode",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
- GIMP_LAYER_COLOR_SPACE_LAB
- },
- { GIMP_LAYER_MODE_NORMAL_LINEAR,
- "gimp:normal",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- },
- { GIMP_LAYER_MODE_BEHIND_LINEAR,
- "gimp:behind",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- },
- { GIMP_LAYER_MODE_MULTIPLY,
- "gimp:layer-mode",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
- GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL
- },
- { GIMP_LAYER_MODE_MULTIPLY_LINEAR,
- "gimp:layer-mode",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR
- },
- { GIMP_LAYER_MODE_SCREEN,
- "gimp:layer-mode",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
- GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL
- },
- { GIMP_LAYER_MODE_SCREEN_LINEAR,
- "gimp:layer-mode",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR
- },
- { GIMP_LAYER_MODE_OVERLAY_LINEAR,
- "gimp:layer-mode",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR
- },
- { GIMP_LAYER_MODE_DIFFERENCE,
- "gimp:layer-mode",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
- GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL
- },
- { GIMP_LAYER_MODE_DIFFERENCE_LINEAR,
- "gimp:layer-mode",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR
- },
- { GIMP_LAYER_MODE_ADDITION,
- "gimp:layer-mode",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
- GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL
- },
- { GIMP_LAYER_MODE_ADDITION_LINEAR,
- "gimp:layer-mode",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR
- },
- { GIMP_LAYER_MODE_SUBTRACT,
- "gimp:layer-mode",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
- GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL
- },
- { GIMP_LAYER_MODE_SUBTRACT_LINEAR,
- "gimp:layer-mode",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR
- },
- { GIMP_LAYER_MODE_DARKEN_ONLY,
- "gimp:layer-mode",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR
- },
- { GIMP_LAYER_MODE_LIGHTEN_ONLY,
- "gimp:layer-mode",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR
- },
- { GIMP_LAYER_MODE_HSV_HUE,
- "gimp:layer-mode",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
- GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL
- },
- { GIMP_LAYER_MODE_HSV_SATURATION,
- "gimp:layer-mode",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
- GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL
- },
- { GIMP_LAYER_MODE_HSV_COLOR,
- "gimp:layer-mode",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
- GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL
- },
- { GIMP_LAYER_MODE_HSV_VALUE,
- "gimp:layer-mode",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
- GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL
- },
- { GIMP_LAYER_MODE_DIVIDE,
- "gimp:layer-mode",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
- GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL
- },
- { GIMP_LAYER_MODE_DIVIDE_LINEAR,
- "gimp:layer-mode",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR
- },
- { GIMP_LAYER_MODE_DODGE,
- "gimp:layer-mode",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
- GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL
- },
- { GIMP_LAYER_MODE_DODGE_LINEAR,
- "gimp:layer-mode",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR
- },
- { GIMP_LAYER_MODE_BURN,
- "gimp:layer-mode",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
- GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL
- },
- { GIMP_LAYER_MODE_BURN_LINEAR,
- "gimp:layer-mode",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR
- },
- { GIMP_LAYER_MODE_HARDLIGHT,
- "gimp:layer-mode",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
- GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL
- },
- { GIMP_LAYER_MODE_HARDLIGHT_LINEAR,
- "gimp:layer-mode",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR
- },
- { GIMP_LAYER_MODE_SOFTLIGHT,
- "gimp:layer-mode",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
- GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL
- },
- { GIMP_LAYER_MODE_SOFTLIGHT_LINEAR,
- "gimp:layer-mode",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR
- },
- { GIMP_LAYER_MODE_GRAIN_EXTRACT,
- "gimp:layer-mode",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
- GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL
- },
- { GIMP_LAYER_MODE_GRAIN_EXTRACT_LINEAR,
- "gimp:layer-mode",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR
- },
- { GIMP_LAYER_MODE_GRAIN_MERGE,
- "gimp:layer-mode",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
- GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL
- },
- { GIMP_LAYER_MODE_GRAIN_MERGE_LINEAR,
- "gimp:layer-mode",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR
- },
- { GIMP_LAYER_MODE_VIVID_LIGHT,
- "gimp:layer-mode",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
- GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL
- },
- { GIMP_LAYER_MODE_VIVID_LIGHT_LINEAR,
- "gimp:layer-mode",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR
- },
- { GIMP_LAYER_MODE_PIN_LIGHT,
- "gimp:layer-mode",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
- GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL
- },
- { GIMP_LAYER_MODE_PIN_LIGHT_LINEAR,
- "gimp:layer-mode",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR
- },
- { GIMP_LAYER_MODE_LINEAR_LIGHT,
- "gimp:layer-mode",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
- GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL
- },
- { GIMP_LAYER_MODE_LINEAR_LIGHT_LINEAR,
- "gimp:layer-mode",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR
- },
- { GIMP_LAYER_MODE_HARD_MIX,
- "gimp:layer-mode",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
- GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL
- },
- { GIMP_LAYER_MODE_HARD_MIX_LINEAR,
- "gimp:layer-mode",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR
- },
- { GIMP_LAYER_MODE_EXCLUSION,
- "gimp:layer-mode",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
- GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL
- },
- { GIMP_LAYER_MODE_EXCLUSION_LINEAR,
- "gimp:layer-mode",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR
- },
- { GIMP_LAYER_MODE_LINEAR_BURN,
- "gimp:layer-mode",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
- GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL
- },
- { GIMP_LAYER_MODE_LINEAR_BURN_LINEAR,
- "gimp:layer-mode",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR
- },
- { GIMP_LAYER_MODE_LUMA_DARKEN_ONLY,
- "gimp:layer-mode",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
- GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL
- },
- { GIMP_LAYER_MODE_LUMINANCE_DARKEN_ONLY,
- "gimp:layer-mode",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR
- },
- { GIMP_LAYER_MODE_LUMA_LIGHTEN_ONLY,
- "gimp:layer-mode",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
- GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL
- },
- { GIMP_LAYER_MODE_LUMINANCE_LIGHTEN_ONLY,
- "gimp:layer-mode",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_ATOP,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
- GIMP_LAYER_COLOR_SPACE_RGB_LINEAR
- },
- { GIMP_LAYER_MODE_ERASE,
- "gimp:erase",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- GIMP_LAYER_COMPOSITE_SRC_ATOP
- },
- { GIMP_LAYER_MODE_REPLACE,
- "gimp:replace",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- },
- { GIMP_LAYER_MODE_ANTI_ERASE,
- "gimp:anti-erase",
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA,
- },
-};
-
-const GimpLayerModeInfo *gimp_layer_mode_info (GimpLayerMode mode)
-{
- int i;
- for (i = 0; i < sizeof (gimp_layer_mode_infos) /
- sizeof (gimp_layer_mode_infos[0]); i++)
- {
- if (gimp_layer_mode_infos[i].layer_mode == mode)
- return &gimp_layer_mode_infos[i];
- }
- return NULL;
-}
-
-#if 0
-/* the following is test code for verifying that the above data matches
- the apis it takes over for
- */
-
-#include "core/gimp-layer-modes.h"
-
-void verify_layer_mode_info (void);
-void verify_layer_mode_info (void)
-{
- int i;
- for (i = 0; i < sizeof (gimp_layer_mode_infos) / sizeof (gimp_layer_mode_infos[0]); i++)
- {
- GimpLayerModeInfo *info = &gimp_layer_mode_infos[i];
- printf ("%i - %s\n", i, info->op_name);
- int mode = info->layer_mode;
- if (info->layer_mode != i)
- {
- printf (" enum mismatch\n");
- }
- if ((gimp_layer_mode_is_legacy (mode) !=
- ((info->flags & GIMP_LAYER_MODE_FLAG_LEGACY) != 0)))
- printf (" legacy mismatch\n");
- if ((gimp_layer_mode_wants_linear_data (mode) !=
- ((info->flags & GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA) != 0)))
- printf (" wants linear data mismatch\n");
- if (!strcmp (info->op_name, "gimp:layer-mode"))
- {
- if (gimp_layer_mode_get_blend_space (mode) != info->blend_space)
- printf (" blend space mismatch\n");
- if (gimp_layer_mode_get_composite_space (mode) != info->composite_space)
- printf (" composite space mismatch\n");
- if (gimp_layer_mode_get_composite_mode (mode) != info->composite_mode)
- printf (" composite mode mismatch\n");
- if (strcmp (gimp_layer_mode_get_operation (mode), info->op_name))
- printf (" operation mismatch\n");
- }
- }
- exit(0);
+ return (void*)dummy_fun;
}
-#endif
diff --git a/app/operations/layer-modes/gimpoperationlayermode.h
b/app/operations/layer-modes/gimpoperationlayermode.h
index 392aa30..be6e684 100644
--- a/app/operations/layer-modes/gimpoperationlayermode.h
+++ b/app/operations/layer-modes/gimpoperationlayermode.h
@@ -48,26 +48,6 @@ struct _GimpOperationLayerModeClass
GimpLayerModeAffectMask (* get_affect_mask) (GimpOperationLayerMode *layer_mode);
};
-typedef struct _GimpLayerModeInfo GimpLayerModeInfo;
-
-typedef enum GimpLayerModeFlags {
- GIMP_LAYER_MODE_FLAG_LEGACY = (1<<0),
- GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA = (1<<1)
-} GimpLayerModeFlags;
-
-
-struct _GimpLayerModeInfo
-{
- GimpLayerMode layer_mode;
- gchar *op_name;
- GimpLayerModeFlags flags;
- GimpLayerCompositeMode composite_mode;
- GimpLayerColorSpace composite_space;
- GimpLayerColorSpace blend_space;
-};
-
-const GimpLayerModeInfo *gimp_layer_mode_info (GimpLayerMode mode);
-
struct _GimpOperationLayerMode
{
diff --git a/app/operations/operations-enums.c b/app/operations/operations-enums.c
index de7adcf..e8ccc4b 100644
--- a/app/operations/operations-enums.c
+++ b/app/operations/operations-enums.c
@@ -74,6 +74,224 @@ gimp_layer_composite_mode_get_type (void)
return type;
}
+GType
+gimp_layer_mode_get_type (void)
+{
+ static const GEnumValue values[] =
+ {
+ { GIMP_LAYER_MODE_NORMAL, "GIMP_LAYER_MODE_NORMAL", "normal" },
+ { GIMP_LAYER_MODE_DISSOLVE, "GIMP_LAYER_MODE_DISSOLVE", "dissolve" },
+ { GIMP_LAYER_MODE_BEHIND, "GIMP_LAYER_MODE_BEHIND", "behind" },
+ { GIMP_LAYER_MODE_MULTIPLY_LEGACY, "GIMP_LAYER_MODE_MULTIPLY_LEGACY", "multiply-legacy" },
+ { GIMP_LAYER_MODE_SCREEN_LEGACY, "GIMP_LAYER_MODE_SCREEN_LEGACY", "screen-legacy" },
+ { GIMP_LAYER_MODE_OVERLAY_LEGACY, "GIMP_LAYER_MODE_OVERLAY_LEGACY", "overlay-legacy" },
+ { GIMP_LAYER_MODE_DIFFERENCE_LEGACY, "GIMP_LAYER_MODE_DIFFERENCE_LEGACY", "difference-legacy" },
+ { GIMP_LAYER_MODE_ADDITION_LEGACY, "GIMP_LAYER_MODE_ADDITION_LEGACY", "addition-legacy" },
+ { GIMP_LAYER_MODE_SUBTRACT_LEGACY, "GIMP_LAYER_MODE_SUBTRACT_LEGACY", "subtract-legacy" },
+ { GIMP_LAYER_MODE_DARKEN_ONLY_LEGACY, "GIMP_LAYER_MODE_DARKEN_ONLY_LEGACY", "darken-only-legacy" },
+ { GIMP_LAYER_MODE_LIGHTEN_ONLY_LEGACY, "GIMP_LAYER_MODE_LIGHTEN_ONLY_LEGACY", "lighten-only-legacy" },
+ { GIMP_LAYER_MODE_HSV_HUE_LEGACY, "GIMP_LAYER_MODE_HSV_HUE_LEGACY", "hsv-hue-legacy" },
+ { GIMP_LAYER_MODE_HSV_SATURATION_LEGACY, "GIMP_LAYER_MODE_HSV_SATURATION_LEGACY",
"hsv-saturation-legacy" },
+ { GIMP_LAYER_MODE_HSV_COLOR_LEGACY, "GIMP_LAYER_MODE_HSV_COLOR_LEGACY", "hsv-color-legacy" },
+ { GIMP_LAYER_MODE_HSV_VALUE_LEGACY, "GIMP_LAYER_MODE_HSV_VALUE_LEGACY", "hsv-value-legacy" },
+ { GIMP_LAYER_MODE_DIVIDE_LEGACY, "GIMP_LAYER_MODE_DIVIDE_LEGACY", "divide-legacy" },
+ { GIMP_LAYER_MODE_DODGE_LEGACY, "GIMP_LAYER_MODE_DODGE_LEGACY", "dodge-legacy" },
+ { GIMP_LAYER_MODE_BURN_LEGACY, "GIMP_LAYER_MODE_BURN_LEGACY", "burn-legacy" },
+ { GIMP_LAYER_MODE_HARDLIGHT_LEGACY, "GIMP_LAYER_MODE_HARDLIGHT_LEGACY", "hardlight-legacy" },
+ { GIMP_LAYER_MODE_SOFTLIGHT_LEGACY, "GIMP_LAYER_MODE_SOFTLIGHT_LEGACY", "softlight-legacy" },
+ { GIMP_LAYER_MODE_GRAIN_EXTRACT_LEGACY, "GIMP_LAYER_MODE_GRAIN_EXTRACT_LEGACY", "grain-extract-legacy" },
+ { GIMP_LAYER_MODE_GRAIN_MERGE_LEGACY, "GIMP_LAYER_MODE_GRAIN_MERGE_LEGACY", "grain-merge-legacy" },
+ { GIMP_LAYER_MODE_COLOR_ERASE, "GIMP_LAYER_MODE_COLOR_ERASE", "color-erase" },
+ { GIMP_LAYER_MODE_OVERLAY, "GIMP_LAYER_MODE_OVERLAY", "overlay" },
+ { GIMP_LAYER_MODE_LCH_HUE, "GIMP_LAYER_MODE_LCH_HUE", "lch-hue" },
+ { GIMP_LAYER_MODE_LCH_CHROMA, "GIMP_LAYER_MODE_LCH_CHROMA", "lch-chroma" },
+ { GIMP_LAYER_MODE_LCH_COLOR, "GIMP_LAYER_MODE_LCH_COLOR", "lch-color" },
+ { GIMP_LAYER_MODE_LCH_LIGHTNESS, "GIMP_LAYER_MODE_LCH_LIGHTNESS", "lch-lightness" },
+ { GIMP_LAYER_MODE_NORMAL_LINEAR, "GIMP_LAYER_MODE_NORMAL_LINEAR", "normal-linear" },
+ { GIMP_LAYER_MODE_BEHIND_LINEAR, "GIMP_LAYER_MODE_BEHIND_LINEAR", "behind-linear" },
+ { GIMP_LAYER_MODE_MULTIPLY, "GIMP_LAYER_MODE_MULTIPLY", "multiply" },
+ { GIMP_LAYER_MODE_MULTIPLY_LINEAR, "GIMP_LAYER_MODE_MULTIPLY_LINEAR", "multiply-linear" },
+ { GIMP_LAYER_MODE_SCREEN, "GIMP_LAYER_MODE_SCREEN", "screen" },
+ { GIMP_LAYER_MODE_SCREEN_LINEAR, "GIMP_LAYER_MODE_SCREEN_LINEAR", "screen-linear" },
+ { GIMP_LAYER_MODE_OVERLAY_LINEAR, "GIMP_LAYER_MODE_OVERLAY_LINEAR", "overlay-linear" },
+ { GIMP_LAYER_MODE_DIFFERENCE, "GIMP_LAYER_MODE_DIFFERENCE", "difference" },
+ { GIMP_LAYER_MODE_DIFFERENCE_LINEAR, "GIMP_LAYER_MODE_DIFFERENCE_LINEAR", "difference-linear" },
+ { GIMP_LAYER_MODE_ADDITION, "GIMP_LAYER_MODE_ADDITION", "addition" },
+ { GIMP_LAYER_MODE_ADDITION_LINEAR, "GIMP_LAYER_MODE_ADDITION_LINEAR", "addition-linear" },
+ { GIMP_LAYER_MODE_SUBTRACT, "GIMP_LAYER_MODE_SUBTRACT", "subtract" },
+ { GIMP_LAYER_MODE_SUBTRACT_LINEAR, "GIMP_LAYER_MODE_SUBTRACT_LINEAR", "subtract-linear" },
+ { GIMP_LAYER_MODE_DARKEN_ONLY, "GIMP_LAYER_MODE_DARKEN_ONLY", "darken-only" },
+ { GIMP_LAYER_MODE_LIGHTEN_ONLY, "GIMP_LAYER_MODE_LIGHTEN_ONLY", "lighten-only" },
+ { GIMP_LAYER_MODE_HSV_HUE, "GIMP_LAYER_MODE_HSV_HUE", "hsv-hue" },
+ { GIMP_LAYER_MODE_HSV_SATURATION, "GIMP_LAYER_MODE_HSV_SATURATION", "hsv-saturation" },
+ { GIMP_LAYER_MODE_HSV_COLOR, "GIMP_LAYER_MODE_HSV_COLOR", "hsv-color" },
+ { GIMP_LAYER_MODE_HSV_VALUE, "GIMP_LAYER_MODE_HSV_VALUE", "hsv-value" },
+ { GIMP_LAYER_MODE_DIVIDE, "GIMP_LAYER_MODE_DIVIDE", "divide" },
+ { GIMP_LAYER_MODE_DIVIDE_LINEAR, "GIMP_LAYER_MODE_DIVIDE_LINEAR", "divide-linear" },
+ { GIMP_LAYER_MODE_DODGE, "GIMP_LAYER_MODE_DODGE", "dodge" },
+ { GIMP_LAYER_MODE_DODGE_LINEAR, "GIMP_LAYER_MODE_DODGE_LINEAR", "dodge-linear" },
+ { GIMP_LAYER_MODE_BURN, "GIMP_LAYER_MODE_BURN", "burn" },
+ { GIMP_LAYER_MODE_BURN_LINEAR, "GIMP_LAYER_MODE_BURN_LINEAR", "burn-linear" },
+ { GIMP_LAYER_MODE_HARDLIGHT, "GIMP_LAYER_MODE_HARDLIGHT", "hardlight" },
+ { GIMP_LAYER_MODE_HARDLIGHT_LINEAR, "GIMP_LAYER_MODE_HARDLIGHT_LINEAR", "hardlight-linear" },
+ { GIMP_LAYER_MODE_SOFTLIGHT, "GIMP_LAYER_MODE_SOFTLIGHT", "softlight" },
+ { GIMP_LAYER_MODE_SOFTLIGHT_LINEAR, "GIMP_LAYER_MODE_SOFTLIGHT_LINEAR", "softlight-linear" },
+ { GIMP_LAYER_MODE_GRAIN_EXTRACT, "GIMP_LAYER_MODE_GRAIN_EXTRACT", "grain-extract" },
+ { GIMP_LAYER_MODE_GRAIN_EXTRACT_LINEAR, "GIMP_LAYER_MODE_GRAIN_EXTRACT_LINEAR", "grain-extract-linear" },
+ { GIMP_LAYER_MODE_GRAIN_MERGE, "GIMP_LAYER_MODE_GRAIN_MERGE", "grain-merge" },
+ { GIMP_LAYER_MODE_GRAIN_MERGE_LINEAR, "GIMP_LAYER_MODE_GRAIN_MERGE_LINEAR", "grain-merge-linear" },
+ { GIMP_LAYER_MODE_VIVID_LIGHT, "GIMP_LAYER_MODE_VIVID_LIGHT", "vivid-light" },
+ { GIMP_LAYER_MODE_VIVID_LIGHT_LINEAR, "GIMP_LAYER_MODE_VIVID_LIGHT_LINEAR", "vivid-light-linear" },
+ { GIMP_LAYER_MODE_PIN_LIGHT, "GIMP_LAYER_MODE_PIN_LIGHT", "pin-light" },
+ { GIMP_LAYER_MODE_PIN_LIGHT_LINEAR, "GIMP_LAYER_MODE_PIN_LIGHT_LINEAR", "pin-light-linear" },
+ { GIMP_LAYER_MODE_LINEAR_LIGHT, "GIMP_LAYER_MODE_LINEAR_LIGHT", "linear-light" },
+ { GIMP_LAYER_MODE_LINEAR_LIGHT_LINEAR, "GIMP_LAYER_MODE_LINEAR_LIGHT_LINEAR", "linear-light-linear" },
+ { GIMP_LAYER_MODE_HARD_MIX, "GIMP_LAYER_MODE_HARD_MIX", "hard-mix" },
+ { GIMP_LAYER_MODE_HARD_MIX_LINEAR, "GIMP_LAYER_MODE_HARD_MIX_LINEAR", "hard-mix-linear" },
+ { GIMP_LAYER_MODE_EXCLUSION, "GIMP_LAYER_MODE_EXCLUSION", "exclusion" },
+ { GIMP_LAYER_MODE_EXCLUSION_LINEAR, "GIMP_LAYER_MODE_EXCLUSION_LINEAR", "exclusion-linear" },
+ { GIMP_LAYER_MODE_LINEAR_BURN, "GIMP_LAYER_MODE_LINEAR_BURN", "linear-burn" },
+ { GIMP_LAYER_MODE_LINEAR_BURN_LINEAR, "GIMP_LAYER_MODE_LINEAR_BURN_LINEAR", "linear-burn-linear" },
+ { GIMP_LAYER_MODE_LUMA_DARKEN_ONLY, "GIMP_LAYER_MODE_LUMA_DARKEN_ONLY", "luma-darken-only" },
+ { GIMP_LAYER_MODE_LUMINANCE_DARKEN_ONLY, "GIMP_LAYER_MODE_LUMINANCE_DARKEN_ONLY",
"luminance-darken-only" },
+ { GIMP_LAYER_MODE_LUMA_LIGHTEN_ONLY, "GIMP_LAYER_MODE_LUMA_LIGHTEN_ONLY", "luma-lighten-only" },
+ { GIMP_LAYER_MODE_LUMINANCE_LIGHTEN_ONLY, "GIMP_LAYER_MODE_LUMINANCE_LIGHTEN_ONLY",
"luminance-lighten-only" },
+ { GIMP_LAYER_MODE_ERASE, "GIMP_LAYER_MODE_ERASE", "erase" },
+ { GIMP_LAYER_MODE_REPLACE, "GIMP_LAYER_MODE_REPLACE", "replace" },
+ { GIMP_LAYER_MODE_ANTI_ERASE, "GIMP_LAYER_MODE_ANTI_ERASE", "anti-erase" },
+ { 0, NULL, NULL }
+ };
+
+ static const GimpEnumDesc descs[] =
+ {
+ { GIMP_LAYER_MODE_NORMAL, NC_("layer-mode", "Normal"), NULL },
+ { GIMP_LAYER_MODE_DISSOLVE, NC_("layer-mode", "Dissolve"), NULL },
+ { GIMP_LAYER_MODE_BEHIND, NC_("layer-mode", "Behind"), NULL },
+ { GIMP_LAYER_MODE_MULTIPLY_LEGACY, NC_("layer-mode", "Multiply (legacy)"), NULL },
+ { GIMP_LAYER_MODE_SCREEN_LEGACY, NC_("layer-mode", "Screen (legacy)"), NULL },
+ { GIMP_LAYER_MODE_OVERLAY_LEGACY, NC_("layer-mode", "Old broken Overlay"), NULL },
+ { GIMP_LAYER_MODE_DIFFERENCE_LEGACY, NC_("layer-mode", "Difference (legacy)"), NULL },
+ { GIMP_LAYER_MODE_ADDITION_LEGACY, NC_("layer-mode", "Addition (legacy)"), NULL },
+ { GIMP_LAYER_MODE_SUBTRACT_LEGACY, NC_("layer-mode", "Subtract (legacy)"), NULL },
+ { GIMP_LAYER_MODE_DARKEN_ONLY_LEGACY, NC_("layer-mode", "Darken only (legacy)"), NULL },
+ { GIMP_LAYER_MODE_LIGHTEN_ONLY_LEGACY, NC_("layer-mode", "Lighten only (legacy)"), NULL },
+ { GIMP_LAYER_MODE_HSV_HUE_LEGACY, NC_("layer-mode", "Hue (HSV) (legacy)"), NULL },
+ { GIMP_LAYER_MODE_HSV_SATURATION_LEGACY, NC_("layer-mode", "Saturation (HSV) (legacy)"), NULL },
+ { GIMP_LAYER_MODE_HSV_COLOR_LEGACY, NC_("layer-mode", "Color (HSV) (legacy)"), NULL },
+ { GIMP_LAYER_MODE_HSV_VALUE_LEGACY, NC_("layer-mode", "Value (HSV) (legacy)"), NULL },
+ { GIMP_LAYER_MODE_DIVIDE_LEGACY, NC_("layer-mode", "Divide (legacy)"), NULL },
+ { GIMP_LAYER_MODE_DODGE_LEGACY, NC_("layer-mode", "Dodge (legacy)"), NULL },
+ { GIMP_LAYER_MODE_BURN_LEGACY, NC_("layer-mode", "Burn (legacy)"), NULL },
+ { GIMP_LAYER_MODE_HARDLIGHT_LEGACY, NC_("layer-mode", "Hard light (legacy)"), NULL },
+ { GIMP_LAYER_MODE_SOFTLIGHT_LEGACY, NC_("layer-mode", "Soft light (legacy)"), NULL },
+ { GIMP_LAYER_MODE_GRAIN_EXTRACT_LEGACY, NC_("layer-mode", "Grain extract (legacy)"), NULL },
+ { GIMP_LAYER_MODE_GRAIN_MERGE_LEGACY, NC_("layer-mode", "Grain merge (legacy)"), NULL },
+ { GIMP_LAYER_MODE_COLOR_ERASE, NC_("layer-mode", "Color erase"), NULL },
+ { GIMP_LAYER_MODE_OVERLAY, NC_("layer-mode", "Overlay"), NULL },
+ { GIMP_LAYER_MODE_LCH_HUE, NC_("layer-mode", "Hue (LCH)"), NULL },
+ { GIMP_LAYER_MODE_LCH_CHROMA, NC_("layer-mode", "Chroma (LCH)"), NULL },
+ { GIMP_LAYER_MODE_LCH_COLOR, NC_("layer-mode", "Color (LCH)"), NULL },
+ { GIMP_LAYER_MODE_LCH_LIGHTNESS, NC_("layer-mode", "Lightness (LCH)"), NULL },
+ { GIMP_LAYER_MODE_NORMAL_LINEAR, NC_("layer-mode", "Normal (linear)"), NULL },
+ { GIMP_LAYER_MODE_BEHIND_LINEAR, NC_("layer-mode", "Behind (linear)"), NULL },
+ { GIMP_LAYER_MODE_MULTIPLY, NC_("layer-mode", "Multiply"), NULL },
+ { GIMP_LAYER_MODE_MULTIPLY_LINEAR, NC_("layer-mode", "Multiply (linear)"), NULL },
+ { GIMP_LAYER_MODE_SCREEN, NC_("layer-mode", "Screen"), NULL },
+ { GIMP_LAYER_MODE_SCREEN_LINEAR, NC_("layer-mode", "Screen (linear)"), NULL },
+ { GIMP_LAYER_MODE_OVERLAY_LINEAR, NC_("layer-mode", "Overlay (linear)"), NULL },
+ { GIMP_LAYER_MODE_DIFFERENCE, NC_("layer-mode", "Difference"), NULL },
+ { GIMP_LAYER_MODE_DIFFERENCE_LINEAR, NC_("layer-mode", "Difference (linear)"), NULL },
+ { GIMP_LAYER_MODE_ADDITION, NC_("layer-mode", "Addition"), NULL },
+ { GIMP_LAYER_MODE_ADDITION_LINEAR, NC_("layer-mode", "Addition (linear)"), NULL },
+ { GIMP_LAYER_MODE_SUBTRACT, NC_("layer-mode", "Subtract"), NULL },
+ { GIMP_LAYER_MODE_SUBTRACT_LINEAR, NC_("layer-mode", "Subtract (linear)"), NULL },
+ { GIMP_LAYER_MODE_DARKEN_ONLY, NC_("layer-mode", "Darken only"), NULL },
+ { GIMP_LAYER_MODE_LIGHTEN_ONLY, NC_("layer-mode", "Lighten only"), NULL },
+ { GIMP_LAYER_MODE_HSV_HUE, NC_("layer-mode", "Hue (HSV)"), NULL },
+ { GIMP_LAYER_MODE_HSV_SATURATION, NC_("layer-mode", "Saturation (HSV)"), NULL },
+ { GIMP_LAYER_MODE_HSV_COLOR, NC_("layer-mode", "Color (HSV)"), NULL },
+ { GIMP_LAYER_MODE_HSV_VALUE, NC_("layer-mode", "Value (HSV)"), NULL },
+ { GIMP_LAYER_MODE_DIVIDE, NC_("layer-mode", "Divide"), NULL },
+ { GIMP_LAYER_MODE_DIVIDE_LINEAR, NC_("layer-mode", "Divide (linear)"), NULL },
+ { GIMP_LAYER_MODE_DODGE, NC_("layer-mode", "Dodge"), NULL },
+ { GIMP_LAYER_MODE_DODGE_LINEAR, NC_("layer-mode", "Dodge (linear)"), NULL },
+ { GIMP_LAYER_MODE_BURN, NC_("layer-mode", "Burn"), NULL },
+ { GIMP_LAYER_MODE_BURN_LINEAR, NC_("layer-mode", "Burn (linear)"), NULL },
+ { GIMP_LAYER_MODE_HARDLIGHT, NC_("layer-mode", "Hard light"), NULL },
+ { GIMP_LAYER_MODE_HARDLIGHT_LINEAR, NC_("layer-mode", "Hard light (linear)"), NULL },
+ { GIMP_LAYER_MODE_SOFTLIGHT, NC_("layer-mode", "Soft light"), NULL },
+ { GIMP_LAYER_MODE_SOFTLIGHT_LINEAR, NC_("layer-mode", "Soft light (linear)"), NULL },
+ { GIMP_LAYER_MODE_GRAIN_EXTRACT, NC_("layer-mode", "Grain extract"), NULL },
+ { GIMP_LAYER_MODE_GRAIN_EXTRACT_LINEAR, NC_("layer-mode", "Grain extract (linear)"), NULL },
+ { GIMP_LAYER_MODE_GRAIN_MERGE, NC_("layer-mode", "Grain merge"), NULL },
+ { GIMP_LAYER_MODE_GRAIN_MERGE_LINEAR, NC_("layer-mode", "Grain merge (linear)"), NULL },
+ { GIMP_LAYER_MODE_VIVID_LIGHT, NC_("layer-mode", "Vivid light"), NULL },
+ { GIMP_LAYER_MODE_VIVID_LIGHT_LINEAR, NC_("layer-mode", "Vivid light (linear)"), NULL },
+ { GIMP_LAYER_MODE_PIN_LIGHT, NC_("layer-mode", "Pin light"), NULL },
+ { GIMP_LAYER_MODE_PIN_LIGHT_LINEAR, NC_("layer-mode", "Pin light (linear)"), NULL },
+ { GIMP_LAYER_MODE_LINEAR_LIGHT, NC_("layer-mode", "Linear light"), NULL },
+ { GIMP_LAYER_MODE_LINEAR_LIGHT_LINEAR, NC_("layer-mode", "Linear light (linear)"), NULL },
+ { GIMP_LAYER_MODE_HARD_MIX, NC_("layer-mode", "Hard mix"), NULL },
+ { GIMP_LAYER_MODE_HARD_MIX_LINEAR, NC_("layer-mode", "Hard mix (linear)"), NULL },
+ { GIMP_LAYER_MODE_EXCLUSION, NC_("layer-mode", "Exclusion"), NULL },
+ { GIMP_LAYER_MODE_EXCLUSION_LINEAR, NC_("layer-mode", "Exclusion (linear)"), NULL },
+ { GIMP_LAYER_MODE_LINEAR_BURN, NC_("layer-mode", "Linear burn"), NULL },
+ { GIMP_LAYER_MODE_LINEAR_BURN_LINEAR, NC_("layer-mode", "Linear burn (linear)"), NULL },
+ { GIMP_LAYER_MODE_LUMA_DARKEN_ONLY, NC_("layer-mode", "Luma darken only"), NULL },
+ { GIMP_LAYER_MODE_LUMINANCE_DARKEN_ONLY, NC_("layer-mode", "Luminance darken only"), NULL },
+ { GIMP_LAYER_MODE_LUMA_LIGHTEN_ONLY, NC_("layer-mode", "Luma lighten only"), NULL },
+ { GIMP_LAYER_MODE_LUMINANCE_LIGHTEN_ONLY, NC_("layer-mode", "Luminance lighten only"), NULL },
+ { GIMP_LAYER_MODE_ERASE, NC_("layer-mode", "Erase"), NULL },
+ { GIMP_LAYER_MODE_REPLACE, NC_("layer-mode", "Replace"), NULL },
+ { GIMP_LAYER_MODE_ANTI_ERASE, NC_("layer-mode", "Anti erase"), NULL },
+ { 0, NULL, NULL }
+ };
+
+ static GType type = 0;
+
+ if (G_UNLIKELY (! type))
+ {
+ type = g_enum_register_static ("GimpLayerMode", values);
+ gimp_type_set_translation_context (type, "layer-mode");
+ gimp_enum_set_value_descriptions (type, descs);
+ }
+
+ return type;
+}
+
+GType
+gimp_layer_mode_group_get_type (void)
+{
+ static const GEnumValue values[] =
+ {
+ { GIMP_LAYER_MODE_GROUP_DEFAULT, "GIMP_LAYER_MODE_GROUP_DEFAULT", "default" },
+ { GIMP_LAYER_MODE_GROUP_LINEAR, "GIMP_LAYER_MODE_GROUP_LINEAR", "linear" },
+ { GIMP_LAYER_MODE_GROUP_PERCEPTUAL, "GIMP_LAYER_MODE_GROUP_PERCEPTUAL", "perceptual" },
+ { GIMP_LAYER_MODE_GROUP_LEGACY, "GIMP_LAYER_MODE_GROUP_LEGACY", "legacy" },
+ { 0, NULL, NULL }
+ };
+
+ static const GimpEnumDesc descs[] =
+ {
+ { GIMP_LAYER_MODE_GROUP_DEFAULT, NC_("layer-mode-group", "Default"), NULL },
+ { GIMP_LAYER_MODE_GROUP_LINEAR, NC_("layer-mode-group", "Linear light"), NULL },
+ { GIMP_LAYER_MODE_GROUP_PERCEPTUAL, NC_("layer-mode-group", "Perceptual"), NULL },
+ { GIMP_LAYER_MODE_GROUP_LEGACY, NC_("layer-mode-group", "Legacy"), NULL },
+ { 0, NULL, NULL }
+ };
+
+ static GType type = 0;
+
+ if (G_UNLIKELY (! type))
+ {
+ type = g_enum_register_static ("GimpLayerModeGroup", values);
+ gimp_type_set_translation_context (type, "layer-mode-group");
+ gimp_enum_set_value_descriptions (type, descs);
+ }
+
+ return type;
+}
+
/* Generated data ends here */
diff --git a/app/operations/operations-enums.h b/app/operations/operations-enums.h
index 0739562..3ee565b 100644
--- a/app/operations/operations-enums.h
+++ b/app/operations/operations-enums.h
@@ -47,11 +47,119 @@ typedef enum
} GimpLayerCompositeMode;
+#define GIMP_TYPE_LAYER_MODE (gimp_layer_mode_get_type ())
+
+GType gimp_layer_mode_get_type (void) G_GNUC_CONST;
+
+typedef enum
+{
+ /* Modes that exist since ancient times */
+ GIMP_LAYER_MODE_NORMAL, /*< desc="Normal" >*/
+ GIMP_LAYER_MODE_DISSOLVE, /*< desc="Dissolve" >*/
+ GIMP_LAYER_MODE_BEHIND, /*< desc="Behind" >*/
+ GIMP_LAYER_MODE_MULTIPLY_LEGACY, /*< desc="Multiply (legacy)" >*/
+ GIMP_LAYER_MODE_SCREEN_LEGACY, /*< desc="Screen (legacy)" >*/
+ GIMP_LAYER_MODE_OVERLAY_LEGACY, /*< desc="Old broken Overlay" >*/
+ GIMP_LAYER_MODE_DIFFERENCE_LEGACY, /*< desc="Difference (legacy)" >*/
+ GIMP_LAYER_MODE_ADDITION_LEGACY, /*< desc="Addition (legacy)" >*/
+ GIMP_LAYER_MODE_SUBTRACT_LEGACY, /*< desc="Subtract (legacy)" >*/
+ GIMP_LAYER_MODE_DARKEN_ONLY_LEGACY, /*< desc="Darken only (legacy)" >*/
+ GIMP_LAYER_MODE_LIGHTEN_ONLY_LEGACY, /*< desc="Lighten only (legacy)" >*/
+ GIMP_LAYER_MODE_HSV_HUE_LEGACY, /*< desc="Hue (HSV) (legacy)" >*/
+ GIMP_LAYER_MODE_HSV_SATURATION_LEGACY, /*< desc="Saturation (HSV) (legacy)">*/
+ GIMP_LAYER_MODE_HSV_COLOR_LEGACY, /*< desc="Color (HSV) (legacy)" >*/
+ GIMP_LAYER_MODE_HSV_VALUE_LEGACY, /*< desc="Value (HSV) (legacy)" >*/
+ GIMP_LAYER_MODE_DIVIDE_LEGACY, /*< desc="Divide (legacy)" >*/
+ GIMP_LAYER_MODE_DODGE_LEGACY, /*< desc="Dodge (legacy)" >*/
+ GIMP_LAYER_MODE_BURN_LEGACY, /*< desc="Burn (legacy)" >*/
+ GIMP_LAYER_MODE_HARDLIGHT_LEGACY, /*< desc="Hard light (legacy)" >*/
+ GIMP_LAYER_MODE_SOFTLIGHT_LEGACY, /*< desc="Soft light (legacy)" >*/
+ GIMP_LAYER_MODE_GRAIN_EXTRACT_LEGACY, /*< desc="Grain extract (legacy)" >*/
+ GIMP_LAYER_MODE_GRAIN_MERGE_LEGACY, /*< desc="Grain merge (legacy)" >*/
+ GIMP_LAYER_MODE_COLOR_ERASE, /*< desc="Color erase" >*/
+
+ /* Since 2.8 */
+ GIMP_LAYER_MODE_OVERLAY, /*< desc="Overlay" >*/
+ GIMP_LAYER_MODE_LCH_HUE, /*< desc="Hue (LCH)" >*/
+ GIMP_LAYER_MODE_LCH_CHROMA, /*< desc="Chroma (LCH)" >*/
+ GIMP_LAYER_MODE_LCH_COLOR, /*< desc="Color (LCH)" >*/
+ GIMP_LAYER_MODE_LCH_LIGHTNESS, /*< desc="Lightness (LCH)" >*/
+
+ /* Since 2.10 */
+ GIMP_LAYER_MODE_NORMAL_LINEAR, /*< desc="Normal (linear)" >*/
+ GIMP_LAYER_MODE_BEHIND_LINEAR, /*< desc="Behind (linear)" >*/
+ GIMP_LAYER_MODE_MULTIPLY, /*< desc="Multiply" >*/
+ GIMP_LAYER_MODE_MULTIPLY_LINEAR, /*< desc="Multiply (linear)" >*/
+ GIMP_LAYER_MODE_SCREEN, /*< desc="Screen" >*/
+ GIMP_LAYER_MODE_SCREEN_LINEAR, /*< desc="Screen (linear)" >*/
+ GIMP_LAYER_MODE_OVERLAY_LINEAR, /*< desc="Overlay (linear)" >*/
+ GIMP_LAYER_MODE_DIFFERENCE, /*< desc="Difference" >*/
+ GIMP_LAYER_MODE_DIFFERENCE_LINEAR, /*< desc="Difference (linear)" >*/
+ GIMP_LAYER_MODE_ADDITION, /*< desc="Addition" >*/
+ GIMP_LAYER_MODE_ADDITION_LINEAR, /*< desc="Addition (linear)" >*/
+ GIMP_LAYER_MODE_SUBTRACT, /*< desc="Subtract" >*/
+ GIMP_LAYER_MODE_SUBTRACT_LINEAR, /*< desc="Subtract (linear)" >*/
+ GIMP_LAYER_MODE_DARKEN_ONLY, /*< desc="Darken only" >*/
+ GIMP_LAYER_MODE_LIGHTEN_ONLY, /*< desc="Lighten only" >*/
+ GIMP_LAYER_MODE_HSV_HUE, /*< desc="Hue (HSV)" >*/
+ GIMP_LAYER_MODE_HSV_SATURATION, /*< desc="Saturation (HSV)" >*/
+ GIMP_LAYER_MODE_HSV_COLOR, /*< desc="Color (HSV)" >*/
+ GIMP_LAYER_MODE_HSV_VALUE, /*< desc="Value (HSV)" >*/
+ GIMP_LAYER_MODE_DIVIDE, /*< desc="Divide" >*/
+ GIMP_LAYER_MODE_DIVIDE_LINEAR, /*< desc="Divide (linear)" >*/
+ GIMP_LAYER_MODE_DODGE, /*< desc="Dodge" >*/
+ GIMP_LAYER_MODE_DODGE_LINEAR, /*< desc="Dodge (linear)" >*/
+ GIMP_LAYER_MODE_BURN, /*< desc="Burn" >*/
+ GIMP_LAYER_MODE_BURN_LINEAR, /*< desc="Burn (linear)" >*/
+ GIMP_LAYER_MODE_HARDLIGHT, /*< desc="Hard light" >*/
+ GIMP_LAYER_MODE_HARDLIGHT_LINEAR, /*< desc="Hard light (linear)" >*/
+ GIMP_LAYER_MODE_SOFTLIGHT, /*< desc="Soft light" >*/
+ GIMP_LAYER_MODE_SOFTLIGHT_LINEAR, /*< desc="Soft light (linear)" >*/
+ GIMP_LAYER_MODE_GRAIN_EXTRACT, /*< desc="Grain extract" >*/
+ GIMP_LAYER_MODE_GRAIN_EXTRACT_LINEAR, /*< desc="Grain extract (linear)" >*/
+ GIMP_LAYER_MODE_GRAIN_MERGE, /*< desc="Grain merge" >*/
+ GIMP_LAYER_MODE_GRAIN_MERGE_LINEAR, /*< desc="Grain merge (linear)" >*/
+ GIMP_LAYER_MODE_VIVID_LIGHT, /*< desc="Vivid light" >*/
+ GIMP_LAYER_MODE_VIVID_LIGHT_LINEAR, /*< desc="Vivid light (linear)" >*/
+ GIMP_LAYER_MODE_PIN_LIGHT, /*< desc="Pin light" >*/
+ GIMP_LAYER_MODE_PIN_LIGHT_LINEAR, /*< desc="Pin light (linear)" >*/
+ GIMP_LAYER_MODE_LINEAR_LIGHT, /*< desc="Linear light" >*/
+ GIMP_LAYER_MODE_LINEAR_LIGHT_LINEAR, /*< desc="Linear light (linear)" >*/
+ GIMP_LAYER_MODE_HARD_MIX, /*< desc="Hard mix" >*/
+ GIMP_LAYER_MODE_HARD_MIX_LINEAR, /*< desc="Hard mix (linear)" >*/
+ GIMP_LAYER_MODE_EXCLUSION, /*< desc="Exclusion" >*/
+ GIMP_LAYER_MODE_EXCLUSION_LINEAR, /*< desc="Exclusion (linear)" >*/
+ GIMP_LAYER_MODE_LINEAR_BURN, /*< desc="Linear burn" >*/
+ GIMP_LAYER_MODE_LINEAR_BURN_LINEAR, /*< desc="Linear burn (linear)" >*/
+ GIMP_LAYER_MODE_LUMA_DARKEN_ONLY, /*< desc="Luma darken only" >*/
+ GIMP_LAYER_MODE_LUMINANCE_DARKEN_ONLY, /*< desc="Luminance darken only" >*/
+ GIMP_LAYER_MODE_LUMA_LIGHTEN_ONLY, /*< desc="Luma lighten only" >*/
+ GIMP_LAYER_MODE_LUMINANCE_LIGHTEN_ONLY,/*< desc="Luminance lighten only" >*/
+
+ /* Internal modes, not available to the PDB, must be kept at the end */
+ GIMP_LAYER_MODE_ERASE, /*< pdb-skip, desc="Erase" >*/
+ GIMP_LAYER_MODE_REPLACE, /*< pdb-skip, desc="Replace" >*/
+ GIMP_LAYER_MODE_ANTI_ERASE /*< pdb-skip, desc="Anti erase" >*/
+} GimpLayerMode;
+
+
+#define GIMP_TYPE_LAYER_MODE_GROUP (gimp_layer_mode_group_get_type ())
+
+GType gimp_layer_mode_group_get_type (void) G_GNUC_CONST;
+
+typedef enum /*< pdb-skip >*/
+{
+ GIMP_LAYER_MODE_GROUP_DEFAULT, /*< desc="Default" >*/
+ GIMP_LAYER_MODE_GROUP_LINEAR, /*< desc="Linear light" >*/
+ GIMP_LAYER_MODE_GROUP_PERCEPTUAL, /*< desc="Perceptual" >*/
+ GIMP_LAYER_MODE_GROUP_LEGACY, /*< desc="Legacy" >*/
+} GimpLayerModeGroup;
+
+
/*
* non-registered enums; register them if needed
*/
-
typedef enum /*< pdb-skip, skip >*/
{
GIMP_LAYER_MODE_AFFECT_NONE = 0,
@@ -59,5 +167,11 @@ typedef enum /*< pdb-skip, skip >*/
GIMP_LAYER_MODE_AFFECT_SRC = 1 << 1
} GimpLayerModeAffectMask;
+typedef enum /*< pdb-skip, skip >*/
+{
+ GIMP_LAYER_MODE_FLAG_LEGACY = 1 << 0,
+ GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA = 1 << 1
+} GimpLayerModeFlags;
+
#endif /* __OPERATIONS_ENUMS_H__ */
diff --git a/app/paint/gimpbrushcore.c b/app/paint/gimpbrushcore.c
index 540d6e5..d495bfa 100644
--- a/app/paint/gimpbrushcore.c
+++ b/app/paint/gimpbrushcore.c
@@ -26,9 +26,10 @@
#include "paint-types.h"
+#include "operations/layer-modes/gimp-layer-modes.h"
+
#include "gegl/gimp-babl.h"
-#include "core/gimp-layer-modes.h"
#include "core/gimpbrush.h"
#include "core/gimpbrushgenerated.h"
#include "core/gimpdrawable.h"
diff --git a/app/paint/gimpink.c b/app/paint/gimpink.c
index 8f8cf9e..3ee478f 100644
--- a/app/paint/gimpink.c
+++ b/app/paint/gimpink.c
@@ -26,9 +26,10 @@
#include "paint-types.h"
+#include "operations/layer-modes/gimp-layer-modes.h"
+
#include "gegl/gimp-gegl-utils.h"
-#include "core/gimp-layer-modes.h"
#include "core/gimp-palettes.h"
#include "core/gimpdrawable.h"
#include "core/gimpimage.h"
diff --git a/app/paint/gimppaintcore-loops.c b/app/paint/gimppaintcore-loops.c
index e72dab1..63463d9 100644
--- a/app/paint/gimppaintcore-loops.c
+++ b/app/paint/gimppaintcore-loops.c
@@ -22,7 +22,8 @@
#include "paint-types.h"
-#include "core/gimp-layer-modes.h"
+#include "operations/layer-modes/gimp-layer-modes.h"
+
#include "core/gimptempbuf.h"
#include "operations/layer-modes/gimplayermodefunctions.h"
diff --git a/app/paint/gimppaintcore.c b/app/paint/gimppaintcore.c
index 72bc503..dc7ea1e 100644
--- a/app/paint/gimppaintcore.c
+++ b/app/paint/gimppaintcore.c
@@ -28,13 +28,14 @@
#include "paint-types.h"
+#include "operations/layer-modes/gimp-layer-modes.h"
+
#include "gegl/gimp-gegl-loops.h"
#include "gegl/gimp-gegl-nodes.h"
#include "gegl/gimp-gegl-utils.h"
#include "gegl/gimpapplicator.h"
#include "core/gimp.h"
-#include "core/gimp-layer-modes.h"
#include "core/gimp-utils.h"
#include "core/gimpchannel.h"
#include "core/gimpimage.h"
diff --git a/app/widgets/gimplayermodebox.c b/app/widgets/gimplayermodebox.c
index 7ae6f55..0b06e27 100644
--- a/app/widgets/gimplayermodebox.c
+++ b/app/widgets/gimplayermodebox.c
@@ -28,7 +28,7 @@
#include "widgets-types.h"
-#include "core/gimp-layer-modes.h"
+#include "operations/layer-modes/gimp-layer-modes.h"
#include "gimplayermodebox.h"
#include "gimplayermodecombobox.h"
diff --git a/app/widgets/gimplayermodecombobox.c b/app/widgets/gimplayermodecombobox.c
index 733773d..bc45c29 100644
--- a/app/widgets/gimplayermodecombobox.c
+++ b/app/widgets/gimplayermodecombobox.c
@@ -28,7 +28,7 @@
#include "widgets-types.h"
-#include "core/gimp-layer-modes.h"
+#include "operations/layer-modes/gimp-layer-modes.h"
#include "gimplayermodecombobox.h"
diff --git a/tools/pdbgen/enums.pl b/tools/pdbgen/enums.pl
index e60ef62..9e8b13a 100644
--- a/tools/pdbgen/enums.pl
+++ b/tools/pdbgen/enums.pl
@@ -683,32 +683,9 @@ package Gimp::CodeGen::enums;
GIMP_LAYER_COMPOSITE_SRC_IN => '3',
GIMP_LAYER_COMPOSITE_DST_ATOP => '4' }
},
- GimpConvertDitherType =>
- { contig => 1,
- header => 'core/core-enums.h',
- symbols => [ qw(GIMP_NO_DITHER GIMP_FS_DITHER
- GIMP_FSLOWBLEED_DITHER GIMP_FIXED_DITHER) ],
- mapping => { GIMP_NO_DITHER => '0',
- GIMP_FS_DITHER => '1',
- GIMP_FSLOWBLEED_DITHER => '2',
- GIMP_FIXED_DITHER => '3' }
- },
- GimpHistogramChannel =>
- { contig => 1,
- header => 'core/core-enums.h',
- symbols => [ qw(GIMP_HISTOGRAM_VALUE GIMP_HISTOGRAM_RED
- GIMP_HISTOGRAM_GREEN GIMP_HISTOGRAM_BLUE
- GIMP_HISTOGRAM_ALPHA GIMP_HISTOGRAM_LUMINANCE) ],
- mapping => { GIMP_HISTOGRAM_VALUE => '0',
- GIMP_HISTOGRAM_RED => '1',
- GIMP_HISTOGRAM_GREEN => '2',
- GIMP_HISTOGRAM_BLUE => '3',
- GIMP_HISTOGRAM_ALPHA => '4',
- GIMP_HISTOGRAM_LUMINANCE => '5' }
- },
GimpLayerMode =>
{ contig => 1,
- header => 'core/core-enums.h',
+ header => 'operations/operations-enums.h',
symbols => [ qw(GIMP_LAYER_MODE_NORMAL GIMP_LAYER_MODE_DISSOLVE
GIMP_LAYER_MODE_BEHIND
GIMP_LAYER_MODE_MULTIPLY_LEGACY
@@ -859,6 +836,29 @@ package Gimp::CodeGen::enums;
GIMP_LAYER_MODE_LUMA_LIGHTEN_ONLY => '75',
GIMP_LAYER_MODE_LUMINANCE_LIGHTEN_ONLY => '76' }
},
+ GimpConvertDitherType =>
+ { contig => 1,
+ header => 'core/core-enums.h',
+ symbols => [ qw(GIMP_NO_DITHER GIMP_FS_DITHER
+ GIMP_FSLOWBLEED_DITHER GIMP_FIXED_DITHER) ],
+ mapping => { GIMP_NO_DITHER => '0',
+ GIMP_FS_DITHER => '1',
+ GIMP_FSLOWBLEED_DITHER => '2',
+ GIMP_FIXED_DITHER => '3' }
+ },
+ GimpHistogramChannel =>
+ { contig => 1,
+ header => 'core/core-enums.h',
+ symbols => [ qw(GIMP_HISTOGRAM_VALUE GIMP_HISTOGRAM_RED
+ GIMP_HISTOGRAM_GREEN GIMP_HISTOGRAM_BLUE
+ GIMP_HISTOGRAM_ALPHA GIMP_HISTOGRAM_LUMINANCE) ],
+ mapping => { GIMP_HISTOGRAM_VALUE => '0',
+ GIMP_HISTOGRAM_RED => '1',
+ GIMP_HISTOGRAM_GREEN => '2',
+ GIMP_HISTOGRAM_BLUE => '3',
+ GIMP_HISTOGRAM_ALPHA => '4',
+ GIMP_HISTOGRAM_LUMINANCE => '5' }
+ },
GimpBrushApplicationMode =>
{ contig => 1,
header => 'paint/paint-enums.h',
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]