1 /* 2 Copyright (c) 2008-2009 NetAllied Systems GmbH 3 4 This file is part of COLLADASaxFrameworkLoader. 5 6 Licensed under the MIT Open Source License, 7 for details please see LICENSE file or the website 8 http://www.opensource.org/licenses/mit-license.php 9 */ 10 11 #include "COLLADASaxFWLStableHeaders.h" 12 #include "COLLADASaxFWLLibraryImagesLoader.h" 13 #include "COLLADASaxFWLLoader.h" 14 15 #include "COLLADAFWImage.h" 16 #include "COLLADAFWIWriter.h" 17 18 19 namespace COLLADASaxFWL 20 { 21 22 //------------------------------ LibraryImagesLoader(IFilePartLoader * callingFilePartLoader)23 LibraryImagesLoader::LibraryImagesLoader( IFilePartLoader* callingFilePartLoader ) 24 : FilePartLoader(callingFilePartLoader) 25 , mCurrentImage(0) 26 { 27 28 } 29 30 //------------------------------ ~LibraryImagesLoader()31 LibraryImagesLoader::~LibraryImagesLoader() 32 { 33 } 34 35 //------------------------------ getUniqueId()36 const COLLADAFW::UniqueId& LibraryImagesLoader::getUniqueId() 37 { 38 if ( mCurrentImage ) 39 return mCurrentImage->getUniqueId(); 40 return COLLADAFW::UniqueId::INVALID; 41 } 42 43 //------------------------------ end__library_images()44 bool LibraryImagesLoader::end__library_images() 45 { 46 moveUpInSidTree(); 47 finish(); 48 return true; 49 } 50 51 //------------------------------ begin__image(const image__AttributeData & attributeData)52 bool LibraryImagesLoader::begin__image( const image__AttributeData& attributeData ) 53 { 54 mCurrentImage = FW_NEW COLLADAFW::Image( createUniqueIdFromId( attributeData.id, COLLADAFW::Image::ID()) ); 55 56 if ( attributeData.name ) 57 mCurrentImage->setName( (const char*) attributeData.name ); 58 else if ( attributeData.id ) 59 mCurrentImage->setName( (const char*) attributeData.id ); 60 61 if ( attributeData.id ) 62 mCurrentImage->setOriginalId ( (const char*)attributeData.id ); 63 64 if ( attributeData.format ) 65 mCurrentImage->setFormat( attributeData.format ); 66 67 mCurrentImage->setHeight( (unsigned long)attributeData.height ); 68 mCurrentImage->setWidth( (unsigned long)attributeData.width ); 69 mCurrentImage->setDepth( (unsigned long)attributeData.depth ); 70 71 return true; 72 } 73 74 //------------------------------ end__image()75 bool LibraryImagesLoader::end__image() 76 { 77 bool success = true; 78 if ( (getObjectFlags() & Loader::IMAGE_FLAG) != 0 ) 79 { 80 success = writer()->writeImage(mCurrentImage); 81 } 82 FW_DELETE mCurrentImage; 83 mCurrentImage = 0; 84 return success; 85 } 86 87 //------------------------------ begin__init_from____anyURI()88 bool LibraryImagesLoader::begin__init_from____anyURI() 89 { 90 mCurrentImage->setSourceType( COLLADAFW::Image::SOURCE_TYPE_URI ); 91 return true; 92 } 93 94 //------------------------------ end__init_from____anyURI()95 bool LibraryImagesLoader::end__init_from____anyURI() 96 { 97 // we don't need to do anything here 98 return true; 99 } 100 101 //------------------------------ data__init_from____anyURI(COLLADABU::URI value)102 bool LibraryImagesLoader::data__init_from____anyURI( COLLADABU::URI value ) 103 { 104 mCurrentImage->setImageURI( value ); 105 return true; 106 } 107 108 //------------------------------ begin__data()109 bool LibraryImagesLoader::begin__data() 110 { 111 // disabled see COLLADAFW::Image 112 //mCurrentImage->setSourceType( COLLADAFW::Image::SOURCE_TYPE_DATA); 113 return true; 114 } 115 116 //------------------------------ data__data(const uint8 * data,size_t length)117 bool LibraryImagesLoader::data__data( const uint8* data, size_t length ) 118 { 119 // disabled see COLLADAFW::Image 120 //COLLADAFW::Image::CharacterArray& dataArray = mCurrentImage->getData(); 121 //dataArray.appendValues( (char *)data, length ); 122 return true; 123 } 124 125 } // namespace COLLADASaxFWL 126