|
18 | 18 | #define MIN(a, b) (((a) < (b)) ? (a) : (b)) |
19 | 19 | #define MAX(a, b) (((a) > (b)) ? (a) : (b)) |
20 | 20 |
|
| 21 | +#define LOW_BATTERY_ICON_TOP_LEFT_X 10 |
| 22 | +#define LOW_BATTERY_ICON_TOP_LEFT_Y 10 |
| 23 | +#define LOW_BATTERY_ICON_WIDTH 35 |
| 24 | +#define LOW_BATTERY_ICON_HEIGHT 20 |
| 25 | +//#define LOW_BATTERY_FORE_COLOR 65535 |
| 26 | +#define LOW_BATTERY_FORE_COLOR 0xF800 |
| 27 | +#define LOW_BATTERY_BACK_COLOR 0 |
| 28 | + |
| 29 | +/* Battery icon from: https://github.com/martinohanlon/grrl-bat-monitor */ |
| 30 | +static u16 lowBatteryIcon [LOW_BATTERY_ICON_HEIGHT][LOW_BATTERY_ICON_WIDTH] = { |
| 31 | + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
| 32 | + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
| 33 | + {0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0}, |
| 34 | + {0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0}, |
| 35 | + {0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0}, |
| 36 | + {0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0}, |
| 37 | + {0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0}, |
| 38 | + {0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0}, |
| 39 | + {0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0}, |
| 40 | + {0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0}, |
| 41 | + {0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0}, |
| 42 | + {0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0}, |
| 43 | + {0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0}, |
| 44 | + {0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0}, |
| 45 | + {0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0}, |
| 46 | + {0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0}, |
| 47 | + {0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0}, |
| 48 | + {0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0}, |
| 49 | + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
| 50 | + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; |
| 51 | + |
21 | 52 | static u8 monaco_font[] = { |
22 | 53 |
|
23 | 54 | /* |
@@ -2750,3 +2781,26 @@ void DrawText(u16 *framebuffer, int framebufferWidth, |
2750 | 2781 | x += 6; |
2751 | 2782 | } |
2752 | 2783 | } |
| 2784 | + |
| 2785 | +void draw_low_battery(u16 *framebuffer, int framebufferWidth, int framebufferHeight) |
| 2786 | +{ |
| 2787 | + int x_offset = LOW_BATTERY_ICON_TOP_LEFT_X; |
| 2788 | + int y_offset = LOW_BATTERY_ICON_TOP_LEFT_Y; |
| 2789 | + int x, y; |
| 2790 | + |
| 2791 | + /* Sanity check - width */ |
| 2792 | + if (x_offset >= framebufferWidth) |
| 2793 | + x_offset = framebufferWidth-1-LOW_BATTERY_ICON_WIDTH; |
| 2794 | + |
| 2795 | + /* Sanity check - height */ |
| 2796 | + if (y_offset >= framebufferHeight) |
| 2797 | + y_offset = framebufferHeight-1-LOW_BATTERY_ICON_HEIGHT; |
| 2798 | + |
| 2799 | + /* Printing low battery icon */ |
| 2800 | + for (y = 0; y < MIN(LOW_BATTERY_ICON_HEIGHT, framebufferHeight - y_offset); ++y) { |
| 2801 | + for (x = 0; x < MIN(LOW_BATTERY_ICON_WIDTH, framebufferWidth - x_offset); ++x) { |
| 2802 | + if (lowBatteryIcon[y][x]) |
| 2803 | + framebuffer[(y + y_offset) * framebufferWidth + (x + x_offset)] = LOW_BATTERY_FORE_COLOR; |
| 2804 | + } |
| 2805 | + } |
| 2806 | +} |
0 commit comments