]> git.tdb.fi Git - libs/gl.git/blobdiff - source/texture2d.h
Generalize shader interface handling
[libs/gl.git] / source / texture2d.h
index ff4d35b64b24685661f842b6f652604b0d4220a4..dce58a7873213e772381582e490c11363f8557b6 100644 (file)
@@ -18,11 +18,14 @@ most common type of texture.
 class Texture2D: public Texture
 {
 public:
-       class Loader: public Texture::Loader
+       class Loader: public Msp::DataFile::DerivedObjectLoader<Texture2D, Texture::Loader>
        {
        public:
                Loader(Texture2D &);
+               Loader(Texture2D &, Collection &);
        private:
+               void init();
+
                void image_data(const std::string &);
                void raw_data(const std::string &);
                void storage(PixelFormat, unsigned, unsigned);
@@ -45,7 +48,7 @@ public:
        /** Allocates storage for the texture.  The contents are initially
        undefined.  If storage has already been allocated, does nothing. */
        void allocate(unsigned level);
-       
+
        /** Uploads an image to the texture.  Storage must be defined beforehand.
        The image data must have dimensions and format compatible with the defined
        storage. */
@@ -60,13 +63,17 @@ public:
        /** Loads an image from a file and uploads it to the texture.  If storage
        has not been defined, it will be set to match the loaded image.  Otherwise
        the image must be compatible with the defined storage. */
-       void load_image(const std::string &fn);
+       void load_image(const std::string &fn, bool srgb = false);
+
+       /** Uploads an image to the texture.  If storage has not been defined, it
+       will be set to match the image.  Otherwise the image must be compatible with
+       the defined storage. */
+       void image(const Graphics::Image &, bool srgb = false);
 
-       unsigned get_width() const  { return width; }
+       unsigned get_width() const { return width; }
        unsigned get_height() const { return height; }
 
 private:
-       void image(const Graphics::Image &);
        void get_level_size(unsigned, unsigned &, unsigned &);
 };