46 using KeyCallback = void(*)(
char key, uint32_t focused_widget);
50 void init(
const char* title);
58 void setKeyRepeat(uint16_t initial_ms, uint16_t repeat_ms);
62 void setTextSize(uint8_t size) { textSize_ = size > 0 ? size : 1; }
65 void setFontId(uint8_t font_id) { fontId_ = font_id; }
66 void drawText(int16_t x, int16_t y,
const char* text);
67 void drawTextAligned(int16_t x, int16_t y, int16_t w,
const char* text, uint8_t align);
68 void drawRect(int16_t x, int16_t y, int16_t w, int16_t h,
bool filled);
69 void invertRect(int16_t x, int16_t y, int16_t w, int16_t h);
70 void drawHLine(int16_t x, int16_t y, int16_t w);
71 void drawVLine(int16_t x, int16_t y, int16_t h);
72 void commit(
bool full_refresh);
74 bool addSlider(uint32_t
id, int32_t min, int32_t max, int32_t initial, int32_t step);
75 bool addText(uint32_t
id, uint16_t max_len,
const char* initial);
79 bool setValue(uint32_t
id, int32_t value);
80 bool getValue(uint32_t
id, int32_t* out)
const;
81 bool setText(uint32_t
id,
const char* text);
82 int getText(uint32_t
id,
char* out,
size_t cap)
const;
87 void render(
bool partial)
override;
90 void onEnter(
void* context)
override;
93 const char*
getName()
const override {
return "CanvasView"; }
96 enum class CmdType : uint8_t {
Text, TextAligned, Rect, HLine, VLine };
99 CmdType type = CmdType::Text;
108 uint8_t textSize = 1;
110 bool inverted =
false;
120 uint16_t max_len = 0;
121 uint16_t text_len = 0;
123 char t9_last_key = 0;
124 uint8_t t9_press_count = 0;
125 uint32_t t9_last_time = 0;
128 Widget* findWidget(uint32_t
id);
129 const Widget* findWidget(uint32_t
id)
const;
130 Widget* focusedWidget();
131 InputResult dispatchKeyToWidget(Widget& w,
char key);
132 void t9_commit_pending(Widget& w);
133 void t9_apply_key(Widget& w,
char key, uint32_t now);
135 Gdey029T94* gfx()
const;
136 void applyKeypadConfig();
137 uint16_t internText(
const char* text, uint16_t* outLen);
138 void replayDisplayList();
139 void paintText(int16_t x, int16_t y, int16_t w,
const char* text,
140 uint8_t align, uint8_t fontId, uint8_t textSize,
142 int bodyTop()
const {
return headerHeight_; }
143 int bodyBottom()
const;
146 uint8_t widgetCount_ = 0;
147 uint32_t focused_ = 0;
149 const char* footer_ =
nullptr;
155 uint16_t cmdCount_ = 0;
157 uint16_t textArenaUsed_ = 0;
158 bool overflowLogged_ =
false;
160 uint8_t textSize_ = 1;
162 bool textInverted_ =
false;
163 int headerHeight_ = 18;
164 bool needsFullRefresh_ =
true;
166 uint16_t keyRepeatInitialMs_ = 0;
167 uint16_t keyRepeatPeriodMs_ = 0;
168 bool headerDrawnOnce_ =
false;
Generic canvas view exposed to WASM plugins for custom UIs.
void getBodySize(uint16_t *w, uint16_t *h) const
bool removeWidget(uint32_t id)
InputResult onLongPress(char key) override
int getText(uint32_t id, char *out, size_t cap) const
void(*)(uint32_t widget_id, WidgetEvent event) WidgetCallback
void drawText(int16_t x, int16_t y, const char *text)
void(*)(char key) LongPressCallback
void drawHLine(int16_t x, int16_t y, int16_t w)
uint32_t getFocus() const
void init(const char *title)
InputResult onKey(char key) override
void commit(bool full_refresh)
static constexpr uint16_t MAX_CMDS
void setLongPressCallback(LongPressCallback cb)
void onEnter(void *context) override
void setWidgetCallback(WidgetCallback cb)
static constexpr uint8_t MAX_WIDGETS
bool setFocus(uint32_t id)
void setFontId(uint8_t font_id)
Select one of the canonical font ids (see cdc_views/Fonts.h).
bool setValue(uint32_t id, int32_t value)
bool addText(uint32_t id, uint16_t max_len, const char *initial)
bool getValue(uint32_t id, int32_t *out) const
bool addButton(uint32_t id)
bool setText(uint32_t id, const char *text)
static constexpr uint16_t T9_SETTLE_MS
static constexpr uint16_t MAX_TEXT_LEN
void invertRect(int16_t x, int16_t y, int16_t w, int16_t h)
void setKeyRepeat(uint16_t initial_ms, uint16_t repeat_ms)
bool addSlider(uint32_t id, int32_t min, int32_t max, int32_t initial, int32_t step)
void setFooter(const char *hint)
static constexpr uint16_t TEXT_ARENA
void drawTextAligned(int16_t x, int16_t y, int16_t w, const char *text, uint8_t align)
void drawRect(int16_t x, int16_t y, int16_t w, int16_t h, bool filled)
void(*)(char key, uint32_t focused_widget) KeyCallback
void setTextInverted(bool inverted)
const char * getName() const override
void setTextSize(uint8_t size)
void setKeyCallback(KeyCallback cb)
void drawVLine(int16_t x, int16_t y, int16_t h)
Centralized key-code constants for cdc_views.