]> git.tdb.fi Git - libs/gl.git/blobdiff - source/texture2d.h
Drop Id tags and copyright notices from files
[libs/gl.git] / source / texture2d.h
index b62466cb0a75bc524cf11a484567bfe17eb02625..5395fefd33355f2aa08a3080e286d1b5edc8d5d8 100644 (file)
@@ -1,23 +1,15 @@
-/* $Id$
-
-This file is part of libmspgl
-Copyright © 2007  Mikko Rasa, Mikkosoft Productions
-Distributed under the LGPL
-*/
-
 #ifndef MSP_GL_TEXTURE2D_H_
 #define MSP_GL_TEXTURE2D_H_
 
 #include <string>
 #ifndef MSP_GL_TEXTURE2D_H_
 #define MSP_GL_TEXTURE2D_H_
 
 #include <string>
-#include <msp/datafile/loader.h>
+#include <msp/gbase/image.h>
+#include "datatype.h"
 #include "pixelformat.h"
 #include "texture.h"
 
 namespace Msp {
 namespace GL {
 
 #include "pixelformat.h"
 #include "texture.h"
 
 namespace Msp {
 namespace GL {
 
-class Image;
-
 /**
 Two-dimensional texture class.  This is the most common type of texture.
 */
 /**
 Two-dimensional texture class.  This is the most common type of texture.
 */
@@ -30,13 +22,16 @@ public:
                Loader(Texture2D &);
        private:
                void image_data(const std::string &);
                Loader(Texture2D &);
        private:
                void image_data(const std::string &);
+               void raw_data(const std::string &);
+               void storage(PixelFormat, unsigned, unsigned);
+               void storage_b(PixelFormat, unsigned, unsigned, unsigned);
        };
 
 private:
        PixelFormat ifmt;
        };
 
 private:
        PixelFormat ifmt;
-       sizei width;
-       sizei height;
-       int border;
+       unsigned width;
+       unsigned height;
+       unsigned allocated;
 
 public:
        Texture2D();
 
 public:
        Texture2D();
@@ -45,20 +40,22 @@ public:
        Defines the texture storage.  This function may only be successfully called
        once.
        */
        Defines the texture storage.  This function may only be successfully called
        once.
        */
-       void storage(PixelFormat fmt, sizei wd, sizei ht, int brd);
+       void storage(PixelFormat fmt, unsigned wd, unsigned ht);
+
+       /** Allocates texture storage.  If storage has already been allocated, this
+       function does nothing. */
+       void allocate(unsigned level);
        
        
-       /**
-       Uploads an image to the texture.  storage() must have been called prior to
+       /** Uploads an image to the texture.  storage() must have been called prior to
        this, and the image must have dimensions conforming to the specified
        this, and the image must have dimensions conforming to the specified
-       storage.
-       */
-       void image(int level, PixelFormat fmt, GLenum type, const void *data);
+       storage.  For level>0, mipmapping rules apply to the image dimensions. */
+       void image(unsigned level, PixelFormat fmt, DataType type, const void *data);
 
        /**
        Uploads a sub-image into the texture.  Unlike full image upload, there are
        no constraints on the size of the sub-image.
        */
 
        /**
        Uploads a sub-image into the texture.  Unlike full image upload, there are
        no constraints on the size of the sub-image.
        */
-       void sub_image(int level, int x, int y, sizei wd, sizei ht, PixelFormat fmt, GLenum type, const void *data);
+       void sub_image(unsigned level, int x, int y, unsigned wd, unsigned ht, PixelFormat fmt, DataType type, const void *data);
 
        /**
        Loads an image from a file and uploads it to the texture.  If storage() has
 
        /**
        Loads an image from a file and uploads it to the texture.  If storage() has
@@ -66,11 +63,13 @@ public:
        */
        void load_image(const std::string &fn);
 
        */
        void load_image(const std::string &fn);
 
-       sizei get_width() const  { return width; }
-       sizei get_height() const { return height; }
+       unsigned get_width() const  { return width; }
+       unsigned get_height() const { return height; }
 
 private:
 
 private:
-       void image(const Image &);
+       void image(const Graphics::Image &);
+       void require_storage();
+       void get_level_size(unsigned, unsigned &, unsigned &);
 };
 
 } // namespace GL
 };
 
 } // namespace GL