[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [23324] trunk/blender/source/blender: * Added notifiers/redraws for brush edits in 3d view and image editor ( so using radial control updates tool properties)

Matt Ebb matt at mke3.net
Fri Sep 18 05:11:18 CEST 2009


Revision: 23324
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=23324
Author:   broken
Date:     2009-09-18 05:11:17 +0200 (Fri, 18 Sep 2009)

Log Message:
-----------
* Added notifiers/redraws for brush edits in 3d view and image editor (so using radial control updates tool properties)

* Changed the non-projection paint code to use the brush falloff curve, rather than a predefined falloff. This makes non-projection painting in the 3d view, and image editor painting much more consistent with other brush usage.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/brush.c
    trunk/blender/source/blender/editors/sculpt_paint/paint_image.c
    trunk/blender/source/blender/editors/sculpt_paint/paint_vertex.c
    trunk/blender/source/blender/editors/sculpt_paint/sculpt.c
    trunk/blender/source/blender/editors/space_image/space_image.c
    trunk/blender/source/blender/editors/space_view3d/space_view3d.c

Modified: trunk/blender/source/blender/blenkernel/intern/brush.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/brush.c	2009-09-18 02:38:38 UTC (rev 23323)
+++ trunk/blender/source/blender/blenkernel/intern/brush.c	2009-09-18 03:11:17 UTC (rev 23324)
@@ -446,6 +446,7 @@
 	ImBuf *ibuf;
 	float xy[2], dist, rgba[4], *dstf;
 	int x, y, rowbytes, xoff, yoff, imbflag;
+	int maxsize = brush->size >> 1;
 	char *dst, crgb[3];
 
 	imbflag= (flt)? IB_rectfloat: IB_rect;
@@ -470,7 +471,7 @@
 					dist = sqrt(xy[0]*xy[0] + xy[1]*xy[1]);
 
 					VECCOPY(dstf, brush->rgb);
-					dstf[3]= brush_sample_falloff(brush, dist);
+					dstf[3]= brush_curve_strength(brush, dist, maxsize);
 				}
 				else if (texfall == 1) {
 					brush_sample_tex(brush, xy, dstf);
@@ -483,7 +484,7 @@
 					dstf[0] = rgba[0]*brush->rgb[0];
 					dstf[1] = rgba[1]*brush->rgb[1];
 					dstf[2] = rgba[2]*brush->rgb[2];
-					dstf[3] = rgba[3]*brush_sample_falloff(brush, dist);
+					dstf[3] = rgba[3]*brush_curve_strength(brush, dist, maxsize);
 				}
 			}
 		}
@@ -506,7 +507,7 @@
 					dst[0]= crgb[0];
 					dst[1]= crgb[1];
 					dst[2]= crgb[2];
-					dst[3]= FTOCHAR(brush_sample_falloff(brush, dist));
+					dst[3]= FTOCHAR(brush_curve_strength(brush, dist, maxsize));
 				}
 				else if (texfall == 1) {
 					brush_sample_tex(brush, xy, rgba);
@@ -522,7 +523,7 @@
 					dst[0] = FTOCHAR(rgba[0]*brush->rgb[0]);
 					dst[1] = FTOCHAR(rgba[1]*brush->rgb[1]);
 					dst[2] = FTOCHAR(rgba[2]*brush->rgb[2]);
-					dst[3] = FTOCHAR(rgba[3]*brush_sample_falloff(brush, dist));
+					dst[3] = FTOCHAR(rgba[3]*brush_curve_strength(brush, dist, maxsize));
 				}
 			}
 		}

Modified: trunk/blender/source/blender/editors/sculpt_paint/paint_image.c
===================================================================
--- trunk/blender/source/blender/editors/sculpt_paint/paint_image.c	2009-09-18 02:38:38 UTC (rev 23323)
+++ trunk/blender/source/blender/editors/sculpt_paint/paint_image.c	2009-09-18 03:11:17 UTC (rev 23324)
@@ -4897,12 +4897,15 @@
 
 static int paint_radial_control_exec(bContext *C, wmOperator *op)
 {
+	Brush *brush = paint_brush(&CTX_data_scene(C)->toolsettings->imapaint.paint);
 	float zoom;
 	int ret;
 	char str[256];
 	get_imapaint_zoom(C, &zoom, &zoom);
-	ret = brush_radial_control_exec(op, paint_brush(&CTX_data_scene(C)->toolsettings->imapaint.paint), 2.0 / zoom);
+	ret = brush_radial_control_exec(op, brush, 2.0 / zoom);
 	WM_radial_control_string(op, str, 256);
+	
+	WM_event_add_notifier(C, NC_BRUSH|NA_EDITED, brush);
 
 	return ret;
 }
