diff options
author | Nathan Letwory <nathan@letworyinteractive.com> | 2011-03-25 14:07:57 +0300 |
---|---|---|
committer | Nathan Letwory <nathan@letworyinteractive.com> | 2011-03-25 14:07:57 +0300 |
commit | 32abf5eca87795f4bf6fca1357a4e66a4403b17c (patch) | |
tree | 686fe4df5636e259d8db87885f48ba4a7ed5f6ac /source/blender/collada/ExtraHandler.cpp | |
parent | 6d0859768883c96f303fa5be5c44e81f60d262a4 (diff) |
Add ExtraTags class for handling tags inside an extra block.
Diffstat (limited to 'source/blender/collada/ExtraHandler.cpp')
-rw-r--r-- | source/blender/collada/ExtraHandler.cpp | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/source/blender/collada/ExtraHandler.cpp b/source/blender/collada/ExtraHandler.cpp index 3ab34e70c8c..9dc5f4e4ee6 100644 --- a/source/blender/collada/ExtraHandler.cpp +++ b/source/blender/collada/ExtraHandler.cpp @@ -31,7 +31,7 @@ #include "ExtraHandler.h" -ExtraHandler::ExtraHandler(DocumentImporter *dimp) +ExtraHandler::ExtraHandler(DocumentImporter *dimp) : currentExtraTags(0) { this->dimp = dimp; } @@ -40,22 +40,27 @@ ExtraHandler::~ExtraHandler() {} bool ExtraHandler::elementBegin( const char* elementName, const char** attributes) { - printf("begin: %s\n", elementName); + // \todo attribute handling for profile tags + currentElement = std::string(elementName); return true; } bool ExtraHandler::elementEnd(const char* elementName ) { - printf("end: %s\n", elementName); currentUid = COLLADAFW::UniqueId(); + currentExtraTags = 0; + currentElement.clear(); return true; } bool ExtraHandler::textData(const char* text, size_t textLength) { - char buf[1024] = {0}; - BLI_snprintf(buf, textLength, "%s", text); - printf("data: %s\n", buf); + char buf[1024]; + + if(currentElement.length() == 0) return false; + + BLI_snprintf(buf, textLength+1, "%s", text); + currentExtraTags->addTag(std::string(currentElement), std::string(buf)); return true; } @@ -64,10 +69,16 @@ bool ExtraHandler::parseElement ( 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()); + //printf("In parseElement for supported profile %s for id %s\n", profileName, uniqueId.toAscii().c_str()); currentUid = uniqueId; + ExtraTags *et = dimp->getExtraTags(uniqueId); + if(!et) { + et = new ExtraTags(std::string(profileName)); + dimp->addExtraTags(uniqueId, et); + } + currentExtraTags = et; return true; } - printf("In parseElement for unsupported profile %s for id %s\n", profileName, uniqueId.toAscii().c_str()); + //printf("In parseElement for unsupported profile %s for id %s\n", profileName, uniqueId.toAscii().c_str()); return false; } |