X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fresources.cpp;h=8cdd0ad8f0b12066adf3b3dfeed9c2029ec304ee;hb=f0b600c3b1739f7e088da6ab8eb7c2e67adf592c;hp=aad671c393729adc4608d3d6024378bcf44bbe35;hpb=131ac8ff2c06f94d40f4bf98d4a6ec0d113cdffc;p=libs%2Fgltk.git diff --git a/source/resources.cpp b/source/resources.cpp index aad671c..8cdd0ad 100644 --- a/source/resources.cpp +++ b/source/resources.cpp @@ -1,4 +1,4 @@ -#include +#include #include "resources.h" using namespace std; @@ -6,116 +6,86 @@ using namespace std; namespace Msp { namespace GLtk { -Resources::Resources(): - default_font(0) -{ } - -Resources::~Resources() +Resources::Resources() { - for(FontMap::iterator i=fonts.begin(); i!=fonts.end(); ++i) - delete i->second; - for(TextureMap::iterator i=textures.begin(); i!=textures.end(); ++i) - delete i->second; + init(); } -const GL::Font &Resources::get_font(const string &name) const +Resources::Resources(const FS::Path &fn) { - FontMap::const_iterator i=fonts.find(name); - if(i==fonts.end()) - throw KeyError("Unknown font "+name); + init(); - return *i->second; + dir_src = new DataFile::DirectorySource; + dir_src->add_directory(FS::dirname(fn)); + add_source(*dir_src); + + DataFile::load(*this, fn.str()); } -const GL::Font &Resources::get_default_font() const +void Resources::init() { - if(!default_font) - throw InvalidState("No default font"); - - return *default_font; + default_font = 0; + dir_src = 0; + add_type().keyword("graphic"); + add_type().keyword("texture").creator(&Resources::create_texture); + add_type().keyword("font"); + add_type