[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [55808] trunk/blender/source/blender: Patch from kgeogeo:
Antony Riakiotakis
kalast at gmail.com
Fri Apr 5 13:45:34 CEST 2013
Revision: 55808
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=55808
Author: psy-fi
Date: 2013-04-05 11:45:33 +0000 (Fri, 05 Apr 2013)
Log Message:
-----------
Patch from kgeogeo:
* Change coordinates of stencil to float, helps with precision during
property manuipulations
* Expose stencil properties to RNA.
Modified Paths:
--------------
trunk/blender/source/blender/editors/sculpt_paint/paint_ops.c
trunk/blender/source/blender/makesdna/DNA_brush_types.h
trunk/blender/source/blender/makesrna/intern/rna_brush.c
Modified: trunk/blender/source/blender/editors/sculpt_paint/paint_ops.c
===================================================================
--- trunk/blender/source/blender/editors/sculpt_paint/paint_ops.c 2013-04-05 11:16:06 UTC (rev 55807)
+++ trunk/blender/source/blender/editors/sculpt_paint/paint_ops.c 2013-04-05 11:45:33 UTC (rev 55808)
@@ -454,9 +454,9 @@
} StencilControlMode;
typedef struct {
- int init_mouse[2];
- int init_spos[2];
- int init_sdim[2];
+ float init_mouse[2];
+ float init_spos[2];
+ float init_sdim[2];
float init_rot;
float init_angle;
float lenorig;
@@ -468,15 +468,16 @@
{
Paint *paint = paint_get_active_from_context(C);
Brush *br = paint_brush(paint);
- int mdiff[2];
+ float mdiff[2];
+ float mvalf[2] = {event->mval[0], event->mval[1]};
StencilControlData *scd = MEM_mallocN(sizeof(StencilControlData), "stencil_control");
- copy_v2_v2_int(scd->init_mouse, event->mval);
- copy_v2_v2_int(scd->init_sdim, br->stencil_dimension);
- copy_v2_v2_int(scd->init_spos, br->stencil_pos);
- sub_v2_v2v2_int(mdiff, event->mval, br->stencil_pos);
- scd->lenorig = sqrtf(mdiff[0] * mdiff[0] + mdiff[1] * mdiff[1]);
+ copy_v2_v2(scd->init_mouse, mvalf);
+ copy_v2_v2(scd->init_sdim, br->stencil_dimension);
+ copy_v2_v2(scd->init_spos, br->stencil_pos);
+ sub_v2_v2v2(mdiff, mvalf, br->stencil_pos);
+ scd->lenorig = len_v2(mdiff);
scd->br = br;
scd->init_rot = br->mtex.rot;
scd->init_angle = atan2(mdiff[1], mdiff[0]);
@@ -494,8 +495,8 @@
StencilControlData *scd = op->customdata;
Brush *br = scd->br;
- copy_v2_v2_int(br->stencil_dimension, scd->init_sdim);
- copy_v2_v2_int(br->stencil_pos, scd->init_spos);
+ copy_v2_v2(br->stencil_dimension, scd->init_sdim);
+ copy_v2_v2(br->stencil_pos, scd->init_spos);
br->mtex.rot = scd->init_rot;
MEM_freeN(op->customdata);
return OPERATOR_CANCELLED;
@@ -508,28 +509,29 @@
switch (event->type) {
case MOUSEMOVE:
{
- int mdiff[2];
+ float mdiff[2];
+ float mvalf[2] = {event->mval[0], event->mval[1]};
switch (scd->mode) {
case STENCIL_TRANSLATE:
- sub_v2_v2v2_int(mdiff, event->mval, scd->init_mouse);
- add_v2_v2v2_int(scd->br->stencil_pos, scd->init_spos,
+ sub_v2_v2v2(mdiff, mvalf, scd->init_mouse);
+ add_v2_v2v2(scd->br->stencil_pos, scd->init_spos,
mdiff);
break;
case STENCIL_SCALE:
{
float len, factor;
- sub_v2_v2v2_int(mdiff, event->mval, scd->br->stencil_pos);
- len = sqrtf(mdiff[0] * mdiff[0] + mdiff[1] * mdiff[1]);
+ sub_v2_v2v2(mdiff, mvalf, scd->br->stencil_pos);
+ len = len_v2(mdiff);
factor = len / scd->lenorig;
mdiff[0] = factor * scd->init_sdim[0];
mdiff[1] = factor * scd->init_sdim[1];
- copy_v2_v2_int(scd->br->stencil_dimension, mdiff);
+ copy_v2_v2(scd->br->stencil_dimension, mdiff);
break;
}
case STENCIL_ROTATE:
{
float angle;
- sub_v2_v2v2_int(mdiff, event->mval, scd->br->stencil_pos);
+ sub_v2_v2v2(mdiff, mvalf, scd->br->stencil_pos);
angle = atan2(mdiff[1], mdiff[0]);
angle = scd->init_rot + angle - scd->init_angle;
if (angle < 0.0f)
Modified: trunk/blender/source/blender/makesdna/DNA_brush_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_brush_types.h 2013-04-05 11:16:06 UTC (rev 55807)
+++ trunk/blender/source/blender/makesdna/DNA_brush_types.h 2013-04-05 11:45:33 UTC (rev 55808)
@@ -106,8 +106,8 @@
float add_col[3];
float sub_col[3];
- int stencil_pos[2];
- int stencil_dimension[2];
+ float stencil_pos[2];
+ float stencil_dimension[2];
} Brush;
/* Brush.flag */
Modified: trunk/blender/source/blender/makesrna/intern/rna_brush.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_brush.c 2013-04-05 11:16:06 UTC (rev 55807)
+++ trunk/blender/source/blender/makesrna/intern/rna_brush.c 2013-04-05 11:45:33 UTC (rev 55808)
@@ -793,6 +793,18 @@
RNA_def_property_ui_text(prop, "Autosmooth", "Amount of smoothing to automatically apply to each stroke");
RNA_def_property_update(prop, 0, "rna_Brush_update");
+ prop = RNA_def_property(srna, "stencil_pos", PROP_FLOAT, PROP_DISTANCE);
+ RNA_def_property_float_sdna(prop, NULL, "stencil_pos");
+ RNA_def_property_array(prop, 2);
+ RNA_def_property_ui_text(prop, "Stencil Position", "Position of stencil in viewport");
+ RNA_def_property_update(prop, 0, "rna_Brush_update");
+
+ prop = RNA_def_property(srna, "stencil_dimension", PROP_FLOAT, PROP_DISTANCE);
+ RNA_def_property_float_sdna(prop, NULL, "stencil_dimension");
+ RNA_def_property_array(prop, 2);
+ RNA_def_property_ui_text(prop, "Stencil Dimensions", "Dimensions of stencil in viewport");
+ RNA_def_property_update(prop, 0, "rna_Brush_update");
+
/* flag */
prop = RNA_def_property(srna, "use_airbrush", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", BRUSH_AIRBRUSH);
More information about the Bf-blender-cvs
mailing list