/** * Loading */ #include #include #include "ssd1306.h" #include "user_interface.h" #include "framebuffer.h" void show_loading_screen(uint8_t progress_percent, bool clear) { // HACKS - GUI dev here fb_clear(); fb_blit(); const uint8_t icon[14] = { 0b11000011, 0b01100110, 0b01111110, 0b00111100, 0b00011000, 0b00111100, 0b01111110, 0b11111111, 0b11111111, 0b11111011, 0b11111111, 0b01111110, 0b00111100, 0b00011000, }; #define ZIR_W 12 #define ZIR_H 3 const uint8_t zirafa[ZIR_H * ZIR_W] = { // levo 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, // vrsek 0b00011000, 0b00011111, 0b11111000, 0b00011111, 0b00001000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b11111111, 0b00000000, 0b00000000, 0b00010000, 0b00001000, 0b11111000, 0b00011000, 0b11111000, // spodek 0b00011000, 0b00011000, 0b00011000, 0b11111000, 0b00011111, 0b11111000, 0b00000000, }; int a = 10; int b = 40; for (;;) { fb_bitmap(a, 0, ZIR_W, ZIR_H*8, zirafa, 0); fb_bitmap(b, 16, 14, 8, icon, 0); a++; b++; if(a>127) { a = 0; } if(b>127) { b = 0; } fb_bitmap(a, 0, ZIR_W, ZIR_H*8, zirafa, 1); fb_bitmap(b, 16, 14, 8, icon, 1); fb_blit(); _delay_ms(100); } for(;;) {} // #if 0 int a = 0, b = 0, ai = 1, bi = 1; int c = 50, d = 5, ci = -1, di = 1; int e = 70, f = 10, ei = 1, fi = -1; int w=15; int W=20; for(;;){ fb_clear(); fb_rect(a, b, w, w, 1); fb_rect(c, d, w, w, 1); fb_rect(e, f, W, W, 1); fb_rect(a+1, b+1, w-2, w-2, 0); fb_rect(c+1, d+1, w-2, w-2, 0); fb_rect(e+1, f+1, W-2, W-2, 0); a += ai; if (a == FBW-1-w) ai = -1; if (a == 0) ai = 1; b += bi; if (b == FBH-1-w) bi = -1; if (b == 0) bi = 1; c += ci; if (c == FBW-1-w) ci = -1; if (c == 0) ci = 1; d += di; if (d == FBH-1-w) di = -1; if (d == 0) di = 1; e += ei; if (e == FBW-1-W) ei = -1; if (e == 0) ei = 1; f += fi; if (f == FBH-1-W) fi = -1; if (f == 0) fi = 1; fb_blit(); _delay_ms(5); } #endif if (clear) { ssd1306_clearScreen(); } // bar in a box #define hei 20 #define wid DISPLAY_W #define thic 2 #define inpad 3 #define ofsx ((DISPLAY_W - wid)/2) #define ofsy ((DISPLAY_H - hei)/2) const uint8_t rects[4][4] = { // top { 0, 0, wid - 1, thic - 1 }, // left { 0, thic, thic - 1, hei - thic - 1 }, // right { wid - thic, thic, wid - 1, hei - thic - 1 }, // bot { 0, hei - thic, wid - 1, hei - 1 }, }; for (int i = 0; i < 4; i++) { ssd1306_fillRect( ofsx + rects[i][0], ofsy + rects[i][1], ofsx + rects[i][2], ofsy + rects[i][3] ); } // ssd1306_fillRect( ofsx + thic + inpad, ofsy + thic + inpad, ofsx + (uint8_t)(((uint16_t)wid * (uint16_t)progress_percent)/(uint16_t)100) - thic - inpad - 1, ofsy + hei - thic - inpad - 1 ); }