Loading...
Searching...
No Matches
canvas.h
Go to the documentation of this file.
1
6#pragma once
7
8#include <stdint.h>
9#include <stddef.h>
10#include <gui/icon_animation.h>
11#include <gui/icon.h>
12
13#ifdef __cplusplus
14extern "C" {
15#endif
16
18typedef enum {
19 ColorWhite = 0x00,
20 ColorBlack = 0x01,
21 ColorXOR = 0x02,
22} Color;
23
25typedef enum {
26 FontPrimary,
27 FontSecondary,
28 FontKeyboard,
29 FontBigNumbers,
30
31 // Keep last for fonts number calculation
32 FontTotalNumber,
33} Font;
34
36typedef enum {
37 AlignLeft,
38 AlignRight,
39 AlignTop,
40 AlignBottom,
41 AlignCenter,
42} Align;
43
45typedef enum {
46 CanvasOrientationHorizontal,
47 CanvasOrientationHorizontalFlip,
48 CanvasOrientationVertical,
49 CanvasOrientationVerticalFlip,
51
53typedef enum {
54 CanvasDirectionLeftToRight,
55 CanvasDirectionTopToBottom,
56 CanvasDirectionRightToLeft,
57 CanvasDirectionBottomToTop,
59
61typedef struct {
62 uint8_t leading_default;
63 uint8_t leading_min;
64 uint8_t height;
65 uint8_t descender;
67
69typedef enum {
70 IconFlipNone,
71 IconFlipHorizontal,
72 IconFlipVertical,
73 IconFlipBoth,
74} IconFlip;
75
77typedef enum {
78 IconRotation0,
79 IconRotation90,
80 IconRotation180,
81 IconRotation270,
83
85typedef struct Canvas Canvas;
86
93uint8_t* canvas_get_buffer(Canvas* canvas);
94
101size_t canvas_get_buffer_size(const Canvas* canvas);
102
107void canvas_reset(Canvas* canvas);
108
113void canvas_commit(Canvas* canvas);
114
121size_t canvas_width(const Canvas* canvas);
122
129size_t canvas_height(const Canvas* canvas);
130
137size_t canvas_current_font_height(const Canvas* canvas);
138
146const CanvasFontParameters* canvas_get_font_params(const Canvas* canvas, Font font);
147
152void canvas_clear(Canvas* canvas);
153
159void canvas_set_color(Canvas* canvas, Color color);
160
167
172void canvas_invert_color(Canvas* canvas);
173
179void canvas_set_font(Canvas* canvas, Font font);
180
186void canvas_set_custom_u8g2_font(Canvas* canvas, const uint8_t* font);
187
195void canvas_draw_str(Canvas* canvas, int32_t x, int32_t y, const char* str);
196
210 Canvas* canvas,
211 int32_t x,
212 int32_t y,
213 Align horizontal,
214 Align vertical,
215 const char* str);
216
224uint16_t canvas_string_width(Canvas* canvas, const char* str);
225
233size_t canvas_glyph_width(Canvas* canvas, uint16_t symbol);
234
245 Canvas* canvas,
246 int32_t x,
247 int32_t y,
248 size_t width,
249 size_t height,
250 const uint8_t* compressed_bitmap_data);
251
261 Canvas* canvas,
262 int32_t x,
263 int32_t y,
264 const Icon* icon,
265 IconRotation rotation);
266
275 Canvas* canvas,
276 int32_t x,
277 int32_t y,
278 IconAnimation* icon_animation);
279
287void canvas_draw_icon(Canvas* canvas, int32_t x, int32_t y, const Icon* icon);
288
298void canvas_draw_xbm(
299 Canvas* canvas,
300 int32_t x,
301 int32_t y,
302 size_t width,
303 size_t height,
304 const uint8_t* bitmap);
305
317 Canvas* canvas,
318 int32_t x,
319 int32_t y,
320 size_t width,
321 size_t height,
322 IconRotation rotation,
323 const uint8_t* bitmap_data);
324
331void canvas_draw_dot(Canvas* canvas, int32_t x, int32_t y);
332
341void canvas_draw_box(Canvas* canvas, int32_t x, int32_t y, size_t width, size_t height);
342
351void canvas_draw_frame(Canvas* canvas, int32_t x, int32_t y, size_t width, size_t height);
352
361void canvas_draw_line(Canvas* canvas, int32_t x1, int32_t y1, int32_t x2, int32_t y2);
362
370void canvas_draw_circle(Canvas* canvas, int32_t x, int32_t y, size_t radius);
371
379void canvas_draw_disc(Canvas* canvas, int32_t x, int32_t y, size_t radius);
380
392 Canvas* canvas,
393 int32_t x,
394 int32_t y,
395 size_t base,
396 size_t height,
397 CanvasDirection dir);
398
406void canvas_draw_glyph(Canvas* canvas, int32_t x, int32_t y, uint16_t ch);
407
413void canvas_set_bitmap_mode(Canvas* canvas, bool alpha);
414
425 Canvas* canvas,
426 int32_t x,
427 int32_t y,
428 size_t width,
429 size_t height,
430 size_t radius);
431
442 Canvas* canvas,
443 int32_t x,
444 int32_t y,
445 size_t width,
446 size_t height,
447 size_t radius);
448
449#ifdef __cplusplus
450}
451#endif
void canvas_draw_xbm_ex(Canvas *canvas, int32_t x, int32_t y, size_t width, size_t height, IconRotation rotation, const uint8_t *bitmap_data)
Draw rotated XBM bitmap.
Definition canvas.c:519
void canvas_draw_triangle(Canvas *canvas, int32_t x, int32_t y, size_t base, size_t height, CanvasDirection dir)
Draw triangle with given base and height lengths and their intersection coordinate.
Definition canvas.c:481
void canvas_draw_str(Canvas *canvas, int32_t x, int32_t y, const char *str)
Draw string at position of baseline defined by x, y.
Definition canvas.c:178
void canvas_draw_dot(Canvas *canvas, int32_t x, int32_t y)
Draw dot at x,y.
Definition canvas.c:411
IconFlip
Icon flip.
Definition canvas.h:69
void canvas_set_font(Canvas *canvas, Font font)
Set drawing font.
Definition canvas.c:156
void canvas_draw_disc(Canvas *canvas, int32_t x, int32_t y, size_t radius)
Draw disc at x,y with radius r.
Definition canvas.c:474
const CanvasFontParameters * canvas_get_font_params(const Canvas *canvas, Font font)
Get font parameters.
Definition canvas.c:131
void canvas_draw_box(Canvas *canvas, int32_t x, int32_t y, size_t width, size_t height)
Draw box of width, height at x,y.
Definition canvas.c:418
CanvasDirection
Font Direction.
Definition canvas.h:53
void canvas_draw_xbm(Canvas *canvas, int32_t x, int32_t y, size_t width, size_t height, const uint8_t *bitmap)
Draw XBM bitmap.
Definition canvas.c:508
void canvas_draw_rbox(Canvas *canvas, int32_t x, int32_t y, size_t width, size_t height, size_t radius)
Draw rounded-corner box of width, height at x,y, with round value raduis.
Definition canvas.c:425
void canvas_set_bitmap_mode(Canvas *canvas, bool alpha)
Set transparency mode.
Definition canvas.c:540
Font
Fonts enumeration.
Definition canvas.h:25
void canvas_draw_line(Canvas *canvas, int32_t x1, int32_t y1, int32_t x2, int32_t y2)
Draw line from x1,y1 to x2,y2.
Definition canvas.c:458
void canvas_draw_icon_ex(Canvas *canvas, int32_t x, int32_t y, const Icon *icon, IconRotation rotation)
Draw icon at position defined by x,y with rotation and flip.
Definition canvas.c:382
void canvas_set_color(Canvas *canvas, Color color)
Set drawing color.
Definition canvas.c:142
void canvas_draw_circle(Canvas *canvas, int32_t x, int32_t y, size_t radius)
Draw circle at x,y with radius r.
Definition canvas.c:467
size_t canvas_width(const Canvas *canvas)
Get Canvas width.
Definition canvas.c:110
void canvas_invert_color(Canvas *canvas)
Invert drawing color.
Definition canvas.c:152
void canvas_draw_glyph(Canvas *canvas, int32_t x, int32_t y, uint16_t ch)
Draw glyph.
Definition canvas.c:533
size_t canvas_get_buffer_size(const Canvas *canvas)
Get canvas buffer size.
Definition canvas.c:92
void canvas_commit(Canvas *canvas)
Commit canvas.
Definition canvas.c:70
CanvasOrientation
Canvas Orientation.
Definition canvas.h:45
void canvas_reset(Canvas *canvas)
Reset canvas drawing tools configuration.
Definition canvas.c:60
size_t canvas_glyph_width(Canvas *canvas, uint16_t symbol)
Get glyph width.
Definition canvas.c:235
void canvas_draw_str_aligned(Canvas *canvas, int32_t x, int32_t y, Align horizontal, Align vertical, const char *str)
Draw aligned string defined by x, y.
Definition canvas.c:186
void canvas_draw_icon_animation(Canvas *canvas, int32_t x, int32_t y, IconAnimation *icon_animation)
Draw animation at position defined by x,y.
Definition canvas.c:256
Align
Alignment enumeration.
Definition canvas.h:36
IconRotation
Icon rotation.
Definition canvas.h:77
void canvas_draw_frame(Canvas *canvas, int32_t x, int32_t y, size_t width, size_t height)
Draw frame of width, height at x,y.
Definition canvas.c:438
Color
Color enumeration.
Definition canvas.h:18
void canvas_clear(Canvas *canvas)
Clear canvas.
Definition canvas.c:137
void canvas_set_custom_u8g2_font(Canvas *canvas, const uint8_t *font)
Set custom drawing font.
Definition canvas.c:172
void canvas_set_font_direction(Canvas *canvas, CanvasDirection dir)
Set font swap Argument String Rotation Description.
Definition canvas.c:147
uint16_t canvas_string_width(Canvas *canvas, const char *str)
Get string width.
Definition canvas.c:229
size_t canvas_current_font_height(const Canvas *canvas)
Get current font height.
Definition canvas.c:120
void canvas_draw_icon(Canvas *canvas, int32_t x, int32_t y, const Icon *icon)
Draw icon at position defined by x,y.
Definition canvas.c:399
void canvas_draw_bitmap(Canvas *canvas, int32_t x, int32_t y, size_t width, size_t height, const uint8_t *compressed_bitmap_data)
Draw bitmap picture at position defined by x,y.
Definition canvas.c:240
void canvas_draw_rframe(Canvas *canvas, int32_t x, int32_t y, size_t width, size_t height, size_t radius)
Draw rounded-corner frame of width, height at x,y, with round value radius.
Definition canvas.c:445
uint8_t * canvas_get_buffer(Canvas *canvas)
Get canvas buffer.
Definition canvas.c:87
size_t canvas_height(const Canvas *canvas)
Get Canvas height.
Definition canvas.c:115
GUI: Icon API.
GUI: IconAnimation API.
Font parameters.
Definition canvas.h:61
Canvas structure.
Definition canvas_i.h:40
Definition icon_animation_i.h:12
Definition icon_i.h:9