[gimp] app: add gimp_layer_mode_is_alpha_only()
- From: N/A <ell src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app: add gimp_layer_mode_is_alpha_only()
- Date: Mon, 7 May 2018 20:53:45 +0000 (UTC)
commit 2c585981720981b85bc020a0486808350b6fae0f
Author: Ell <ell_se yahoo com>
Date: Mon May 7 16:35:42 2018 -0400
app: add gimp_layer_mode_is_alpha_only()
... which determines if a layer mode's blend function only affects
the alpha, maintaining the backdrop's color. This is currently
true only for ERASE, SPLIT, and ANTI_ERASE modes.
app/operations/layer-modes/gimp-layer-modes.c | 22 ++++++++++++++++++----
app/operations/layer-modes/gimp-layer-modes.h | 1 +
app/operations/operations-enums.h | 3 ++-
3 files changed, 21 insertions(+), 5 deletions(-)
---
diff --git a/app/operations/layer-modes/gimp-layer-modes.c b/app/operations/layer-modes/gimp-layer-modes.c
index f53da44..f4d55ea 100644
--- a/app/operations/layer-modes/gimp-layer-modes.c
+++ b/app/operations/layer-modes/gimp-layer-modes.c
@@ -774,7 +774,8 @@ static const GimpLayerModeInfo layer_mode_infos[] =
.op_name = "gimp:erase",
.flags = GIMP_LAYER_MODE_FLAG_BLEND_SPACE_IMMUTABLE |
- GIMP_LAYER_MODE_FLAG_SUBTRACTIVE,
+ GIMP_LAYER_MODE_FLAG_SUBTRACTIVE |
+ GIMP_LAYER_MODE_FLAG_ALPHA_ONLY,
.context = GIMP_LAYER_MODE_CONTEXT_ALL,
.paint_composite_mode = GIMP_LAYER_COMPOSITE_CLIP_TO_BACKDROP,
.composite_mode = GIMP_LAYER_COMPOSITE_CLIP_TO_BACKDROP,
@@ -796,7 +797,8 @@ static const GimpLayerModeInfo layer_mode_infos[] =
.op_name = "gimp:split",
.flags = GIMP_LAYER_MODE_FLAG_BLEND_SPACE_IMMUTABLE |
GIMP_LAYER_MODE_FLAG_COMPOSITE_SPACE_IMMUTABLE |
- GIMP_LAYER_MODE_FLAG_SUBTRACTIVE,
+ GIMP_LAYER_MODE_FLAG_SUBTRACTIVE |
+ GIMP_LAYER_MODE_FLAG_ALPHA_ONLY,
.context = GIMP_LAYER_MODE_CONTEXT_ALL,
.paint_composite_mode = GIMP_LAYER_COMPOSITE_CLIP_TO_BACKDROP,
.composite_mode = GIMP_LAYER_COMPOSITE_CLIP_TO_BACKDROP
@@ -825,8 +827,9 @@ static const GimpLayerModeInfo layer_mode_infos[] =
{ GIMP_LAYER_MODE_ANTI_ERASE,
.op_name = "gimp:anti-erase",
- .flags = GIMP_LAYER_MODE_FLAG_BLEND_SPACE_IMMUTABLE |
- GIMP_LAYER_MODE_FLAG_COMPOSITE_SPACE_IMMUTABLE,
+ .flags = GIMP_LAYER_MODE_FLAG_BLEND_SPACE_IMMUTABLE |
+ GIMP_LAYER_MODE_FLAG_COMPOSITE_SPACE_IMMUTABLE |
+ GIMP_LAYER_MODE_FLAG_ALPHA_ONLY,
.context = GIMP_LAYER_MODE_CONTEXT_FADE,
.paint_composite_mode = GIMP_LAYER_COMPOSITE_UNION,
.composite_mode = GIMP_LAYER_COMPOSITE_UNION
@@ -1175,6 +1178,17 @@ gimp_layer_mode_is_subtractive (GimpLayerMode mode)
return (info->flags & GIMP_LAYER_MODE_FLAG_SUBTRACTIVE) != 0;
}
+gboolean
+gimp_layer_mode_is_alpha_only (GimpLayerMode mode)
+{
+ const GimpLayerModeInfo *info = gimp_layer_mode_info (mode);
+
+ if (! info)
+ return FALSE;
+
+ return (info->flags & GIMP_LAYER_MODE_FLAG_ALPHA_ONLY) != 0;
+}
+
GimpLayerColorSpace
gimp_layer_mode_get_blend_space (GimpLayerMode mode)
{
diff --git a/app/operations/layer-modes/gimp-layer-modes.h b/app/operations/layer-modes/gimp-layer-modes.h
index ef80605..b9a67f7 100644
--- a/app/operations/layer-modes/gimp-layer-modes.h
+++ b/app/operations/layer-modes/gimp-layer-modes.h
@@ -32,6 +32,7 @@ gboolean gimp_layer_mode_is_composite_space_mutable (GimpLayer
gboolean gimp_layer_mode_is_composite_mode_mutable (GimpLayerMode mode);
gboolean gimp_layer_mode_is_subtractive (GimpLayerMode mode);
+gboolean gimp_layer_mode_is_alpha_only (GimpLayerMode mode);
GimpLayerColorSpace gimp_layer_mode_get_blend_space (GimpLayerMode mode);
GimpLayerColorSpace gimp_layer_mode_get_composite_space (GimpLayerMode mode);
diff --git a/app/operations/operations-enums.h b/app/operations/operations-enums.h
index 2b13702..1b44f8a 100644
--- a/app/operations/operations-enums.h
+++ b/app/operations/operations-enums.h
@@ -181,7 +181,8 @@ typedef enum /*< pdb-skip, skip >*/
GIMP_LAYER_MODE_FLAG_BLEND_SPACE_IMMUTABLE = 1 << 1,
GIMP_LAYER_MODE_FLAG_COMPOSITE_SPACE_IMMUTABLE = 1 << 2,
GIMP_LAYER_MODE_FLAG_COMPOSITE_MODE_IMMUTABLE = 1 << 3,
- GIMP_LAYER_MODE_FLAG_SUBTRACTIVE = 1 << 4
+ GIMP_LAYER_MODE_FLAG_SUBTRACTIVE = 1 << 4,
+ GIMP_LAYER_MODE_FLAG_ALPHA_ONLY = 1 << 5
} GimpLayerModeFlags;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]