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

Reply via email to