]> git.tdb.fi Git - libs/gl.git/blob - source/texture2d.h
Get rid of the typedefs for fundamental types
[libs/gl.git] / source / texture2d.h
1 /* $Id$
2
3 This file is part of libmspgl
4 Copyright © 2007  Mikko Rasa, Mikkosoft Productions
5 Distributed under the LGPL
6 */
7
8 #ifndef MSP_GL_TEXTURE2D_H_
9 #define MSP_GL_TEXTURE2D_H_
10
11 #include <string>
12 #include <msp/gbase/image.h>
13 #include "datatype.h"
14 #include "pixelformat.h"
15 #include "texture.h"
16
17 namespace Msp {
18 namespace GL {
19
20 /**
21 Two-dimensional texture class.  This is the most common type of texture.
22 */
23 class Texture2D: public Texture
24 {
25 public:
26         class Loader: public Texture::Loader
27         {
28         public:
29                 Loader(Texture2D &);
30         private:
31                 void image_data(const std::string &);
32                 void raw_data(const std::string &);
33                 void storage(PixelFormat, unsigned, unsigned, unsigned);
34         };
35
36 private:
37         PixelFormat ifmt;
38         unsigned width;
39         unsigned height;
40         int border;
41
42 public:
43         Texture2D();
44
45         /**
46         Defines the texture storage.  This function may only be successfully called
47         once.
48         */
49         void storage(PixelFormat fmt, unsigned wd, unsigned ht, int brd);
50         
51         /**
52         Uploads an image to the texture.  storage() must have been called prior to
53         this, and the image must have dimensions conforming to the specified
54         storage.
55         */
56         void image(int level, PixelFormat fmt, DataType type, const void *data);
57
58         /**
59         Uploads a sub-image into the texture.  Unlike full image upload, there are
60         no constraints on the size of the sub-image.
61         */
62         void sub_image(int level, int x, int y, unsigned wd, unsigned ht, PixelFormat fmt, DataType type, const void *data);
63
64         /**
65         Loads an image from a file and uploads it to the texture.  If storage() has
66         not been called, the storage format will be set to match the loaded image.
67         */
68         void load_image(const std::string &fn);
69
70         unsigned get_width() const  { return width; }
71         unsigned get_height() const { return height; }
72
73 private:
74         void image(const Graphics::Image &);
75 };
76
77 } // namespace GL
78 } // namespace Msp
79
80 #endif