[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