Unofficial OpenGL Software Development Kit  0.5.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
ImageFormat.h
Go to the documentation of this file.
1 #ifndef GLIMG_IMAGE_FORMAT_H
2 #define GLIMG_IMAGE_FORMAT_H
3 
4 #include <string>
5 #include <exception>
6 
7 
16 namespace glimg
17 {
20 
30  {
37  DT_NUM_UNCOMPRESSED_TYPES,
38 
39  DT_COMPRESSED_BC1 = DT_NUM_UNCOMPRESSED_TYPES,
49 
50  DT_NUM_TYPES,
51  };
52 
61  {
70 
73 
74  FMT_NUM_FORMATS,
75  };
76 
86  {
90 
92 
94 
95  ORDER_NUM_ORDERS,
96  };
97 
119  enum Bitdepth
120  {
122 
126  BD_NUM_PER_COMPONENT,
127 
128  BD_PACKED_16_BIT_565 = BD_NUM_PER_COMPONENT,
131 
135 
139 
144 
145  BD_NUM_BITDEPTH,
146  };
147 
158  {
163 
165 
178  std::string ValidateFormatText() const;
179 
181  bool ValidateFormat() const;
182  };
183 
185  class InvalidFormatException : public std::exception
186  {
187  public:
189  : message("Invalid Image Format")
190  {}
191 
192  InvalidFormatException(const std::string &msg)
193  : message("Invalid Image Format:\n")
194  {
195  message += msg;
196  }
197 
198  virtual ~InvalidFormatException() throw() {}
199 
200  virtual const char *what() const throw() {return message.c_str();}
201 
202  protected:
203  std::string message;
204  };
205 
215  {
216  public:
224  ImageFormat(PixelDataType _eType,
225  PixelComponents _eFormat,
226  ComponentOrder _eOrder,
227  Bitdepth _eBitdepth,
228  int _lineAlignment);
229 
238 
241 
246  PixelDataType Type() const {return fmt.eType;}
247  PixelComponents Components() const {return fmt.eFormat;}
248  ComponentOrder Order() const {return fmt.eOrder;}
249  Bitdepth Depth() const {return fmt.eBitdepth;}
250  int LineAlign() const {return fmt.lineAlignment;}
253 
254  size_t AlignByteCount(size_t byteCount) const;
255 
256  private:
257  UncheckedImageFormat fmt;
258  };
259 
260 
261 
263 }
264 
265 
266 #endif //GLIMG_IMAGE_FORMAT_H