diff options
author | Nicholas Bishop <nicholasbishop@gmail.com> | 2012-01-15 03:54:51 +0400 |
---|---|---|
committer | Nicholas Bishop <nicholasbishop@gmail.com> | 2012-01-15 03:54:51 +0400 |
commit | 30e759c75ba9625fe46bc6b7710358282a61d4c1 (patch) | |
tree | 872469d64544c09a9155d871d4429f701df6172b /source/blender/makesrna/intern/rna_brush.c | |
parent | 046bf80881b4c7ea2fb108b5588070a6ffa14c20 (diff) |
Fix all remaining unified paint settings uses of current Scene.
Things like brush size and strength accessors now take a scene
parameter rather than guessing about which Scene's unified paint
settings to use.
Setting the size/strength through RNA can now be done separately for
the brush or the UnifiedPaintSettings.
The UI python code required updating to check whether the
size/strength controls should use brush or UnifiedPaintSettings RNA.
Radial control also required some updates to switch between the two
RNA sources.
Diffstat (limited to 'source/blender/makesrna/intern/rna_brush.c')
-rw-r--r-- | source/blender/makesrna/intern/rna_brush.c | 62 |
1 files changed, 11 insertions, 51 deletions
diff --git a/source/blender/makesrna/intern/rna_brush.c b/source/blender/makesrna/intern/rna_brush.c index 63009e09161..353782c85de 100644 --- a/source/blender/makesrna/intern/rna_brush.c +++ b/source/blender/makesrna/intern/rna_brush.c @@ -164,60 +164,21 @@ static void rna_Brush_icon_update(Main *UNUSED(bmain), Scene *UNUSED(scene), Poi static void rna_Brush_set_size(PointerRNA *ptr, int value) { - Brush* me = (Brush*)(ptr->data); + Brush* brush = ptr->data; - float size= (float)brush_size(me); - float unprojected_radius; - - // paranoia: previous checks should make sure we don't divide by zero - assert(size != 0); - - // set unprojected radius, so it remains consistent with size - unprojected_radius= (float)(brush_unprojected_radius(me) * value / size); - brush_set_unprojected_radius(me, unprojected_radius); - - brush_set_size(me, value); -} - -static int rna_Brush_get_size(PointerRNA *ptr) -{ - Brush* me = (Brush*)(ptr->data); - return brush_size(me); + /* scale unprojected radius so it stays consistent with brush size */ + brush_scale_unprojected_radius(&brush->unprojected_radius, + value, brush->size); + brush->size= value; } static void rna_Brush_set_unprojected_radius(PointerRNA *ptr, float value) { - Brush* me = (Brush*)(ptr->data); - - float unprojected_radius= brush_unprojected_radius(me); - int size; - - // paranoia: previous checks should make sure we don't divide by zero - assert(unprojected_radius != 0.0f); - - // set size, so that it is consistent with unprojected_radius - size= (int)((float)brush_size(me) * value / unprojected_radius); - brush_set_size(me, size); - - brush_set_unprojected_radius(me, value); -} - -static float rna_Brush_get_unprojected_radius(PointerRNA *ptr) -{ - Brush* me = (Brush*)(ptr->data); - return brush_unprojected_radius(me); -} + Brush* brush = ptr->data; -static void rna_Brush_set_alpha(PointerRNA *ptr, float value) -{ - Brush* me = (Brush*)(ptr->data); - brush_set_alpha(me, value); -} - -static float rna_Brush_get_alpha(PointerRNA *ptr) -{ - Brush* me = (Brush*)(ptr->data); - return brush_alpha(me); + /* scale brush size so it stays consistent with unprojected_radius */ + brush_scale_size(&brush->size, value, brush->unprojected_radius); + brush->unprojected_radius= value; } static EnumPropertyItem *rna_Brush_direction_itemf(bContext *UNUSED(C), PointerRNA *ptr, PropertyRNA *UNUSED(prop), int *UNUSED(free)) @@ -412,14 +373,14 @@ static void rna_def_brush(BlenderRNA *brna) /* number values */ prop= RNA_def_property(srna, "size", PROP_INT, PROP_DISTANCE); - RNA_def_property_int_funcs(prop, "rna_Brush_get_size", "rna_Brush_set_size", NULL); + RNA_def_property_int_funcs(prop, NULL, "rna_Brush_set_size", NULL); RNA_def_property_range(prop, 1, MAX_BRUSH_PIXEL_RADIUS*10); RNA_def_property_ui_range(prop, 1, MAX_BRUSH_PIXEL_RADIUS, 1, 0); RNA_def_property_ui_text(prop, "Radius", "Radius of the brush in pixels"); RNA_def_property_update(prop, 0, "rna_Brush_update"); prop= RNA_def_property(srna, "unprojected_radius", PROP_FLOAT, PROP_DISTANCE); - RNA_def_property_float_funcs(prop, "rna_Brush_get_unprojected_radius", "rna_Brush_set_unprojected_radius", NULL); + RNA_def_property_float_funcs(prop, NULL, "rna_Brush_set_unprojected_radius", NULL); RNA_def_property_range(prop, 0.001, FLT_MAX); RNA_def_property_ui_range(prop, 0.001, 1, 0, 0); RNA_def_property_ui_text(prop, "Unprojected Radius", "Radius of brush in Blender units"); @@ -463,7 +424,6 @@ static void rna_def_brush(BlenderRNA *brna) prop= RNA_def_property(srna, "strength", PROP_FLOAT, PROP_FACTOR); RNA_def_property_float_sdna(prop, NULL, "alpha"); - RNA_def_property_float_funcs(prop, "rna_Brush_get_alpha", "rna_Brush_set_alpha", NULL); RNA_def_property_float_default(prop, 0.5f); RNA_def_property_range(prop, 0.0f, 10.0f); RNA_def_property_ui_range(prop, 0.0f, 1.0f, 0.001, 0.001); |