~ruther/CTU-FEE-B0B35APO-Semestral-project

ref: 42bce0277ee778e4dbf452779f512152c630619e CTU-FEE-B0B35APO-Semestral-project/lib-gui/include/renderer.h -rw-r--r-- 2.8 KiB
42bce027 — František Boháček docs: add code documentation 4 years ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#ifndef __RENDERER_H__
#define __RENDERER_H__

#include "gui.h"
#include "display_utils.h"
#include "font.h"

struct renderer_t {
  display_t *display;

  uint16_t translate_x;
  uint16_t translate_y;

  uint16_t render_area_width;
  uint16_t render_area_height;
};

/**
 * @brief Create renderer for given display
 * 
 * @param display 
 * @return renderer_t 
 */
renderer_t renderer_create(display_t *display);

/**
 * @brief Clear display data
 * 
 * @param renderer 
 */
void renderer_clear(renderer_t *renderer);

/**
 * @brief Render data to display
 * 
 * @param renderer 
 */
void renderer_render(renderer_t *renderer);

/**
 * @brief Render string on display char by char
 * 
 * @param renderer 
 * @param x begin x coord
 * @param y begin y coord
 * @param length length of the text to be rendered / or the whole text if 0 or greater than text length 
 * @param font 
 * @param text 
 * @param color 
 * @return size2d_t 
 */
size2d_t renderer_write_string(renderer_t *renderer, uint16_t x, uint16_t y,
                               uint16_t length, font_t *font, char *text, display_pixel_t color);

/**
 * @brief Render render one character
 * 
 * @param renderer 
 * @param x begin x coord
 * @param y begin y coord
 * @param font 
 * @param c character
 * @param color 
 * @return size2d_t 
 */
size2d_t renderer_write_char(renderer_t *renderer, uint16_t x, uint16_t y,
                             font_t *font, char c, display_pixel_t color);

/**
 * @brief Render filled rectangle
 * 
 * @param renderer 
 * @param x base x coord
 * @param y base y coord
 * @param width width of the rectangle
 * @param height height of the rectangle
 * @param color 
 */
void renderer_render_rectangle(renderer_t *renderer, uint16_t x, uint16_t y,
                               uint16_t width, uint16_t height, display_pixel_t color);

/**
 * @brief Render rectangle border
 * 
 * @param renderer 
 * @param x base x coord
 * @param y base y coord
 * @param width width of the rectangle
 * @param height height of the rectangle
 * @param color 
 */
void renderer_render_border(renderer_t *renderer, uint16_t x, uint16_t y,
                            uint16_t width, uint16_t height, display_pixel_t color);

/**
 * @brief Translate coordinate  system of the renderer
 * 
 * @param renderer 
 * @param x translate x coord
 * @param y translate y coord
 */
void renderer_translate(renderer_t *renderer, uint16_t x, uint16_t y);

/**
 * @brief Clear translation
 * 
 * @param renderer 
 */
void renderer_clear_translate(renderer_t *renderer);

/**
 * @brief Set draw area size so nothing is drawn outside
 * 
 * @param renderer 
 * @param width 
 * @param height 
 */
void renderer_set_draw_area(renderer_t *renderer, uint16_t width, uint16_t height);

/**
 * @brief Reset draw area
 * 
 * @param renderer 
 */
void renderer_reset_draw_area(renderer_t *renderer);

#endif // __RENDERER_H__