[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [47983] branches/soc-2012-swiss_cheese: * adds touch type to the window manager

Nicholas Rishel rishel.nick at gmail.com
Sat Jun 16 08:30:28 CEST 2012


Revision: 47983
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=47983
Author:   nicholas_rishel
Date:     2012-06-16 06:30:13 +0000 (Sat, 16 Jun 2012)
Log Message:
-----------
* adds touch type to the window manager
* mild refactoring of ghost code

Modified Paths:
--------------
    branches/soc-2012-swiss_cheese/intern/ghost/GHOST_Types.h
    branches/soc-2012-swiss_cheese/intern/ghost/intern/GHOST_SystemWin32.cpp
    branches/soc-2012-swiss_cheese/intern/ghost/intern/GHOST_TouchManager.cpp
    branches/soc-2012-swiss_cheese/intern/ghost/intern/GHOST_TouchManager.h
    branches/soc-2012-swiss_cheese/source/blender/windowmanager/WM_types.h
    branches/soc-2012-swiss_cheese/source/blender/windowmanager/intern/wm_event_system.c
    branches/soc-2012-swiss_cheese/source/blender/windowmanager/wm_event_types.h

Modified: branches/soc-2012-swiss_cheese/intern/ghost/GHOST_Types.h
===================================================================
--- branches/soc-2012-swiss_cheese/intern/ghost/GHOST_Types.h	2012-06-16 00:47:10 UTC (rev 47982)
+++ branches/soc-2012-swiss_cheese/intern/ghost/GHOST_Types.h	2012-06-16 06:30:13 UTC (rev 47983)
@@ -464,14 +464,8 @@
 	short button;
 } GHOST_TEventNDOFButtonData;
 
