[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [25713] trunk/blender: Fix: curve reset for brushes now gives proper smooth curve as default,

Brecht Van Lommel brecht at blender.org
Mon Jan 4 18:28:40 CET 2010


Revision: 25713
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=25713
Author:   blendix
Date:     2010-01-04 18:28:37 +0100 (Mon, 04 Jan 2010)

Log Message:
-----------
Fix: curve reset for brushes now gives proper smooth curve as default,
also moved brush curve presets code into curvemapping code.

Modified Paths:
--------------
    trunk/blender/release/scripts/ui/space_view3d_toolbar.py
    trunk/blender/source/blender/blenkernel/BKE_brush.h
    trunk/blender/source/blender/blenkernel/BKE_colortools.h
    trunk/blender/source/blender/blenkernel/intern/brush.c
    trunk/blender/source/blender/blenkernel/intern/colortools.c
    trunk/blender/source/blender/blenloader/intern/readfile.c
    trunk/blender/source/blender/editors/include/UI_interface.h
    trunk/blender/source/blender/editors/interface/interface_templates.c
    trunk/blender/source/blender/editors/sculpt_paint/paint_utils.c
    trunk/blender/source/blender/editors/space_image/image_buttons.c
    trunk/blender/source/blender/editors/space_node/drawnode.c
    trunk/blender/source/blender/makesrna/intern/rna_ui_api.c

Modified: trunk/blender/release/scripts/ui/space_view3d_toolbar.py
===================================================================
--- trunk/blender/release/scripts/ui/space_view3d_toolbar.py	2010-01-04 17:27:23 UTC (rev 25712)
+++ trunk/blender/release/scripts/ui/space_view3d_toolbar.py	2010-01-04 17:28:37 UTC (rev 25713)
@@ -733,7 +733,7 @@
         settings = self.paint_settings(context)
         brush = settings.brush
 
-        layout.template_curve_mapping(brush, "curve")
+        layout.template_curve_mapping(brush, "curve", brush=True)
         layout.operator_menu_enum("brush.curve_preset", property="shape")
 
 

Modified: trunk/blender/source/blender/blenkernel/BKE_brush.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_brush.h	2010-01-04 17:27:23 UTC (rev 25712)
+++ trunk/blender/source/blender/blenkernel/BKE_brush.h	2010-01-04 17:28:37 UTC (rev 25713)
@@ -36,6 +36,7 @@
 struct ImBuf;
 struct Scene;
 struct wmOperator;
+enum CurveMappingPreset;
 
 /* datablock functions */
 struct Brush *add_brush(const char *name);
@@ -54,12 +55,7 @@
 int brush_clone_image_delete(struct Brush *brush);
 
 /* brush curve */
-typedef enum {
-	BRUSH_PRESET_SHARP,
-	BRUSH_PRESET_SMOOTH,
-	BRUSH_PRESET_MAX
-} BrushCurvePreset;
-void brush_curve_preset(struct Brush *b, BrushCurvePreset preset);
+void brush_curve_preset(struct Brush *b, enum CurveMappingPreset preset);
 float brush_curve_strength_clamp(struct Brush *br, float p, const float len);
 float brush_curve_strength(struct Brush *br, float p, const float len); /* used for sculpt */
 

Modified: trunk/blender/source/blender/blenkernel/BKE_colortools.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_colortools.h	2010-01-04 17:27:23 UTC (rev 25712)
+++ trunk/blender/source/blender/blenkernel/BKE_colortools.h	2010-01-04 17:28:37 UTC (rev 25713)
@@ -34,6 +34,13 @@
 struct ImBuf;
 struct rctf;
 
+typedef enum CurveMappingPreset {
+	CURVE_PRESET_LINE,
+	CURVE_PRESET_SHARP,
+	CURVE_PRESET_SMOOTH,
+	CURVE_PRESET_MAX
+} CurveMappingPreset;
+
 void				floatbuf_to_srgb_byte(float *rectf, unsigned char *rectc, int x1, int x2, int y1, int y2, int w);
 void				floatbuf_to_byte(float *rectf, unsigned char *rectc, int x1, int x2, int y1, int y2, int w);
 
@@ -44,7 +51,7 @@
 
 void				curvemap_remove(struct CurveMap *cuma, int flag);
 void				curvemap_insert(struct CurveMap *cuma, float x, float y);
-void				curvemap_reset(struct CurveMap *cuma, struct rctf *clipr);
+void				curvemap_reset(struct CurveMap *cuma, struct rctf *clipr, CurveMappingPreset preset);
 void				curvemap_sethandle(struct CurveMap *cuma, int type);
 
 void				curvemapping_changed(struct CurveMapping *cumap, int rem_doubles);

Modified: trunk/blender/source/blender/blenkernel/intern/brush.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/brush.c	2010-01-04 17:27:23 UTC (rev 25712)
+++ trunk/blender/source/blender/blenkernel/intern/brush.c	2010-01-04 17:28:37 UTC (rev 25713)
@@ -88,7 +88,7 @@
 	brush->sculpt_tool = SCULPT_TOOL_DRAW;
 	brush->flag |= BRUSH_SPACE;
 
-	brush_curve_preset(brush, BRUSH_PRESET_SMOOTH);
+	brush_curve_preset(brush, CURVE_PRESET_SMOOTH);
 
 	/* enable fake user by default */
 	brush->id.flag |= LIB_FAKEUSER;
@@ -225,7 +225,7 @@
 	}
 }
 
