X-Git-Url: http://git.tdb.fi/?p=libs%2Fgltk.git;a=blobdiff_plain;f=source%2Fresources.cpp;fp=source%2Fresources.cpp;h=dc678a9480d74aa276039d65b5b0b5cf1c0ed8d5;hp=078b58b71696559b16b12267f0e39c8759852373;hb=394e5c9969a30b604bfaf78fc05a8c2d5c98ab5b;hpb=90d5f5f2ebaeb8aaa4aa47a0c2207f96758cba8c diff --git a/source/resources.cpp b/source/resources.cpp index 078b58b..dc678a9 100644 --- a/source/resources.cpp +++ b/source/resources.cpp @@ -22,18 +22,13 @@ Resources::Resources() Resources::Resources(const FS::Path &fn): Resources() { - dir_src = new DataFile::DirectorySource; + dir_src = make_unique(); dir_src->add_directory(FS::dirname(fn)); add_source(*dir_src); DataFile::load(*this, fn.str()); } -Resources::~Resources() -{ - delete dir_src; -} - const GL::Font &Resources::get_default_font() const { if(!default_font) @@ -47,18 +42,18 @@ GL::Module *Resources::create_module(const string &name) if(name!="ui.glsl") return nullptr; - GL::Module *mod = nullptr; + unique_ptr mod; if(GL::get_backend_api()==GL::VULKAN) - mod = new GL::SpirVModule; + mod = make_unique(); else - mod = new GL::GlslModule; + mod = make_unique(); mod->set_source("import msp_interface; import common;\n" "uniform sampler2D ui_tex;\n" "#pragma MSP stage(fragment)\n" "void main() { frag_color = texture(ui_tex, texcoord.xy)*color; }\n"); - return mod; + return mod.release(); } GL::Program *Resources::create_program(const string &name) @@ -74,10 +69,10 @@ GL::Sampler *Resources::create_sampler(const string &name) static const Regex r_name("^(linear|nearest)_clamp.samp$"); if(RegMatch m = r_name.match(name)) { - GL::Sampler *sampler = new GL::Sampler; + unique_ptr sampler = make_unique(); sampler->set_filter(lexical_cast(toupper(m.group(1).str))); sampler->set_wrap(GL::CLAMP_TO_EDGE); - return sampler; + return sampler.release(); } return nullptr; @@ -87,15 +82,15 @@ GL::Texture2D *Resources::create_texture(const string &name) { string ext = FS::extpart(name); if(ext==".png" || ext==".jpg") - if(IO::Seekable *io = open_raw(name)) + if(auto io = unique_ptr(open_raw(name))) { Graphics::Image image; image.load_io(*io); - delete io; + io.reset(); - GL::Texture2D *tex = new GL::Texture2D; + unique_ptr tex = make_unique(); tex->image(image); - return tex; + return tex.release(); } return nullptr; @@ -117,7 +112,7 @@ void Resources::Loader::default_font(const string &name) void Resources::Loader::font(const string &name) { - RefPtr fnt = new GL::Font; + unique_ptr fnt = make_unique(); load_sub(*fnt, res); res.add(name, fnt.get()); if(!res.default_font)