Revision: 48910
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=48910
Author:   nicholas_rishel
Date:     2012-07-14 05:28:17 +0000 (Sat, 14 Jul 2012)
Log Message:
-----------
Fleshed out register areaa/regions/data functions, also added appropriate 
vectors for each to the TOUCH_Manager header.

Fleshed out the checkRegistered area/region/data functions.

Fleshed out the addTouchEvent function

Modified Paths:
--------------
    branches/soc-2012-swiss_cheese/intern/touch/TOUCH_Manager.h
    branches/soc-2012-swiss_cheese/intern/touch/TOUCH_Types.h
    branches/soc-2012-swiss_cheese/intern/touch/intern/TOUCH_Manager.cpp

Modified: branches/soc-2012-swiss_cheese/intern/touch/TOUCH_Manager.h
===================================================================
--- branches/soc-2012-swiss_cheese/intern/touch/TOUCH_Manager.h 2012-07-14 
04:43:32 UTC (rev 48909)
+++ branches/soc-2012-swiss_cheese/intern/touch/TOUCH_Manager.h 2012-07-14 
05:28:17 UTC (rev 48910)
@@ -33,6 +33,7 @@
 #define __TOUCH_TOUCH_H__
 
 #include "TOUCH_Types.h"
+#include <vector>
 
 class TOUCH_Manager
 {
@@ -51,13 +52,21 @@
        void TOUCH_RegisterRegion(STR_String context);
        void TOUCH_RegisterData(STR_String context);
 
-       void TOUCH_AddTouchEvent(TOUCH_event_info event);
+       void TOUCH_AddTouchEvent(std::vector<TOUCH_event_info> event);
 
 private:
        char checkRegisteredArea(STR_String area);
        char checkRegisteredRegion(STR_String region);
        char checkRegisteredData(STR_String data);
 
+       STR_String input_string;
+       //std::vector<TOUCH_position> touch_position_begin; XXX
+       //std::vector<TOUCH_position> touch_position_last; XXX
+
+       std::vector<TOUCH_area> registered_area;
+       std::vector<TOUCH_region> registered_region;
+       std::vector<TOUCH_data> registered_data;
+
 };
 
 #endif /* __TOUCH_TOUCH_H__ */

Modified: branches/soc-2012-swiss_cheese/intern/touch/TOUCH_Types.h
===================================================================
--- branches/soc-2012-swiss_cheese/intern/touch/TOUCH_Types.h   2012-07-14 
04:43:32 UTC (rev 48909)
+++ branches/soc-2012-swiss_cheese/intern/touch/TOUCH_Types.h   2012-07-14 
05:28:17 UTC (rev 48910)
@@ -41,7 +41,7 @@
 } TOUCH_state;
 
 typedef struct TOUCH_registered_context {
-       TOUCH_registered_context *prev, *next;
+       //TOUCH_registered_context *prev, *next;
        STR_String context;
        char encoding;
 } TOUCH_registered_context;
@@ -56,11 +56,14 @@
        TOUCH_data data;
 } TOUCH_context;
 
+typedef struct TOUCH_position {
+       int position_x, position_y;
+} TOUCH_position;
+
 typedef struct TOUCH_event_info {
-       TOUCH_event_info *prev, *next;
-
-       int position_x, position_y;
-       char id;
+       //TOUCH_event_info *prev, *next;
+       TOUCH_position position;
+       char index;
        TOUCH_state state;
 
        STR_String area, region, data;

Modified: branches/soc-2012-swiss_cheese/intern/touch/intern/TOUCH_Manager.cpp
===================================================================
--- branches/soc-2012-swiss_cheese/intern/touch/intern/TOUCH_Manager.cpp        
2012-07-14 04:43:32 UTC (rev 48909)
+++ branches/soc-2012-swiss_cheese/intern/touch/intern/TOUCH_Manager.cpp        
2012-07-14 05:28:17 UTC (rev 48910)
@@ -43,35 +43,93 @@
 
 void TOUCH_Manager::TOUCH_RegisterArea(STR_String context)
 {
-       //TODO
+       char encoding = checkRegisteredArea(context);
+       if(encoding) {
+               TOUCH_area area = {context, encoding};
+               registered_data.push_back(area);
+       }
 }
 
 void TOUCH_Manager::TOUCH_RegisterRegion(STR_String context)
 {
-       //TODO
+       char encoding = checkRegisteredRegion(context);
+       if(encoding) {
+               TOUCH_region region = {context, encoding};
+               registered_data.push_back(region);
+       }
 }
 
 void TOUCH_Manager::TOUCH_RegisterData(STR_String context)
 {
-       //TODO
+       char encoding = checkRegisteredData(context);
+       if(encoding) {
+               TOUCH_data data = {context, encoding};
+               registered_data.push_back(data);
+       }
 }
 
-void TOUCH_Manager::TOUCH_AddTouchEvent(TOUCH_event_info event)
+void TOUCH_Manager::TOUCH_AddTouchEvent(std::vector<TOUCH_event_info> event)
 {
-       //TODO
+       for(int i = 0; i < event.size(); i++){
+               /* if index 1 is touching down for the first time, clear the 
input string */
+               if(event[i].state == TOUCH_DOWN) {
+                       if(event[i].index == 1) {
+                               input_string.Clear();
+                       }
+                       //touch_position_begin[i] = event[i].position; XXX
+               }
+
+               //touch_position_last[i] = event[i].position; XXX
+
+               switch(event[i].state){
+                       case TOUCH_DOWN:
+                               input_string += 'd';
+                               break;
+                       case TOUCH_MOVE:
+                               input_string += 'm';
+                               break;
+                       case TOUCH_UP:
+                               input_string += 'u';
+                               break;
+                       default:
+                               input_string += '\0'; // XXX avoid null
+                               break;
+               }
+
+               input_string += event[i].index;
+
+               input_string += checkRegisteredArea(event[i].area);
+               input_string += checkRegisteredRegion(event[i].region);
+               input_string += checkRegisteredData(event[i].data);
+       }
 }
 
-char checkRegisteredArea(STR_String area)
+char TOUCH_Manager::checkRegisteredArea(STR_String area)
 {
-       //TODO
+       for(int i = 0; i < registered_area.size(); i++) {
+               if(area == registered_area[i].context) {
+                       return registered_area[i].encoding;
+               }
+       }
+       return '\0'; // XXX avoid null
 }
 
-char checkRegisteredRegion(STR_String region)
+char TOUCH_Manager::checkRegisteredRegion(STR_String region)
 {
-       //TODO
+       for(int i = 0; i < registered_region.size(); i++) {
+               if(region == registered_region[i].context) {
+                       return registered_region[i].encoding;
+               }
+       }
+       return '\0'; // XXX avoid null
 }
 
-char checkRegisteredData(STR_String data)
+char TOUCH_Manager::checkRegisteredData(STR_String data)
 {
-       //TODO
+       for(int i = 0; i < registered_data.size(); i++) {
+               if(data == registered_data[i].context) {
+                       return registered_data[i].encoding;
+               }
+       }
+       return '\0'; // XXX avoid null
 }

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to