@@ -5216,10 +5219,13 @@
 
 static int texture_paint_radial_control_exec(bContext *C, wmOperator *op)
 {
-	int ret = brush_radial_control_exec(op, paint_brush(&CTX_data_scene(C)->toolsettings->imapaint.paint), 2);
+	Brush *brush = paint_brush(&CTX_data_scene(C)->toolsettings->imapaint.paint);
+	int ret = brush_radial_control_exec(op, brush, 2);
 	char str[256];
 	WM_radial_control_string(op, str, 256);
 
+	WM_event_add_notifier(C, NC_BRUSH|NA_EDITED, brush);
+
 	return ret;
 }
 

Modified: trunk/blender/source/blender/editors/sculpt_paint/paint_vertex.c
===================================================================
--- trunk/blender/source/blender/editors/sculpt_paint/paint_vertex.c	2009-09-18 02:38:38 UTC (rev 23323)
+++ trunk/blender/source/blender/editors/sculpt_paint/paint_vertex.c	2009-09-18 03:11:17 UTC (rev 23324)
@@ -1136,7 +1136,11 @@
 static int vpaint_radial_control_exec(bContext *C, wmOperator *op)
 {
 	Brush *brush = paint_brush(&CTX_data_scene(C)->toolsettings->vpaint->paint);
-	return brush_radial_control_exec(op, brush, 1);
+	int ret = brush_radial_control_exec(op, brush, 1);
+	
+	WM_event_add_notifier(C, NC_BRUSH|NA_EDITED, brush);
+	
+	return ret;
 }
 
 static int wpaint_radial_control_invoke(bContext *C, wmOperator *op, wmEvent *event)
@@ -1161,7 +1165,11 @@
 static int wpaint_radial_control_exec(bContext *C, wmOperator *op)
 {
 	Brush *brush = paint_brush(&CTX_data_scene(C)->toolsettings->wpaint->paint);
-	return brush_radial_control_exec(op, brush, 1);
+	int ret = brush_radial_control_exec(op, brush, 1);
+	
+	WM_event_add_notifier(C, NC_BRUSH|NA_EDITED, brush);
+	
+	return ret;
 }
 
 void PAINT_OT_weight_paint_radial_control(wmOperatorType *ot)

Modified: trunk/blender/source/blender/editors/sculpt_paint/sculpt.c
===================================================================
--- trunk/blender/source/blender/editors/sculpt_paint/sculpt.c	2009-09-18 02:38:38 UTC (rev 23323)
+++ trunk/blender/source/blender/editors/sculpt_paint/sculpt.c	2009-09-18 03:11:17 UTC (rev 23324)
@@ -1091,8 +1091,11 @@
 static int sculpt_radial_control_exec(bContext *C, wmOperator *op)
 {
 	Brush *brush = paint_brush(&CTX_data_tool_settings(C)->sculpt->paint);
+	int ret = brush_radial_control_exec(op, brush, 1);
 
-	return brush_radial_control_exec(op, brush, 1);
+	WM_event_add_notifier(C, NC_BRUSH|NA_EDITED, brush);
+
+	return ret;
 }
 
 static void SCULPT_OT_radial_control(wmOperatorType *ot)

Modified: trunk/blender/source/blender/editors/space_image/space_image.c
===================================================================
--- trunk/blender/source/blender/editors/space_image/space_image.c	2009-09-18 02:38:38 UTC (rev 23323)
+++ trunk/blender/source/blender/editors/space_image/space_image.c	2009-09-18 03:11:17 UTC (rev 23324)
@@ -486,7 +486,10 @@
 {
 	/* context changes */
 	switch(wmn->category) {
-		
+		case NC_BRUSH:
+			if(wmn->action==NA_EDITED)
+				ED_region_tag_redraw(ar);
+			break;
 	}
 }
 

Modified: trunk/blender/source/blender/editors/space_view3d/space_view3d.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/space_view3d.c	2009-09-18 02:38:38 UTC (rev 23323)
+++ trunk/blender/source/blender/editors/space_view3d/space_view3d.c	2009-09-18 03:11:17 UTC (rev 23324)
@@ -566,6 +566,10 @@
 					break;
 			}
 			break;
+		case NC_BRUSH:
+			if(wmn->action==NA_EDITED)
+				ED_region_tag_redraw(ar);
+			break;
 		case NC_SPACE:
 			if(wmn->data == ND_SPACE_VIEW3D)
 				ED_region_tag_redraw(ar);





More information about the Bf-blender-cvs mailing list