-void brush_curve_preset(Brush *b, BrushCurvePreset preset)
+void brush_curve_preset(Brush *b, CurveMappingPreset preset)
 {
 	CurveMap *cm = NULL;
 
@@ -233,46 +233,9 @@
 		b->curve = curvemapping_add(1, 0, 0, 1, 1);
 
 	cm = b->curve->cm;
-
-	if(cm->curve)
-		MEM_freeN(cm->curve);
-
-	if(preset == BRUSH_PRESET_SHARP)
-		cm->totpoint= 3;
-	if(preset == BRUSH_PRESET_SMOOTH)
-		cm->totpoint= 4;
-	if(preset == BRUSH_PRESET_MAX)
-		cm->totpoint= 2;
-
-
-	cm->curve= MEM_callocN(cm->totpoint*sizeof(CurveMapPoint), "curve points");
 	cm->flag &= ~CUMA_EXTEND_EXTRAPOLATE;
 
-	if(preset == BRUSH_PRESET_SHARP) {
-		cm->curve[0].x= 0;
-		cm->curve[0].y= 1;
-		cm->curve[1].x= 0.33;
-		cm->curve[1].y= 0.33;
-		cm->curve[2].x= 1;
-		cm->curve[2].y= 0;
-	}
-	else if(preset == BRUSH_PRESET_SMOOTH) {
-		cm->curve[0].x= 0;
-		cm->curve[0].y= 1;
-		cm->curve[1].x= 0.25;
-		cm->curve[1].y= 0.92;
-		cm->curve[2].x= 0.75;
-		cm->curve[2].y= 0.08;
-		cm->curve[3].x= 1;
-		cm->curve[3].y= 0;
-	}
-	else if(preset == BRUSH_PRESET_MAX) {
-		cm->curve[0].x= 0;
-		cm->curve[0].y= 1;
-		cm->curve[1].x= 1;
-		cm->curve[1].y= 1;
-	}
-
+	curvemap_reset(cm, &b->curve->clipr, preset);
 	curvemapping_changed(b->curve, 0);
 }
 

Modified: trunk/blender/source/blender/blenkernel/intern/colortools.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/colortools.c	2010-01-04 17:27:23 UTC (rev 25712)
+++ trunk/blender/source/blender/blenkernel/intern/colortools.c	2010-01-04 17:28:37 UTC (rev 25713)
@@ -236,17 +236,55 @@
 	cuma->curve= cmp;
 }
 
