diff options
Diffstat (limited to 'code/fe310/eos/eve/widget/text.h')
-rw-r--r-- | code/fe310/eos/eve/widget/text.h | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/code/fe310/eos/eve/widget/text.h b/code/fe310/eos/eve/widget/text.h new file mode 100644 index 0000000..d75a075 --- /dev/null +++ b/code/fe310/eos/eve/widget/text.h @@ -0,0 +1,43 @@ +#include <stdint.h> + +#include "widget.h" +#include "screen.h" +#include "font.h" + +typedef struct EVETextCursor { + char on; + uint16_t x; + uint16_t line; + uint16_t ch; +} EVETextCursor; + +typedef struct EVETextWidget { + EVEWidget w; + char *text; + uint16_t text_size; + uint16_t text_len; + uint16_t *line; + uint16_t line_size; + uint16_t line_len; + EVEFont *font; + EVETextCursor cursor1; + EVETextCursor cursor2; + uint16_t line0; + uint8_t tag0; + uint8_t tagN; + struct { + EVETextCursor *cursor; + short dx; + short dl; + char mode; + } track; +} EVETextWidget; + +void eve_textw_init(EVETextWidget *widget, uint16_t x, uint16_t y, uint16_t w, uint16_t h, char *text, uint64_t text_size, uint16_t *line, uint16_t line_size, EVEFont *font); +int eve_textw_touch(EVEWidget *_widget, EVEScreen *screen, uint8_t tag0, int touch_idx); +uint8_t eve_textw_draw(EVEWidget *_widget, EVEScreen *screen, uint8_t tag0, char active); +void eve_textw_putc(void *_w, int c); +int eve_textw_update(EVETextWidget *widget, uint16_t line); +void eve_textw_cursor_update(EVETextWidget *widget, EVETextCursor *cursor); +void eve_textw_cursor_set(EVETextWidget *widget, EVETextCursor *cursor, uint8_t tag, uint16_t x); +void eve_textw_cursor_clear(EVETextCursor *cursor);
\ No newline at end of file |