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

ref: 286b8dca2f346b213da3aa2116787e340dba14e0 CTU-FEE-B0B35APO-Semestral-project/lib-gui/include/renderer.h -rw-r--r-- 2.9 KiB
286b8dca — František Boháček feat: support unicode, modify font types so no big changes are needed 3 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
128
129
130
131
132
#ifndef __RENDERER_H__
#define __RENDERER_H__

#include "display_utils.h"
#include "font.h"
#include "gui.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, uint32_t 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__
Do not follow this link