Ersa Wearable Platform
Embedded smartwatch firmware and application framework
Loading...
Searching...
No Matches
canvas.h
Go to the documentation of this file.
1#pragma once
2
3#include <stdint.h>
4#include <stddef.h>
5
6#if __cplusplus >= 201703L
7#include <string_view>
8#endif
9
10namespace ersa {
11namespace ui {
12
14enum class Color : uint8_t {
15 Black = 0,
16 White = 1,
17 Inverse = 2
18};
19
28class Canvas {
29public:
31 virtual ~Canvas() = default;
32
34 virtual int width() const = 0;
36 virtual int height() const = 0;
37
39 virtual void clear(Color color = Color::Black) = 0;
41 virtual void drawPixel(int x, int y, Color color = Color::White) = 0;
43 virtual void drawLine(int x1, int y1, int x2, int y2, Color color = Color::White) = 0;
45 virtual void drawRect(int x, int y, int w, int h, Color color = Color::White) = 0;
47 virtual void fillRect(int x, int y, int w, int h, Color color = Color::White) = 0;
49 virtual void drawText(int x, int y, const char* text, Color color = Color::White) = 0;
50
51#if __cplusplus >= 201703L
57 virtual void drawText(int x, int y, std::string_view text, Color color = Color::White) {
58 // string_view may not be null-terminated; draw up to length
59 char buf[128];
60 size_t len = text.length() < sizeof(buf) - 1 ? text.length() : sizeof(buf) - 1;
61 for (size_t i = 0; i < len; ++i) buf[i] = text[i];
62 buf[len] = '\0';
63 drawText(x, y, buf, color);
64 }
65#endif
66};
67
68} // namespace ui
69} // namespace ersa
Definition canvas.h:28
virtual void drawRect(int x, int y, int w, int h, Color color=Color::White)=0
virtual void drawPixel(int x, int y, Color color=Color::White)=0
virtual ~Canvas()=default
virtual void drawText(int x, int y, const char *text, Color color=Color::White)=0
virtual int width() const =0
virtual void fillRect(int x, int y, int w, int h, Color color=Color::White)=0
virtual void clear(Color color=Color::Black)=0
virtual void drawLine(int x1, int y1, int x2, int y2, Color color=Color::White)=0
virtual int height() const =0
Color
Definition canvas.h:14
Definition application.h:10