[gimp] app, libgimp: add linear variants of most layer modes
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app, libgimp: add linear variants of most layer modes
- Date: Sat, 14 Jan 2017 21:57:46 +0000 (UTC)
commit 6bf9e47ba8284666c3208c5461fa8d1b0759fe4a
Author: Michael Natterer <mitch gimp org>
Date: Sat Jan 14 22:56:54 2017 +0100
app, libgimp: add linear variants of most layer modes
and reorder gimp_gegl_mode_node_set_mode() and friends.
app/core/core-enums.c | 20 ++++
app/core/core-enums.h | 68 ++++++++------
app/gegl/gimp-gegl-nodes.c | 222 +++++++++++++++++++++++++++++---------------
app/gegl/gimp-gegl-nodes.h | 2 +
libgimp/gimpenums.h | 12 ++-
tools/pdbgen/enums.pl | 56 ++++++++----
6 files changed, 257 insertions(+), 123 deletions(-)
---
diff --git a/app/core/core-enums.c b/app/core/core-enums.c
index a158693..d0749bc 100644
--- a/app/core/core-enums.c
+++ b/app/core/core-enums.c
@@ -323,21 +323,31 @@ gimp_layer_mode_get_type (void)
{ GIMP_LAYER_MODE_MULTIPLY_LINEAR, "GIMP_LAYER_MODE_MULTIPLY_LINEAR", "multiply-linear" },
{ GIMP_LAYER_MODE_SCREEN, "GIMP_LAYER_MODE_SCREEN", "screen" },
{ 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_DARKEN_ONLY_LINEAR, "GIMP_LAYER_MODE_DARKEN_ONLY_LINEAR", "darken-only-linear" },
{ GIMP_LAYER_MODE_LIGHTEN_ONLY, "GIMP_LAYER_MODE_LIGHTEN_ONLY", "lighten-only" },
+ { GIMP_LAYER_MODE_LIGHTEN_ONLY_LINEAR, "GIMP_LAYER_MODE_LIGHTEN_ONLY_LINEAR", "lighten-only-linear" },
{ 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_SOFTLIGHT, "GIMP_LAYER_MODE_SOFTLIGHT", "softlight" },
{ 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_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" },
@@ -380,21 +390,31 @@ gimp_layer_mode_get_type (void)
{ GIMP_LAYER_MODE_MULTIPLY_LINEAR, NC_("layer-mode", "Multiply (linear)"), NULL },
{ GIMP_LAYER_MODE_SCREEN, NC_("layer-mode", "Screen"), 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_DARKEN_ONLY_LINEAR, NC_("layer-mode", "Darken only (linear)"), NULL },
{ GIMP_LAYER_MODE_LIGHTEN_ONLY, NC_("layer-mode", "Lighten only"), NULL },
+ { GIMP_LAYER_MODE_LIGHTEN_ONLY_LINEAR, NC_("layer-mode", "Lighten only (linear)"), 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_SOFTLIGHT, NC_("layer-mode", "Soft light"), 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_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 },
diff --git a/app/core/core-enums.h b/app/core/core-enums.h
index 33c8aa9..867464a 100644
--- a/app/core/core-enums.h
+++ b/app/core/core-enums.h
@@ -180,39 +180,49 @@ typedef enum
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)" >*/
+ 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, /*< desc="Normal" >*/
- GIMP_LAYER_MODE_BEHIND, /*< desc="Behind" >*/
- GIMP_LAYER_MODE_MULTIPLY, /*< desc="Multiply" >*/
- GIMP_LAYER_MODE_MULTIPLY_LINEAR, /*< desc="Multiply (linear)" >*/
- GIMP_LAYER_MODE_SCREEN, /*< desc="Screen" >*/
- GIMP_LAYER_MODE_DIFFERENCE, /*< desc="Difference" >*/
- GIMP_LAYER_MODE_ADDITION, /*< desc="Addition" >*/
- GIMP_LAYER_MODE_SUBTRACT, /*< desc="Subtract" >*/
- 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_DODGE, /*< desc="Dodge" >*/
- GIMP_LAYER_MODE_BURN, /*< desc="Burn" >*/
- GIMP_LAYER_MODE_HARDLIGHT, /*< desc="Hard light" >*/
- GIMP_LAYER_MODE_SOFTLIGHT, /*< desc="Soft light" >*/
- GIMP_LAYER_MODE_GRAIN_EXTRACT, /*< desc="Grain extract" >*/
- GIMP_LAYER_MODE_GRAIN_MERGE, /*< desc="Grain merge" >*/
+ GIMP_LAYER_MODE_NORMAL, /*< desc="Normal" >*/
+ GIMP_LAYER_MODE_BEHIND, /*< desc="Behind" >*/
+ GIMP_LAYER_MODE_MULTIPLY, /*< desc="Multiply" >*/
+ GIMP_LAYER_MODE_MULTIPLY_LINEAR, /*< desc="Multiply (linear)" >*/
+ GIMP_LAYER_MODE_SCREEN, /*< desc="Screen" >*/
+ 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_DARKEN_ONLY_LINEAR, /*< desc="Darken only (linear)" >*/
+ GIMP_LAYER_MODE_LIGHTEN_ONLY, /*< desc="Lighten only" >*/
+ GIMP_LAYER_MODE_LIGHTEN_ONLY_LINEAR, /*< desc="Lighten only (linear)" >*/
+ 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_SOFTLIGHT, /*< desc="Soft light" >*/
+ 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)" >*/
/* 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" >*/
+ 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;
diff --git a/app/gegl/gimp-gegl-nodes.c b/app/gegl/gimp-gegl-nodes.c
index 1db1099..9b3a235 100644
--- a/app/gegl/gimp-gegl-nodes.c
+++ b/app/gegl/gimp-gegl-nodes.c
@@ -139,65 +139,128 @@ gimp_gegl_add_buffer_source (GeglNode *parent,
}
gboolean
+gimp_gegl_mode_is_legacy (GimpLayerMode mode)
+{
+ switch (mode)
+ {
+ case GIMP_LAYER_MODE_MULTIPLY_LEGACY:
+ case GIMP_LAYER_MODE_SCREEN_LEGACY:
+ case GIMP_LAYER_MODE_OVERLAY_LEGACY:
+ case GIMP_LAYER_MODE_DIFFERENCE_LEGACY:
+ case GIMP_LAYER_MODE_ADDITION_LEGACY:
+ case GIMP_LAYER_MODE_SUBTRACT_LEGACY:
+ case GIMP_LAYER_MODE_DARKEN_ONLY_LEGACY:
+ case GIMP_LAYER_MODE_LIGHTEN_ONLY_LEGACY:
+ case GIMP_LAYER_MODE_HSV_HUE_LEGACY:
+ case GIMP_LAYER_MODE_HSV_SATURATION_LEGACY:
+ case GIMP_LAYER_MODE_HSV_COLOR_LEGACY:
+ case GIMP_LAYER_MODE_HSV_VALUE_LEGACY:
+ case GIMP_LAYER_MODE_DIVIDE_LEGACY:
+ case GIMP_LAYER_MODE_DODGE_LEGACY:
+ case GIMP_LAYER_MODE_BURN_LEGACY:
+ case GIMP_LAYER_MODE_HARDLIGHT_LEGACY:
+ case GIMP_LAYER_MODE_SOFTLIGHT_LEGACY:
+ case GIMP_LAYER_MODE_GRAIN_EXTRACT_LEGACY:
+ case GIMP_LAYER_MODE_GRAIN_MERGE_LEGACY:
+ return TRUE;
+
+ default:
+ break;
+ }
+
+ return FALSE;
+}
+
+gboolean
gimp_gegl_mode_is_linear (GimpLayerMode mode)
{
switch (mode)
{
- case GIMP_LAYER_MODE_NORMAL:
+ case GIMP_LAYER_MODE_NORMAL_NON_LINEAR:
+ return FALSE;
+
case GIMP_LAYER_MODE_DISSOLVE:
- case GIMP_LAYER_MODE_MULTIPLY_LINEAR:
- case GIMP_LAYER_MODE_BEHIND:
return TRUE;
+
case GIMP_LAYER_MODE_BEHIND_NON_LINEAR:
- case GIMP_LAYER_MODE_MULTIPLY:
+ return TRUE;
+
case GIMP_LAYER_MODE_MULTIPLY_LEGACY:
- case GIMP_LAYER_MODE_SCREEN:
case GIMP_LAYER_MODE_SCREEN_LEGACY:
- case GIMP_LAYER_MODE_ADDITION:
- case GIMP_LAYER_MODE_SUBTRACT:
+ case GIMP_LAYER_MODE_OVERLAY_LEGACY:
+ case GIMP_LAYER_MODE_DIFFERENCE_LEGACY:
case GIMP_LAYER_MODE_ADDITION_LEGACY:
case GIMP_LAYER_MODE_SUBTRACT_LEGACY:
- case GIMP_LAYER_MODE_DARKEN_ONLY:
case GIMP_LAYER_MODE_DARKEN_ONLY_LEGACY:
- case GIMP_LAYER_MODE_LIGHTEN_ONLY:
case GIMP_LAYER_MODE_LIGHTEN_ONLY_LEGACY:
- case GIMP_LAYER_MODE_NORMAL_NON_LINEAR:
- case GIMP_LAYER_MODE_OVERLAY_LEGACY:
- case GIMP_LAYER_MODE_DIFFERENCE_LEGACY:
- case GIMP_LAYER_MODE_DIFFERENCE:
- case GIMP_LAYER_MODE_HSV_HUE:
- case GIMP_LAYER_MODE_HSV_SATURATION:
- case GIMP_LAYER_MODE_HSV_COLOR:
- case GIMP_LAYER_MODE_HSV_VALUE:
case GIMP_LAYER_MODE_HSV_HUE_LEGACY:
case GIMP_LAYER_MODE_HSV_SATURATION_LEGACY:
case GIMP_LAYER_MODE_HSV_COLOR_LEGACY:
case GIMP_LAYER_MODE_HSV_VALUE_LEGACY:
- case GIMP_LAYER_MODE_DIVIDE:
case GIMP_LAYER_MODE_DIVIDE_LEGACY:
- case GIMP_LAYER_MODE_DODGE:
case GIMP_LAYER_MODE_DODGE_LEGACY:
- case GIMP_LAYER_MODE_BURN:
case GIMP_LAYER_MODE_BURN_LEGACY:
- case GIMP_LAYER_MODE_HARDLIGHT:
case GIMP_LAYER_MODE_HARDLIGHT_LEGACY:
- case GIMP_LAYER_MODE_SOFTLIGHT:
case GIMP_LAYER_MODE_SOFTLIGHT_LEGACY:
- case GIMP_LAYER_MODE_GRAIN_EXTRACT:
case GIMP_LAYER_MODE_GRAIN_EXTRACT_LEGACY:
- case GIMP_LAYER_MODE_GRAIN_MERGE:
case GIMP_LAYER_MODE_GRAIN_MERGE_LEGACY:
+ return FALSE;
+
case GIMP_LAYER_MODE_COLOR_ERASE:
case GIMP_LAYER_MODE_OVERLAY:
- case GIMP_LAYER_MODE_ERASE:
- case GIMP_LAYER_MODE_REPLACE:
- case GIMP_LAYER_MODE_ANTI_ERASE:
case GIMP_LAYER_MODE_LCH_HUE:
case GIMP_LAYER_MODE_LCH_CHROMA:
case GIMP_LAYER_MODE_LCH_COLOR:
case GIMP_LAYER_MODE_LCH_LIGHTNESS:
return FALSE;
+
+ case GIMP_LAYER_MODE_NORMAL:
+ case GIMP_LAYER_MODE_BEHIND:
+ return TRUE;
+
+ case GIMP_LAYER_MODE_MULTIPLY:
+ case GIMP_LAYER_MODE_SCREEN:
+ case GIMP_LAYER_MODE_DIFFERENCE:
+ case GIMP_LAYER_MODE_ADDITION:
+ case GIMP_LAYER_MODE_SUBTRACT:
+ case GIMP_LAYER_MODE_DARKEN_ONLY:
+ case GIMP_LAYER_MODE_LIGHTEN_ONLY:
+ case GIMP_LAYER_MODE_HSV_HUE:
+ case GIMP_LAYER_MODE_HSV_SATURATION:
+ case GIMP_LAYER_MODE_HSV_COLOR:
+ case GIMP_LAYER_MODE_HSV_VALUE:
+ case GIMP_LAYER_MODE_DIVIDE:
+ case GIMP_LAYER_MODE_DODGE:
+ case GIMP_LAYER_MODE_BURN:
+ case GIMP_LAYER_MODE_HARDLIGHT:
+ case GIMP_LAYER_MODE_SOFTLIGHT:
+ case GIMP_LAYER_MODE_GRAIN_EXTRACT:
+ case GIMP_LAYER_MODE_GRAIN_MERGE:
+ return FALSE;
+
+ case GIMP_LAYER_MODE_MULTIPLY_LINEAR:
+ case GIMP_LAYER_MODE_DIFFERENCE_LINEAR:
+ case GIMP_LAYER_MODE_ADDITION_LINEAR:
+ case GIMP_LAYER_MODE_SUBTRACT_LINEAR:
+ case GIMP_LAYER_MODE_DARKEN_ONLY_LINEAR:
+ case GIMP_LAYER_MODE_LIGHTEN_ONLY_LINEAR:
+ case GIMP_LAYER_MODE_DIVIDE_LINEAR:
+ case GIMP_LAYER_MODE_DODGE_LINEAR:
+ case GIMP_LAYER_MODE_BURN_LINEAR:
+ case GIMP_LAYER_MODE_GRAIN_EXTRACT_LINEAR:
+ case GIMP_LAYER_MODE_GRAIN_MERGE_LINEAR:
+ return TRUE;
+
+ case GIMP_LAYER_MODE_ERASE:
+ return TRUE;
+
+ case GIMP_LAYER_MODE_REPLACE:
+ return FALSE;
+
+ case GIMP_LAYER_MODE_ANTI_ERASE:
+ return TRUE;
}
+
return FALSE;
}
@@ -206,13 +269,14 @@ gimp_gegl_mode_node_set_mode (GeglNode *node,
GimpLayerMode mode,
gboolean linear)
{
- const gchar *operation = "gimp:normal";
+ const gchar *operation;
gdouble opacity;
g_return_if_fail (GEGL_IS_NODE (node));
switch (mode)
{
+ case GIMP_LAYER_MODE_NORMAL_NON_LINEAR:
case GIMP_LAYER_MODE_NORMAL:
operation = "gimp:normal";
break;
@@ -221,6 +285,7 @@ gimp_gegl_mode_node_set_mode (GeglNode *node,
operation = "gimp:dissolve";
break;
+ case GIMP_LAYER_MODE_BEHIND_NON_LINEAR:
case GIMP_LAYER_MODE_BEHIND:
operation = "gimp:behind";
break;
@@ -234,146 +299,156 @@ gimp_gegl_mode_node_set_mode (GeglNode *node,
operation = "gimp:multiply";
break;
- case GIMP_LAYER_MODE_SCREEN:
- operation = "gimp:screen";
- break;
-
case GIMP_LAYER_MODE_SCREEN_LEGACY:
operation = "gimp:screen-legacy";
break;
- case GIMP_LAYER_MODE_OVERLAY_LEGACY:
- operation = "gimp:softlight-legacy";
+ case GIMP_LAYER_MODE_SCREEN:
+ operation = "gimp:screen";
break;
- case GIMP_LAYER_MODE_DIFFERENCE:
- operation = "gimp:difference";
+ case GIMP_LAYER_MODE_OVERLAY_LEGACY:
+ operation = "gimp:softlight-legacy";
break;
case GIMP_LAYER_MODE_DIFFERENCE_LEGACY:
operation = "gimp:difference-legacy";
break;
- case GIMP_LAYER_MODE_ADDITION:
- operation = "gimp:addition";
+ case GIMP_LAYER_MODE_DIFFERENCE:
+ case GIMP_LAYER_MODE_DIFFERENCE_LINEAR:
+ operation = "gimp:difference";
break;
case GIMP_LAYER_MODE_ADDITION_LEGACY:
operation = "gimp:addition-legacy";
break;
- case GIMP_LAYER_MODE_SUBTRACT:
- operation = "gimp:subtract";
+ case GIMP_LAYER_MODE_ADDITION:
+ case GIMP_LAYER_MODE_ADDITION_LINEAR:
+ operation = "gimp:addition";
break;
case GIMP_LAYER_MODE_SUBTRACT_LEGACY:
operation = "gimp:subtract-legacy";
break;
- case GIMP_LAYER_MODE_DARKEN_ONLY:
- operation = "gimp:darken-only";
+ case GIMP_LAYER_MODE_SUBTRACT:
+ case GIMP_LAYER_MODE_SUBTRACT_LINEAR:
+ operation = "gimp:subtract";
break;
case GIMP_LAYER_MODE_DARKEN_ONLY_LEGACY:
operation = "gimp:darken-only-legacy";
break;
- case GIMP_LAYER_MODE_LIGHTEN_ONLY:
- operation = "gimp:lighten-only";
+ case GIMP_LAYER_MODE_DARKEN_ONLY:
+ case GIMP_LAYER_MODE_DARKEN_ONLY_LINEAR:
+ operation = "gimp:darken-only";
break;
case GIMP_LAYER_MODE_LIGHTEN_ONLY_LEGACY:
operation = "gimp:lighten-only-legacy";
break;
- case GIMP_LAYER_MODE_HSV_HUE:
- operation = "gimp:hsv-hue";
- break;
-
- case GIMP_LAYER_MODE_HSV_SATURATION:
- operation = "gimp:hsv-saturation";
- break;
-
- case GIMP_LAYER_MODE_HSV_COLOR:
- operation = "gimp:hsv-color";
- break;
-
- case GIMP_LAYER_MODE_HSV_VALUE:
- operation = "gimp:hsv-value";
+ case GIMP_LAYER_MODE_LIGHTEN_ONLY:
+ case GIMP_LAYER_MODE_LIGHTEN_ONLY_LINEAR:
+ operation = "gimp:lighten-only";
break;
case GIMP_LAYER_MODE_HSV_HUE_LEGACY:
operation = "gimp:hsv-hue-legacy";
break;
+ case GIMP_LAYER_MODE_HSV_HUE:
+ operation = "gimp:hsv-hue";
+ break;
+
case GIMP_LAYER_MODE_HSV_SATURATION_LEGACY:
operation = "gimp:hsv-saturation-legacy";
break;
+ case GIMP_LAYER_MODE_HSV_SATURATION:
+ operation = "gimp:hsv-saturation";
+ break;
+
case GIMP_LAYER_MODE_HSV_COLOR_LEGACY:
operation = "gimp:hsv-color-legacy";
break;
+ case GIMP_LAYER_MODE_HSV_COLOR:
+ operation = "gimp:hsv-color";
+ break;
+
case GIMP_LAYER_MODE_HSV_VALUE_LEGACY:
operation = "gimp:hsv-value-legacy";
break;
- case GIMP_LAYER_MODE_DIVIDE:
- operation = "gimp:divide";
+ case GIMP_LAYER_MODE_HSV_VALUE:
+ operation = "gimp:hsv-value";
break;
case GIMP_LAYER_MODE_DIVIDE_LEGACY:
operation = "gimp:divide-legacy";
break;
- case GIMP_LAYER_MODE_DODGE:
- operation = "gimp:dodge";
+ case GIMP_LAYER_MODE_DIVIDE:
+ case GIMP_LAYER_MODE_DIVIDE_LINEAR:
+ operation = "gimp:divide";
break;
case GIMP_LAYER_MODE_DODGE_LEGACY:
operation = "gimp:dodge-legacy";
break;
- case GIMP_LAYER_MODE_BURN:
- operation = "gimp:burn";
+ case GIMP_LAYER_MODE_DODGE:
+ case GIMP_LAYER_MODE_DODGE_LINEAR:
+ operation = "gimp:dodge";
break;
case GIMP_LAYER_MODE_BURN_LEGACY:
operation = "gimp:burn-legacy";
break;
- case GIMP_LAYER_MODE_HARDLIGHT:
- operation = "gimp:hardlight";
+ case GIMP_LAYER_MODE_BURN:
+ case GIMP_LAYER_MODE_BURN_LINEAR:
+ operation = "gimp:burn";
break;
case GIMP_LAYER_MODE_HARDLIGHT_LEGACY:
operation = "gimp:hardlight-legacy";
break;
- case GIMP_LAYER_MODE_SOFTLIGHT:
- operation = "gimp:softlight";
+ case GIMP_LAYER_MODE_HARDLIGHT:
+ operation = "gimp:hardlight";
break;
case GIMP_LAYER_MODE_SOFTLIGHT_LEGACY:
operation = "gimp:softlight-legacy";
break;
- case GIMP_LAYER_MODE_GRAIN_EXTRACT:
- operation = "gimp:grain-extract";
+ case GIMP_LAYER_MODE_SOFTLIGHT:
+ operation = "gimp:softlight";
break;
case GIMP_LAYER_MODE_GRAIN_EXTRACT_LEGACY:
operation = "gimp:grain-extract-legacy";
break;
- case GIMP_LAYER_MODE_GRAIN_MERGE:
- operation = "gimp:grain-merge";
+ case GIMP_LAYER_MODE_GRAIN_EXTRACT:
+ case GIMP_LAYER_MODE_GRAIN_EXTRACT_LINEAR:
+ operation = "gimp:grain-extract";
break;
case GIMP_LAYER_MODE_GRAIN_MERGE_LEGACY:
operation = "gimp:grain-merge-legacy";
break;
+ case GIMP_LAYER_MODE_GRAIN_MERGE:
+ case GIMP_LAYER_MODE_GRAIN_MERGE_LINEAR:
+ operation = "gimp:grain-merge";
+ break;
+
case GIMP_LAYER_MODE_COLOR_ERASE:
operation = "gimp:color-erase";
break;
@@ -409,9 +484,6 @@ gimp_gegl_mode_node_set_mode (GeglNode *node,
case GIMP_LAYER_MODE_ANTI_ERASE:
operation = "gimp:anti-erase";
break;
-
- default:
- break;
}
gegl_node_get (node,
diff --git a/app/gegl/gimp-gegl-nodes.h b/app/gegl/gimp-gegl-nodes.h
index bfe380b..c9701b8 100644
--- a/app/gegl/gimp-gegl-nodes.h
+++ b/app/gegl/gimp-gegl-nodes.h
@@ -41,6 +41,8 @@ void gimp_gegl_node_set_matrix (GeglNode *node,
const GimpMatrix3 *matrix);
void gimp_gegl_node_set_color (GeglNode *node,
const GimpRGB *color);
+
+gboolean gimp_gegl_mode_is_legacy (GimpLayerMode mode);
gboolean gimp_gegl_mode_is_linear (GimpLayerMode mode);
diff --git a/libgimp/gimpenums.h b/libgimp/gimpenums.h
index 4b4bbb4..4a6684d 100644
--- a/libgimp/gimpenums.h
+++ b/libgimp/gimpenums.h
@@ -103,21 +103,31 @@ typedef enum
GIMP_LAYER_MODE_MULTIPLY_LINEAR,
GIMP_LAYER_MODE_SCREEN,
GIMP_LAYER_MODE_DIFFERENCE,
+ GIMP_LAYER_MODE_DIFFERENCE_LINEAR,
GIMP_LAYER_MODE_ADDITION,
+ GIMP_LAYER_MODE_ADDITION_LINEAR,
GIMP_LAYER_MODE_SUBTRACT,
+ GIMP_LAYER_MODE_SUBTRACT_LINEAR,
GIMP_LAYER_MODE_DARKEN_ONLY,
+ GIMP_LAYER_MODE_DARKEN_ONLY_LINEAR,
GIMP_LAYER_MODE_LIGHTEN_ONLY,
+ GIMP_LAYER_MODE_LIGHTEN_ONLY_LINEAR,
GIMP_LAYER_MODE_HSV_HUE,
GIMP_LAYER_MODE_HSV_SATURATION,
GIMP_LAYER_MODE_HSV_COLOR,
GIMP_LAYER_MODE_HSV_VALUE,
GIMP_LAYER_MODE_DIVIDE,
+ GIMP_LAYER_MODE_DIVIDE_LINEAR,
GIMP_LAYER_MODE_DODGE,
+ GIMP_LAYER_MODE_DODGE_LINEAR,
GIMP_LAYER_MODE_BURN,
+ GIMP_LAYER_MODE_BURN_LINEAR,
GIMP_LAYER_MODE_HARDLIGHT,
GIMP_LAYER_MODE_SOFTLIGHT,
GIMP_LAYER_MODE_GRAIN_EXTRACT,
- GIMP_LAYER_MODE_GRAIN_MERGE
+ GIMP_LAYER_MODE_GRAIN_EXTRACT_LINEAR,
+ GIMP_LAYER_MODE_GRAIN_MERGE,
+ GIMP_LAYER_MODE_GRAIN_MERGE_LINEAR
} GimpLayerMode;
diff --git a/tools/pdbgen/enums.pl b/tools/pdbgen/enums.pl
index 64d9f03..ff61c44 100644
--- a/tools/pdbgen/enums.pl
+++ b/tools/pdbgen/enums.pl
@@ -726,18 +726,28 @@ package Gimp::CodeGen::enums;
GIMP_LAYER_MODE_MULTIPLY
GIMP_LAYER_MODE_MULTIPLY_LINEAR
GIMP_LAYER_MODE_SCREEN GIMP_LAYER_MODE_DIFFERENCE
- GIMP_LAYER_MODE_ADDITION GIMP_LAYER_MODE_SUBTRACT
+ GIMP_LAYER_MODE_DIFFERENCE_LINEAR
+ GIMP_LAYER_MODE_ADDITION
+ GIMP_LAYER_MODE_ADDITION_LINEAR
+ GIMP_LAYER_MODE_SUBTRACT
+ GIMP_LAYER_MODE_SUBTRACT_LINEAR
GIMP_LAYER_MODE_DARKEN_ONLY
+ GIMP_LAYER_MODE_DARKEN_ONLY_LINEAR
GIMP_LAYER_MODE_LIGHTEN_ONLY
+ GIMP_LAYER_MODE_LIGHTEN_ONLY_LINEAR
GIMP_LAYER_MODE_HSV_HUE
GIMP_LAYER_MODE_HSV_SATURATION
GIMP_LAYER_MODE_HSV_COLOR
GIMP_LAYER_MODE_HSV_VALUE GIMP_LAYER_MODE_DIVIDE
- GIMP_LAYER_MODE_DODGE GIMP_LAYER_MODE_BURN
+ GIMP_LAYER_MODE_DIVIDE_LINEAR
+ GIMP_LAYER_MODE_DODGE GIMP_LAYER_MODE_DODGE_LINEAR
+ GIMP_LAYER_MODE_BURN GIMP_LAYER_MODE_BURN_LINEAR
GIMP_LAYER_MODE_HARDLIGHT
GIMP_LAYER_MODE_SOFTLIGHT
GIMP_LAYER_MODE_GRAIN_EXTRACT
- GIMP_LAYER_MODE_GRAIN_MERGE) ],
+ GIMP_LAYER_MODE_GRAIN_EXTRACT_LINEAR
+ GIMP_LAYER_MODE_GRAIN_MERGE
+ GIMP_LAYER_MODE_GRAIN_MERGE_LINEAR) ],
mapping => { GIMP_LAYER_MODE_NORMAL_NON_LINEAR => '0',
GIMP_LAYER_MODE_DISSOLVE => '1',
GIMP_LAYER_MODE_BEHIND_NON_LINEAR => '2',
@@ -772,21 +782,31 @@ package Gimp::CodeGen::enums;
GIMP_LAYER_MODE_MULTIPLY_LINEAR => '31',
GIMP_LAYER_MODE_SCREEN => '32',
GIMP_LAYER_MODE_DIFFERENCE => '33',
- GIMP_LAYER_MODE_ADDITION => '34',
- GIMP_LAYER_MODE_SUBTRACT => '35',
- GIMP_LAYER_MODE_DARKEN_ONLY => '36',
- GIMP_LAYER_MODE_LIGHTEN_ONLY => '37',
- GIMP_LAYER_MODE_HSV_HUE => '38',
- GIMP_LAYER_MODE_HSV_SATURATION => '39',
- GIMP_LAYER_MODE_HSV_COLOR => '40',
- GIMP_LAYER_MODE_HSV_VALUE => '41',
- GIMP_LAYER_MODE_DIVIDE => '42',
- GIMP_LAYER_MODE_DODGE => '43',
- GIMP_LAYER_MODE_BURN => '44',
- GIMP_LAYER_MODE_HARDLIGHT => '45',
- GIMP_LAYER_MODE_SOFTLIGHT => '46',
- GIMP_LAYER_MODE_GRAIN_EXTRACT => '47',
- GIMP_LAYER_MODE_GRAIN_MERGE => '48' }
+ GIMP_LAYER_MODE_DIFFERENCE_LINEAR => '34',
+ GIMP_LAYER_MODE_ADDITION => '35',
+ GIMP_LAYER_MODE_ADDITION_LINEAR => '36',
+ GIMP_LAYER_MODE_SUBTRACT => '37',
+ GIMP_LAYER_MODE_SUBTRACT_LINEAR => '38',
+ GIMP_LAYER_MODE_DARKEN_ONLY => '39',
+ GIMP_LAYER_MODE_DARKEN_ONLY_LINEAR => '40',
+ GIMP_LAYER_MODE_LIGHTEN_ONLY => '41',
+ GIMP_LAYER_MODE_LIGHTEN_ONLY_LINEAR => '42',
+ GIMP_LAYER_MODE_HSV_HUE => '43',
+ GIMP_LAYER_MODE_HSV_SATURATION => '44',
+ GIMP_LAYER_MODE_HSV_COLOR => '45',
+ GIMP_LAYER_MODE_HSV_VALUE => '46',
+ GIMP_LAYER_MODE_DIVIDE => '47',
+ GIMP_LAYER_MODE_DIVIDE_LINEAR => '48',
+ GIMP_LAYER_MODE_DODGE => '49',
+ GIMP_LAYER_MODE_DODGE_LINEAR => '50',
+ GIMP_LAYER_MODE_BURN => '51',
+ GIMP_LAYER_MODE_BURN_LINEAR => '52',
+ GIMP_LAYER_MODE_HARDLIGHT => '53',
+ GIMP_LAYER_MODE_SOFTLIGHT => '54',
+ GIMP_LAYER_MODE_GRAIN_EXTRACT => '55',
+ GIMP_LAYER_MODE_GRAIN_EXTRACT_LINEAR => '56',
+ GIMP_LAYER_MODE_GRAIN_MERGE => '57',
+ GIMP_LAYER_MODE_GRAIN_MERGE_LINEAR => '58' }
},
GimpBrushApplicationMode =>
{ contig => 1,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]