ui_controls.c 2.9 KB

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