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>2012-01-22 22:04:35 +0400
committerCampbell Barton <ideasman42@gmail.com>2012-01-22 22:04:35 +0400
commit4966982a5aa7715e6bd67dcef1babdf8ca3d02e9 (patch)
treecf96f67b83f89336e3fe2f64aa58345dca818430 /source/blender/editors/sculpt_paint/sculpt_uv.c
parent0198df7956125180d5b9c50638a0778a3236d88f (diff)
parentdf51fd74cf826c42a90212082abb27e99484257a (diff)
svn merge ^/trunk/blender -r43564:43609
Diffstat (limited to 'source/blender/editors/sculpt_paint/sculpt_uv.c')
-rw-r--r--source/blender/editors/sculpt_paint/sculpt_uv.c33
1 files changed, 23 insertions, 10 deletions
diff --git a/source/blender/editors/sculpt_paint/sculpt_uv.c b/source/blender/editors/sculpt_paint/sculpt_uv.c
index 21bbb014eb0..228183d3d8a 100644
--- a/source/blender/editors/sculpt_paint/sculpt_uv.c
+++ b/source/blender/editors/sculpt_paint/sculpt_uv.c
@@ -122,24 +122,30 @@ typedef struct UvSculptData{
/* Edges used for adjacency info, used with laplacian smoothing */
UvEdge *uvedges;
- /* Need I say more? */
+ /* need I say more? */
int totalUvEdges;
/* data for initial stroke, used by tools like grab */
UVInitialStroke *initial_stroke;
- /* Timer to be used for airbrush-type brush */
+ /* timer to be used for airbrush-type brush */
wmTimer *timer;
- /* To determine quickly adjacent uvs */
+ /* to determine quickly adjacent uvs */
UvElementMap *elementMap;
/* uvsmooth Paint for fast reference */
Paint *uvsculpt;
+
+ /* tool to use. duplicating here to change if modifier keys are pressed */
+ char tool;
+
+ /* store invert flag here */
+ char invert;
}UvSculptData;
/*********** Improved Laplacian Relaxation Operator ************************/
-/* Original code by Raul Fernandez Hernandez "farsthary" *
+/* original code by Raul Fernandez Hernandez "farsthary" *
* adapted to uv smoothing by Antony Riakiatakis *
***************************************************************************/
@@ -301,9 +307,8 @@ static void uv_sculpt_stroke_apply(bContext *C, wmOperator *op, wmEvent *event,
float alpha, zoomx, zoomy;
Brush *brush = paint_brush(sculptdata->uvsculpt);
ToolSettings *toolsettings = CTX_data_tool_settings(C);
- tool = RNA_boolean_get(op->ptr, "temp_relax")? UV_SCULPT_TOOL_RELAX : toolsettings->uv_sculpt_tool;
-
- invert = RNA_boolean_get(op->ptr, "invert")? -1 : 1;
+ tool = sculptdata->tool;
+ invert = sculptdata->invert? -1 : 1;
alpha = brush_alpha(scene, brush);
UI_view2d_region_to_view(&ar->v2d, event->mval[0], event->mval[1], &co[0], &co[1]);
@@ -475,6 +480,8 @@ static UvSculptData *uv_sculpt_stroke_init(bContext *C, wmOperator *op, wmEvent
int island_index = 0;
/* Holds, for each UvElement in elementMap, a pointer to its unique uv.*/
int *uniqueUv;
+ data->tool = (RNA_enum_get(op->ptr, "mode") == BRUSH_STROKE_SMOOTH)? UV_SCULPT_TOOL_RELAX : ts->uv_sculpt_tool;
+ data->invert = (RNA_enum_get(op->ptr, "mode") == BRUSH_STROKE_INVERT)? 1 : 0;
data->uvsculpt = &ts->uvsculpt->paint;
@@ -652,7 +659,7 @@ static UvSculptData *uv_sculpt_stroke_init(bContext *C, wmOperator *op, wmEvent
}
/* Allocate initial selection for grab tool */
- if(ts->uv_sculpt_tool == UV_SCULPT_TOOL_GRAB){
+ if(data->tool){
float radius, radius_root;
UvSculptData *sculptdata = (UvSculptData *)op->customdata;
SpaceImage *sima;
@@ -768,6 +775,13 @@ static int uv_sculpt_stroke_modal(bContext *C, wmOperator *op, wmEvent *event)
void SCULPT_OT_uv_sculpt_stroke(wmOperatorType *ot)
{
+ static EnumPropertyItem stroke_mode_items[] = {
+ {BRUSH_STROKE_NORMAL, "NORMAL", 0, "Normal", "Apply brush normally"},
+ {BRUSH_STROKE_INVERT, "INVERT", 0, "Invert", "Invert action of brush for duration of stroke"},
+ {BRUSH_STROKE_SMOOTH, "RELAX", 0, "Relax", "Switch brush to relax mode for duration of stroke"},
+ {0}
+ };
+
/* identifiers */
ot->name = "Sculpt UVs";
ot->description = "Sculpt UVs using a brush";
@@ -782,6 +796,5 @@ void SCULPT_OT_uv_sculpt_stroke(wmOperatorType *ot)
ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO;
/* props */
- RNA_def_boolean(ot->srna, "invert", 0, "Invert", "Inverts the operator");
- RNA_def_boolean(ot->srna, "temp_relax", 0, "Relax", "Relax Tool");
+ RNA_def_enum(ot->srna, "mode", stroke_mode_items, BRUSH_STROKE_NORMAL, "Mode", "Stroke Mode");
}