[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [49324] branches/soc-2012-swiss_cheese: The API now builds and is included without causing build errors.
Nicholas Rishel
rishel.nick at gmail.com
Sat Jul 28 10:51:17 CEST 2012
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. @@
More information about the Bf-blender-cvs
mailing list