1 #include <msp/fs/utils.h>
14 Resources::Resources(const FS::Path &fn)
18 dir_src = new DataFile::DirectorySource;
19 dir_src->add_directory(FS::dirname(fn));
22 DataFile::load(*this, fn.str());
25 void Resources::init()
29 add_type<Graphic>().keyword("graphic");
30 add_type<GL::Texture2D>().keyword("texture").creator(&Resources::create_texture);
31 add_type<GL::Font>().keyword("font");
32 add_type<Style>().keyword("style");
35 Resources::~Resources()
40 const GL::Font &Resources::get_default_font() const
43 throw logic_error("!default_font");
48 GL::Texture2D *Resources::create_texture(const string &name)
50 string ext = FS::extpart(name);
51 if(ext==".png" || ext==".jpg")
52 if(IO::Seekable *io = open_from_sources(name))
54 Graphics::Image image;
58 GL::Texture2D *tex = new GL::Texture2D;
59 tex->set_min_filter(GL::LINEAR);
68 Resources::Loader::Loader(Resources &r):
69 Collection::Loader(r),
72 add("default_font", &Loader::default_font);
73 add("font", &Loader::font);
76 void Resources::Loader::default_font(const string &name)
78 res.default_font = &res.get<GL::Font>(name);
81 void Resources::Loader::font(const string &name)
83 RefPtr<GL::Font> fnt = new GL::Font;
85 res.add(name, fnt.get());
87 res.default_font = fnt.get();