Resources::Resources(const FS::Path &fn):
Resources()
{
- dir_src = new DataFile::DirectorySource;
+ dir_src = make_unique<DataFile::DirectorySource>();
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)
if(name!="ui.glsl")
return nullptr;
- GL::Module *mod = nullptr;
+ unique_ptr<GL::Module> mod;
if(GL::get_backend_api()==GL::VULKAN)
- mod = new GL::SpirVModule;
+ mod = make_unique<GL::SpirVModule>();
else
- mod = new GL::GlslModule;
+ mod = make_unique<GL::GlslModule>();
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)
static const Regex r_name("^(linear|nearest)_clamp.samp$");
if(RegMatch m = r_name.match(name))
{
- GL::Sampler *sampler = new GL::Sampler;
+ unique_ptr<GL::Sampler> sampler = make_unique<GL::Sampler>();
sampler->set_filter(lexical_cast<GL::TextureFilter>(toupper(m.group(1).str)));
sampler->set_wrap(GL::CLAMP_TO_EDGE);
- return sampler;
+ return sampler.release();
}
return nullptr;
{
string ext = FS::extpart(name);
if(ext==".png" || ext==".jpg")
- if(IO::Seekable *io = open_raw(name))
+ if(auto io = unique_ptr<IO::Seekable>(open_raw(name)))
{
Graphics::Image image;
image.load_io(*io);
- delete io;
+ io.reset();
- GL::Texture2D *tex = new GL::Texture2D;
+ unique_ptr<GL::Texture2D> tex = make_unique<GL::Texture2D>();
tex->image(image);
- return tex;
+ return tex.release();
}
return nullptr;
void Resources::Loader::font(const string &name)
{
- RefPtr<GL::Font> fnt = new GL::Font;
+ unique_ptr<GL::Font> fnt = make_unique<GL::Font>();
load_sub(*fnt, res);
res.add(name, fnt.get());
if(!res.default_font)