diff options
author | Benji Dial <benji6283@gmail.com> | 2021-03-07 12:16:12 -0500 |
---|---|---|
committer | Benji Dial <benji6283@gmail.com> | 2021-03-07 12:16:12 -0500 |
commit | 348e1876d25320e6480f2795c9388b2bc080c743 (patch) | |
tree | 29fef9fa2a85ecd9565ea4a3cf78dba15c960750 /src/user/include/cxx/raleigh/w | |
parent | 76e39eac8cee2175ec62a191f7c91ca53857e80c (diff) | |
download | portland-os-348e1876d25320e6480f2795c9388b2bc080c743.tar.gz |
text entry, with cursor, but no keyboard
Diffstat (limited to 'src/user/include/cxx/raleigh/w')
-rw-r--r-- | src/user/include/cxx/raleigh/w/entry.h | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/user/include/cxx/raleigh/w/entry.h b/src/user/include/cxx/raleigh/w/entry.h new file mode 100644 index 0000000..7ea2973 --- /dev/null +++ b/src/user/include/cxx/raleigh/w/entry.h @@ -0,0 +1,52 @@ +#ifndef RALEIGH_W_ENTRY_H +#define RALEIGH_W_ENTRY_H + +#include <raleigh/widget.h> +#include <libfont/fonts.h> + +namespace raleigh { + class entry : public widget { + public: + //default_text's data is copied, so it's okay if it changes or if the memory is freed + entry(uint32_t rows, uint32_t cols, const char *default_text="", + const char *font="fixed-10", _pixel_t bg=RGB(ff, ff, ff), + _pixel_t fg=RGB(00, 00, 00), _pixel_t border_color=RGB(00, 00, 00)); + + void notify_window_change(); + void paint(_pixel_t *pixbuf, uint32_t pitch); + bool try_handle_click(coord window_coords, enum mouse_packet::mouse_button click_type, bool up); + void notify_has_opaque_parent(widget *parent); + private: + uint32_t rows; + uint32_t cols; + _pixel_t bg; + _pixel_t fg; + _pixel_t border_color; + + struct font_info *fi; + char *data; + //line_indices[end_y + 1] == end_d + uint32_t *line_indices; + + uint32_t cur_y; + uint32_t cur_x; + uint32_t cur_d; + + //the row of the last character + uint32_t end_y; + //the column after the last character + uint32_t end_x; + //the index of the null terminator + uint32_t end_d; + + bool first_paint; + bool text_changed_since_last_paint; + uint32_t cur_y_last_paint; + uint32_t cur_x_last_paint; + uint32_t cur_d_last_paint; + + void paint_text(_pixel_t *pixbuf, uint32_t pitch); + }; +} + +#endif
\ No newline at end of file |