[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [39034] branches/soc-2011-onion/source/ blender/editors/sculpt_paint/paint_stroke.c: all paint_stroke callbacks are now checked for being null.
Jason Wilkins
Jason.A.Wilkins at gmail.com
Thu Aug 4 22:01:09 CEST 2011
Revision: 39034
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=39034
Author: jwilkins
Date: 2011-08-04 20:01:07 +0000 (Thu, 04 Aug 2011)
Log Message:
-----------
all paint_stroke callbacks are now checked for being null. paint_stroke will just ignore any actions that require a call back that has been set to null
Modified Paths:
--------------
branches/soc-2011-onion/source/blender/editors/sculpt_paint/paint_stroke.c
Modified: branches/soc-2011-onion/source/blender/editors/sculpt_paint/paint_stroke.c
===================================================================
--- branches/soc-2011-onion/source/blender/editors/sculpt_paint/paint_stroke.c 2011-08-04 18:28:51 UTC (rev 39033)
+++ branches/soc-2011-onion/source/blender/editors/sculpt_paint/paint_stroke.c 2011-08-04 20:01:07 UTC (rev 39034)
@@ -289,7 +289,7 @@
}
}
-void paint_stroke_apply(
+static void apply_symmetric(
const struct bContext *C,
struct PaintStroke *stroke)
{
@@ -302,13 +302,13 @@
always do first pass (usually the only pass), or
do passes that have bits in common with mirror_symm, and
some combinations may be redundant, so
- if mirror_symm is XZ skip pass XY, and
- if mirror_symm is YZ skip passes XY and XZ */
+ if mirror_symm is XZ skip pass XY, and
+ if mirror_symm is YZ skip passes XY and XZ */
for (pass= 0; pass <= mirror_symm; pass++) {
if ((pass == 0) ||
- ((mirror_symm & pass) &&
- (mirror_symm != 5 || pass != 3) &&
- (mirror_symm != 6 || (pass != 3 && pass != 5))))
+ ((mirror_symm & pass) &&
+ (mirror_symm != 5 || pass != 3) &&
+ (mirror_symm != 6 || (pass != 3 && pass != 5))))
{
stroke->update_symmetry(C, stroke, pass, 0, 0);
@@ -321,8 +321,20 @@
}
}
+void paint_stroke_apply(
+ const struct bContext *C,
+ struct PaintStroke *stroke)
+{
+ if (stroke->apply) {
+ if (stroke->update_symmetry)
+ apply_symmetric(C, stroke);
+ else
+ stroke->apply(C, stroke);
+ }
+}
+
/* Stroke Predicates
*****************************************************************************/
@@ -401,9 +413,11 @@
/* parameters should be read-only from within paint-stroke module,
but mutable by the init_params callback */
- stroke->init_params(
- C,
- (struct PaintStrokeParams *)&(stroke->params)); /* cast away const */
+ if (stroke->init_params) {
+ stroke->init_params(
+ C,
+ (struct PaintStrokeParams *)&(stroke->params)); /* cast away const */
+ }
}
void paint_stroke_update_params(
@@ -413,10 +427,12 @@
/* parameters should be read-only from within paint-stroke module,
but mutable by the update_params callback */
- stroke->update_params(
- C,
- (struct PaintStrokeParams *)&(stroke->params), /* cast away const */
- stroke);
+ if (stroke->update_params) {
+ stroke->update_params(
+ C,
+ (struct PaintStrokeParams *)&(stroke->params), /* cast away const */
+ stroke);
+ }
}
void paint_stroke_new(
@@ -496,11 +512,13 @@
}
/* Temporary Setting Switch */
- if (RNA_property_is_set(ptr, "switch")) {
+ if (stroke->alt &&
+ stroke->temp_switch &&
+ stroke->temp_unswitch &&
+ RNA_property_is_set(ptr, "switch"))
+ {
RNA_string_get(ptr, "switch", temp_switch_name);
-
- if (stroke->alt && stroke->temp_switch && stroke->temp_unswitch)
- stroke->temp_switch(C, stroke, temp_switch_name);
+ stroke->temp_switch(C, stroke, temp_switch_name);
}
init_params(C, stroke);
@@ -541,7 +559,8 @@
stroke->start_time= PIL_check_seconds_timer();
- stroke->start(C, stroke);
+ if (stroke->start)
+ stroke->start(C, stroke);
paint_stroke_update_params(C, stroke);
}
@@ -550,7 +569,9 @@
const struct bContext *C,
struct PaintStroke *stroke)
{
- return !(stroke->started) && stroke->test_start(C, stroke);
+ return
+ !(stroke->started) &&
+ ((!stroke->test_start) || stroke->test_start(C, stroke));
}
static void stroke_done(
@@ -583,8 +604,9 @@
struct PaintStroke *stroke,
struct PointerRNA *itemptr)
{
- if (!(stroke->params.flag & STROKE_LINE) &&
- (stroke->params.flag & STROKE_RESTORE))
+ if (stroke->restore &&
+ !(stroke->params.flag & STROKE_LINE) &&
+ (stroke->params.flag & STROKE_RESTORE))
{
stroke->restore(C);
}
@@ -613,7 +635,8 @@
dtime);
}
else {
- stroke->update_step(C, stroke);
+ if (stroke->update_step)
+ stroke->update_step(C, stroke);
}
stroke->path= stroke->current;
@@ -1548,8 +1571,11 @@
float delta[2];
float distance;
- if (stroke->params.flag & STROKE_RESTORE)
+ if (stroke->restore &&
+ stroke->params.flag & STROKE_RESTORE)
+ {
stroke->restore(C);
+ }
sub_v2_v2v2(delta, stroke->current.mouse, stroke->start_mouse);
More information about the Bf-blender-cvs
mailing list