Revision: 49324 http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=49324 Author: nicholas_rishel Date: 2012-07-28 08:51:17 +0000 (Sat, 28 Jul 2012) Log Message: ----------- The API now builds and is included without causing build errors. :D
Information is not yet being sent to the touch manager. Modified Paths: -------------- branches/soc-2012-swiss_cheese/intern/touch/TOUCH_API.h 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_API.cpp branches/soc-2012-swiss_cheese/intern/touch/intern/TOUCH_Manager.cpp branches/soc-2012-swiss_cheese/source/blender/windowmanager/CMakeLists.txt branches/soc-2012-swiss_cheese/source/blender/windowmanager/intern/wm_event_system.c Modified: branches/soc-2012-swiss_cheese/intern/touch/TOUCH_API.h =================================================================== --- branches/soc-2012-swiss_cheese/intern/touch/TOUCH_API.h 2012-07-28 06:06:37 UTC (rev 49323) +++ branches/soc-2012-swiss_cheese/intern/touch/TOUCH_API.h 2012-07-28 08:51:17 UTC (rev 49324) @@ -32,20 +32,23 @@ #ifndef __TOUCH_API_H__ #define __TOUCH_API_H__ -#include "TOUCH_Manager.h" +#include "TOUCH_Types.h" +TOUCH_DECLARE_HANDLE(TOUCH_Handle); + #ifdef __cplusplus extern "C" { #endif -extern void TOUCH_InitManager(); +extern TOUCH_Handle TOUCH_InitManager(); +extern void TOUCH_DestoryManager(TOUCH_Handle * handle); +#if 0 +extern void TOUCH_RegisterContext(TOUCH_Handle* handle, const char * context); +extern void TOUCH_RegisterRegion(TOUCH_Handle* handle, const char * context); +extern void TOUCH_RegisterData(TOUCH_Handle* handle, const char * context); +#endif +extern void TOUCH_AddTouchEvent(TOUCH_Handle* handle, void * event); -extern void TOUCH_RegisterArea(STR_String context); -extern void TOUCH_RegisterRegion(STR_String context); -extern void TOUCH_RegisterData(STR_String context); - -extern void TOUCH_AddTouchEvent(TOUCH_event_info event); - #ifdef __cplusplus } #endif Modified: branches/soc-2012-swiss_cheese/intern/touch/TOUCH_Manager.h =================================================================== --- branches/soc-2012-swiss_cheese/intern/touch/TOUCH_Manager.h 2012-07-28 06:06:37 UTC (rev 49323) +++ branches/soc-2012-swiss_cheese/intern/touch/TOUCH_Manager.h 2012-07-28 08:51:17 UTC (rev 49324) @@ -34,39 +34,53 @@ #include "TOUCH_Types.h" #include <vector> +#include "STR_String.h" +#ifdef INPUT_TOUCH_DEBUG +#include <stdio.h> +#endif + +struct TOUCH_Context +{ + TOUCH_Context(); + STR_String external_id; + char internal_encoding; +}; + class TOUCH_Manager { public: /** - * Constructor. + * Constructor */ TOUCH_Manager(); /** - * Destructor. + * Destructor */ ~TOUCH_Manager(); - void TOUCH_RegisterArea(STR_String context); - void TOUCH_RegisterRegion(STR_String context); - void TOUCH_RegisterData(STR_String context); + void RegisterContext(std::vector<TOUCH_Context> * context_type, const char * context_id); - void TOUCH_AddTouchEvent(std::vector<TOUCH_event_info> event); + void AddTouchEvent(std::vector<TOUCH_event_info> event); + static void CreateManager(); + static void DestroyManager(); + static TOUCH_Manager * GetManager(); + private: - char checkRegisteredArea(STR_String area); - char checkRegisteredRegion(STR_String region); - char checkRegisteredData(STR_String data); + char checkRegisteredContext(std::vector<TOUCH_Context> * context_type, const char * context_id); 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; + std::vector<TOUCH_Context> registered_area; //pass with ®istered_area + std::vector<TOUCH_Context> registered_region; + std::vector<TOUCH_Context> registered_data; + static TOUCH_Manager * manager; + }; #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-28 06:06:37 UTC (rev 49323) +++ branches/soc-2012-swiss_cheese/intern/touch/TOUCH_Types.h 2012-07-28 08:51:17 UTC (rev 49324) @@ -32,30 +32,22 @@ #ifndef __TOUCH_TYPES_H__ #define __TOUCH_TYPES_H__ -#include "STR_String.h" +#ifdef WITH_CXX_GUARDEDALLOC +#include "MEM_guardedalloc.h" +#endif +#if defined(WITH_CXX_GUARDEDALLOC) && defined(__cplusplus) +# define TOUCH_DECLARE_HANDLE(name) typedef struct name##__ { int unused; MEM_CXX_CLASS_ALLOC_FUNCS(#name) } *name +#else +# define TOUCH_DECLARE_HANDLE(name) typedef struct name##__ { int unused; } *name +#endif + typedef enum TOUCH_state { TOUCH_DOWN = 0, TOUCH_MOVE = 1, TOUCH_UP = 2 } TOUCH_state; -typedef struct TOUCH_registered_context { - //TOUCH_registered_context *prev, *next; - STR_String context; - char encoding; -} TOUCH_registered_context; - -typedef struct TOUCH_registered_context TOUCH_area; -typedef struct TOUCH_registered_context TOUCH_region; -typedef struct TOUCH_registered_context TOUCH_data; - -typedef struct TOUCH_context_full { - TOUCH_area area; - TOUCH_region region; - TOUCH_data data; -} TOUCH_context; - typedef struct TOUCH_position { int position_x, position_y; } TOUCH_position; @@ -66,7 +58,7 @@ char index; TOUCH_state state; - STR_String area, region, data; + char * area, * region, * data; } TOUCH_event_info; #endif /* TOUCH_TYPES_H */ Modified: branches/soc-2012-swiss_cheese/intern/touch/intern/TOUCH_API.cpp =================================================================== --- branches/soc-2012-swiss_cheese/intern/touch/intern/TOUCH_API.cpp 2012-07-28 06:06:37 UTC (rev 49323) +++ branches/soc-2012-swiss_cheese/intern/touch/intern/TOUCH_API.cpp 2012-07-28 08:51:17 UTC (rev 49324) @@ -30,28 +30,38 @@ */ #include "TOUCH_API.h" +#include "TOUCH_Manager.h" -extern void TOUCH_InitManager() +extern TOUCH_Handle TOUCH_InitManager() { - //TODO + TOUCH_Manager::CreateManager(); + TOUCH_Manager * manager = TOUCH_Manager::GetManager(); + + return (TOUCH_Handle)manager; } -extern void TOUCH_RegisterArea(STR_String context) +extern void TOUCH_DestroyManager(TOUCH_Handle* handle) { + delete handle; +} + +extern void TOUCH_RegisterArea(TOUCH_Handle* handle, const char * context) { //TODO } -extern void TOUCH_RegisterRegion(STR_String context) +extern void TOUCH_RegisterRegion(TOUCH_Handle* handle, const char * context) { //TODO } -extern void TOUCH_RegisterData(STR_String context) +extern void TOUCH_RegisterData(TOUCH_Handle* handle, const char * context) { //TODO } -extern void TOUCH_AddTouchEvent(TOUCH_event_info event) +extern void TOUCH_AddTouchEvent(TOUCH_Handle* handle, void * event) { - //TODO + std::vector<TOUCH_event_info> * event_vector = (std::vector<TOUCH_event_info> *) event; + TOUCH_Manager * manager = (TOUCH_Manager *) handle; + manager->AddTouchEvent(* event_vector); } 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-28 06:06:37 UTC (rev 49323) +++ branches/soc-2012-swiss_cheese/intern/touch/intern/TOUCH_Manager.cpp 2012-07-28 08:51:17 UTC (rev 49324) @@ -31,45 +31,36 @@ #include "TOUCH_Manager.h" +#define TOUCH_DOWN_ENCODING 'd' +#define TOUCH_MOVE_ENCODING 'm' +#define TOUCH_UP_ENCODING 'u' + +TOUCH_Context::TOUCH_Context(){} + TOUCH_Manager::TOUCH_Manager() { - //TODO + //TODO? } TOUCH_Manager::~TOUCH_Manager() { - //TODO + //TODO? } -void TOUCH_Manager::TOUCH_RegisterArea(STR_String context) +void TOUCH_Manager::RegisterContext(std::vector<TOUCH_Context> * context_type, const char * context_id) { - char encoding = checkRegisteredArea(context); - if(encoding) { - TOUCH_area area = {context, encoding}; - registered_data.push_back(area); + char encoding = checkRegisteredContext(context_type, context_id); + if(!encoding) { + encoding = 'a'; //XXX PLACEHOLDER + TOUCH_Context * new_context = new TOUCH_Context; + new_context->external_id = STR_String(context_id); + new_context->internal_encoding = encoding; + context_type->push_back(*new_context); } } -void TOUCH_Manager::TOUCH_RegisterRegion(STR_String context) +void TOUCH_Manager::AddTouchEvent(std::vector<TOUCH_event_info> event) // XXX Vectors will not work with c api { - char encoding = checkRegisteredRegion(context); - if(encoding) { - TOUCH_region region = {context, encoding}; - registered_data.push_back(region); - } -} - -void TOUCH_Manager::TOUCH_RegisterData(STR_String context) -{ - char encoding = checkRegisteredData(context); - if(encoding) { - TOUCH_data data = {context, encoding}; - registered_data.push_back(data); - } -} - -void TOUCH_Manager::TOUCH_AddTouchEvent(std::vector<TOUCH_event_info> event) -{ 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) { @@ -83,53 +74,51 @@ switch(event[i].state){ case TOUCH_DOWN: - input_string += 'd'; + input_string += TOUCH_DOWN_ENCODING; break; case TOUCH_MOVE: - input_string += 'm'; + input_string += TOUCH_MOVE_ENCODING; break; case TOUCH_UP: - input_string += 'u'; + input_string += TOUCH_UP_ENCODING; break; default: - input_string += '\0'; // XXX avoid null break; } input_string += event[i].index; - - input_string += checkRegisteredArea(event[i].area); +#if 0 + input_string += checkRegisteredContext(®istered_area, event[i].area); input_string += checkRegisteredRegion(event[i].region); input_string += checkRegisteredData(event[i].data); +#endif } + +#ifdef INPUT_TOUCH_DEBUG + printf(input_string, std::endl); +#endif + } -char TOUCH_Manager::checkRegisteredArea(STR_String area) +char TOUCH_Manager::checkRegisteredContext(std::vector<TOUCH_Context> * context_type, const char * context_id) { - for(int i = 0; i < registered_area.size(); i++) { - if(area == registered_area[i].context) { - return registered_area[i].encoding; + for(int i = 0; i < context_type->size(); i++) { + if(context_id == context_type->at(i).external_id) { + return context_type->at(i).internal_encoding; } } - return '\0'; // XXX avoid null + return '\0'; // XXX avoid null? } -char TOUCH_Manager::checkRegisteredRegion(STR_String region) -{ - 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 +void TOUCH_Manager::CreateManager() { + manager = new TOUCH_Manager(); } -char TOUCH_Manager::checkRegisteredData(STR_String data) -{ - 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 +void TOUCH_Manager::DestroyManager() { + delete manager; + manager = 0; } + +TOUCH_Manager * TOUCH_Manager::GetManager() { + return manager; +} Modified: branches/soc-2012-swiss_cheese/source/blender/windowmanager/CMakeLists.txt @@ Diff output truncated at 10240 characters. @@ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs