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>2011-12-30 07:43:39 +0400
committerCampbell Barton <ideasman42@gmail.com>2011-12-30 07:43:39 +0400
commitec55cb11546b8eac461db45994d9d46b150de50d (patch)
tree02c8622d1accd751b51579d91bf989bba7e71e59 /source/blender/blenkernel/intern/brush.c
parent8c50700d7f021b28ae6f440812ff41628fbffce0 (diff)
while checking weight paint code noticed that unified brush functions loop over the scenes to get the flag.
* this loop is called multiple times per vertex (not addressed in this commit) * functions like brush_use_size_pressure(), brush_use_size_pressure() called unified_settings() twice when they didnt need to. looks like this code cant work right with multiple scenes, added a comment on this - but at least avoid calling unified_settings() multiple times in single functions.
Diffstat (limited to 'source/blender/blenkernel/intern/brush.c')
-rw-r--r--source/blender/blenkernel/intern/brush.c61
1 files changed, 49 insertions, 12 deletions
diff --git a/source/blender/blenkernel/intern/brush.c b/source/blender/blenkernel/intern/brush.c
index 2bf80fb7ecc..61064bede7e 100644
--- a/source/blender/blenkernel/intern/brush.c
+++ b/source/blender/blenkernel/intern/brush.c
@@ -1216,6 +1216,9 @@ struct ImBuf *brush_gen_radial_control_imbuf(Brush *br)
/* Unified Size and Strength */
+/* XXX, wouldnt it be better to only pass the active scene?
+ * this can return any old scene! - campbell*/
+
static void set_unified_settings(Brush *brush, short flag, int value)
{
Scene *sce;
@@ -1369,7 +1372,9 @@ static float unified_unprojected_radius(Brush *brush)
}
void brush_set_size(Brush *brush, int size)
{
- if (unified_settings(brush) & SCULPT_PAINT_USE_UNIFIED_SIZE)
+ const short us_flag = unified_settings(brush);
+
+ if (us_flag & SCULPT_PAINT_USE_UNIFIED_SIZE)
set_unified_size(brush, size);
else
brush->size= size;
@@ -1379,12 +1384,16 @@ void brush_set_size(Brush *brush, int size)
int brush_size(Brush *brush)
{
- return (unified_settings(brush) & SCULPT_PAINT_USE_UNIFIED_SIZE) ? unified_size(brush) : brush->size;
+ const short us_flag = unified_settings(brush);
+
+ return (us_flag & SCULPT_PAINT_USE_UNIFIED_SIZE) ? unified_size(brush) : brush->size;
}
void brush_set_use_locked_size(Brush *brush, int value)
{
- if (unified_settings(brush) & SCULPT_PAINT_USE_UNIFIED_SIZE) {
+ const short us_flag = unified_settings(brush);
+
+ if (us_flag & SCULPT_PAINT_USE_UNIFIED_SIZE) {
set_unified_settings(brush, SCULPT_PAINT_UNIFIED_LOCK_BRUSH_SIZE, value);
}
else {
@@ -1399,12 +1408,18 @@ void brush_set_use_locked_size(Brush *brush, int value)
int brush_use_locked_size(Brush *brush)
{
- return (unified_settings(brush) & SCULPT_PAINT_USE_UNIFIED_SIZE) ? (unified_settings(brush) & SCULPT_PAINT_UNIFIED_LOCK_BRUSH_SIZE) : (brush->flag & BRUSH_LOCK_SIZE);
+ const short us_flag = unified_settings(brush);
+
+ return (us_flag & SCULPT_PAINT_USE_UNIFIED_SIZE) ?
+ (us_flag & SCULPT_PAINT_UNIFIED_LOCK_BRUSH_SIZE) :
+ (brush->flag & BRUSH_LOCK_SIZE);
}
void brush_set_use_size_pressure(Brush *brush, int value)
{
- if (unified_settings(brush) & SCULPT_PAINT_USE_UNIFIED_SIZE) {
+ const short us_flag = unified_settings(brush);
+
+ if (us_flag & SCULPT_PAINT_USE_UNIFIED_SIZE) {
set_unified_settings(brush, SCULPT_PAINT_UNIFIED_SIZE_PRESSURE, value);
}
else {
@@ -1419,12 +1434,18 @@ void brush_set_use_size_pressure(Brush *brush, int value)
int brush_use_size_pressure(Brush *brush)
{
- return (unified_settings(brush) & SCULPT_PAINT_USE_UNIFIED_SIZE) ? (unified_settings(brush) & SCULPT_PAINT_UNIFIED_SIZE_PRESSURE) : (brush->flag & BRUSH_SIZE_PRESSURE);
+ const short us_flag = unified_settings(brush);
+
+ return (us_flag & SCULPT_PAINT_USE_UNIFIED_SIZE) ?
+ (us_flag & SCULPT_PAINT_UNIFIED_SIZE_PRESSURE) :
+ (brush->flag & BRUSH_SIZE_PRESSURE);
}
void brush_set_use_alpha_pressure(Brush *brush, int value)
{
- if (unified_settings(brush) & SCULPT_PAINT_USE_UNIFIED_ALPHA) {
+ const short us_flag = unified_settings(brush);
+
+ if (us_flag & SCULPT_PAINT_USE_UNIFIED_ALPHA) {
set_unified_settings(brush, SCULPT_PAINT_UNIFIED_ALPHA_PRESSURE, value);
}
else {
@@ -1439,12 +1460,18 @@ void brush_set_use_alpha_pressure(Brush *brush, int value)
int brush_use_alpha_pressure(Brush *brush)
{
- return (unified_settings(brush) & SCULPT_PAINT_USE_UNIFIED_ALPHA) ? (unified_settings(brush) & SCULPT_PAINT_UNIFIED_ALPHA_PRESSURE) : (brush->flag & BRUSH_ALPHA_PRESSURE);
+ const short us_flag = unified_settings(brush);
+
+ return (us_flag & SCULPT_PAINT_USE_UNIFIED_ALPHA) ?
+ (us_flag & SCULPT_PAINT_UNIFIED_ALPHA_PRESSURE) :
+ (brush->flag & BRUSH_ALPHA_PRESSURE);
}
void brush_set_unprojected_radius(Brush *brush, float unprojected_radius)
{
- if (unified_settings(brush) & SCULPT_PAINT_USE_UNIFIED_SIZE)
+ const short us_flag = unified_settings(brush);
+
+ if (us_flag & SCULPT_PAINT_USE_UNIFIED_SIZE)
set_unified_unprojected_radius(brush, unprojected_radius);
else
brush->unprojected_radius= unprojected_radius;
@@ -1454,12 +1481,18 @@ void brush_set_unprojected_radius(Brush *brush, float unprojected_radius)
float brush_unprojected_radius(Brush *brush)
{
- return (unified_settings(brush) & SCULPT_PAINT_USE_UNIFIED_SIZE) ? unified_unprojected_radius(brush) : brush->unprojected_radius;
+ const short us_flag = unified_settings(brush);
+
+ return (us_flag & SCULPT_PAINT_USE_UNIFIED_SIZE) ?
+ unified_unprojected_radius(brush) :
+ brush->unprojected_radius;
}
void brush_set_alpha(Brush *brush, float alpha)
{
- if (unified_settings(brush) & SCULPT_PAINT_USE_UNIFIED_ALPHA)
+ const short us_flag = unified_settings(brush);
+
+ if (us_flag & SCULPT_PAINT_USE_UNIFIED_ALPHA)
set_unified_alpha(brush, alpha);
else
brush->alpha= alpha;
@@ -1469,5 +1502,9 @@ void brush_set_alpha(Brush *brush, float alpha)
float brush_alpha(Brush *brush)
{
- return (unified_settings(brush) & SCULPT_PAINT_USE_UNIFIED_ALPHA) ? unified_alpha(brush) : brush->alpha;
+ const short us_flag = unified_settings(brush);
+
+ return (us_flag & SCULPT_PAINT_USE_UNIFIED_ALPHA) ?
+ unified_alpha(brush) :
+ brush->alpha;
}