forked from bartvdbraak/blender
COLLADA: supporting barebone class for <extra> support (incomplete).
This commit is contained in:
parent
392829c6ea
commit
3c45a2d298
@ -51,6 +51,7 @@ else()
|
||||
${OPENCOLLADA_INC}/COLLADABaseUtils/include
|
||||
${OPENCOLLADA_INC}/COLLADAFramework/include
|
||||
${OPENCOLLADA_INC}/COLLADASaxFrameworkLoader/include
|
||||
${OPENCOLLADA_INC}/GeneratedSaxParser/include
|
||||
)
|
||||
endif()
|
||||
|
||||
@ -62,6 +63,7 @@ set(SRC
|
||||
DocumentExporter.cpp
|
||||
DocumentImporter.cpp
|
||||
EffectExporter.cpp
|
||||
ExtraHandler.cpp
|
||||
GeometryExporter.cpp
|
||||
ImageExporter.cpp
|
||||
InstanceWriter.cpp
|
||||
@ -82,6 +84,7 @@ set(SRC
|
||||
DocumentExporter.h
|
||||
DocumentImporter.h
|
||||
EffectExporter.h
|
||||
ExtraHandler.h
|
||||
GeometryExporter.h
|
||||
ImageExporter.h
|
||||
InstanceWriter.h
|
||||
|
@ -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_internal.h"
|
||||
#include "collada_utils.h"
|
||||
|
||||
|
||||
@ -143,6 +145,10 @@ private:
|
||||
/** 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 @@ private:
|
||||
if (!root2.loadDocument(mFilename))
|
||||
return false;
|
||||
|
||||
|
||||
delete ehandler;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
67
source/blender/collada/ExtraHandler.cpp
Normal file
67
source/blender/collada/ExtraHandler.cpp
Normal file
@ -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;
|
||||
}
|
69
source/blender/collada/ExtraHandler.h
Normal file
69
source/blender/collada/ExtraHandler.h
Normal file
@ -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 );
|
||||
};
|
||||
|
@ -35,7 +35,7 @@ defs = []
|
||||
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')
|
||||
|
Loading…
Reference in New Issue
Block a user