NLA SoC: Merge from 2.5 - 21179 to 21209
[blender.git] / source / gameengine / Ketsji / BL_Texture.h
1 #ifndef __BL_TEXTURE_H__
2 #define __BL_TEXTURE_H__
3
4 //      #include <vector>
5 //      #include <map>
6
7 #include "MT_Matrix4x4.h"
8 #include "KX_Camera.h"
9
10 // --
11 struct Image;
12 struct EnvMap;
13 class BL_Material;
14 class RAS_Rect;
15 class RAS_ICanvas;
16 //class RTData;
17
18 #include "STR_String.h"
19
20 class BL_Texture
21 {
22 private:
23         unsigned int            mTexture;               // Bound texture unit data
24         bool                            mOk;                    // ...
25         bool                            mNeedsDeleted;  // If generated
26         unsigned int            mType;                  // enum TEXTURE_2D | CUBE_MAP 
27         int                                     mUnit;                  // Texture unit associated with mTexture
28         unsigned int            mEnvState;              // cache textureEnv
29         static unsigned int     mDisableState;  // speed up disabling calls
30
31         void InitNonPow2Tex(unsigned int *p,int x,int y,bool mipmap );
32         void InitGLTex(unsigned int *p,int x,int y,bool mipmap );
33 public:
34         BL_Texture();
35         ~BL_Texture( );
36
37         bool Ok();
38         int      GetUnit()                      {return mUnit;}
39         void SetUnit(int unit)  {mUnit = unit;}
40
41         unsigned int GetTextureType() const;
42         void DeleteTex();
43
44         bool InitFromImage(int unit, Image *img, bool mipmap);
45         bool InitCubeMap(int unit,EnvMap *cubemap );
46
47         bool IsValid();
48         void Validate();
49
50         static void ActivateFirst();
51         static void DisableAllTextures();
52         static void ActivateUnit(int unit);
53         static int GetMaxUnits();
54         static int GetPow2(int x);
55         static void SplitEnvMap(EnvMap *map);
56
57
58         void ActivateTexture();
59         void SetMapping(int mode);
60         void DisableUnit();
61         void setTexEnv(BL_Material *mat, bool modulate=false);
62         unsigned int swapTexture (unsigned int newTex) {
63                 // swap texture codes
64                 unsigned int tmp = mTexture;
65                 mTexture = newTex;
66                 // return original texture code
67                 return tmp;
68         }
69
70 };
71
72 #endif//__BL_TEXTURE_H__