diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2010-03-16 21:05:53 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2010-03-16 21:05:53 +0300 |
commit | 391526c20e7ba0e818241f4dedb3f40aa51fd47a (patch) | |
tree | 707f856b9e68fbcd2fea836c6d93ac524fcb1d58 | |
parent | abb7a25426a630f5a5209987a78530f70c0dfa94 (diff) |
option to lock alpha while projection painting.
(commit 27538 by Campbell from render25 branch)
-rw-r--r-- | release/scripts/ui/space_view3d_toolbar.py | 5 | ||||
-rw-r--r-- | source/blender/editors/sculpt_paint/paint_image.c | 7 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_brush_types.h | 1 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_brush.c | 6 |
4 files changed, 19 insertions, 0 deletions
diff --git a/release/scripts/ui/space_view3d_toolbar.py b/release/scripts/ui/space_view3d_toolbar.py index a4b908bf1d1..10718883c3c 100644 --- a/release/scripts/ui/space_view3d_toolbar.py +++ b/release/scripts/ui/space_view3d_toolbar.py @@ -592,6 +592,11 @@ class VIEW3D_PT_tools_brush(PaintPanel): col.prop(brush, "blend", text="Blend") + col = layout.column() + col.active = (brush.blend not in ('ERASE_ALPHA', 'ADD_ALPHA')) + col.prop(brush, "use_alpha") + + # Weight Paint Mode # elif context.weight_paint_object and brush: diff --git a/source/blender/editors/sculpt_paint/paint_image.c b/source/blender/editors/sculpt_paint/paint_image.c index 6137d83e77e..9fc858a191f 100644 --- a/source/blender/editors/sculpt_paint/paint_image.c +++ b/source/blender/editors/sculpt_paint/paint_image.c @@ -3705,6 +3705,7 @@ static void *do_projectpaint_thread(void *ph_v) float mask = 1.0f; /* airbrush wont use mask */ unsigned short mask_short; float size_half = ((float)ps->brush->size) * 0.5f; + short lock_alpha= ELEM(ps->brush->blend, IMB_BLEND_ERASE_ALPHA, IMB_BLEND_ADD_ALPHA) ? 0 : ps->brush->flag & BRUSH_LOCK_ALPHA; LinkNode *smearPixels = NULL; LinkNode *smearPixels_f = NULL; @@ -3833,6 +3834,12 @@ static void *do_projectpaint_thread(void *ph_v) break; } } + + if(lock_alpha) { + if (is_floatbuf) projPixel->pixel.f_pt[3]= projPixel->origColor.f[3]; + else projPixel->pixel.ch_pt[3]= projPixel->origColor.ch[3]; + } + /* done painting */ } } diff --git a/source/blender/makesdna/DNA_brush_types.h b/source/blender/makesdna/DNA_brush_types.h index 163c8122fb7..14930f85e63 100644 --- a/source/blender/makesdna/DNA_brush_types.h +++ b/source/blender/makesdna/DNA_brush_types.h @@ -86,6 +86,7 @@ typedef struct Brush { #define BRUSH_SMOOTH_STROKE 2048 #define BRUSH_PERSISTENT 4096 #define BRUSH_ACCUMULATE 8192 +#define BRUSH_LOCK_ALPHA 16384 /* Brush.sculpt_tool */ #define SCULPT_TOOL_DRAW 1 diff --git a/source/blender/makesrna/intern/rna_brush.c b/source/blender/makesrna/intern/rna_brush.c index 2d81a9d66c1..df08dc7b861 100644 --- a/source/blender/makesrna/intern/rna_brush.c +++ b/source/blender/makesrna/intern/rna_brush.c @@ -279,6 +279,12 @@ static void rna_def_brush(BlenderRNA *brna) RNA_def_property_boolean_sdna(prop, NULL, "flag", BRUSH_FIXED_TEX); RNA_def_property_ui_text(prop, "Fixed Texture", "Keep texture origin in fixed position"); RNA_def_property_update(prop, 0, "rna_Brush_update"); */ + + /* only for projection paint, TODO, other paint modes */ + prop= RNA_def_property(srna, "use_alpha", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", BRUSH_LOCK_ALPHA); + RNA_def_property_ui_text(prop, "Alpha", "When this is disabled, lock alpha while painting"); + RNA_def_property_update(prop, 0, "rna_Brush_update"); prop= RNA_def_property(srna, "curve", PROP_POINTER, PROP_NONE); RNA_def_property_flag(prop, PROP_NEVER_NULL); |