ui_controls.c 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. #include "ui_controls.h"
  2. #include "constants.h"
  3. #include "icons.h"
  4. #define TEXT_BOX_HEIGHT 13
  5. #define TEXT_BOX_MARGIN 4
  6. void ui_control_text_box_render(Canvas* const canvas, int16_t y, const char* text, bool is_selected) {
  7. if(y < -TEXT_BOX_HEIGHT) {
  8. return;
  9. }
  10. if(is_selected) {
  11. canvas_draw_rframe(
  12. canvas,
  13. TEXT_BOX_MARGIN,
  14. TEXT_BOX_MARGIN + y,
  15. SCREEN_WIDTH - TEXT_BOX_MARGIN - TEXT_BOX_MARGIN,
  16. TEXT_BOX_HEIGHT,
  17. 0);
  18. canvas_draw_rframe(
  19. canvas,
  20. TEXT_BOX_MARGIN - 1,
  21. TEXT_BOX_MARGIN + y - 1,
  22. SCREEN_WIDTH - TEXT_BOX_MARGIN - TEXT_BOX_MARGIN + 2,
  23. TEXT_BOX_HEIGHT + 2,
  24. 1);
  25. } else {
  26. canvas_draw_rframe(
  27. canvas,
  28. TEXT_BOX_MARGIN,
  29. TEXT_BOX_MARGIN + y,
  30. SCREEN_WIDTH - TEXT_BOX_MARGIN - TEXT_BOX_MARGIN,
  31. TEXT_BOX_HEIGHT,
  32. 1);
  33. }
  34. canvas_draw_str_aligned(
  35. canvas, TEXT_BOX_MARGIN + 2, TEXT_BOX_MARGIN + 3 + y, AlignLeft, AlignTop, text);
  36. }
  37. void ui_control_select_render(
  38. Canvas* const canvas,
  39. int16_t x,
  40. int16_t y,
  41. uint8_t width,
  42. const char* text,
  43. bool is_selected) {
  44. if(y < -TEXT_BOX_HEIGHT) {
  45. return;
  46. }
  47. if(is_selected) {
  48. canvas_draw_rframe(
  49. canvas,
  50. x + TEXT_BOX_MARGIN,
  51. TEXT_BOX_MARGIN + y,
  52. width - TEXT_BOX_MARGIN - TEXT_BOX_MARGIN,
  53. TEXT_BOX_HEIGHT,
  54. 0);
  55. canvas_draw_rframe(
  56. canvas,
  57. x + TEXT_BOX_MARGIN - 1,
  58. TEXT_BOX_MARGIN + y - 1,
  59. width - TEXT_BOX_MARGIN - TEXT_BOX_MARGIN + 2,
  60. TEXT_BOX_HEIGHT + 2,
  61. 1);
  62. } else {
  63. canvas_draw_rframe(
  64. canvas,
  65. x + TEXT_BOX_MARGIN,
  66. TEXT_BOX_MARGIN + y,
  67. width - TEXT_BOX_MARGIN - TEXT_BOX_MARGIN,
  68. TEXT_BOX_HEIGHT,
  69. 1);
  70. }
  71. canvas_draw_str_aligned(
  72. canvas, x + (width >> 1), TEXT_BOX_MARGIN + 3 + y, AlignCenter, AlignTop, text);
  73. canvas_draw_xbm(
  74. canvas,
  75. x + TEXT_BOX_MARGIN + 2,
  76. TEXT_BOX_MARGIN + 2 + y,
  77. ICON_ARROW_LEFT_8x9_WIDTH,
  78. ICON_ARROW_LEFT_8x9_HEIGHT,
  79. &ICON_ARROW_LEFT_8x9[0]);
  80. canvas_draw_xbm(
  81. canvas,
  82. x + width - TEXT_BOX_MARGIN - 10,
  83. TEXT_BOX_MARGIN + 2 + y,
  84. ICON_ARROW_RIGHT_8x9_WIDTH,
  85. ICON_ARROW_RIGHT_8x9_HEIGHT,
  86. &ICON_ARROW_RIGHT_8x9[0]);
  87. }
  88. void ui_control_button_render(
  89. Canvas* const canvas,
  90. int16_t x,
  91. int16_t y,
  92. uint8_t width,
  93. uint8_t height,
  94. const char* text,
  95. bool is_selected) {
  96. if(y < -height) {
  97. return;
  98. }
  99. if(is_selected) {
  100. canvas_draw_rbox(canvas, x, y, width, height, 1);
  101. canvas_set_color(canvas, ColorWhite);
  102. } else {
  103. canvas_draw_rframe(canvas, x, y, width, height, 1);
  104. }
  105. canvas_draw_str_aligned(
  106. canvas, x + (width >> 1), y + (height >> 1) + 1, AlignCenter, AlignCenter, text);
  107. if(is_selected) {
  108. canvas_set_color(canvas, ColorBlack);
  109. }
  110. }