[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [35727] trunk/blender/source/blender/ collada: COLLADA: supporting barebone class for <extra> support (incomplete ).

Nathan Letwory nathan at letworyinteractive.com
Wed Mar 23 15:25:35 CET 2011


Revision: 35727
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=35727
Author:   jesterking
Date:     2011-03-23 14:25:35 +0000 (Wed, 23 Mar 2011)
Log Message:
-----------
COLLADA: supporting barebone class for <extra> support (incomplete).

Modified Paths:
--------------
    trunk/blender/source/blender/collada/CMakeLists.txt
    trunk/blender/source/blender/collada/DocumentImporter.cpp
    trunk/blender/source/blender/collada/SConscript

Added Paths:
-----------
    trunk/blender/source/blender/collada/ExtraHandler.cpp
    trunk/blender/source/blender/collada/ExtraHandler.h

Modified: trunk/blender/source/blender/collada/CMakeLists.txt
===================================================================
--- trunk/blender/source/blender/collada/CMakeLists.txt	2011-03-23 14:24:13 UTC (rev 35726)
+++ trunk/blender/source/blender/collada/CMakeLists.txt	2011-03-23 14:25:35 UTC (rev 35727)
@@ -51,6 +51,7 @@
 		${OPENCOLLADA_INC}/COLLADABaseUtils/include
 		${OPENCOLLADA_INC}/COLLADAFramework/include
 		${OPENCOLLADA_INC}/COLLADASaxFrameworkLoader/include 
+		${OPENCOLLADA_INC}/GeneratedSaxParser/include 
 	)
 endif()
 
@@ -62,6 +63,7 @@
 	DocumentExporter.cpp
 	DocumentImporter.cpp
 	EffectExporter.cpp
+	ExtraHandler.cpp
 	GeometryExporter.cpp
 	ImageExporter.cpp
 	InstanceWriter.cpp
@@ -82,6 +84,7 @@
 	DocumentExporter.h
 	DocumentImporter.h
 	EffectExporter.h
+	ExtraHandler.h
 	GeometryExporter.h
 	ImageExporter.h
 	InstanceWriter.h

Modified: trunk/blender/source/blender/collada/DocumentImporter.cpp
===================================================================
--- trunk/blender/source/blender/collada/DocumentImporter.cpp	2011-03-23 14:24:13 UTC (rev 35726)
+++ trunk/blender/source/blender/collada/DocumentImporter.cpp	2011-03-23 14:25:35 UTC (rev 35727)
@@ -49,6 +49,7 @@
 #include "COLLADAFWLight.h"
 
 #include "COLLADASaxFWLLoader.h"
+#include "COLLADASaxFWLIExtraDataCallbackHandler.h"
 
 #include "BLI_listbase.h"
 #include "BLI_math.h"
@@ -74,10 +75,11 @@
 
 #include "MEM_guardedalloc.h"
 
+#include "ExtraHandler.h"
 #include "DocumentImporter.h"
 #include "TransformReader.h"
+
 #include "collada_internal.h"
-
 #include "collada_utils.h"
 
 
@@ -143,6 +145,10 @@
 		/** TODO Add error handler (implement COLLADASaxFWL::IErrorHandler */
 		COLLADASaxFWL::Loader loader;
 		COLLADAFW::Root root(&loader, this);
+		ExtraHandler *ehandler = new ExtraHandler();
+		
+		loader.registerExtraDataCallbackHandler(ehandler);
+		
 
 		if (!root.loadDocument(mFilename))
 			return false;
@@ -157,6 +163,8 @@
 		if (!root2.loadDocument(mFilename))
 			return false;
 		
+		
+		delete ehandler;
 
 		return true;
 	}

Added: trunk/blender/source/blender/collada/ExtraHandler.cpp
===================================================================
--- trunk/blender/source/blender/collada/ExtraHandler.cpp	                        (rev 0)
+++ trunk/blender/source/blender/collada/ExtraHandler.cpp	2011-03-23 14:25:35 UTC (rev 35727)
@@ -0,0 +1,67 @@
+/*
+ * $Id$
+ *
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Contributor(s): Nathan Letwory.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+/** \file blender/collada/ExtraHandler.cpp
+ *  \ingroup collada
+ */
+
+#include "BLI_string.h"
+
+#include "ExtraHandler.h"
+
+ExtraHandler::ExtraHandler(){}
+
+ExtraHandler::~ExtraHandler(){}
+
+bool ExtraHandler::elementBegin( const char* elementName, const char** attributes)
+{
+	printf("begin: %s\n", elementName);
+	return true;
+}
+
+bool ExtraHandler::elementEnd(const char* elementName )
+{
+	printf("end: %s\n", elementName);
+	return true;
+}
+
+bool ExtraHandler::textData(const char* text, size_t textLength)
+{
+	char buf[1024] = {0};
+	_snprintf(buf, textLength, "%s", text);
+	printf("data: %s\n", buf);
+	return true;
+}
+
+bool ExtraHandler::parseElement ( 
+	const char* profileName, 
+	const unsigned long& elementHash, 
+	const COLLADAFW::UniqueId& uniqueId ) {
+		if(BLI_strcaseeq(profileName, "blender")) {
+			printf("In parseElement for supported profile %s for id %s\n", profileName, uniqueId.toAscii().c_str());
+			return true;
+		}
+		printf("In parseElement for unsupported profile %s for id %s\n", profileName, uniqueId.toAscii().c_str());
+		return false;
+}


