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.
This commit is contained in:
@ -774,7 +774,8 @@ static const GimpLayerModeInfo layer_mode_infos[] =
|
|||||||
|
|
||||||
.op_name = "gimp:erase",
|
.op_name = "gimp:erase",
|
||||||
.flags = GIMP_LAYER_MODE_FLAG_BLEND_SPACE_IMMUTABLE |
|
.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,
|
.context = GIMP_LAYER_MODE_CONTEXT_ALL,
|
||||||
.paint_composite_mode = GIMP_LAYER_COMPOSITE_CLIP_TO_BACKDROP,
|
.paint_composite_mode = GIMP_LAYER_COMPOSITE_CLIP_TO_BACKDROP,
|
||||||
.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",
|
.op_name = "gimp:split",
|
||||||
.flags = GIMP_LAYER_MODE_FLAG_BLEND_SPACE_IMMUTABLE |
|
.flags = GIMP_LAYER_MODE_FLAG_BLEND_SPACE_IMMUTABLE |
|
||||||
GIMP_LAYER_MODE_FLAG_COMPOSITE_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,
|
.context = GIMP_LAYER_MODE_CONTEXT_ALL,
|
||||||
.paint_composite_mode = GIMP_LAYER_COMPOSITE_CLIP_TO_BACKDROP,
|
.paint_composite_mode = GIMP_LAYER_COMPOSITE_CLIP_TO_BACKDROP,
|
||||||
.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,
|
{ GIMP_LAYER_MODE_ANTI_ERASE,
|
||||||
|
|
||||||
.op_name = "gimp:anti-erase",
|
.op_name = "gimp:anti-erase",
|
||||||
.flags = GIMP_LAYER_MODE_FLAG_BLEND_SPACE_IMMUTABLE |
|
.flags = GIMP_LAYER_MODE_FLAG_BLEND_SPACE_IMMUTABLE |
|
||||||
GIMP_LAYER_MODE_FLAG_COMPOSITE_SPACE_IMMUTABLE,
|
GIMP_LAYER_MODE_FLAG_COMPOSITE_SPACE_IMMUTABLE |
|
||||||
|
GIMP_LAYER_MODE_FLAG_ALPHA_ONLY,
|
||||||
.context = GIMP_LAYER_MODE_CONTEXT_FADE,
|
.context = GIMP_LAYER_MODE_CONTEXT_FADE,
|
||||||
.paint_composite_mode = GIMP_LAYER_COMPOSITE_UNION,
|
.paint_composite_mode = GIMP_LAYER_COMPOSITE_UNION,
|
||||||
.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;
|
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
|
GimpLayerColorSpace
|
||||||
gimp_layer_mode_get_blend_space (GimpLayerMode mode)
|
gimp_layer_mode_get_blend_space (GimpLayerMode mode)
|
||||||
{
|
{
|
||||||
|
@ -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_composite_mode_mutable (GimpLayerMode mode);
|
||||||
|
|
||||||
gboolean gimp_layer_mode_is_subtractive (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_blend_space (GimpLayerMode mode);
|
||||||
GimpLayerColorSpace gimp_layer_mode_get_composite_space (GimpLayerMode mode);
|
GimpLayerColorSpace gimp_layer_mode_get_composite_space (GimpLayerMode mode);
|
||||||
|
@ -181,7 +181,8 @@ typedef enum /*< pdb-skip, skip >*/
|
|||||||
GIMP_LAYER_MODE_FLAG_BLEND_SPACE_IMMUTABLE = 1 << 1,
|
GIMP_LAYER_MODE_FLAG_BLEND_SPACE_IMMUTABLE = 1 << 1,
|
||||||
GIMP_LAYER_MODE_FLAG_COMPOSITE_SPACE_IMMUTABLE = 1 << 2,
|
GIMP_LAYER_MODE_FLAG_COMPOSITE_SPACE_IMMUTABLE = 1 << 2,
|
||||||
GIMP_LAYER_MODE_FLAG_COMPOSITE_MODE_IMMUTABLE = 1 << 3,
|
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;
|
} GimpLayerModeFlags;
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user