widget_element_i.h 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. /**
  2. * @file widget_element_i.h
  3. * GUI: internal Widget Element API
  4. */
  5. #pragma once
  6. #include <furi.h>
  7. #include <gui/view.h>
  8. #include <input/input.h>
  9. #include "widget_element.h"
  10. #ifdef __cplusplus
  11. extern "C" {
  12. #endif
  13. typedef struct WidgetElement WidgetElement;
  14. typedef struct Widget Widget;
  15. struct WidgetElement {
  16. // generic draw and input callbacks
  17. void (*draw)(Canvas* canvas, WidgetElement* element);
  18. bool (*input)(InputEvent* event, WidgetElement* element);
  19. // free callback
  20. void (*free)(WidgetElement* element);
  21. // generic model holder
  22. void* model;
  23. FuriMutex* model_mutex;
  24. // pointer to widget that hold our element
  25. Widget* parent;
  26. };
  27. /** Create multi string element */
  28. WidgetElement* widget_element_string_multiline_create(
  29. uint8_t x,
  30. uint8_t y,
  31. Align horizontal,
  32. Align vertical,
  33. Font font,
  34. const char* text);
  35. /** Create string element */
  36. WidgetElement* widget_element_string_create(
  37. uint8_t x,
  38. uint8_t y,
  39. Align horizontal,
  40. Align vertical,
  41. Font font,
  42. const char* text);
  43. /** Create text box element */
  44. WidgetElement* widget_element_text_box_create(
  45. uint8_t x,
  46. uint8_t y,
  47. uint8_t width,
  48. uint8_t height,
  49. Align horizontal,
  50. Align vertical,
  51. const char* text,
  52. bool strip_to_dots);
  53. /** Create button element */
  54. WidgetElement* widget_element_button_create(
  55. GuiButtonType button_type,
  56. const char* text,
  57. ButtonCallback callback,
  58. void* context);
  59. /** Create icon element */
  60. WidgetElement* widget_element_icon_create(uint8_t x, uint8_t y, const Icon* icon);
  61. /** Create frame element */
  62. WidgetElement* widget_element_frame_create(
  63. uint8_t x,
  64. uint8_t y,
  65. uint8_t width,
  66. uint8_t height,
  67. uint8_t radius);
  68. WidgetElement* widget_element_text_scroll_create(
  69. uint8_t x,
  70. uint8_t y,
  71. uint8_t width,
  72. uint8_t height,
  73. const char* text);
  74. #ifdef __cplusplus
  75. }
  76. #endif