-void curvemap_reset(CurveMap *cuma, rctf *clipr)
+void curvemap_reset(CurveMap *cuma, rctf *clipr, CurveMappingPreset preset)
 {
-	cuma->totpoint= 2;
+	if(cuma->curve)
+		MEM_freeN(cuma->curve);
+
+	switch(preset) {
+		case CURVE_PRESET_LINE: cuma->totpoint= 2; break;
+		case CURVE_PRESET_SHARP: cuma->totpoint= 3; break;
+		case CURVE_PRESET_SMOOTH: cuma->totpoint= 4; break;
+		case CURVE_PRESET_MAX: cuma->totpoint= 2; break;
+	}
+
+	cuma->curve= MEM_callocN(cuma->totpoint*sizeof(CurveMapPoint), "curve points");
+
+	switch(preset) {
+		case CURVE_PRESET_LINE:
+			cuma->curve[0].x= clipr->xmin;
+			cuma->curve[0].y= clipr->ymin;
+			cuma->curve[0].flag= 0;
+			cuma->curve[1].x= clipr->xmax;
+			cuma->curve[1].y= clipr->ymax;
+			cuma->curve[1].flag= 0;
+			break;
+		case CURVE_PRESET_SHARP:
+			cuma->curve[0].x= 0;
+			cuma->curve[0].y= 1;
+			cuma->curve[1].x= 0.33;
+			cuma->curve[1].y= 0.33;
+			cuma->curve[2].x= 1;
+			cuma->curve[2].y= 0;
+			break;
+		case CURVE_PRESET_SMOOTH:
+			cuma->curve[0].x= 0;
+			cuma->curve[0].y= 1;
+			cuma->curve[1].x= 0.25;
+			cuma->curve[1].y= 0.92;
+			cuma->curve[2].x= 0.75;
+			cuma->curve[2].y= 0.08;
+			cuma->curve[3].x= 1;
+			cuma->curve[3].y= 0;
+			break;
+		case CURVE_PRESET_MAX:
+			cuma->curve[0].x= 0;
+			cuma->curve[0].y= 1;
+			cuma->curve[1].x= 1;
+			cuma->curve[1].y= 1;
+			break;
+	}
 	
-	cuma->curve[0].x= clipr->xmin;
-	cuma->curve[0].y= clipr->ymin;
-	cuma->curve[0].flag= 0;
-	cuma->curve[1].x= clipr->xmax;
-	cuma->curve[1].y= clipr->ymax;
-	cuma->curve[1].flag= 0;
-	
 	if(cuma->table) {
 		MEM_freeN(cuma->table);
 		cuma->table= NULL;

Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c	2010-01-04 17:27:23 UTC (rev 25712)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c	2010-01-04 17:28:37 UTC (rev 25713)
@@ -1553,7 +1553,7 @@
 	if(brush->curve)
 		direct_link_curvemapping(fd, brush->curve);
 	else
-		brush_curve_preset(brush, BRUSH_PRESET_SHARP);
+		brush_curve_preset(brush, CURVE_PRESET_SHARP);
 }
 
 static void direct_link_script(FileData *fd, Script *script)

Modified: trunk/blender/source/blender/editors/include/UI_interface.h
===================================================================
--- trunk/blender/source/blender/editors/include/UI_interface.h	2010-01-04 17:27:23 UTC (rev 25712)
+++ trunk/blender/source/blender/editors/include/UI_interface.h	2010-01-04 17:28:37 UTC (rev 25713)
@@ -653,7 +653,7 @@
 uiLayout *uiTemplateConstraint(uiLayout *layout, struct PointerRNA *ptr);
 void uiTemplatePreview(uiLayout *layout, struct ID *id, struct ID *parent, struct MTex *slot);
 void uiTemplateColorRamp(uiLayout *layout, struct PointerRNA *ptr, char *propname, int expand);
-void uiTemplateCurveMapping(uiLayout *layout, struct PointerRNA *ptr, char *propname, int type, int levels);
+void uiTemplateCurveMapping(uiLayout *layout, struct PointerRNA *ptr, char *propname, int type, int levels, int brush);
 void uiTemplateTriColorSet(uiLayout *layout, struct PointerRNA *ptr, char *propname);
 void uiTemplateLayers(uiLayout *layout, struct PointerRNA *ptr, char *propname,
 		      PointerRNA *used_ptr, char *used_propname, int active_layer);

Modified: trunk/blender/source/blender/editors/interface/interface_templates.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_templates.c	2010-01-04 17:27:23 UTC (rev 25712)
+++ trunk/blender/source/blender/editors/interface/interface_templates.c	2010-01-04 17:28:37 UTC (rev 25713)
@@ -33,6 +33,7 @@
 
 #include "BLI_string.h"
 
+#include "BKE_colortools.h"
 #include "BKE_context.h"
 #include "BKE_icons.h"
 #include "BKE_global.h"
@@ -1652,8 +1653,8 @@
 	CurveMap *cuma= cumap->cm+cumap->cur;
 
 	switch(event) {
-		case 0:
-			curvemap_reset(cuma, &cumap->clipr);
+		case 0: /* reset */
+			curvemap_reset(cuma, &cumap->clipr, CURVE_PRESET_LINE);
 			curvemapping_changed(cumap, 0);
 			break;
 		case 1:
@@ -1675,6 +1676,10 @@
 			cuma->flag |= CUMA_EXTEND_EXTRAPOLATE;
 			curvemapping_changed(cumap, 0);
 			break;
+		case 6: /* reset smooth */
+			curvemap_reset(cuma, &cumap->clipr, CURVE_PRESET_SMOOTH);
+			curvemapping_changed(cumap, 0);
+			break;
 	}
 	ED_region_tag_redraw(CTX_wm_region(C));
 }
@@ -1701,6 +1706,26 @@
 	return block;
 }
 
+static uiBlock *curvemap_brush_tools_func(bContext *C, struct ARegion *ar, void *cumap_v)
+{
+	uiBlock *block;
+	short yco= 0, menuwidth=120;
+
+	block= uiBeginBlock(C, ar, "curvemap_tools_func", UI_EMBOSS);
+	uiBlockSetButmFunc(block, curvemap_tools_dofunc, cumap_v);
+
+	uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Reset View",				0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 1, "");
+	uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Vector Handle",			0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 2, "");
+	uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Auto Handle",			0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 3, "");
+	uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Reset Curve",			0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 6, "");
+
+	uiBlockSetDirection(block, UI_RIGHT);
+	uiTextBoundsBlock(block, 50);
+
+	uiEndBlock(C, block);
+	return block;
+}
+
 static void curvemap_buttons_redraw(bContext *C, void *arg1, void *arg2)
 {
 	ED_region_tag_redraw(CTX_wm_region(C));
@@ -1712,7 +1737,7 @@
 	int a;
 	
 	for(a=0; a<CM_TOT; a++)

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list