//  // // # # ### # # -= Nuclex Library =-  // // ## # # # ## ## XMLSerializer.cpp - XML object serializer  // // ### # # ###  // // # ### # ### A serializer which formats serialized objects into XML tags  // // # ## # # ## ##  // // # # ### # # R1 (C)2002-2004 Markus Ewald -> License.txt  // //  // #include "Nuclex/Storage/ResourceSet.h" #include "Nuclex/Storage/StorageServer.h" #include "Nuclex/Video/VideoServer.h" #include "Nuclex/Text/TextServer.h" #include "Nuclex/Text/Font.h" using namespace Nuclex; using namespace Nuclex::Storage; // ############################################################################################# // // # Nuclex::Storage::ResourceSet::ResourceSet() Constructor # // // ############################################################################################# // ResourceSet::ResourceSet( const string &sName, const shared_ptr &spStorageServer, const shared_ptr &spVideoServer, const shared_ptr &spTextServer ) : m_sName(sName), m_spStorageServer(spStorageServer), m_spVideoServer(spVideoServer), m_spTextServer(spTextServer) {} // ############################################################################################# // // # Nuclex::Storage::ResourceSet::~ResourceSet() Destructor # // // ############################################################################################# // ResourceSet::~ResourceSet() {} // ############################################################################################# // // # Nuclex::Storage::ResourceSet::load() # // // ############################################################################################# // void ResourceSet::load(const shared_ptr &spSerializer) { // Mount archives shared_ptr spArchiveEnum = spSerializer->enumScopes("archive"); while(spArchiveEnum->next()) { m_spStorageServer->addArchive( spArchiveEnum->get().second->get("_name"), m_spStorageServer->openArchive( spArchiveEnum->get().second->get("_source") ) ); } // Load bitmaps shared_ptr spImageEnum = spSerializer->enumScopes("bitmap"); while(spImageEnum->next()) { m_spVideoServer->addImage( spImageEnum->get().second->get("_name"), m_spVideoServer->loadImage( m_spStorageServer->openStream(spImageEnum->get().second->get("_stream")) ) ); } // Load fonts shared_ptr spFontEnum = spSerializer->enumScopes("font"); while(spFontEnum->next()) { m_spTextServer->addFont( spFontEnum->get().second->get("_name"), m_spTextServer->loadFont( m_spStorageServer->openStream(spFontEnum->get().second->get("_stream")), "", spFontEnum->get().second->get("_size") ) ); } } // ############################################################################################# // // # Nuclex::Storage::ResourceSet::save() # // // ############################################################################################# // void ResourceSet::save(const shared_ptr &spSerializer) const { for(StringPairDeque::const_iterator ArchiveIt = m_Archives.begin(); ArchiveIt != m_Archives.end(); ++ArchiveIt) { shared_ptr spScope = spSerializer->createScope("archive"); spScope->set("_name", ArchiveIt->first); spScope->set("_source", ArchiveIt->second); } for(StringPairDeque::const_iterator ImageIt = m_Images.begin(); ImageIt != m_Images.end(); ++ImageIt) { shared_ptr spScope = spSerializer->createScope("Image"); spScope->set("_name", ImageIt->first); spScope->set("_source", ImageIt->second); } for(StringPairDeque::const_iterator FontIt = m_Fonts.begin(); FontIt != m_Fonts.end(); ++FontIt) { shared_ptr spScope = spSerializer->createScope("Font"); spScope->set("_name", FontIt->first); spScope->set("_source", FontIt->second); spScope->set("_size", getFont(FontIt->first)->getHeight()); } } // ############################################################################################# // // # Nuclex::Storage::ResourceSet::addArchive() # // // ############################################################################################# // void ResourceSet::addArchive(const string &sName, const string &sSource) { shared_ptr spArchive = m_spStorageServer->openArchive(sSource); m_spStorageServer->addArchive(sName, spArchive); m_Archives.push_back(std::pair(sName, sSource)); } // ############################################################################################# // // # Nuclex::Storage::ResourceSet::addImage() # // // ############################################################################################# // void ResourceSet::addImage(const string &sName, const string &sSource) { shared_ptr spStream = m_spStorageServer->openStream(sSource); shared_ptr spImage = m_spVideoServer->loadImage(spStream); m_spVideoServer->addImage(sName, spImage); m_Images.push_back(std::pair(sName, sSource)); } // ############################################################################################# // // # Nuclex::Storage::ResourceSet::addFont() # // // ############################################################################################# // void ResourceSet::addFont(const string &sName, const string &sSource) { shared_ptr spStream = m_spStorageServer->openStream(sSource); shared_ptr spFont = m_spTextServer->loadFont(spStream); m_spTextServer->addFont(sName, spFont); m_Fonts.push_back(std::pair(sName, sSource)); } // ############################################################################################# // // # Nuclex::Storage::ResourceSet::removeArchive() # // // ############################################################################################# // void ResourceSet::removeArchive(const string &sName) { } // ############################################################################################# // // # Nuclex::Storage::ResourceSet::removeImage() # // // ############################################################################################# // void ResourceSet::removeImage(const string &sName) { } // ############################################################################################# // // # Nuclex::Storage::ResourceSet::removeFont() # // // ############################################################################################# // void ResourceSet::removeFont(const string &sName) { } // ############################################################################################# // // # Nuclex::Storage::ResourceSet::getArchive() # // // ############################################################################################# // const shared_ptr &ResourceSet::getArchive(const string &sName) const { return m_spStorageServer->getArchive(sName); } // ############################################################################################# // // # Nuclex::Storage::ResourceSet::getImage() # // // ############################################################################################# // const shared_ptr &ResourceSet::getImage(const string &sName) const { return m_spVideoServer->getImage(sName); } // ############################################################################################# // // # Nuclex::Storage::ResourceSet::getFont() # // // ############################################################################################# // const shared_ptr &ResourceSet::getFont(const string &sName) const { return m_spTextServer->getFont(sName); }