mikroSDK Reference Manual
vtft_types.h
Go to the documentation of this file.
1/****************************************************************************
2**
3** Copyright (C) 2024 MikroElektronika d.o.o.
4** Contact: https://www.mikroe.com/contact
5**
6** This file is part of the mikroSDK package
7**
8** Commercial License Usage
9**
10** Licensees holding valid commercial NECTO compilers AI licenses may use this
11** file in accordance with the commercial license agreement provided with the
12** Software or, alternatively, in accordance with the terms contained in
13** a written agreement between you and The MikroElektronika Company.
14** For licensing terms and conditions see
15** https://www.mikroe.com/legal/software-license-agreement.
16** For further information use the contact form at
17** https://www.mikroe.com/contact.
18**
19**
20** GNU Lesser General Public License Usage
21**
22** Alternatively, this file may be used for
23** non-commercial projects under the terms of the GNU Lesser
24** General Public License version 3 as published by the Free Software
25** Foundation: https://www.gnu.org/licenses/lgpl-3.0.html.
26**
27** The above copyright notice and this permission notice shall be
28** included in all copies or substantial portions of the Software.
29**
30** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
31** OF MERCHANTABILITY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
32** TO THE WARRANTIES FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
33** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
34** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
35** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
36** OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
37**
38****************************************************************************/
39
43#ifndef _VTFT_TYPES_H_
44#define _VTFT_TYPES_H_
45
46#include "gl_types.h"
47#include "generic_pointer.h"
48#include "tp.h"
49
50
51
60// Scalar types.
61typedef uint8_t vtft_bool_t;
62typedef uint8_t vtft_byte_t;
63typedef int16_t vtft_index_t;
64typedef gl_int_t vtft_coord_t;
65typedef gl_uint_t vtft_ucoord_t;
66
67// All possible component types.
68typedef enum
69{
70 VTFT_COMPONENT_NONE,
71 VTFT_COMPONENT_BOX,
72 VTFT_COMPONENT_ROUNDED_BOX,
73 VTFT_COMPONENT_CIRCLE,
74 VTFT_COMPONENT_ELLIPSE,
75 VTFT_COMPONENT_LINE,
76 VTFT_COMPONENT_LABEL,
77 VTFT_COMPONENT_BUTTON,
78 VTFT_COMPONENT_ROUNDED_BUTTON,
79 VTFT_COMPONENT_CIRCLE_BUTTON,
80 VTFT_COMPONENT_IMAGE,
81 VTFT_COMPONENT_CHECK_BOX,
82 VTFT_COMPONENT_RADIO_BUTTON,
83 VTFT_COMPONENT_PROGRESS_BAR,
84 VTFT_COMPONENT_COUNT
85}
86vtft_component_type;
87
88typedef vtft_component_type vtft_comp_type_t;
89
90// Events
91
92typedef void (*vtft_event)();
93
94typedef struct
95{
96 vtft_event press_event;
97 vtft_event down_event;
98 vtft_event up_event;
99 vtft_event click_event;
100}
102
103// Color, Pen, Gradient
104
105typedef struct
106{
107 vtft_ucoord_t width;
108 gl_color_t color;
109}
111
112typedef enum
113{
114 VTFT_GRADIENT_NONE,
115 VTFT_GRADIENT_TOP_BOTTOM,
116 VTFT_GRADIENT_BOTTOM_TOP,
117 VTFT_GRADIENT_LEFT_RIGHT,
118 VTFT_GRADIENT_RIGHT_LEFT
119}
120vtft_gradient_style;
121
122typedef struct
123{
124 vtft_bool_t transparent;
125 vtft_gradient_style gradient_style;
126 gl_color_t start_color;
127 gl_color_t end_color;
128}
130
131typedef struct
132{
133 vtft_bool_t transparent;
134 vtft_gradient_style gradient_style;
135 gl_color_t start_color;
136 gl_color_t end_color;
137 gl_color_t press_start_color;
138 gl_color_t press_end_color;
139}
141
142// Text
143
144typedef struct
145{
146 const vtft_byte_t *font_data;
147 gl_color_t color;
148}
150
151typedef struct
152{
153 vtft_byte_t * __generic_ptr caption;
154 vtft_index_t max_length;
155 vtft_font font;
156}
158
159typedef struct
160{
161 const vtft_byte_t * caption; // nije generic jer je const text
162 vtft_index_t max_length;
163 vtft_font font;
164}
166
167typedef enum
168{
169 VTFT_TEXT_ALIGNMENT_LEFT,
170 VTFT_TEXT_ALIGNMENT_CENTER,
171 VTFT_TEXT_ALIGNMENT_RIGHT,
172 VTFT_TEXT_ALIGNMENT_TOP,
173 VTFT_TEXT_ALIGNMENT_MIDDLE,
174 VTFT_TEXT_ALIGNMENT_BOTTOM
175}
176vtft_text_alignment;
177
178// Components
179
180typedef struct
181{
182 vtft_comp_type_t type;
183 vtft_index_t order;
184 vtft_bool_t visible;
185}
187
188
189typedef struct
190{
191 vtft_comp_type_t type;
192 vtft_index_t order;
193 vtft_bool_t visible;
194 vtft_coord_t left;
195 vtft_coord_t top;
196}
198
199
200typedef struct
201{
202 vtft_comp_type_t type;
203 vtft_index_t order;
204 vtft_bool_t visible;
205 vtft_coord_t left;
206 vtft_coord_t top;
207 vtft_bool_t active;
208 vtft_event_set event_set;
209}
211
212typedef struct
213{
214 vtft_comp_type_t type;
215 vtft_index_t order;
216 vtft_bool_t visible;
217 vtft_coord_t left;
218 vtft_coord_t top;
219 vtft_bool_t active;
220 vtft_event_set event_set;
221 vtft_pen pen;
222 vtft_press_gradient press_gradient;
223}
225
226// Basic Components
227
228typedef struct
229{
230 vtft_comp_type_t type;
231 vtft_index_t order;
232 vtft_bool_t visible;
233 vtft_coord_t left;
234 vtft_coord_t top;
235 vtft_bool_t active;
236 vtft_event_set event_set;
237 vtft_pen pen;
238 vtft_press_gradient press_gradient;
239 vtft_ucoord_t width;
240 vtft_ucoord_t height;
241}
243
244typedef struct
245{
246 vtft_comp_type_t type;
247 vtft_index_t order;
248 vtft_bool_t visible;
249 vtft_coord_t left;
250 vtft_coord_t top;
251 vtft_bool_t active;
252 vtft_event_set event_set;
253 vtft_pen pen;
254 vtft_press_gradient press_gradient;
255 vtft_ucoord_t width;
256 vtft_ucoord_t height;
257 vtft_ucoord_t corner_radius;
258}
260
261typedef struct
262{
263 vtft_comp_type_t type;
264 vtft_index_t order;
265 vtft_bool_t visible;
266 vtft_coord_t left;
267 vtft_coord_t top;
268 vtft_bool_t active;
269 vtft_event_set event_set;
270 vtft_pen pen;
271 vtft_press_gradient press_gradient;
272 vtft_ucoord_t radius;
273}
275
276typedef struct
277{
278 vtft_comp_type_t type;
279 vtft_index_t order;
280 vtft_bool_t visible;
281 vtft_coord_t left;
282 vtft_coord_t top;
283 vtft_bool_t active;
284 vtft_event_set event_set;
285 vtft_pen pen;
286 vtft_press_gradient press_gradient;
287 vtft_ucoord_t width;
288 vtft_ucoord_t height;
289}
291
292typedef struct
293{
294 vtft_comp_type_t type;
295 vtft_index_t order;
296 vtft_bool_t visible;
297 vtft_pen pen;
298 vtft_coord_t first_left;
299 vtft_coord_t first_top;
300 vtft_coord_t second_left;
301 vtft_coord_t second_top;
302}
304
305// Common Components
306
307typedef struct
308{
309 vtft_comp_type_t type;
310 vtft_index_t order;
311 vtft_bool_t visible;
312 vtft_coord_t left;
313 vtft_coord_t top;
314 vtft_bool_t active;
315 vtft_event_set event_set;
316 vtft_ucoord_t width;
317 vtft_ucoord_t height;
318 vtft_text text;
319 vtft_bool_t vertical_text;
320}
322
323typedef struct
324{
325 vtft_comp_type_t type;
326 vtft_index_t order;
327 vtft_bool_t visible;
328 vtft_coord_t left;
329 vtft_coord_t top;
330 vtft_bool_t active;
331 vtft_event_set event_set;
332 vtft_pen pen;
333 vtft_press_gradient press_gradient;
334 vtft_ucoord_t width;
335 vtft_ucoord_t height;
336 vtft_text text;
337 vtft_text_alignment text_align;
338 vtft_bool_t vertical_text;
339}
341
342typedef struct
343{
344 vtft_comp_type_t type;
345 vtft_index_t order;
346 vtft_bool_t visible;
347 vtft_coord_t left;
348 vtft_coord_t top;
349 vtft_bool_t active;
350 vtft_event_set event_set;
351 vtft_pen pen;
352 vtft_press_gradient press_gradient;
353 vtft_ucoord_t width;
354 vtft_ucoord_t height;
355 vtft_ucoord_t corner_radius;
356 vtft_text text;
357 vtft_text_alignment text_align;
358 vtft_bool_t vertical_text;
359}
361
362typedef struct
363{
364 vtft_comp_type_t type;
365 vtft_index_t order;
366 vtft_bool_t visible;
367 vtft_coord_t left;
368 vtft_coord_t top;
369 vtft_bool_t active;
370 vtft_event_set event_set;
371 vtft_pen pen;
372 vtft_press_gradient press_gradient;
373 vtft_ucoord_t radius;
374 vtft_text text;
375 vtft_text_alignment text_align;
376 vtft_bool_t vertical_text;
377}
379
380typedef struct
381{
382 vtft_comp_type_t type;
383 vtft_index_t order;
384 vtft_bool_t visible;
385 vtft_coord_t left;
386 vtft_coord_t top;
387 vtft_bool_t active;
388 vtft_event_set event_set;
389 vtft_ucoord_t width;
390 vtft_ucoord_t height;
391 const vtft_byte_t *picture_data;
392 uint32_t ratio;
393}
395
396typedef struct
397{
398 vtft_comp_type_t type;
399 vtft_index_t order;
400 vtft_bool_t visible;
401 vtft_coord_t left;
402 vtft_coord_t top;
403 vtft_bool_t active;
404 vtft_event_set event_set;
405 vtft_pen pen;
406 vtft_press_gradient press_gradient;
407 vtft_ucoord_t width;
408 vtft_ucoord_t height;
409 vtft_text text;
410 vtft_text_alignment text_align;
411 vtft_bool_t checked;
412}
414
415typedef struct
416{
417 vtft_comp_type_t type;
418 vtft_index_t order;
419 vtft_bool_t visible;
420 vtft_coord_t left;
421 vtft_coord_t top;
422 vtft_bool_t active;
423 vtft_event_set event_set;
424 vtft_pen pen;
425 vtft_press_gradient press_gradient;
426 vtft_ucoord_t width;
427 vtft_ucoord_t height;
428 vtft_text text;
429 vtft_text_alignment text_align;
430 vtft_bool_t checked;
431 vtft_ucoord_t corner_radius;
432}
434
435typedef struct
436{
437 vtft_comp_type_t type;
438 vtft_index_t order;
439 vtft_bool_t visible;
440 vtft_coord_t left;
441 vtft_coord_t top;
442 vtft_bool_t active;
443 vtft_event_set event_set;
444 vtft_pen pen;
445 vtft_press_gradient press_gradient;
446 vtft_ucoord_t width;
447 vtft_ucoord_t height;
448 vtft_text text;
449 vtft_text_alignment text_align;
450 vtft_bool_t checked;
451 gl_color_t back_color;
452}
454
455typedef struct
456{
457 vtft_comp_type_t type;
458 vtft_index_t order;
459 vtft_bool_t visible;
460 vtft_coord_t left;
461 vtft_coord_t top;
462 vtft_ucoord_t width;
463 vtft_ucoord_t height;
464 vtft_ucoord_t corner_radius;
465 vtft_byte_t *caption;
466 vtft_font font;
467 vtft_pen pen;
468 vtft_gradient gradient;
469 gl_color_t back_color;
470 uint32_t position;
471 uint32_t prev_pos;
472 uint32_t min_position;
473 uint32_t max_position;
474 vtft_bool_t smooth;
475 vtft_bool_t show_percent;
476 vtft_bool_t show_position;
477}
479
480// Screen
481
482typedef struct
483{
484 vtft_ucoord_t width;
485 vtft_ucoord_t height;
486 gl_color_t color;
487
488 vtft_event press_event;
489 vtft_event down_event;
490 vtft_event up_event;
491
492 vtft_component *__generic_ptr * __generic_ptr components;
493 vtft_index_t component_count;
494}
496
497// Drawing Functions
498// The function signature for drawing a component.
499typedef void (*vtft_draw_handle)(struct vtft_s *instance, vtft_component * __generic_ptr component);
500
501// VTFT Instance
502
503typedef struct vtft_s
504{
505 // The TP instance.
506 tp_t * tp_instance;
507
508 // The draw handles for all the various components.
509 vtft_draw_handle draw_handles[VTFT_COMPONENT_COUNT];
510
511 // The currently displayed screen.
512 vtft_screen *current_screen;
513
514 // Pen down indicator.
515 vtft_bool_t pen_down;
516 // Indicates that the screen has been changed while the screen was pressed.
517 vtft_bool_t screen_changed;
518
519 // The component currently under the cursor.
520 vtft_active_component * __generic_ptr current_active_component;
521
522 // The currently pressed component.
523 vtft_active_component * __generic_ptr pressed_component;
524}
525vtft_t;
526
527 // vtftgroup
528 // apigroup
529
530#endif // _VTFT_TYPES_H_
531// ------------------------------------------------------------------------- END
uint16_t gl_color_t
Definition gl_colors.h:56
Declaration of types for Graphic Library.
int16_t gl_int_t
Definition gl_types.h:92
uint16_t gl_uint_t
Definition gl_types.h:93
Touch Panel Context Object.
Definition tp.h:224
Definition vtft_types.h:397
Definition vtft_types.h:201
Definition vtft_types.h:229
Definition vtft_types.h:324
Definition vtft_types.h:160
Definition vtft_types.h:416
Definition vtft_types.h:363
Definition vtft_types.h:262
Definition vtft_types.h:213
Definition vtft_types.h:181
Definition vtft_types.h:277
Definition vtft_types.h:95
Definition vtft_types.h:145
Definition vtft_types.h:123
Definition vtft_types.h:381
Definition vtft_types.h:308
Definition vtft_types.h:293
Definition vtft_types.h:106
Definition vtft_types.h:190
Definition vtft_types.h:132
Definition vtft_types.h:456
Definition vtft_types.h:436
Definition vtft_types.h:245
Definition vtft_types.h:343
Definition vtft_types.h:504
Definition vtft_types.h:483
Definition vtft_types.h:152