X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fresources.cpp;h=8cdd0ad8f0b12066adf3b3dfeed9c2029ec304ee;hb=HEAD;hp=3cfd8306275cb5e0ae47268e4dd013749531d310;hpb=9f38197854e699a6093a906ab43f4238f3cd2388;p=libs%2Fgltk.git diff --git a/source/resources.cpp b/source/resources.cpp index 3cfd830..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) @@ -45,26 +40,26 @@ const GL::Font &Resources::get_default_font() const GL::Module *Resources::create_module(const string &name) { if(name!="ui.glsl") - return 0; + return nullptr; - GL::Module *mod = 0; + 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) { if(name!="ui.shader") - return 0; + return nullptr; return new GL::Program(get("ui.glsl")); } @@ -74,31 +69,31 @@ 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 0; + return nullptr; } 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 0; + 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)