diff options
Diffstat (limited to 'source/blender/makesrna/intern/rna_brush.c')
-rw-r--r-- | source/blender/makesrna/intern/rna_brush.c | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/source/blender/makesrna/intern/rna_brush.c b/source/blender/makesrna/intern/rna_brush.c index 7bb56380ba5..da735f25345 100644 --- a/source/blender/makesrna/intern/rna_brush.c +++ b/source/blender/makesrna/intern/rna_brush.c @@ -28,6 +28,7 @@ #include <stdlib.h> +#include <assert.h> #include "RNA_define.h" @@ -116,7 +117,7 @@ static void rna_Brush_reset_icon(Brush *br, const char *UNUSED(type)) id->icon_id = 0; } -static void rna_Brush_update(Main *bmain, Scene *scene, PointerRNA *ptr) +static void rna_Brush_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr) { Brush *br= (Brush*)ptr->data; WM_main_add_notifier(NC_BRUSH|NA_EDITED, br); @@ -144,7 +145,7 @@ static void rna_Brush_imagepaint_tool_update(Main *bmain, Scene *scene, PointerR rna_Brush_update(bmain, scene, ptr); } -static void rna_Brush_icon_update(Main *bmain, Scene *scene, PointerRNA *ptr) +static void rna_Brush_icon_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr) { Brush *br= (Brush*)ptr->data; @@ -166,6 +167,17 @@ static void rna_Brush_icon_update(Main *bmain, Scene *scene, PointerRNA *ptr) static void rna_Brush_set_size(PointerRNA *ptr, int value) { Brush* me = (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); } @@ -214,6 +226,17 @@ static int rna_Brush_get_use_alpha_pressure(PointerRNA *ptr) 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); } @@ -235,7 +258,7 @@ static float rna_Brush_get_alpha(PointerRNA *ptr) return brush_alpha(me); } -static EnumPropertyItem *rna_Brush_direction_itemf(bContext *C, PointerRNA *ptr, int *free) +static EnumPropertyItem *rna_Brush_direction_itemf(bContext *UNUSED(C), PointerRNA *ptr, PropertyRNA *UNUSED(prop), int *UNUSED(free)) { static EnumPropertyItem prop_default_items[]= { {0, NULL, 0, NULL, NULL}}; |