ArtemLevshykov

Drawing function

Aug 9th, 2025
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.54 KB | Source Code | 0 0
  1. /// Menu drawing function
  2. void UserInterface::draw_menu() {
  3.     // Preparing
  4.     update_oled = true;
  5.     oled.clear();
  6.     oled.setScale(1);
  7.  
  8.     // Top line
  9.     oled.setCursor(0, 0);
  10.     oled.print("10:30   OK!");
  11.     // Это 1
  12.     oled.drawBitmap(120, 1, bitmap::submenu_arrow_6x5, 6, 5, true);
  13.     oled.drawBitmap(110, 1, bitmap::submenu_arrow_6x5, 6, 5, false);
  14.  
  15.     // Menu title
  16.     oled.setCursorXY(2, 12);
  17.     oled.print(current_menu->title);
  18.  
  19.     // Dividing lines
  20.     oled.fastLineH(9, 0, 127);
  21.     oled.fastLineH(21, 0, 127);
  22.  
  23.     // Menu body
  24.     menu_view_start = get_menu_offset();
  25.     const byte menu_view_end = min<byte>(menu_view_start + menu_visible_items, current_menu->itemsCount);
  26.     for (byte i = menu_view_start; i < menu_view_end; i++) {
  27.         const byte row = 3 + (i - menu_view_start);
  28.         const byte yPos = row * 8;
  29.         const byte xPos = 2;
  30.  
  31.         bool invert;
  32.         if (i == menuPointer) {
  33.             oled.rect(0, yPos - 1, 128, yPos + 7);
  34.             invert = true;
  35.         } else {
  36.             invert = false;
  37.         }
  38.  
  39.         oled.invertText(invert);
  40.         oled.setCursor(xPos, row);
  41.         oled.print(current_menu->items[i].name);
  42.  
  43.         if (current_menu->items[i].type == MenuItemType::SUBMENU) {
  44.             // oled.setCursor(120, row);
  45.             // oled.print(">");
  46.             oled.drawBitmap(120, yPos + 1, bitmap::submenu_arrow_6x5, 6, 5, invert); // А вот 2
  47.         }
  48.     }
  49.  
  50.     oled.drawBitmap(100, 40, bitmap::submenu_arrow_6x5, 6, 5, false); // А это 3
  51. }
Advertisement
Add Comment
Please, Sign In to add comment