vrshoot
diff libs/assimp/FBXDocumentUtil.cpp @ 0:b2f14e535253
initial commit
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Sat, 01 Feb 2014 19:58:19 +0200 |
parents | |
children |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/libs/assimp/FBXDocumentUtil.cpp Sat Feb 01 19:58:19 2014 +0200 1.3 @@ -0,0 +1,133 @@ 1.4 +/* 1.5 +Open Asset Import Library (assimp) 1.6 +---------------------------------------------------------------------- 1.7 + 1.8 +Copyright (c) 2006-2012, assimp team 1.9 +All rights reserved. 1.10 + 1.11 +Redistribution and use of this software in source and binary forms, 1.12 +with or without modification, are permitted provided that the 1.13 +following conditions are met: 1.14 + 1.15 +* Redistributions of source code must retain the above 1.16 + copyright notice, this list of conditions and the 1.17 + following disclaimer. 1.18 + 1.19 +* Redistributions in binary form must reproduce the above 1.20 + copyright notice, this list of conditions and the 1.21 + following disclaimer in the documentation and/or other 1.22 + materials provided with the distribution. 1.23 + 1.24 +* Neither the name of the assimp team, nor the names of its 1.25 + contributors may be used to endorse or promote products 1.26 + derived from this software without specific prior 1.27 + written permission of the assimp team. 1.28 + 1.29 +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1.30 +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1.31 +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 1.32 +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 1.33 +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 1.34 +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 1.35 +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 1.36 +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 1.37 +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 1.38 +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 1.39 +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 1.40 + 1.41 +---------------------------------------------------------------------- 1.42 +*/ 1.43 + 1.44 +/** @file FBXDocumentUtil.cpp 1.45 + * @brief Implementation of the FBX DOM utility functions declared in FBXDocumentUtil.h 1.46 + */ 1.47 +#include "AssimpPCH.h" 1.48 + 1.49 +#ifndef ASSIMP_BUILD_NO_FBX_IMPORTER 1.50 + 1.51 +#include "FBXParser.h" 1.52 +#include "FBXDocument.h" 1.53 +#include "FBXUtil.h" 1.54 +#include "FBXDocumentUtil.h" 1.55 +#include "FBXProperties.h" 1.56 + 1.57 +namespace Assimp { 1.58 +namespace FBX { 1.59 +namespace Util { 1.60 + 1.61 +// ------------------------------------------------------------------------------------------------ 1.62 +// signal DOM construction error, this is always unrecoverable. Throws DeadlyImportError. 1.63 +void DOMError(const std::string& message, const Token& token) 1.64 +{ 1.65 + throw DeadlyImportError(Util::AddTokenText("FBX-DOM",message,&token)); 1.66 +} 1.67 + 1.68 +// ------------------------------------------------------------------------------------------------ 1.69 +void DOMError(const std::string& message, const Element* element /*= NULL*/) 1.70 +{ 1.71 + if(element) { 1.72 + DOMError(message,element->KeyToken()); 1.73 + } 1.74 + throw DeadlyImportError("FBX-DOM " + message); 1.75 +} 1.76 + 1.77 + 1.78 +// ------------------------------------------------------------------------------------------------ 1.79 +// print warning, do return 1.80 +void DOMWarning(const std::string& message, const Token& token) 1.81 +{ 1.82 + if(DefaultLogger::get()) { 1.83 + DefaultLogger::get()->warn(Util::AddTokenText("FBX-DOM",message,&token)); 1.84 + } 1.85 +} 1.86 + 1.87 +// ------------------------------------------------------------------------------------------------ 1.88 +void DOMWarning(const std::string& message, const Element* element /*= NULL*/) 1.89 +{ 1.90 + if(element) { 1.91 + DOMWarning(message,element->KeyToken()); 1.92 + return; 1.93 + } 1.94 + if(DefaultLogger::get()) { 1.95 + DefaultLogger::get()->warn("FBX-DOM: " + message); 1.96 + } 1.97 +} 1.98 + 1.99 + 1.100 +// ------------------------------------------------------------------------------------------------ 1.101 +// fetch a property table and the corresponding property template 1.102 +boost::shared_ptr<const PropertyTable> GetPropertyTable(const Document& doc, 1.103 + const std::string& templateName, 1.104 + const Element &element, 1.105 + const Scope& sc, 1.106 + bool no_warn /*= false*/) 1.107 +{ 1.108 + const Element* const Properties70 = sc["Properties70"]; 1.109 + boost::shared_ptr<const PropertyTable> templateProps = boost::shared_ptr<const PropertyTable>( 1.110 + static_cast<const PropertyTable*>(NULL)); 1.111 + 1.112 + if(templateName.length()) { 1.113 + PropertyTemplateMap::const_iterator it = doc.Templates().find(templateName); 1.114 + if(it != doc.Templates().end()) { 1.115 + templateProps = (*it).second; 1.116 + } 1.117 + } 1.118 + 1.119 + if(!Properties70) { 1.120 + if(!no_warn) { 1.121 + DOMWarning("property table (Properties70) not found",&element); 1.122 + } 1.123 + if(templateProps) { 1.124 + return templateProps; 1.125 + } 1.126 + else { 1.127 + return boost::make_shared<const PropertyTable>(); 1.128 + } 1.129 + } 1.130 + return boost::make_shared<const PropertyTable>(*Properties70,templateProps); 1.131 +} 1.132 +} // !Util 1.133 +} // !FBX 1.134 +} // !Assimp 1.135 + 1.136 +#endif