]> git.tdb.fi Git - libs/gltk.git/blobdiff - source/resources.h
Use std::unique_ptr for managing memory
[libs/gltk.git] / source / resources.h
index 87b8364148053581d142070d274fe24439f1e47c..7569119a35109d6d46c6b94501b70bc7eabd9472 100644 (file)
@@ -1,22 +1,27 @@
 #ifndef MSP_GLTK_RESOURCES_H_
 #define MSP_GLTK_RESOURCES_H_
 
+#include <memory>
 #include <msp/gl/font.h>
+#include <msp/gl/module.h>
+#include <msp/gl/program.h>
+#include <msp/gl/sampler.h>
 #include <msp/gl/texture.h>
 #include <msp/datafile/collection.h>
 #include <msp/datafile/directorysource.h>
 #include <msp/fs/path.h>
 #include "graphic.h"
+#include "mspgltk_api.h"
 #include "style.h"
 
 namespace Msp {
 namespace GLtk {
 
 /**
-Stores resources such as styles and graphics.  All widgets require a Resources
-instance in constructor.
+Stores resources such as styles and graphics.  The Root widget requires a
+Resources instance as constructor parameter.
 */
-class Resources: public DataFile::Collection
+class MSPGLTK_API Resources: public DataFile::Collection
 {
 public:
        class Loader: public Collection::Loader
@@ -26,6 +31,7 @@ public:
 
        public:
                Loader(Resources &);
+
        private:
                void default_font(const std::string &);
                void font(const std::string &);
@@ -33,20 +39,20 @@ public:
 
 private:
        FS::Path path;
-       GL::Font *default_font;
-       DataFile::DirectorySource *dir_src;
+       GL::Font *default_font = nullptr;
+       std::unique_ptr<DataFile::DirectorySource> dir_src;
 
 public:
        Resources();
        Resources(const FS::Path &);
-private:
-       void init();
-public:
-       ~Resources();
 
        const GL::Font &get_default_font() const;
+       const GL::Sampler &get_default_sampler() const;
 
 private:
+       GL::Module *create_module(const std::string &);
+       GL::Program *create_program(const std::string &);
+       GL::Sampler *create_sampler(const std::string &);
        GL::Texture2D *create_texture(const std::string &);
 };