Property changes on: trunk/blender/source/blender/collada/ExtraHandler.cpp
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Added: trunk/blender/source/blender/collada/ExtraHandler.h
===================================================================
--- trunk/blender/source/blender/collada/ExtraHandler.h	                        (rev 0)
+++ trunk/blender/source/blender/collada/ExtraHandler.h	2011-03-23 14:25:35 UTC (rev 35727)
@@ -0,0 +1,69 @@
+/*
+ * $Id$
+ *
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Contributor(s): Nathan Letwory.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+/** \file blender/collada/ExtraHandler.h
+ *  \ingroup collada
+ */
+
+#include <string>
+#include <map>
+#include <vector>
+#include <algorithm> // sort()
+
+#include "COLLADASaxFWLIExtraDataCallbackHandler.h"
+
+
+/** \brief Handler class for <extra> data, through which different
+ * profiles can be handled
+ */
+class ExtraHandler : public COLLADASaxFWL::IExtraDataCallbackHandler
+{
+public:
+	/** Constructor. */
+	ExtraHandler();
+
+	/** Destructor. */
+	virtual ~ExtraHandler();
+
+	/** Handle the beginning of an element. */
+	bool elementBegin( const char* elementName, const char** attributes);
+	
+	/** Handle the end of an element. */
+	bool elementEnd(const char* elementName );
+	
+	/** Receive the data in text format. */
+	bool textData(const char* text, size_t textLength);
+
+	/** Method to ask, if the current callback handler want to read the data of the given extra element. */
+	bool parseElement ( 
+		const char* profileName, 
+		const unsigned long& elementHash, 
+		const COLLADAFW::UniqueId& uniqueId );
+private:
+	/** Disable default copy constructor. */
+	ExtraHandler( const ExtraHandler& pre );
+	/** Disable default assignment operator. */
+	const ExtraHandler& operator= ( const ExtraHandler& pre );
+};
+


Property changes on: trunk/blender/source/blender/collada/ExtraHandler.h
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Modified: trunk/blender/source/blender/collada/SConscript
===================================================================
--- trunk/blender/source/blender/collada/SConscript	2011-03-23 14:24:13 UTC (rev 35726)
+++ trunk/blender/source/blender/collada/SConscript	2011-03-23 14:25:35 UTC (rev 35727)
@@ -35,7 +35,7 @@
 if  env['OURPLATFORM']=='darwin':
     incs = '../blenlib ../blenkernel ../windowmanager ../blenloader ../makesdna ../makesrna ../editors/include ../../../intern/guardedalloc [OPENCOLLADA]/COLLADAStreamWriter [OPENCOLLADA]/COLLADABaseUtils [OPENCOLLADA]/COLLADAFramework [OPENCOLLADA]/COLLADASaxFrameworkLoader '.replace('[OPENCOLLADA]', env['BF_OPENCOLLADA_INC'])
 else:
-    incs = '../blenlib ../blenkernel ../windowmanager ../makesdna ../blenloader ../makesrna ../editors/include ../../../intern/guardedalloc [OPENCOLLADA]/COLLADAStreamWriter/include [OPENCOLLADA]/COLLADABaseUtils/include [OPENCOLLADA]/COLLADAFramework/include [OPENCOLLADA]/COLLADASaxFrameworkLoader/include '.replace('[OPENCOLLADA]', env['BF_OPENCOLLADA_INC'])
+    incs = '../blenlib ../blenkernel ../windowmanager ../makesdna ../blenloader ../makesrna ../editors/include ../../../intern/guardedalloc [OPENCOLLADA]/COLLADAStreamWriter/include [OPENCOLLADA]/COLLADABaseUtils/include [OPENCOLLADA]/COLLADAFramework/include [OPENCOLLADA]/COLLADASaxFrameworkLoader/include [OPENCOLLADA]/GeneratedSaxParser/include '.replace('[OPENCOLLADA]', env['BF_OPENCOLLADA_INC'])
 
 if env['BF_BUILDINFO']:
     defs.append('NAN_BUILDINFO')




More information about the Bf-blender-cvs mailing list