Wakeup Light with touch user interface, anti-aliased Font, SD card access and RTC usage on STM32F746NG-DISCO board
Dependencies: BSP_DISCO_F746NG_patch_fixed LCD_DISCO_F746NG TS_DISCO_F746NG FATFileSystem TinyJpgDec_interwork mbed-src
Diff: UI.cpp
- Revision:
- 14:2044ad5cd3fe
- Parent:
- 13:811a5c5b3fd6
diff -r 811a5c5b3fd6 -r 2044ad5cd3fe UI.cpp --- a/UI.cpp Sun Jan 31 17:45:50 2016 +0000 +++ b/UI.cpp Sun Feb 21 04:26:17 2016 +0000 @@ -9,66 +9,97 @@ #include "Images/ic_equalizer_white_48dp_1x.h" #include "Images/ic_settings_white_48dp_1x.h" -#define DEFAULT_FONT &lucidaSansUnicode_18ptFontInfo +#define DEFAULT_FONT &calibri_36ptFontInfo + +#define CLIENT_COLOR_BG ((uint32_t)0xFF000000) +#define CLIENT_COLOR_FG ((uint32_t)0xFFD0D0D0) +#define CLIENT_FONT DEFAULT_FONT -#define CLIENT_COLOR_BG ((uint32_t)0xFF000000) -#define CLIENT_COLOR_FG ((uint32_t)0xFFD0D0D0) -#define CLIENT_FONT DEFAULT_FONT +#define HEADER_HEIGHT 26 +#define HEADER_COLOR_BG ((uint32_t)0xFF000000) +#define HEADER_LINE ((uint32_t)0xFF008ED8) +#define HEADER_COLOR_FG ((uint32_t)0xFFD3D3D3) +#define HEADER_FONT DEFAULT_FONT -#define HEADER_HEIGHT 25 -#define HEADER_COLOR_BG ((uint32_t)0xFF404040) -#define HEADER_COLOR_FG ((uint32_t)0xFFD3D3D3) -#define HEADER_FONT DEFAULT_FONT +#define CLOCK_COLOR_BG ((uint32_t)0xFF000000) +#define CLOCK_COLOR_FG ((uint32_t)0xFF7070A0) +#define CLOCK_FONT &trebuchetMS_270ptFontInfo + +#define CLOCK_IN_WORDS_CELL_WIDTH 22 +#define CLOCK_IN_WORDS_CELL_HEIGHT 22 +#define CLOCK_IN_WORDS_COLOR_FG_ACTIVE HEADER_COLOR_FG +#define CLOCK_IN_WORDS_COLOR_FG_INACTIVE ((uint32_t)0xFF202020) -#define CLOCK_COLOR_BG ((uint32_t)0xFF000000) -#define CLOCK_COLOR_FG ((uint32_t)0xFF707070) -#define CLOCK_FONT DEFAULT_FONT - -#define SLIDESHOW_COLOR_BG ((uint32_t)0xFF000000) -#define SLIDESHOW_COLOR_FG ((uint32_t)0xFF707070) -#define SLIDESHOW_TRANSPARENCY 128 -#define SLIDESHOW_FADE_STEP 5 -#define SLIDESHOW_TIMEOUT 15 -#define SLIDESHOW_FONT DEFAULT_FONT +#define CLOCK_IN_WORDS_TYPE_ES 0x000001 +#define CLOCK_IN_WORDS_TYPE_IST 0x000002 +#define CLOCK_IN_WORDS_TYPE_FUENF_1 0x000004 +#define CLOCK_IN_WORDS_TYPE_ZEHN_1 0x000008 +#define CLOCK_IN_WORDS_TYPE_ZWANZIG 0x000010 +#define CLOCK_IN_WORDS_TYPE_DREI_1 0x000020 +#define CLOCK_IN_WORDS_TYPE_VIERTEL 0x000040 +#define CLOCK_IN_WORDS_TYPE_VOR 0x000080 +#define CLOCK_IN_WORDS_TYPE_NACH 0x000100 +#define CLOCK_IN_WORDS_TYPE_HALB 0x000200 +#define CLOCK_IN_WORDS_TYPE_ELF 0x000400 +#define CLOCK_IN_WORDS_TYPE_FUENF_2 0x000800 +#define CLOCK_IN_WORDS_TYPE_EINS 0x001000 +#define CLOCK_IN_WORDS_TYPE_ZWEI 0x002000 +#define CLOCK_IN_WORDS_TYPE_DREI_2 0x004000 +#define CLOCK_IN_WORDS_TYPE_VIER 0x008000 +#define CLOCK_IN_WORDS_TYPE_SECHS 0x010000 +#define CLOCK_IN_WORDS_TYPE_ACHT 0x020000 +#define CLOCK_IN_WORDS_TYPE_SIEBEN 0x040000 +#define CLOCK_IN_WORDS_TYPE_ZWOELF 0x080000 +#define CLOCK_IN_WORDS_TYPE_ZEHN_2 0x100000 +#define CLOCK_IN_WORDS_TYPE_NEUN 0x200000 +#define CLOCK_IN_WORDS_TYPE_UHR 0x400000 -#define BUTTON_WIDTH 100 -#define BUTTON_HEIGHT 60 -#define BUTTON_SMALL_WIDTH 50 -#define BUTTON_SMALL_HEIGHT 40 -#define BUTTON_COLOR_BG ((uint32_t)0x00000000) -#define BUTTON_COLOR_FG CLIENT_COLOR_FG -#define BUTTON_COLOR_BG_START 0x0C2696 -#define BUTTON_COLOR_BG_END 0x07185E -#define BUTTON_COLOR_BG_START_INACTIVE 0x515151 -#define BUTTON_COLOR_BG_END_INACTIVE 0x333333 -#define BUTTON_FONT DEFAULT_FONT +#define SLIDESHOW_COLOR_BG ((uint32_t)0xFF000000) +#define SLIDESHOW_COLOR_FG ((uint32_t)0xFFAFAFAF) +#define SLIDESHOW_TRANSPARENCY 128 +#define SLIDESHOW_FADE_STEP 5 +#define SLIDESHOW_TIMEOUT 15 +#define SLIDESHOW_FONT &trebuchetMS_135ptFontInfo -#define COLOR_BG ((uint32_t)0xFF000000) +#define BUTTON_WIDTH 100 +#define BUTTON_HEIGHT 60 +#define BUTTON_SMALL_WIDTH 50 +#define BUTTON_SMALL_HEIGHT 40 +#define BUTTON_COLOR_BG ((uint32_t)0x00000000) +#define BUTTON_COLOR_FG CLIENT_COLOR_FG +#define BUTTON_COLOR_BG_START 0x008ED8 // 0x0C2696 +#define BUTTON_COLOR_BG_END 0x004366 // 0x07185E +#define BUTTON_COLOR_BG_START_INACTIVE 0x515151 +#define BUTTON_COLOR_BG_END_INACTIVE 0x333333 +#define BUTTON_FONT DEFAULT_FONT + +#define COLOR_BG ((uint32_t)0xFF000000) -#define MAX_BOXES_PER_LINE 3 -#define BOX_SPACING 10 -#define BOX_TEXT_SPACING 10 -#define BOX_COLOR_BG BUTTON_COLOR_BG -#define BOX_COLOR_FG CLIENT_COLOR_FG -#define BOX_COLOR_BG_START BUTTON_COLOR_BG_START -#define BOX_COLOR_BG_END BUTTON_COLOR_BG_END -#define BOX_FONT DEFAULT_FONT +#define MAX_BOXES_PER_LINE 3 +#define BOX_SPACING 10 +#define BOX_TEXT_SPACING 10 +#define BOX_COLOR_BG BUTTON_COLOR_BG +#define BOX_COLOR_FG CLIENT_COLOR_FG +#define BOX_COLOR_BG_START BUTTON_COLOR_BG_START +#define BOX_COLOR_BG_END BUTTON_COLOR_BG_END +#define BOX_FONT DEFAULT_FONT -LCD_DISCO_F746NG uiLcd; -TS_DISCO_F746NG uiTs; -uint16_t uiLastTouchX; -uint16_t uiLastTouchY; -int lastSlideshowTick=0; -UI_STRUCT *uiCurrent=NULL; -UI_STRUCT uiClock; -UI_STRUCT uiClockInWords; -UI_STRUCT uiColorTest; -UI_STRUCT uiWakeup; -UI_STRUCT uiSlideshow; -UI_STRUCT uiMain; -static UI_BOX_LIST_ITEM_STRUCT uiMainItems[]= +LCD_DISCO_F746NG uiLcd; +TS_DISCO_F746NG uiTs; +uint16_t uiLastTouchX; +uint16_t uiLastTouchY; +int lastSlideshowTick=0; +struct tm lastClockUpdateTime; +UI_STRUCT *uiCurrent=NULL; +UI_STRUCT uiClock; +UI_STRUCT uiClockInWords; +UI_STRUCT uiColorTest; +UI_STRUCT uiWakeup; +UI_STRUCT uiSlideshow; +UI_STRUCT uiMain; +static UI_BOX_LIST_ITEM_STRUCT uiMainItems[]= { - { "Clock", ic_query_builder_white_48dp_1x }, { "Clock\nWith Words", ic_query_builder_white_48dp_1x }, { "Slideshow", ic_slideshow_white_48dp_1x }, { "Adjust\nTimers", ic_notifications_none_white_48dp_1x }, { "Adjust\nClock", ic_settings_white_48dp_1x }, { "Lights\nOn", ic_visibility_white_48dp_1x }, { "Lights\nOff", ic_visibility_off_white_48dp_1x }, { "My Color", ic_equalizer_white_48dp_1x } + { "Clock", ic_query_builder_white_48dp_1x }, { "Clock\nIn Words", ic_query_builder_white_48dp_1x }, { "Slideshow", ic_slideshow_white_48dp_1x }, { "Adjust\nTimers", ic_notifications_none_white_48dp_1x }, { "Settings", ic_settings_white_48dp_1x }, { "Lights\nOn", ic_visibility_white_48dp_1x }, { "Lights\nOff", ic_visibility_off_white_48dp_1x }, { "My Color", ic_equalizer_white_48dp_1x } }; // @@ -329,18 +360,24 @@ char buffer[100]; struct tm *tmStruct; - if (initial==true) + RTC_Get(&tmStruct); + + if ((initial==true) || (tmStruct->tm_hour!=lastClockUpdateTime.tm_hour) || (tmStruct->tm_min!=lastClockUpdateTime.tm_min)) { // fill background uiLcd.SetTextColor(CLOCK_COLOR_BG); uiLcd.FillRect(0,0,uiLcd.GetXSize(),uiLcd.GetYSize()); - } + + // show clock + if (tmStruct->tm_hour>=10) + snprintf(buffer,sizeof(buffer),"%u %u : %u %u",tmStruct->tm_hour / 10,tmStruct->tm_hour % 10,tmStruct->tm_min / 10,tmStruct->tm_min % 10); + else + snprintf(buffer,sizeof(buffer),"%u : %u %u",tmStruct->tm_hour,tmStruct->tm_min / 10,tmStruct->tm_min % 10); + + UI_ShowDisplayTextCenter(0,0,uiLcd.GetXSize(),uiLcd.GetYSize(),buffer,CLOCK_FONT,CLOCK_COLOR_FG,CLOCK_COLOR_BG); - // show clock - RTC_Get(&tmStruct); - snprintf(buffer,sizeof(buffer)," %u:%02u:%02u ",tmStruct->tm_hour,tmStruct->tm_min,tmStruct->tm_sec); - - UI_ShowDisplayTextCenter(0,100,uiLcd.GetXSize(),-1,buffer,CLOCK_FONT,CLOCK_COLOR_FG,CLOCK_COLOR_BG); + lastClockUpdateTime=*tmStruct; + } } void UI_ClickClock(uint16_t x,uint16_t y) @@ -352,27 +389,172 @@ // // clock in words // +void UI_ShowClockInWordsText(int16_t x,int16_t y,char *text,uint32_t type,uint32_t flags) +{ + char buffer[2]; + uint32_t colorText; + + if ((flags & type)!=0) + colorText=CLOCK_IN_WORDS_COLOR_FG_ACTIVE; + else + colorText=CLOCK_IN_WORDS_COLOR_FG_INACTIVE; + + while ((*text)!='\0') + { + buffer[0]=*text; + buffer[1]='\0'; + + UI_ShowDisplayTextCenter(x+119,y+43,CLOCK_IN_WORDS_CELL_WIDTH,CLOCK_IN_WORDS_CELL_HEIGHT,buffer,CLIENT_FONT,colorText,CLOCK_COLOR_BG); + + text++; + x+=CLOCK_IN_WORDS_CELL_WIDTH; + } +} + void UI_ShowClockInWords(bool initial) { - if (initial==true) + struct tm *tmStruct; + uint32_t flags; + int8_t minutes; + int8_t hour; + + RTC_Get(&tmStruct); + + if ((initial==true) || (tmStruct->tm_hour!=lastClockUpdateTime.tm_hour) || (tmStruct->tm_min!=lastClockUpdateTime.tm_min)) { // fill background UI_ShowClearClientRect(); - } + + // show clock + + /* + ES K IST A FÜNF + ZEHN ZWANZIG + DREI VIERTEL + VOR FUNK NACH + HALB A ELFÜNF + EINS XAM ZWEI + DREI PMJ VIER + SECHS NL ACHT + SIEBEN ZWÖLF + ZEHNEUN K UHR + */ + + flags=0; + + minutes=tmStruct->tm_min; + hour=tmStruct->tm_hour; + + minutes=((minutes+2)/5)*5; + if (minutes==5) + flags|=CLOCK_IN_WORDS_TYPE_FUENF_1 | CLOCK_IN_WORDS_TYPE_NACH; + else if (minutes==10) + flags|=CLOCK_IN_WORDS_TYPE_ZEHN_1 | CLOCK_IN_WORDS_TYPE_NACH; + else if (minutes==15) + flags|=CLOCK_IN_WORDS_TYPE_VIERTEL | CLOCK_IN_WORDS_TYPE_NACH; + else if (minutes==20) + flags|=CLOCK_IN_WORDS_TYPE_ZWANZIG | CLOCK_IN_WORDS_TYPE_NACH; + else if (minutes==25) + flags|=CLOCK_IN_WORDS_TYPE_ZWANZIG | CLOCK_IN_WORDS_TYPE_NACH; + else if (minutes==30) + flags|=CLOCK_IN_WORDS_TYPE_HALB; + else if (minutes==35) + flags|=CLOCK_IN_WORDS_TYPE_HALB; + else if (minutes==40) + { + flags|=CLOCK_IN_WORDS_TYPE_ZWANZIG | CLOCK_IN_WORDS_TYPE_VOR; + hour++; + } + else if (minutes==45) + { + flags|=CLOCK_IN_WORDS_TYPE_VIERTEL | CLOCK_IN_WORDS_TYPE_VOR; + hour++; + } + else if (minutes==50) + { + flags|=CLOCK_IN_WORDS_TYPE_ZEHN_1 | CLOCK_IN_WORDS_TYPE_VOR; + hour++; + } + else if (minutes==55) + { + flags|=CLOCK_IN_WORDS_TYPE_FUENF_1 | CLOCK_IN_WORDS_TYPE_VOR; + hour++; + } - // show clock in words - UI_ShowDisplayText(5,30,"UM F\x9ANF ZEHN VIERTEL HALB",CLIENT_FONT,CLIENT_COLOR_FG,CLIENT_COLOR_BG); - UI_ShowDisplayText(5,60,"NACH VOR",CLIENT_FONT,CLIENT_COLOR_FG,CLIENT_COLOR_BG); - UI_ShowDisplayText(5,90,"EINS ZWEI DREI VIER",CLIENT_FONT,CLIENT_COLOR_FG,CLIENT_COLOR_BG); - UI_ShowDisplayText(5,120,"F\x9ANF SECHS SIEBEN ACHT",CLIENT_FONT,CLIENT_COLOR_FG,CLIENT_COLOR_BG); - UI_ShowDisplayText(5,150,"NEUN ZEHN ELF ZW\x99LF",CLIENT_FONT,CLIENT_COLOR_FG,CLIENT_COLOR_BG); + hour=hour%12; + if (hour==0) + flags|=CLOCK_IN_WORDS_TYPE_ZWOELF; + else if (hour==1) + flags|=CLOCK_IN_WORDS_TYPE_EINS; + else if (hour==2) + flags|=CLOCK_IN_WORDS_TYPE_ZWEI; + else if (hour==3) + flags|=CLOCK_IN_WORDS_TYPE_DREI_2; + else if (hour==4) + flags|=CLOCK_IN_WORDS_TYPE_VIER; + else if (hour==5) + flags|=CLOCK_IN_WORDS_TYPE_FUENF_2; + else if (hour==6) + flags|=CLOCK_IN_WORDS_TYPE_SECHS; + else if (hour==7) + flags|=CLOCK_IN_WORDS_TYPE_SIEBEN; + else if (hour==8) + flags|=CLOCK_IN_WORDS_TYPE_ACHT; + else if (hour==9) + flags|=CLOCK_IN_WORDS_TYPE_NEUN; + else if (hour==10) + flags|=CLOCK_IN_WORDS_TYPE_ZEHN_2; + else if (hour==11) + flags|=CLOCK_IN_WORDS_TYPE_ELF; + + UI_ShowClockInWordsText(CLOCK_IN_WORDS_CELL_WIDTH*0,CLOCK_IN_WORDS_CELL_HEIGHT*0,"ES",1,1); + UI_ShowClockInWordsText(CLOCK_IN_WORDS_CELL_WIDTH*2,CLOCK_IN_WORDS_CELL_HEIGHT*0,"K",0,1); + UI_ShowClockInWordsText(CLOCK_IN_WORDS_CELL_WIDTH*3,CLOCK_IN_WORDS_CELL_HEIGHT*0,"IST",1,1); + UI_ShowClockInWordsText(CLOCK_IN_WORDS_CELL_WIDTH*6,CLOCK_IN_WORDS_CELL_HEIGHT*0,"A",0,1); + UI_ShowClockInWordsText(CLOCK_IN_WORDS_CELL_WIDTH*7,CLOCK_IN_WORDS_CELL_HEIGHT*0,"F\xDCNF",CLOCK_IN_WORDS_TYPE_FUENF_1,flags); + UI_ShowClockInWordsText(CLOCK_IN_WORDS_CELL_WIDTH*0,CLOCK_IN_WORDS_CELL_HEIGHT*1,"ZEHN",CLOCK_IN_WORDS_TYPE_ZEHN_1,flags); + UI_ShowClockInWordsText(CLOCK_IN_WORDS_CELL_WIDTH*4,CLOCK_IN_WORDS_CELL_HEIGHT*1,"ZWANZIG",CLOCK_IN_WORDS_TYPE_ZWANZIG,flags); + UI_ShowClockInWordsText(CLOCK_IN_WORDS_CELL_WIDTH*0,CLOCK_IN_WORDS_CELL_HEIGHT*2,"DREI",CLOCK_IN_WORDS_TYPE_DREI_1,flags); + UI_ShowClockInWordsText(CLOCK_IN_WORDS_CELL_WIDTH*4,CLOCK_IN_WORDS_CELL_HEIGHT*2,"VIERTEL",CLOCK_IN_WORDS_TYPE_VIERTEL,flags); + UI_ShowClockInWordsText(CLOCK_IN_WORDS_CELL_WIDTH*0,CLOCK_IN_WORDS_CELL_HEIGHT*3,"VOR",CLOCK_IN_WORDS_TYPE_VOR,flags); + UI_ShowClockInWordsText(CLOCK_IN_WORDS_CELL_WIDTH*3,CLOCK_IN_WORDS_CELL_HEIGHT*3,"FUNK",0,1); + UI_ShowClockInWordsText(CLOCK_IN_WORDS_CELL_WIDTH*7,CLOCK_IN_WORDS_CELL_HEIGHT*3,"NACH",CLOCK_IN_WORDS_TYPE_NACH,flags); + UI_ShowClockInWordsText(CLOCK_IN_WORDS_CELL_WIDTH*0,CLOCK_IN_WORDS_CELL_HEIGHT*4,"HALB",CLOCK_IN_WORDS_TYPE_HALB,flags); + UI_ShowClockInWordsText(CLOCK_IN_WORDS_CELL_WIDTH*4,CLOCK_IN_WORDS_CELL_HEIGHT*4,"A",0,1); + UI_ShowClockInWordsText(CLOCK_IN_WORDS_CELL_WIDTH*5,CLOCK_IN_WORDS_CELL_HEIGHT*4,"EL",CLOCK_IN_WORDS_TYPE_ELF,flags); + UI_ShowClockInWordsText(CLOCK_IN_WORDS_CELL_WIDTH*7,CLOCK_IN_WORDS_CELL_HEIGHT*4,"F",CLOCK_IN_WORDS_TYPE_ELF | CLOCK_IN_WORDS_TYPE_FUENF_2,flags); + UI_ShowClockInWordsText(CLOCK_IN_WORDS_CELL_WIDTH*8,CLOCK_IN_WORDS_CELL_HEIGHT*4,"\xDCNF",CLOCK_IN_WORDS_TYPE_FUENF_2,flags); + UI_ShowClockInWordsText(CLOCK_IN_WORDS_CELL_WIDTH*0,CLOCK_IN_WORDS_CELL_HEIGHT*5,"EINS",CLOCK_IN_WORDS_TYPE_EINS,flags); + UI_ShowClockInWordsText(CLOCK_IN_WORDS_CELL_WIDTH*4,CLOCK_IN_WORDS_CELL_HEIGHT*5,"XAM",0,1); + UI_ShowClockInWordsText(CLOCK_IN_WORDS_CELL_WIDTH*7,CLOCK_IN_WORDS_CELL_HEIGHT*5,"ZWEI",CLOCK_IN_WORDS_TYPE_ZWEI,flags); + UI_ShowClockInWordsText(CLOCK_IN_WORDS_CELL_WIDTH*0,CLOCK_IN_WORDS_CELL_HEIGHT*6,"DREI",CLOCK_IN_WORDS_TYPE_DREI_2,flags); + UI_ShowClockInWordsText(CLOCK_IN_WORDS_CELL_WIDTH*4,CLOCK_IN_WORDS_CELL_HEIGHT*6,"PMJ",0,1); + UI_ShowClockInWordsText(CLOCK_IN_WORDS_CELL_WIDTH*7,CLOCK_IN_WORDS_CELL_HEIGHT*6,"VIER",CLOCK_IN_WORDS_TYPE_VIER,flags); + UI_ShowClockInWordsText(CLOCK_IN_WORDS_CELL_WIDTH*0,CLOCK_IN_WORDS_CELL_HEIGHT*7,"SECHS",CLOCK_IN_WORDS_TYPE_SECHS,flags); + UI_ShowClockInWordsText(CLOCK_IN_WORDS_CELL_WIDTH*5,CLOCK_IN_WORDS_CELL_HEIGHT*7,"NL",0,1); + UI_ShowClockInWordsText(CLOCK_IN_WORDS_CELL_WIDTH*7,CLOCK_IN_WORDS_CELL_HEIGHT*7,"ACHT",CLOCK_IN_WORDS_TYPE_ACHT,flags); + UI_ShowClockInWordsText(CLOCK_IN_WORDS_CELL_WIDTH*0,CLOCK_IN_WORDS_CELL_HEIGHT*8,"SIEBEN",CLOCK_IN_WORDS_TYPE_SIEBEN,flags); + UI_ShowClockInWordsText(CLOCK_IN_WORDS_CELL_WIDTH*6,CLOCK_IN_WORDS_CELL_HEIGHT*8,"ZW\xD6LF",CLOCK_IN_WORDS_TYPE_ZWOELF,flags); + UI_ShowClockInWordsText(CLOCK_IN_WORDS_CELL_WIDTH*0,CLOCK_IN_WORDS_CELL_HEIGHT*9,"ZEH",CLOCK_IN_WORDS_TYPE_ZEHN_2,flags); + UI_ShowClockInWordsText(CLOCK_IN_WORDS_CELL_WIDTH*3,CLOCK_IN_WORDS_CELL_HEIGHT*9,"N",CLOCK_IN_WORDS_TYPE_ZEHN_2 | CLOCK_IN_WORDS_TYPE_NEUN,flags); + UI_ShowClockInWordsText(CLOCK_IN_WORDS_CELL_WIDTH*4,CLOCK_IN_WORDS_CELL_HEIGHT*9,"EUN",CLOCK_IN_WORDS_TYPE_NEUN,flags); + UI_ShowClockInWordsText(CLOCK_IN_WORDS_CELL_WIDTH*7,CLOCK_IN_WORDS_CELL_HEIGHT*9,"K",0,1); + UI_ShowClockInWordsText(CLOCK_IN_WORDS_CELL_WIDTH*8,CLOCK_IN_WORDS_CELL_HEIGHT*9,"UHR",1,1); + + lastClockUpdateTime=*tmStruct; + } /* // draw charset int x; - for (x=0x0;x<=0x7f;x++) + for (x=0x80;x<=0xff;x++) { - FontX_DisplayChar(1+(((x-0x0) % 16)*14),30+(((x-0x0)/16)*20),x,CLIENT_FONT,CLIENT_COLOR_FG,CLIENT_COLOR_BG); + FontX_DisplayChar( 1+(((x-0x80) % 16)*14), + 30+(((x-0x80)/16)*20), + x, + CLIENT_FONT, + CLIENT_COLOR_FG, + CLIENT_COLOR_BG); } */ } @@ -436,8 +618,11 @@ uiLcd.FillRect(0,0,uiLcd.GetXSize(),uiLcd.GetYSize()); // show clock - snprintf(buffer,sizeof(buffer),"%u:%02u",tmStruct->tm_hour,tmStruct->tm_min); - FontX_DisplayStringAt(30,220,uiLcd.GetXSize(),buffer,ALIGN_RIGHT,SLIDESHOW_FONT,SLIDESHOW_COLOR_FG,0x00000000); + if (tmStruct->tm_hour>=10) + snprintf(buffer,sizeof(buffer),"%u %u : %u %u",tmStruct->tm_hour / 10,tmStruct->tm_hour % 10,tmStruct->tm_min / 10,tmStruct->tm_min % 10); + else + snprintf(buffer,sizeof(buffer),"%u : %u %u",tmStruct->tm_hour,tmStruct->tm_min / 10,tmStruct->tm_min % 10); + FontX_DisplayStringAt(30,180,uiLcd.GetXSize(),buffer,ALIGN_RIGHT,SLIDESHOW_FONT,SLIDESHOW_COLOR_FG,0x00000001); // hide picture layer if (initial==true) @@ -797,14 +982,18 @@ uiLcd.SetTextColor(HEADER_COLOR_BG); uiLcd.FillRect(0,0,uiLcd.GetXSize(),HEADER_HEIGHT); + // draw line + uiLcd.SetTextColor(HEADER_LINE); + uiLcd.DrawHLine(10,HEADER_HEIGHT-1,uiLcd.GetXSize()-20); + if ((uiCurrent->flags & UI_FLAG_HAS_BACK_BUTTON)!=0) - UI_DrawBitmapWithAlpha(0,1,ic_navigate_before_white_24dp_1x); + UI_DrawBitmapWithAlpha(5,1,ic_navigate_before_white_24dp_1x); } // show clock RTC_Get(&tmStruct); snprintf(buffer,sizeof(buffer)," %u:%02u ",tmStruct->tm_hour,tmStruct->tm_min); - UI_ShowDisplayTextCenter(0,0,uiLcd.GetXSize(),-1,buffer,HEADER_FONT,HEADER_COLOR_FG,HEADER_COLOR_BG); + UI_ShowDisplayTextCenter(0,2,uiLcd.GetXSize(),-1,buffer,HEADER_FONT,HEADER_COLOR_FG,HEADER_COLOR_BG); // show next alarm //XXX