Draw content in display loop only when needed

Example for splash screen.
2.0.x
AnHardt 10 years ago
parent 9865318f1c
commit bf04a92cc0

@ -186,7 +186,7 @@ char lcd_printPGM(const char* str) {
return n; return n;
} }
static int8_t show_splashscreed = 2; int8_t show_splashscreen = 2;
static void lcd_implementation_init() static void lcd_implementation_init()
{ {
@ -221,18 +221,25 @@ static void lcd_implementation_init()
u8g.firstPage(); u8g.firstPage();
do { do {
if (show_splashscreed) { switch (show_splashscreen) {
u8g.drawBitmapP(offx, offy, START_BMPBYTEWIDTH, START_BMPHEIGHT, start_bmp); case 2 : {
lcd_setFont(FONT_MENU); u8g.drawBitmapP(offx, offy, START_BMPBYTEWIDTH, START_BMPHEIGHT, start_bmp);
#ifndef STRING_SPLASH_LINE2 break;
u8g.drawStr(txt1X, u8g.getHeight() - DOG_CHAR_HEIGHT, STRING_SPLASH_LINE1); }
#else case 1 : {
int txt2X = (u8g.getWidth() - (sizeof(STRING_SPLASH_LINE2) - 1)*DOG_CHAR_WIDTH) / 2; lcd_setFont(FONT_MENU);
u8g.drawStr(txt1X, u8g.getHeight() - DOG_CHAR_HEIGHT*3/2, STRING_SPLASH_LINE1); #ifndef STRING_SPLASH_LINE2
u8g.drawStr(txt2X, u8g.getHeight() - DOG_CHAR_HEIGHT*1/2, STRING_SPLASH_LINE2); u8g.drawStr(txt1X, u8g.getHeight() - DOG_CHAR_HEIGHT, STRING_SPLASH_LINE1);
#endif #else
show_splashscreed--; int txt2X = (u8g.getWidth() - (sizeof(STRING_SPLASH_LINE2) - 1)*DOG_CHAR_WIDTH) / 2;
u8g.drawStr(txt1X, u8g.getHeight() - DOG_CHAR_HEIGHT*3/2, STRING_SPLASH_LINE1);
u8g.drawStr(txt2X, u8g.getHeight() - DOG_CHAR_HEIGHT*1/2, STRING_SPLASH_LINE2);
#endif
break;
}
break;
} }
if (show_splashscreen) show_splashscreen--;
} while (u8g.nextPage()); } while (u8g.nextPage());
} }

Loading…
Cancel
Save