1
+ /*
2
+ RenderManager.h
3
+
4
+ Class RenderResource, RenderObject and RenderManager.
5
+ */
6
+
7
+ #ifndef _RENDERMANAGER_H_
8
+ #define _RENDERMANAGER_H_
9
+
10
+ #include <stdint.h>
11
+ #include "./ResourceManager.h"
12
+
13
+ //include library "st7789"
14
+ #include "../../st7789/include/st7789.h"
15
+ #include "../../fontx/include/fontx.h"
16
+ #include "../../pngle/include/pngle.h"
17
+ #include "../../decode_png/include/decode_png.h"
18
+
19
+ #define MAX_TEXT_LENGTH 64
20
+ #define SCREEN_WIDTH 320
21
+ #define SCREEN_HEIGHT 240
22
+ #define TRANSPARENT 0x0001
23
+
24
+ typedef struct renderManager RenderManager ;
25
+
26
+ /*
27
+ RenderResource class (derived from Resource), indicate a resource which is to be rendered.
28
+ */
29
+ typedef struct renderResource
30
+ {
31
+ Resource * baseResource ;
32
+ uint8_t mRenderResourceID ;
33
+ uint16_t mWidth ;
34
+ uint16_t mHeight ;
35
+
36
+ //Image file(for graphic object only)
37
+ uint16_t * mImage ;
38
+ //Decoded font file (for text object only)
39
+ //FontxFile mFont[2];
40
+
41
+ //Constructor for RenderResource
42
+ void (* new )(struct renderResource * , uint8_t , Resource * , uint16_t , uint16_t );
43
+
44
+ //sets loadImage function
45
+ void (* setLoadFunction )(struct renderResource * , void (struct renderResource * , uint16_t * ));
46
+
47
+ //loadImage function, load image. (for graphic object only)
48
+ void (* loadImage )(struct renderResource * , uint16_t * );
49
+ //loadFont function, load font. (for text object only)
50
+ //void (*loadFont)(struct renderResource*);
51
+
52
+ //sets unloadImage function
53
+ void (* setUnloadFunction )(struct renderResource * , void (struct renderResource * ));
54
+
55
+ //unload function, set the image pointer to NULL.
56
+ void (* unloadImage )(struct renderResource * );
57
+ }RenderResource ;
58
+
59
+ //Constructor for RenderResource
60
+ void renderResourceNew (RenderResource * , uint8_t , Resource * , uint16_t , uint16_t );
61
+ void renderResourceSetLoadFunction (RenderResource * , void (struct renderResource * , uint16_t * ));
62
+ void renderResourceLoadImage (RenderResource * , uint16_t * );
63
+ //void renderResourceLoadFont(RenderResource*);
64
+ void renderResourceSetUnloadFunction (RenderResource * , void (struct renderResource * ));
65
+ void renderResourceUnloadImageDefault (RenderResource * );
66
+ void renderResourceUnloadImageHeapFree (RenderResource * );
67
+
68
+ /*
69
+ RenderObject class, includes a RenderResource and parameters for rendering.
70
+ */
71
+ typedef struct renderObject
72
+ {
73
+ RenderResource * mRenderResource ;
74
+
75
+ int16_t mPrePosX ;
76
+ int16_t mPrePosY ;
77
+ int16_t mPosX ;
78
+ int16_t mPosY ;
79
+ uint16_t mColor ;
80
+ uint8_t mPreVisible ;
81
+ uint8_t mVisible ;
82
+ //float mScale;
83
+
84
+ //Display text (for text object only)
85
+ //uint8_t mText[MAX_TEXT_LENGTH];
86
+
87
+ //next and previous RenderObject
88
+ struct renderObject * nextObj ;
89
+ struct renderObject * prevObj ;
90
+
91
+ //constructor of RenderObject
92
+ void (* new )(struct renderObject * , RenderResource * , int16_t , int16_t , uint8_t );
93
+
94
+ //Sets position
95
+ void (* setPos )(struct renderObject * , int16_t , int16_t );
96
+
97
+ //Sets color (default: WHITE)
98
+ void (* setColor )(struct renderObject * , uint16_t );
99
+
100
+ //Sets visible
101
+ void (* setVisible )(struct renderObject * , uint8_t );
102
+
103
+ //Sets text (for text object only)
104
+ //void (*setText)(struct renderObject*, char[]);
105
+
106
+ //Adds RenderObject to the render list, which is to be rendered.
107
+ void (* add )(struct renderObject * , RenderManager * );
108
+ //Removes RenderObject in the list.
109
+ void (* remove )(struct renderObject * , RenderManager * );
110
+
111
+ //Renders object.
112
+ void (* render )(struct renderObject * , RenderManager * );
113
+ }RenderObject ;
114
+
115
+ //constructor of RenderObject
116
+ void renderObjectNew (RenderObject * , RenderResource * , int16_t , int16_t , uint8_t );
117
+ void renderObjectSetPos (RenderObject * , int16_t , int16_t );
118
+ void renderObjectSetColor (RenderObject * , uint16_t );
119
+ void renderObjectSetVisible (RenderObject * , uint8_t );
120
+ //void renderObjectSetText(RenderObject*, char[]);
121
+ void renderObjectAdd (RenderObject * , RenderManager * );
122
+ void renderObjectRemove (RenderObject * , RenderManager * );
123
+ void renderObjectRender (RenderObject * , RenderManager * );
124
+
125
+ /*
126
+ RenderManager class, manages RenderResource and RenderObject objects.
127
+ */
128
+ typedef struct renderManager
129
+ {
130
+ TFT_t TFT_t ;
131
+ uint16_t * mScreen ;
132
+ uint8_t mRenderResourceCount ;
133
+ uint8_t mRenderObjectCount ;
134
+ void (* new )(struct renderManager * );
135
+
136
+ RenderResource mRenderResources [MAX_OBJECT_COUNT ];
137
+ RenderObject mInitRenderObject ; //a sentinel of the linked list
138
+
139
+ //Finds RenderResource by its ID, returns NULL if not found.
140
+ RenderResource * (* findRenderResourceByID )(struct renderManager * , uint8_t );
141
+ //Finds RenderResource by its name, returns NULL if not found.
142
+ RenderResource * (* findRenderResourceByName )(struct renderManager * , char []);
143
+
144
+ //Adds Image type RenderResource, whose base class is also registered in the ResourceManager.
145
+ void (* addImage )(struct renderManager * , ResourceManager * , char [], uint16_t * , uint16_t , uint16_t );
146
+ void (* addImageByFunction )(struct renderManager * , ResourceManager * , char [], void (RenderResource * , uint16_t * ), uint16_t , uint16_t );
147
+ //Adds Text type RenderResource (aka. font), whose base class is also registered in the ResourceManager.
148
+ //void (*addFont)(struct renderManager*, ResourceManager*, char[]);
149
+
150
+ //Adds RenderObject to the render list, which is to be rendered.
151
+ void (* addObject )(struct renderManager * , RenderObject * );
152
+ //Removes RenderObject in the list.
153
+ void (* removeObject )(struct renderManager * , RenderObject * );
154
+
155
+ void (* copy )(struct renderManager * , RenderObject * , int16_t , int16_t , uint16_t , uint16_t );
156
+ void (* readDown )(struct renderManager * , RenderObject * );
157
+ void (* readUp )(struct renderManager * , RenderObject * );
158
+ void (* readFull )(struct renderManager * , RenderObject * );
159
+
160
+ //Clear the current render list.
161
+ void (* clear )(struct renderManager * );
162
+ //Evaluate the data to be rendered, and send to st7789 buffer.
163
+ void (* reRender )(struct renderManager * , RenderObject * );
164
+
165
+ //Update the screen.
166
+ void (* update )(struct renderManager * );
167
+ //Render all texts in the linked list (IN ORDER).
168
+ //void (*renderAllText)(struct renderManager*);
169
+ //Render all objects in the linked list (IN ORDER).
170
+ //void (*renderAllObject)(struct renderManager*);
171
+ }RenderManager ;
172
+
173
+ //constructor of RenderManager
174
+ void renderManagerNew (RenderManager * );
175
+ RenderResource * renderManagerFindRenderResourceByID (RenderManager * , uint8_t );
176
+ RenderResource * renderManagerFindRenderResourceByName (RenderManager * , char []);
177
+ void renderManagerAddImage (RenderManager * , ResourceManager * , char [], uint16_t * , uint16_t , uint16_t );
178
+ void renderManagerAddImageByFunction (RenderManager * , ResourceManager * , char [], void (RenderResource * , uint16_t * ), uint16_t , uint16_t );
179
+ //void renderManagerAddFont(RenderManager*, ResourceManager*, char[]);
180
+ void renderManagerAddObject (RenderManager * , RenderObject * );
181
+ void renderManagerRemoveObject (RenderManager * , RenderObject * );
182
+
183
+ void renderManagerCopy (RenderManager * , RenderObject * , int16_t , int16_t , uint16_t , uint16_t );
184
+ void renderManagerReadDown (RenderManager * , RenderObject * );
185
+ void renderManagerReadUp (RenderManager * , RenderObject * );
186
+ void renderManagerReadFull (RenderManager * , RenderObject * );
187
+
188
+ void renderManagerClear (RenderManager * );
189
+ void renderManagerReRender (RenderManager * , RenderObject * );
190
+ void renderManagerUpdate (RenderManager * );
191
+ //void renderManagerRenderAllText(RenderManager*);
192
+ //void renderManagerRenderAllObject(RenderManager*);
193
+
194
+ #endif /* _RENDERMANAGER_H_ */
0 commit comments