aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/libraries/evas/src/modules/engines/direct3d/evas_direct3d_object_image.h
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/evas/src/modules/engines/direct3d/evas_direct3d_object_image.h')
-rw-r--r--libraries/evas/src/modules/engines/direct3d/evas_direct3d_object_image.h127
1 files changed, 127 insertions, 0 deletions
diff --git a/libraries/evas/src/modules/engines/direct3d/evas_direct3d_object_image.h b/libraries/evas/src/modules/engines/direct3d/evas_direct3d_object_image.h
new file mode 100644
index 0000000..379207b
--- /dev/null
+++ b/libraries/evas/src/modules/engines/direct3d/evas_direct3d_object_image.h
@@ -0,0 +1,127 @@
1#ifndef __EVAS_DIRECT3D_OBJECT_IMAGE_H__
2#define __EVAS_DIRECT3D_OBJECT_IMAGE_H__
3
4#include "evas_engine.h"
5
6#include "ref.h"
7#include "array.h"
8
9#include "evas_direct3d_object.h"
10
11class D3DObjectImage : public D3DObject
12{
13public:
14 D3DObjectImage();
15 virtual ~D3DObjectImage();
16
17 void CopyTo(D3DObjectImage *image);
18
19 static void BeginCache();
20 virtual void Draw(D3DDevice *d3d);
21 static void EndCache(D3DDevice *d3d);
22
23 void Init(FLOAT u, FLOAT v, FLOAT du, FLOAT dv, int image_id,
24 int width, int height, const char *source);
25 void Setup(FLOAT x, FLOAT y, FLOAT w, FLOAT h,
26 int sx, int sy, int sw, int sh);
27 void SetupColorFilter(DWORD color);
28 void SetupBorder(const D3DXVECTOR4 &world_border, const D3DXVECTOR4 &pix_border);
29
30 inline bool IsValid();
31 inline const char *GetSource();
32 inline int GetWidth();
33 inline int GetHeight();
34 inline FLOAT GetBorderLeft();
35 inline FLOAT GetBorderRight();
36 inline FLOAT GetBorderTop();
37 inline FLOAT GetBorderBottom();
38
39 bool UpdateImageData(DWORD *image_data);
40 DWORD *GetImageData();
41
42private:
43 struct Vertex
44 {
45 FLOAT x, y;
46 FLOAT u, v;
47 D3DCOLOR col;
48 };
49
50 struct GroupDesc
51 {
52 int num;
53 int id;
54 };
55
56private:
57 Vertex *MakeData();
58 Vertex *MakeDataBorder();
59
60private:
61 FLOAT _x, _y, _w, _h;
62 FLOAT _sx, _sy, _sw, _sh;
63 D3DXVECTOR4 _border;
64 D3DXVECTOR4 _uvborder;
65
66 FLOAT _u, _v, _du, _dv;
67 int _image_id;
68 int _width, _height;
69
70 D3DCOLOR _color;
71 int _cache_i;
72 bool _with_border;
73 bool _dirty;
74
75 TArray<DWORD> _image_data;
76 bool _image_data_updated;
77
78 char _source[256];
79
80 Vertex _data[54];
81
82 static TArray<D3DObjectImage *> _cache;
83 static bool _cache_enabled;
84};
85
86bool D3DObjectImage::IsValid()
87{
88 return _image_id >= 0 && _width > 0 && _height > 0;
89}
90
91const char *D3DObjectImage::GetSource()
92{
93 return _source;
94}
95
96int D3DObjectImage::GetWidth()
97{
98 return _width;
99}
100
101int D3DObjectImage::GetHeight()
102{
103 return _height;
104}
105
106FLOAT D3DObjectImage::GetBorderLeft()
107{
108 return _border.x;
109}
110
111FLOAT D3DObjectImage::GetBorderRight()
112{
113 return _border.z;
114}
115
116FLOAT D3DObjectImage::GetBorderTop()
117{
118 return _border.y;
119}
120
121FLOAT D3DObjectImage::GetBorderBottom()
122{
123 return _border.w;
124}
125
126
127#endif // __EVAS_DIRECT3D_OBJECT_IMAGE_H__