From 1dab5fe48faf92238e9db8b5774b9c2c933e4255 Mon Sep 17 00:00:00 2001 From: Shuanglei Tao Date: Fri, 4 Jul 2025 23:02:11 +0800 Subject: [PATCH] update clock mode --- GUI/GUI.c | 30 ++++++++---- GUI/fonts.c | 136 +++++----------------------------------------------- GUI/fonts.h | 7 +-- 3 files changed, 34 insertions(+), 139 deletions(-) diff --git a/GUI/GUI.c b/GUI/GUI.c index 9f4be7a..c36974e 100644 --- a/GUI/GUI.c +++ b/GUI/GUI.c @@ -354,21 +354,33 @@ static void DrawClock(Adafruit_GFX *gfx, tm_t *tm, struct Lunar_Date *Lunar, gui DrawTime(gfx, tm, 70, 98, 5, 2); GFX_drawFastHLine(gfx, 30, 232, 330, GFX_BLACK); - GFX_setCursor(gfx, 40, 275); - GFX_setFont(gfx, u8g2_font_wqy12_t_lunar); - GFX_printf(gfx, "%s%s%s年", Lunar_StemStrig[LUNAR_GetStem(Lunar)], Lunar_BranchStrig[LUNAR_GetBranch(Lunar)], - Lunar_ZodiacString[LUNAR_GetZodiac(Lunar)]); + GFX_setCursor(gfx, 40, 265); + GFX_setFont(gfx, u8g2_font_wqy9_t_lunar); + GFX_printf(gfx, "%s%s", Lunar_StemStrig[LUNAR_GetStem(Lunar)], Lunar_BranchStrig[LUNAR_GetBranch(Lunar)]); + GFX_setTextColor(gfx, GFX_RED, GFX_WHITE); + GFX_printf(gfx, "%s", Lunar_ZodiacString[LUNAR_GetZodiac(Lunar)]); + GFX_setTextColor(gfx, GFX_BLACK, GFX_WHITE); + GFX_printf(gfx, "年"); + + GFX_setCursor(gfx, 40, 285); + GFX_printf(gfx, " %d周", GetWeekOfYear(tm->tm_year, tm->tm_mon, tm->tm_mday, tm->tm_wday)); uint8_t day = 0; uint8_t JQday = GetJieQiStr(tm->tm_year + YEAR0, tm->tm_mon + 1, tm->tm_mday, &day); if (day == 0) { - GFX_setCursor(gfx, 320, 275); + GFX_setCursor(gfx, data->width - GFX_getUTF8Width(gfx, "小暑") - 50, 275); + GFX_setTextColor(gfx, GFX_RED, GFX_WHITE); GFX_printf(gfx, "%s", JieQiStr[JQday % 24]); } else { - GFX_setCursor(gfx, 300, 265); - GFX_printf(gfx, "离%s", JieQiStr[JQday % 24]); - GFX_setCursor(gfx, 290, 285); - GFX_printf(gfx, "还有%d天", day); + GFX_setCursor(gfx, data->width - GFX_getUTF8Width(gfx, "离小暑") - 50, 265); + GFX_printf(gfx, "离%"); + GFX_setTextColor(gfx, GFX_RED, GFX_WHITE); + GFX_printf(gfx, "%s", JieQiStr[JQday % 24]); + GFX_setTextColor(gfx, GFX_BLACK, GFX_WHITE); + char buf[15] = {0}; + snprintf(buf, sizeof(buf), "还有%d天", day); + GFX_setCursor(gfx, data->width - GFX_getUTF8Width(gfx, buf) - 50, 285); + GFX_printf(gfx, buf); } } diff --git a/GUI/fonts.c b/GUI/fonts.c index afe3fb3..493b404 100644 --- a/GUI/fonts.c +++ b/GUI/fonts.c @@ -148,133 +148,21 @@ const uint8_t u8g2_font_wqy9_t_lunar[4430] U8G2_FONT_SECTION("u8g2_font_wqy9_t_l "#\245\60J\322H\315*\231I\32\2\0"; /* - Fontname: -wenquanyi-wenquanyi bitmap song-bold-r-normal--16-160-75-75-P-80-iso10646-1 + Fontname: -wenquanyi-wenquanyi bitmap song-medium-r-normal--16-160-75-75-P-80-iso10646-1 Copyright: (null) - Glyphs: 164/29889 + Glyphs: 13/41295 BBX Build Mode: 0 */ -const uint8_t u8g2_font_wqy12_t_lunar[3859] U8G2_FONT_SECTION("u8g2_font_wqy12_t_lunar") = - "\244\0\4\3\5\5\3\5\6\21\22\377\374\13\375\14\374\1\367\3\367\5\231 \6\0\60\246\0!\11\302" - "\375\245\360\300\210\0\42\11\305\270\246 \301\27\2#\36\211\21\246#!$!$!r\20\42!$!" - "$!$!r\20\42!$!$!\3$\25\250\361\245#Ec\241\202B\210\212\221\4\205\12\33*" - "\31\0%$\214\25\272\61$\42!#\42!\42#\241HB\325\204\250\304\224\204\32\21\11\31\21\11\21" - "\31\11\21\241\11\0&\33\213\25\266\63'!&!&!F\67\70#B#!\42\61!R\42\63T" - "A'\7\302\270\226pP(\16\5\226\235#\242FDF\77\222\21R)\17\5\226\235 \244FHF" - "\77\221\21Q\3*\21(Q\246#&#\241\302\206\306B\33\61\31\0+\15l\25\272%\252\253\203*" - "Q]\1,\10\203\330\245`A\1-\6%p\232P.\6C\370\245`/\22\7\226\245\245HJ\221" - "\224\42)ER\212\244\244\0\60\16g\25\246\62#\241\206\337H\250\31\1\61\13f\25\246\42\63B\244" - "\237\30\62\15g\25\246Q!C#\245H\257\16\63\22h\21\246Q\42#'&%C\247\214F\244\4" - "\0\64\25h\21\246%\65D#!\242BFBF\342 JL\5\0\65\22h\21\246p!\246\314d" - "DNL\214F\244\4\0\66\25h\21\246B#\42!&f\62\42!\304HBD\206\4\0\67\22h" - "\21\246p\20&%&%&%\246JL\10\0\70\23h\21\246B#\242\67\64\42\22B\214$Dd" - "H\0\71\24h\21\246B#\42!\304HBd\304L\205\210\14\11\0:\7\342\30\226 *;\7\2" - "\371\225 J<\15J\371\265(\66\265\335\344\244\344\2=\12\213T\266p@\17w@>\13K\365\265" - " \272\313\261\35\2\77\17f\25\246A!\42\244F\221z\10\21\0@\31i\25\262b\42#\42q!" - "B!B!B!B!\42!A\42h\1A\30k\21\262\64\70'!&!%#$#$#s" - " \42%!G'B\22h\31\262p!\304\215\204\211\214\204\20\243\3\11\0C\20i\25\256c\42#" - "!&\247C\65\62\25\0D\22i\31\266p\42$!$!\305G\22B\22'\0E\16h\31\256p" - "\60\246\331\205\230f\7\1F\15g\31\252p \245\325\201\224\256\0G\23i\25\262c\42#!&\247" - "\215\225\204\220\210\214\214\1H\14h\31\262 \304\243\203\42\36\11I\10b\31\226\360A\0J\13\206\365" - "\245\244\377F\202\4\0K\27i\31\262 E$!#\242FB\210\252HDF\211\220\204\224\0L\11" - "g\31\252 \245\177uM\26k\31\276\60eus\20c\241\202B\5\311\10\311\10\35;\1N\22h" - "\31\262\60ScbrA!Aq\342\246f\0O\24j\25\266C%\42#$!\306\63\11!\31\21" - ")\32\0P\20h\31\256`\42#!\304\215\204\211\230f\0Q\23\252\325\265C%\42#$!\306\63" - "\11m$\246*\25R\22h\31\256p!\304\321\201\204\210n$d$\204\4S\22h\25\252B#\42" - "!&'G\247\214F\244\4\0T\13j\25\262p\60$\250\177\4U\15h\31\262 \304\77\222\20\221" - "!\1V\31k\21\262 G'!%\42%\243HFHFJBLBnp\10\0W\36n\25\302" - " $D$D\244B\204D\11\211\22\22\31\22\42\22\42\22*!\61!\31\0X\26K\21\262 '" - "!%\243JBnpNBJF\225\204\234\0Y\21j\21\262 F&!$#\42E'\250G\0" - "Z\21i\25\256p &'\246NL\235\230\330\201\0[\12\4\226\231`\242\377'\4\134\22\7\226\245" - " %&\245LJ\231\224\62)eR\2]\12\4\222\231@\242\377'\6^\11f\370\256\42C!\42" - "_\7+\224\265p@`\7C\34\247 \42a\16\347\24\246Q!#%q\20C#ab\17g\25" - "\246 \245\225\305\10\15\67\7\21\0c\15\347\24\246Q!C\245\215D\5\0d\15g\25\246\245\213\203" - "\220\32N&\14e\16\347\20\242Q!Cs@%#Q\1f\15f\25\232B!\244\246DHo\0" - "g\21h\261\245\65R\242OJ\344\16\204\210$,\0h\15g\25\246 \245\225\305\10\15o\4i\10" - "b\25\226 vpj\13\305\255\225#\17\243\277\261\0k\21g\25\246 \245\23\11%\64\64\22\42*" - "d\4l\10b\25\226\360A\0m\24\353\24\272`\261d\202F\204F\204F\204F\204FD\0n\13" - "\347\24\246`\61B\303\33\1o\14\347\24\246Q!\303\33\211\12\0p\17G\265\245`\61B\303\315A" - "\204\224*\0q\15G\265\245q\20R\303\311\204\225\6r\13\345\24\232p\20\42\243\33\0s\13\346\20" - "\236q$E%t\1t\14%\25\236!#R!\243\243\1u\12\347\24\246 \303'\23\6v\17\350" - "\20\242 D$!\242\15\21\225\14\0w\25\352\20\262 \42B\242\342 \344 \344 FDHD\4" - "\0x\20\350\20\242 $!\42C%E#\42!$y\21H\261\241 $!\242\15\21\225\230*\241" - ")\0z\11\347\20\242p\244W\7{\16\7\226\245C\42\245G\63bSzF|\10\2\232\225\360\3" - "\2}\20\7\226\245\60&\245gb#CR\272\31\2~\11H\64\257\301d\2\0\200\24\210\21\246C" - "#\42!&e#e#\246ND\206\2\0\0\0\0\4\377\377N\1\16\356\325\305\360LX\377SZ" - "\71\0N\21#\320\361\305r@)#)#)#)#)#u@($($($($($" - "($sp N\31'\360\321\305\360@N\134\341\301\211\220\22!%\62\64\42\62\22\42\332H\210H" - "\10I\210\210\212\210\212\10\222H\212\0NY\23\316\365\305pP\253\77\226\225\224\220\224\220\24\71(N" - "\245\42\16\326\305%-\17up%\253HJH\352 DNDlDjFh\210pDjJ\202P" - "\0QT(\20\322\305$.~\20'%&%v`B\243HF\221\214\242\203\42\21\22\71\11B\21" - "\11\61\31\11%BBe\7Q\254!\20\322\305%.} \246\212HJD-\351\310\330\222\321)z" - "\200y\0Az\200y\0)\0R\6(\20\322\305)*\42*#($'&%(#*!q " - "\42%#)#)#($($'%&C&%\6SH\30\20\322\305$\256\372\200JDRF" - "PH\134\335\301\201\234\270\336\1So\60\16\326\305\63Hs \42!C\42!C\42!C\42!C" - "\42!C\42!C\42!C\61!s\20a%\241JDPDNFLH\12\0X\354\23\360\361\305" - "+kt\256\273\203\3\71q\275<(\1Y\4,\20\322\305#$($($X!(!\61&\42" - "A%\42\241\206B\211\204\4\211\42\22I\31I\31A\22\71\221A\251\203q\0Y\17!\20\322\305q" - "p'{\60\246\354`L\331\301\230\262\203\71\351\203)\42)\21\265\224$\64\204\4Y'\34\20\322\305" - "'\256\273\203\3\71qibZ\21Q\21I!\71\61)A\221\321\1Y)\35\360\321\305rP)\256" - "\335\301\201\234\64\61\255\210\250\210\244\220\234\230\224\240\310\350\0[P\24\360\321\305q`\255\361\264\334\301" - "\201\234\270\36S\13\2[\305'\20\322\305&\17 xp\20!KqP(z\60&\242LD\331\301" - "\230\210\62\21e\7\203\42\222Brb\62\0[\322+\20\322\305&\17 xp\20!\242\206\342\240L" - "D\356\240ND\352\340@H\235\304\210\224\220\210\310\230\310\324<\300<\200\24\0\134\17\36\20\322\305'" - "\256S\21e\42\62R\42B\62\212dTI\10IQ\251\23\27\246\26\4]\362\26\315\371\305p@\253" - "\211\234\210\234\310\1\211\254\226,%\16\12]\363\33\315\371\305p@\42'\42'\42'\42'\42'r" - "@\42\253%K\211\203\2^t\37\20\322\305#.~P#$($'%y@%#)#)#" - "vp (\256\63\0^\232'\20\322\305'\17 xp\42.$xP\244DH\211\320\301\211\220\210" - "\220\22\241\203\32!\62\31\21!\221\241\205\3`\312.\20\322\305#$(%'q\60#>{pB" - "\42$B\42$\241\344 HJND\202JDB\221\204\210\32\32\21\31\31:!)\0b\12+\20" - "\322\305(!+\42*xp\42$($($\243JDFJBHJBHlJLD\25\205*" - "\21\12\231\241\222\71\1b\14*\20\322\305I,!+wp\42%'%'%\42#%\42c!\42" - "#F$F$'!\42\66\241L\202BJ\246J\1e\345\20\352\335\305pP\306\263\203\63>;\70" - "\23f\16,\356\325\305w`!C\42!C\42!C\42q`!C\42!C\42!C\42q`!" - "C\42!#&$&$%C$%\1f%%\20\322\305'.xp(yP(xp \244N" - "L\352\240dBHbH\341A\240\220\240\220\340A\20\0f\221&\20\322\305s\60\246\354`L\331\301" - "\244\354\301\244\210\320\301\201\330\354\201\24\225\314\304\201\234\224\334\201\234\224\14\0g\10&\15\332\305s\60" - "#&#&#&#&s\60#&#&#&s\60#&#&\42'\42'!f(\1g\11" - "&\20\322\305&.xp %.} '%\66%u@$!%#\42%w '%'%'" - "C'$\4g*\36\20\322\305'\256\362\240R\134\335\301\201\30\255\245\204:\21U\62J\206\204\346\304" - "\345\0l\64!\20\322\305'\256\215\244\214\314\201\204\340\241\4\245\4\241\210\204\234\210*\31\215\204\252\204" - "\251\5\1n\5+\20\322\305)'%xP\244J\350 FL\311\1\215\270\304A\220\210\220\10\311A" - "\220\210\220\222\203 \21!%\42\204\62\62\0n\341\61\20\322\305'#$\243\352\300FDFD\36@" - "\344\200BJBLFB\354\300DB\13\13\235H\34\220HL\210\214H\310\211HHQ\211I\0r" - "[\33\20\322\305'*\42*\42*\42z@$#($\256\356\340@N\134\357\0r\327,\17\322\305" - "(&\42!G!)r\20b%!\61F\42Q!$\241\315\204&\24zQA\42\241\221\234\220\234" - "\4\25\215\234\10\0s*\60\20\322\305)%\42#\42Bq #%!CD#q`#$(#" - "\70rC\61#\42a#%r%\42#%\42#Bs#$#\2s\64\61\20\322\305\247D\342\206" - "DFHDH\206\342\240\242B\260BPB\302f\202B\210BF\205\304\301\214\204\214\230\204\10\225\204" - "\10\23\11\21\65D\2u\62\34\354\331\305\360F\206F\206F\346\340@F\206F\206F\346\340@F\225" - "\250\256\0u\63\37\14\332\305%\252\352\340F\206F\206F\346\340@F\206F\206F\346\340@F\225\250" - "*\0vx%\20\322\305(!t@*!\242\13!\242\61U\202\42\23\7\21s\342\202\7\207\322\245" - "\62rSB\203\42\0v}\24\14\332\305%\251\356\340\220\303\203\3A\36\36\34\10\12y\273)\20\322" - "\305&\17 wp \17DB&A!FBv\60*xp\42#%\242\27\7\21\42j$D\4" - "I$E\0y\313/\20\322\305$#H\42U$($(B\42q@\42$B!\64!AE#" - "fAeA$!#!&\242LDFJBJ\210N\0y\315,\17\322\305\244\214F\246JLJ" - "L\344\340`B\215\210\204\222\21\11%\24Z\34\134\34DHPH\211I\211I\211I\211I\311\0z" - "\313\37\360\361\305&\17 .\17yp\17-\246NHPHRDTDTB\36\356\340@\0\177\212" - "\32\20\322\305\244RFRD\354\340P\134\345A\245\270\272\203\3\71q\355\0\201\363\32\320\361\305qp" - "'\255HNL\352\240\134R\134\362\240R\134\335\301\201\0\202\222\33\360\361\305\244PH\350\340@H\241" - "\220\250<\200\334\301\201\220\270\236\37P\0\206N%\17\322\305'}(x`\42#$\42Su\20\42" - "\243#\33i\21+\21U\42\212Dd$\64\222\240\20#\206\307'\360\361\305#%'\246\321\301A\304" - "A\224\304\225\210\205\234\205\210\214\205\42\32:\231A\12!\231#\23\42\11\261\3\206\360,\17\322\305\243" - "PF\352\300JFBjbB\244F\202F\344 \202BhD\202H\346`JD\225\210\252\203I\31" - "\221\203\23I\1\214\67!\20\322\305\244PJLDFHFHD\206VDRHl\311\350\314\301\230" - "\376\354`L\15\0\217\233\33\20\322\305&\17 yP\17'$)\42up '\256\360\340P\134w" - "\0\217\260&\360\321\305r`#.~P$.~`#\241PB\211\220\204\10\225\204\214\224\210\220\22" - "\32\21\231\251)I\0\217\330#\320\361\305\42r $%'%-.US&B!%\241D\210D" - "\221B!A!\71Z\221\3\2\221I%\360\321\305\360@JDTD\354\340D\377BFD\204\252d" - "RDT\344\340DTDT\344\340DT\2\0\226M.\17\326\305'f!&\42q\241\215\210\204\205" - "\14\321\220\204\304\22\11\22\211\22\31!\221\203\11\21\31\241\23!\212\203:!\71!\71!\0\226\350(" - "\360\321\305\360@N\134\341\301\211\220\22!%\22\22$J(\224\10)\221\220 QB\241DH\211\220" - "\10\211\244\10\0\226\352 \20\322\305rP)xp\20!$EqP(z\60\17vP\256\352\200\134" - "\321A\271\10\0\227\34+\20\322\305rP)xp\20!$EqP(z\60\17(\362@Fh\344" - "\246BFD\342\200BD\215\224\310\225\210\214\4\0\227\62(\20\322\305rP)xp\20!$Eq" - "P(z\60,fa#b!c\63&BAaJ\343BD\204\310\4\0\232l\32\357\321\305q@" - "\255LJLJLJ\354\240Z\365\301\205\264Rb\21\0\236!*\20\322\305*-}q!#&A" - "!&!#\42!\42AC\242JFR\346 \204PDBNB\344\300X\226Z\4\0\237 (\16" - "\332\305#IS\42(\322DPDP\344\240\36\202\205\210\4\23\31%\24\24\42\22\24\7\61\62\7\21" - "$&C\2\237\231-\20\322\305%#)$($(yp %!+!\42'!\42'\241N\204" - "PdPFHFdHD\204HBD\344@\34\0\0"; +const uint8_t u8g2_font_wqy12_t_lunar[271] U8G2_FONT_SECTION("u8g2_font_wqy12_t_lunar") = + "\15\0\4\2\4\5\3\2\6\17\20\0\376\13\375\14\374\0\0\0\0\0\241\60\16\267**\233\212\224_" + "%\62\231\11\0\61\12\265.*\221Q\177\62\20\62\16\267**\233\212T,\325g\203A\0\63\21\267" + "*\32\203H(\27Keve\242\310 \2\64\23\270jZ\61U\42\24\311t\22\212\14\6\252\134\11" + "\0\65\20\267*\12\7\262\262\201\256,&\212\14\42\0\66\22\267**\203H*V\61\321$RV\211" + "Lf\2\67\16\267*\12\7\261T\254*V\25\253\1\70\23\267**\233\212\224*\221\311l*R\252" + "D&\63\1\71\22\267**\233\212\224U\42#Y\304\252\42\203\10\0\0\0\0\4\377\377^t\35\17" + "\11<\361\370\340@\223\12\246r\261\344\340 \25J\206\222\241\330\340\303xg\0e\345\21\371\16\14\17" + "r\336\15\16t\276\33\34\350\2g\10#\14\15<\203\233\134&\227\311er\231\301M.\223\313\344\62" + "\203\233\134&\27\11F\202\211\134B\231\0\0"; /* Fontname: -Adobe-Helvetica-Bold-R-Normal--20-140-100-100-P-105-ISO10646-1 diff --git a/GUI/fonts.h b/GUI/fonts.h index bedca29..ad5bad2 100644 --- a/GUI/fonts.h +++ b/GUI/fonts.h @@ -26,13 +26,8 @@ extern const uint8_t u8g2_font_wqy9_t_lunar[] U8G2_FONT_SECTION("u8g2_font_wqy9_t_lunar"); /** * 文字列表: -所有 ASCII 字符 (32-128) -猴鸡狗猪鼠牛虎兔龙蛇马羊 -庚辛壬癸甲乙丙丁戊已 -申酉戌亥子丑寅卯辰巳午未 -小寒大寒立春雨水惊蛰春分清明谷雨立夏小满芒种夏至小暑大暑立秋处暑白露秋分寒露霜降立冬小雪大雪冬至 +0-9 (48-57) 年月日 -离还有天 */ extern const uint8_t u8g2_font_wqy12_t_lunar[] U8G2_FONT_SECTION("u8g2_font_wqy12_t_lunar");