]> git.tdb.fi Git - libs/gl.git/blob - source/core/texture1d.h
Rewrite state management
[libs/gl.git] / source / core / texture1d.h
1 #ifndef MSP_GL_TEXTURE1D_H_
2 #define MSP_GL_TEXTURE1D_H_
3
4 #include "texture.h"
5
6 namespace Msp {
7 namespace GL {
8
9 class Texture1D: public Texture
10 {
11 public:
12         class Loader: public DataFile::DerivedObjectLoader<Texture1D, Texture::Loader>
13         {
14         public:
15                 Loader(Texture1D &);
16                 Loader(Texture1D &, Collection &);
17         private:
18                 void init();
19
20                 void raw_data(const std::string &);
21                 void storage(PixelFormat, unsigned);
22                 void storage_levels(PixelFormat, unsigned, unsigned);
23         };
24
25 private:
26         unsigned width;
27         unsigned levels;
28         unsigned allocated;
29
30 public:
31         Texture1D();
32
33         void storage(PixelFormat, unsigned, unsigned = 0);
34
35         DEPRECATED void storage(PixelComponents c, unsigned w, unsigned l = 0)
36         { storage(make_pixelformat(c, UNSIGNED_BYTE), w, l); }
37
38         void allocate(unsigned);
39 private:
40         void allocate_(unsigned);
41 public:
42         void image(unsigned, const void *);
43 private:
44         void image_(unsigned, const void *);
45 public:
46         DEPRECATED void image(unsigned, PixelComponents, DataType, const void *);
47         void sub_image(unsigned, int, unsigned, const void *);
48         DEPRECATED void sub_image(unsigned, int, unsigned, PixelComponents, DataType, const void *);
49         virtual void image(const Graphics::Image &, unsigned = 0);
50         using Texture::image;
51         unsigned get_width() const { return width; }
52
53 private:
54         unsigned get_n_levels() const;
55         unsigned get_level_size(unsigned) const;
56
57 public:
58         virtual AsyncLoader *load(IO::Seekable &, const Resources * = 0) { return 0; }
59         virtual UInt64 get_data_size() const;
60         virtual void unload() { }
61 };
62
63 } // namespace GL
64 } // namespace Msp
65
66 #endif