[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 &registered_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(&registered_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