Oxygine  1
2g game engine
ImageData.h
1 #pragma once
2 #include "oxygine-include.h"
3 #include "math/Rect.h"
4 #include "pixel.h"
5 
6 namespace oxygine
7 {
8  enum TextureFormat
9  {
10  TF_UNDEFINED,
11  TF_A8,//luminance
12  TF_L8,//luminance
13  TF_A8L8,//luminance+alpha
14  TF_R8G8B8A8,//default
15  TF_B8G8R8A8,
16  TF_R8G8B8,
17  TF_R5G5B5A1,
18  TF_R4G4B4A4,
19  TF_R5G6B5,
20  TF_B5G6R5,
21  TF_PVRTC_2RGB,
22  TF_PVRTC_2RGBA,
23  TF_PVRTC_4RGB,
24  TF_PVRTC_4RGBA,
25  TF_PVRTCII_2,
26  TF_PVRTCII_4,
27  TF_ETC1,
28  };
29 
30 #define ALL_FORMATS_SWITCH(format) \
31  switch(format) \
32  { \
33  FORMAT_CASE(A8); \
34  FORMAT_CASE(L8); \
35  FORMAT_CASE(A8L8); \
36  FORMAT_CASE(R8G8B8A8); \
37  FORMAT_CASE(B8G8R8A8); \
38  FORMAT_CASE(R8G8B8); \
39  FORMAT_CASE(R5G5B5A1); \
40  FORMAT_CASE(R4G4B4A4); \
41  FORMAT_CASE(R5G6B5); \
42  FORMAT_CASE(B5G6R5); \
43  default: \
44  OX_ASSERT(!"unknown format"); \
45  }
46 
47  int getBytesPerPixel(TextureFormat tf);
48  const char* textureFormat2String(TextureFormat f);
49  TextureFormat string2TextureFormat(const char* str);
50  bool isCompressedFormat(TextureFormat tf);
51 
52 
53 
54  class ImageData
55  {
56  public:
57  ImageData();
58  ImageData(int W, int H, int Pitch, TextureFormat Format, void* Data = 0);
59  ImageData(const ImageData& b, void* Data);
60  ~ImageData();
61 
62  ImageData getRect(const Rect& r) const;
63  ImageData getRect(int x, int y, int w, int h) const;
64  ImageData getRect(int x, int y) const;
65  unsigned char* getPixelPtr(int x, int y) const;
66 
67  public:
68  int w;
69  int h;
70  int bytespp;
71  int pitch;
72 
73  unsigned char* data;
74  TextureFormat format;
75  };
76 }
Definition: ImageData.h:54
–oxgl-end–!
Definition: Actor.h:14