-typedef enum {
-	GHOST_kDown = 0,
-	GHOST_kMove,
-	GHOST_kUp
-} GHOST_TTouchState;
-
 typedef struct {
-	GHOST_TTouchState state;
+	GHOST_TProgress state;
 	GHOST_TUns8 index;
 	// Coordinates x and y represent position on the screen represented as 1/100th of a pixel
 	// e.g. x = 150, y = 275 represents a position 1.5 pixels to the right

Modified: branches/soc-2012-swiss_cheese/intern/ghost/intern/GHOST_SystemWin32.cpp
===================================================================
--- branches/soc-2012-swiss_cheese/intern/ghost/intern/GHOST_SystemWin32.cpp	2012-06-16 00:47:10 UTC (rev 47982)
+++ branches/soc-2012-swiss_cheese/intern/ghost/intern/GHOST_SystemWin32.cpp	2012-06-16 06:30:13 UTC (rev 47983)
@@ -899,7 +899,7 @@
 {
 	UINT cInputs = LOWORD(wParam);
 	PTOUCHINPUT pInputs = new TOUCHINPUT[cInputs];
-	GHOST_TTouchState state;
+	GHOST_TProgress state;
 
 	if (NULL != pInputs) {
 #	if defined(_MSC_VER) || defined(FREE_WINDOWS64) // MSVC or MinGW-w64 defines
@@ -909,13 +909,13 @@
 #	endif
 			for (UINT i = 0; i < cInputs; i++) {
 				if (pInputs[i].dwFlags & TOUCHEVENTF_DOWN) {
-						state = GHOST_kDown;
+					state = GHOST_kStarting;
 				}
 				else if (pInputs[i].dwFlags & TOUCHEVENTF_MOVE) {
-						state = GHOST_kMove;
+					state = GHOST_kInProgress;
 				}
 				else if (pInputs[i].dwFlags & TOUCHEVENTF_UP) {
-					state = GHOST_kUp;
+					state = GHOST_kFinishing;
 				}
 
 				// Windows returns first ID as 2, then 3, 4... subtract 1 to begin at 1

Modified: branches/soc-2012-swiss_cheese/intern/ghost/intern/GHOST_TouchManager.cpp
===================================================================
--- branches/soc-2012-swiss_cheese/intern/ghost/intern/GHOST_TouchManager.cpp	2012-06-16 00:47:10 UTC (rev 47982)
+++ branches/soc-2012-swiss_cheese/intern/ghost/intern/GHOST_TouchManager.cpp	2012-06-16 06:30:13 UTC (rev 47983)
@@ -30,7 +30,7 @@
 {
 }
 
-void GHOST_TouchManager::sendTouchEvent(GHOST_TUns8 index, GHOST_TTouchState state, GHOST_TInt32 x,
+void GHOST_TouchManager::sendTouchEvent(GHOST_TUns8 index, GHOST_TProgress state, GHOST_TInt32 x,
                                         GHOST_TInt32 y, GHOST_TUns64 time)
 {
 	GHOST_IWindow *window = m_system.getWindowManager()->getActiveWindow();

Modified: branches/soc-2012-swiss_cheese/intern/ghost/intern/GHOST_TouchManager.h
===================================================================
--- branches/soc-2012-swiss_cheese/intern/ghost/intern/GHOST_TouchManager.h	2012-06-16 00:47:10 UTC (rev 47982)
+++ branches/soc-2012-swiss_cheese/intern/ghost/intern/GHOST_TouchManager.h	2012-06-16 06:30:13 UTC (rev 47983)
@@ -33,7 +33,7 @@
 
 	virtual ~GHOST_TouchManager() {};
 
-	void sendTouchEvent(GHOST_TUns8 index, GHOST_TTouchState state, GHOST_TInt32 x,
+	void sendTouchEvent(GHOST_TUns8 index, GHOST_TProgress state, GHOST_TInt32 x,
 	                                        GHOST_TInt32 y, GHOST_TUns64 time);
 
 protected:

Modified: branches/soc-2012-swiss_cheese/source/blender/windowmanager/WM_types.h
===================================================================
--- branches/soc-2012-swiss_cheese/source/blender/windowmanager/WM_types.h	2012-06-16 00:47:10 UTC (rev 47982)
+++ branches/soc-2012-swiss_cheese/source/blender/windowmanager/WM_types.h	2012-06-16 06:30:13 UTC (rev 47983)
@@ -410,6 +410,14 @@
 	wmProgress progress; // is this the first event, the last, or one of many in between?
 } wmNDOFMotionData;
 
+typedef struct wmTouchData {
+	/* 1:1 copy of GHOST_TEventTouchData */
+	wmProgress state;
+	unsigned char index;
+	int x;
+	int y;
+} wmTouchData;
+
 typedef struct wmTimer {
 	struct wmTimer *next, *prev;
 	

Modified: branches/soc-2012-swiss_cheese/source/blender/windowmanager/intern/wm_event_system.c
===================================================================
--- branches/soc-2012-swiss_cheese/source/blender/windowmanager/intern/wm_event_system.c	2012-06-16 00:47:10 UTC (rev 47982)
+++ branches/soc-2012-swiss_cheese/source/blender/windowmanager/intern/wm_event_system.c	2012-06-16 06:30:13 UTC (rev 47983)
@@ -2900,6 +2900,24 @@
 			break;
 		}
 
+		case GHOST_kEventTouch: {
+			GHOST_TEventTouchData *e = customdata;
+			wmTouchData *data= MEM_mallocN(sizeof(wmTouchData), "customdata Touch");
+
+			data->state = (wmProgress)e->state;
+			data->index = (unsigned char)e->index;
+			data->x = (int)e->x;
+			data->y = (int)e->y;
+
+			event.type = TOUCH;
+			event.custom = EVT_DATA_TOUCH;
+			event.customdata = data;
+			event.customdatafree = 1;
+
+			wm_event_add(win, &event);
+			break;
+		}
+
 		case GHOST_kEventUnknown:
 		case GHOST_kNumEventTypes:
 			break;

Modified: branches/soc-2012-swiss_cheese/source/blender/windowmanager/wm_event_types.h
===================================================================
--- branches/soc-2012-swiss_cheese/source/blender/windowmanager/wm_event_types.h	2012-06-16 00:47:10 UTC (rev 47982)
+++ branches/soc-2012-swiss_cheese/source/blender/windowmanager/wm_event_types.h	2012-06-16 06:30:13 UTC (rev 47983)
@@ -44,6 +44,7 @@
 #define EVT_DATA_TIMER		3
 #define EVT_DATA_LISTBASE	4
 #define EVT_DATA_NDOF_MOTION 5
+#define EVT_DATA_TOUCH		6
 
 /* tablet active, matches GHOST_TTabletMode */
 #define EVT_TABLET_NONE		0
@@ -136,6 +137,7 @@
 	NDOF_LAST
 	};
 
+#define TOUCH 450
 
 /* SYSTEM : 0x01xx */
 #define	INPUTCHANGE		0x0103	/* input connected or disconnected */
@@ -302,8 +304,11 @@
 	/* test whether the event is a NDOF event */
 #define ISNDOF(event)	(event >= NDOF_MOTION && event < NDOF_LAST)
 
+	/* test whether the event is a touch event */
+#define ISTOUCH(event)	(event = TOUCH)
+
 /* test whether event type is acceptable as hotkey, excluding modifiers */
-#define ISHOTKEY(event)	((ISKEYBOARD(event) || ISMOUSE(event) || ISNDOF(event)) && event!=ESCKEY && !(event>=LEFTCTRLKEY && event<=LEFTSHIFTKEY) && !(event>=UNKNOWNKEY && event<=GRLESSKEY))
+#define ISHOTKEY(event)	((ISKEYBOARD(event) || ISMOUSE(event) || ISNDOF(event) || ISTOUCH(event)) && event!=ESCKEY && !(event>=LEFTCTRLKEY && event<=LEFTSHIFTKEY) && !(event>=UNKNOWNKEY && event<=GRLESSKEY))
 
 /* **************** BLENDER GESTURE EVENTS (0x5000) **************** */
 




More information about the Bf-blender-cvs mailing list