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) **************** */ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs