[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [53852] trunk/blender/source/blender: draw the brush size with pressure applied (when the tablet is used), nice to see the actual size used.

Campbell Barton ideasman42 at gmail.com
Wed Jan 16 20:22:16 CET 2013


Revision: 53852
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=53852
Author:   campbellbarton
Date:     2013-01-16 19:22:15 +0000 (Wed, 16 Jan 2013)
Log Message:
-----------
draw the brush size with pressure applied (when the tablet is used), nice to see the actual size used.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/sculpt_paint/paint_cursor.c
    trunk/blender/source/blender/windowmanager/WM_api.h
    trunk/blender/source/blender/windowmanager/intern/wm_event_system.c
    trunk/blender/source/blender/windowmanager/intern/wm_window.c

Modified: trunk/blender/source/blender/editors/sculpt_paint/paint_cursor.c
===================================================================
--- trunk/blender/source/blender/editors/sculpt_paint/paint_cursor.c	2013-01-16 18:16:05 UTC (rev 53851)
+++ trunk/blender/source/blender/editors/sculpt_paint/paint_cursor.c	2013-01-16 19:22:15 UTC (rev 53852)
@@ -595,6 +595,18 @@
 
 	/* draw brush outline */
 	glTranslatef(translation[0], translation[1], 0);
+
+	/* draw an inner brush */
+	if (BKE_brush_use_size_pressure(scene, brush)) {
+		const wmWindow *win = CTX_wm_window(C);
+		const float pressure = WM_cursor_pressure(win);
+		if (pressure != -1.0f && pressure != 0.0f) {
+			/* inner at full alpha */
+			glutil_draw_lined_arc(0.0, M_PI * 2.0, final_radius * pressure, 40);
+			/* outer at half alpha */
+			glColor4f(outline_col[0], outline_col[1], outline_col[2], outline_alpha * 0.5f);
+		}
+	}
 	glutil_draw_lined_arc(0.0, M_PI * 2.0, final_radius, 40);
 	glTranslatef(-translation[0], -translation[1], 0);
 

Modified: trunk/blender/source/blender/windowmanager/WM_api.h
===================================================================
--- trunk/blender/source/blender/windowmanager/WM_api.h	2013-01-16 18:16:05 UTC (rev 53851)
+++ trunk/blender/source/blender/windowmanager/WM_api.h	2013-01-16 19:22:15 UTC (rev 53852)
@@ -131,6 +131,7 @@
 void		WM_paint_cursor_end(struct wmWindowManager *wm, void *handle);
 
 void		WM_cursor_warp		(struct wmWindow *win, int x, int y);
+float		WM_cursor_pressure	(const struct wmWindow *win);
 
 			/* event map */
 int			WM_userdef_event_map(int kmitype);

Modified: trunk/blender/source/blender/windowmanager/intern/wm_event_system.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_event_system.c	2013-01-16 18:16:05 UTC (rev 53851)
+++ trunk/blender/source/blender/windowmanager/intern/wm_event_system.c	2013-01-16 19:22:15 UTC (rev 53852)
@@ -2655,7 +2655,11 @@
 		event->custom = EVT_DATA_TABLET;
 		event->customdata = wmtab;
 		event->customdatafree = 1;
+		// printf("%s: using tablet %.5f\n", wmtab->Pressure, __func__);
 	}
+	else {
+		// printf("%s: not using tablet\n", __func__);
+	}
 }
 
 /* adds customdata to event */

Modified: trunk/blender/source/blender/windowmanager/intern/wm_window.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_window.c	2013-01-16 18:16:05 UTC (rev 53851)
+++ trunk/blender/source/blender/windowmanager/intern/wm_window.c	2013-01-16 19:22:15 UTC (rev 53852)
@@ -1318,6 +1318,21 @@
 	}
 }
 
+/**
+ * Get the cursor pressure, in most cases you'll want to use wmTabletData from the event
+ */
+float WM_cursor_pressure(const struct wmWindow *win)
+{
+	const GHOST_TabletData *td = GHOST_GetTabletData(win->ghostwin);
+	/* if there's tablet data from an active tablet device then add it */
+	if ((td != NULL) && td->Active != GHOST_kTabletModeNone) {
+		return td->Pressure;
+	}
+	else {
+		return -1.0f;
+	}
+}
+
 /* support for native pixel size */
 /* mac retina opens window in size X, but it has up to 2 x more pixels */
 int WM_window_pixels_x(wmWindow *win)




More information about the Bf-blender-cvs mailing list