Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2012-08-22 15:58:59 +0400
committerCampbell Barton <ideasman42@gmail.com>2012-08-22 15:58:59 +0400
commitf67d0e63a44e5cda79dfd5981dace42a87bdebeb (patch)
tree1811aa402b013df6cb8da3d536d56417264dc02d /source/blender
parent92a1572102700fe2f03d4de75ac41c10db4621dd (diff)
add new mask blend mode: 'Merge Subtract'. gives better results when using feather on overlapping masks when one subtracts from another.
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/blenkernel/intern/mask.c2
-rw-r--r--source/blender/blenkernel/intern/mask_rasterize.c5
-rw-r--r--source/blender/makesdna/DNA_mask_types.h17
-rw-r--r--source/blender/makesrna/intern/rna_mask.c3
4 files changed, 16 insertions, 11 deletions
diff --git a/source/blender/blenkernel/intern/mask.c b/source/blender/blenkernel/intern/mask.c
index 1e1cbf8610e..a6ceba588d2 100644
--- a/source/blender/blenkernel/intern/mask.c
+++ b/source/blender/blenkernel/intern/mask.c
@@ -158,7 +158,7 @@ MaskLayer *BKE_mask_layer_new(Mask *mask, const char *name)
mask->masklay_tot++;
- masklay->blend = MASK_BLEND_MERGE;
+ masklay->blend = MASK_BLEND_MERGE_ADD;
masklay->alpha = 1.0f;
return masklay;
diff --git a/source/blender/blenkernel/intern/mask_rasterize.c b/source/blender/blenkernel/intern/mask_rasterize.c
index d39be3b8ed6..48e55601469 100644
--- a/source/blender/blenkernel/intern/mask_rasterize.c
+++ b/source/blender/blenkernel/intern/mask_rasterize.c
@@ -1282,9 +1282,12 @@ float BKE_maskrasterize_handle_sample(MaskRasterHandle *mr_handle, const float x
}
switch (layer->blend) {
- case MASK_BLEND_MERGE:
+ case MASK_BLEND_MERGE_ADD:
value += value_layer * (1.0f - value);
break;
+ case MASK_BLEND_MERGE_SUBTRACT:
+ value -= value_layer * value;
+ break;
case MASK_BLEND_ADD:
value += value_layer;
break;
diff --git a/source/blender/makesdna/DNA_mask_types.h b/source/blender/makesdna/DNA_mask_types.h
index b34a6c9b12f..6c7f7aa2471 100644
--- a/source/blender/makesdna/DNA_mask_types.h
+++ b/source/blender/makesdna/DNA_mask_types.h
@@ -168,14 +168,15 @@ enum {
/* masklay->blend */
enum {
- MASK_BLEND_ADD = 0,
- MASK_BLEND_SUBTRACT = 1,
- MASK_BLEND_LIGHTEN = 2,
- MASK_BLEND_DARKEN = 3,
- MASK_BLEND_MUL = 4,
- MASK_BLEND_REPLACE = 5,
- MASK_BLEND_DIFFERENCE = 6,
- MASK_BLEND_MERGE = 7
+ MASK_BLEND_ADD = 0,
+ MASK_BLEND_SUBTRACT = 1,
+ MASK_BLEND_LIGHTEN = 2,
+ MASK_BLEND_DARKEN = 3,
+ MASK_BLEND_MUL = 4,
+ MASK_BLEND_REPLACE = 5,
+ MASK_BLEND_DIFFERENCE = 6,
+ MASK_BLEND_MERGE_ADD = 7,
+ MASK_BLEND_MERGE_SUBTRACT = 8
};
/* masklay->blend_flag */
diff --git a/source/blender/makesrna/intern/rna_mask.c b/source/blender/makesrna/intern/rna_mask.c
index f197bf8391d..a6571a2db4f 100644
--- a/source/blender/makesrna/intern/rna_mask.c
+++ b/source/blender/makesrna/intern/rna_mask.c
@@ -580,7 +580,8 @@ static void rna_def_maskSpline(BlenderRNA *brna)
static void rna_def_mask_layer(BlenderRNA *brna)
{
static EnumPropertyItem masklay_blend_mode_items[] = {
- {MASK_BLEND_MERGE, "MERGE", 0, "Merge", ""},
+ {MASK_BLEND_MERGE_ADD, "MERGE_ADD", 0, "Merge Add", ""},
+ {MASK_BLEND_MERGE_SUBTRACT, "MERGE_SUBTRACT", 0, "Merge Subtract", ""},
{MASK_BLEND_ADD, "ADD", 0, "Add", ""},
{MASK_BLEND_SUBTRACT, "SUBTRACT", 0, "Subtract", ""},
{MASK_BLEND_LIGHTEN, "LIGHTEN", 0, "Lighten", ""},