From 30b1f62e9998112864d5c657535d40b8e05943da Mon Sep 17 00:00:00 2001 From: bsongis Date: Tue, 15 Jul 2014 15:46:13 +0200 Subject: [PATCH] Fonts improvement on 9XR-PRO / Sky9x --- radio/src/lcd_common.cpp | 84 +++++++++++++- radio/src/lcd_default.cpp | 105 +----------------- radio/src/tests/dblsize_128x64.png | Bin 0 -> 513 bytes radio/src/tests/dblsize_212x64.png | Bin 0 -> 558 bytes radio/src/tests/lcd.cpp | 33 ++++++ radio/src/tests/midsize_128x64.png | Bin 0 -> 503 bytes radio/src/tests/midsize_212x64.png | Bin 0 -> 532 bytes .../src/tests/prec1_dblsize_invers_212x64.png | Bin 387 -> 389 bytes radio/src/tests/stdsize_128x64.png | Bin 0 -> 483 bytes radio/src/tests/stdsize_212x64.png | Bin 0 -> 507 bytes 10 files changed, 116 insertions(+), 106 deletions(-) create mode 100755 radio/src/tests/dblsize_128x64.png create mode 100644 radio/src/tests/dblsize_212x64.png create mode 100755 radio/src/tests/midsize_128x64.png create mode 100644 radio/src/tests/midsize_212x64.png create mode 100644 radio/src/tests/stdsize_128x64.png create mode 100644 radio/src/tests/stdsize_212x64.png diff --git a/radio/src/lcd_common.cpp b/radio/src/lcd_common.cpp index 139057305..2580759c6 100644 --- a/radio/src/lcd_common.cpp +++ b/radio/src/lcd_common.cpp @@ -51,7 +51,87 @@ uint8_t lcdLastPos; uint8_t lcdNextPos; #if defined(CPUARM) -void lcdPutPattern(xcoord_t x, uint8_t y, const uint8_t * pattern, uint8_t width, uint8_t height, LcdFlags flags); +void lcdPutPattern(xcoord_t x, uint8_t y, const uint8_t * pattern, uint8_t width, uint8_t height, LcdFlags flags) +{ + bool blink = false; + bool inv = false; + if (flags & BLINK) { + if (BLINK_ON_PHASE) { + if (flags & INVERS) + inv = true; + else { + blink = true; + } + } + } + else if (flags & INVERS) { + inv = true; + } + + uint8_t lines = (height+7)/8; + assert(lines <= 5); + + for (int8_t i=0; i= 12) continue; + if (j<0 && !inv) continue; + } + else { + uint8_t line = (j / 8); + uint8_t pixel = (j % 8); + plot = b[line] & (1 << pixel); + } + if (inv) plot = !plot; + if (!blink) { + lcd_plot(x, y+j, plot ? FORCE : ERASE); + } + } + } + + x++; + lcdNextPos++; + } +} + void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, LcdFlags flags) { #if !defined(BOOT) @@ -94,7 +174,7 @@ void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, LcdFlags flags) } else if (flags & MIDSIZE) { q = &font_8x10[((uint16_t)c-0x20)*16]; - lcdPutPattern(x, y, q, 8, 11, flags); + lcdPutPattern(x, y, q, 8, 12, flags); } else if (flags & SMLSIZE) { q = (c < 0xc0 ? &font_4x6[(c-0x20)*5] : &font_4x6_extra[(c-0xc0)*5]); diff --git a/radio/src/lcd_default.cpp b/radio/src/lcd_default.cpp index d15e16681..69a1c73c6 100755 --- a/radio/src/lcd_default.cpp +++ b/radio/src/lcd_default.cpp @@ -38,110 +38,7 @@ #define LCD_BYTE_FILTER(p, keep, add) *(p) = (*(p) & (keep)) | (add) -#if defined(CPUARM) -void lcdPutPattern(xcoord_t x, uint8_t y, const uint8_t * pattern, uint8_t width, uint8_t height, LcdFlags flags) -{ - uint8_t *p = &displayBuf[ y / 8 * LCD_W + x ]; - uint8_t *end = &displayBuf[ y / 8 * LCD_W + LCD_W ]; - - bool blink = false; - bool inv = false; - if (flags & BLINK) { - if (BLINK_ON_PHASE) { - if (flags & INVERS) - inv = true; - else { - blink = true; - } - } - } - else if (flags & INVERS) { - inv = true; - } - - uint8_t lines = (height+7)/8; - assert(lines <= 5); - - for (int8_t i=0; i0) { - b1 = b[j-1] >> (8-ym8); - } - else { - keep = ~(keepref << ym8); - } - if (j> (8-ym8)); - } - if (!blink) { - LCD_BYTE_FILTER(dest, keep, b1|b2); - } - dest += LCD_W; - } - } - - if (inv && height<8) { - if (ym8) { - lcd_mask(p, 0x01 << (ym8-1), FORCE); - } - else if (y) { - ASSERT_IN_DISPLAY(p - LCD_W); - lcd_mask(p - LCD_W, 0x80, FORCE); - } - } - } - - p++; - lcdNextPos++; - } -} -#else +#if !defined(CPUARM) void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, LcdFlags flags) { uint8_t *p = &displayBuf[ y / 8 * LCD_W + x ]; diff --git a/radio/src/tests/dblsize_128x64.png b/radio/src/tests/dblsize_128x64.png new file mode 100755 index 0000000000000000000000000000000000000000..b18c73888bd5d0058ee6001278a9162b021cba37 GIT binary patch literal 513 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h5*Qq09po*^6@9Je3(KLBz$3p^r= z85p=bL736}|T)RuRnP0zCZv9j9&9$5NVm^P`Q_Ys=_;3Pe=%3|YKR)eQ zzxYwst;1c`T8BSyRnIcW{=Z>kroGnT&)PC)-!9uDANu#1;+>v}Ws`2Tc-}s#@?>r; zNAU8SSMol6+LNsPz;L6r=ZV|9nX=Zt&N=sf!}MUU$aaanhy5l^D^Fl;Nmjq&Vc~LU z)`^qW-*`Aq7ieGl4Iw>FSeJ@?d=OoHLbkG+bxP2L8(YI%ilgqWjJ+`V+haw}%Jg!_ z(`W0CU)0l>bFy{G)46w9ZJ+t1`TN~_prgV2#A4UyIa%}0ZC3bHecTX6;zz({29boFyt=akR{0Px<}1^@s6 literal 0 HcmV?d00001 diff --git a/radio/src/tests/dblsize_212x64.png b/radio/src/tests/dblsize_212x64.png new file mode 100644 index 0000000000000000000000000000000000000000..81f2271ba0e47deeedf196a51265ea54ec2e1615 GIT binary patch literal 558 zcmeAS@N?(olHy`uVBq!ia0vp^SAf`og9%8!^*$#Bq?n7HJVQ7*IBq}me*oli7I;J! zGca&>f-s}`$7M44FHmW%!VVB4=-=NK3;;?$pL*ZxB?=@Zw^7^7zQ_+6)nQ&Xq zK0{Rzu`>7Tc4 z?bQd~{|>vFI)Cnqz2RC%KW)hT_DcQEp)kXVr++;>l=L(1@0INvw&#oYe$V#FJ-&^* z?@b!>(#Te_uX7}$9RvoZ0^1}pN)jS8n3#%bjq~# z8McdGx%8H6@tzfz`_6b*pzdgcK)~a@&y###6c4b@Jw)Er#g9cbP0l+XkK<`@X4 literal 0 HcmV?d00001 diff --git a/radio/src/tests/lcd.cpp b/radio/src/tests/lcd.cpp index 917b1cddd..723afd9ea 100644 --- a/radio/src/tests/lcd.cpp +++ b/radio/src/tests/lcd.cpp @@ -191,3 +191,36 @@ TEST(Lcd, vline) } EXPECT_TRUE(checkScreenshot("vline")); } + +TEST(Lcd, Stdsize) +{ + lcd_clear(); + lcd_putsAtt(0, 0, "TEST", 0); + lcd_putsAtt(10, 22, "TEST", INVERS); + lcd_filled_rect(8, 40, 100, 20); + lcd_putsAtt(10, 42, "TEST", 0); + EXPECT_TRUE(checkScreenshot("stdsize")); +} + +#if defined(CPUARM) +TEST(Lcd, Midsize) +{ + lcd_clear(); + lcd_putsAtt(0, 0, "TEST", MIDSIZE); + lcd_putsAtt(10, 22, "TEST", MIDSIZE|INVERS); + lcd_filled_rect(8, 40, 100, 20); + lcd_putsAtt(10, 42, "TEST", MIDSIZE); + EXPECT_TRUE(checkScreenshot("midsize")); +} + +TEST(Lcd, Dblsize) +{ + lcd_clear(); + lcd_putsAtt(2, 10, "TST", DBLSIZE); + lcd_putsAtt(42, 10, "TST", DBLSIZE|INVERS); + lcd_filled_rect(80, 8, 46, 24); + lcd_putsAtt(82, 10, "TST", DBLSIZE); + EXPECT_TRUE(checkScreenshot("dblsize")); +} + +#endif diff --git a/radio/src/tests/midsize_128x64.png b/radio/src/tests/midsize_128x64.png new file mode 100755 index 0000000000000000000000000000000000000000..316f7c0f9f7575b533e7111fd60d5aef556c8d8b GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h5*Qq09po*^6@9Je3(KLBz$3p^r= z85p=bL736}$lD-ElEN?Nrg+E{g+#4 zEc?@^VD{;0#eNrVMwu6#`@Jtd&R_Fp^xD_YcW>CX*kozhbFZ7)|H8M`iA~Kvk-zZ5 zVY^rM38mkaAN+~X|NnBSZAgDL+rb&X8T7QHV|6Mg9AuDlOkzmT3VHNDGHFlE`+*GD$n zAN5=C?fV8D)wFOI`PO#}IJ?jGG3=IHy@h>umizo<>YZ*rux-*0p}H z$9t0Kxr^=}`x>sT+Vxqc*3|Kc<*&oi*@r}SHLK}}?Nm8w`HS)3YsTr~mhSftDtq)W z9C^h2K<2OV!QV|5?*FHlGn@}MIIsJh`bP0l+XkKkR8u& literal 0 HcmV?d00001 diff --git a/radio/src/tests/midsize_212x64.png b/radio/src/tests/midsize_212x64.png new file mode 100644 index 0000000000000000000000000000000000000000..e043e45ef5f7ac6b5d80ef86d11acf9aed55fca4 GIT binary patch literal 532 zcmeAS@N?(olHy`uVBq!ia0vp^SAf`og9%8!^*$#Bq?n7HJVQ7*IBq}me*oli7I;J! zGca&>f-s}`$V@e$Ua==@Ji>pZWZ_CTwT% za4)O7=F)3f2M-ENzAz!_oO{m)LFJkw9P);T(3qRQ=X{^Mo89K=?uE_0tZRL?Z0q}W zU1n|d&e_c$Y?Cjp>UpzrVN8C@&Gnm~s2vMg|5n(@EV4kLxb#W1c-Q&M2TNNo9@T&J zJBIgu+N!A8^Y!b*)uJsNq(aI?1|a0hdf)%uk7yq*ZR40$GY+-*`W-j^ZdVjI&l4` z%arq13OFQZ>sWM1?(Dty(`8TUhq`@d-JT0?JPEUPj=#(DgQdIAsV|Dp|525v|GlJi uUxT&9&kEjkn^EjNW-lfHv=QQxe+=mX7nf-s}`$C<|8b(Ayd)|y^ZYNSAGf#VR{!4qDEZn&*;~u?@|WAzW!!vf z{)R2<)5c@`uiszHF!_06M$MX!7Wd{Yd+_$d??1*rBi=u8UZf_!x$OVdKEt?ohi261 zl+``=uSq%L?pAX~DtXU$saZcF9^bqFQ(%4E+>~P%B`C<_O)rN#gN literal 387 zcmeAS@N?(olHy`uVBq!ia0vp^SAf`og9%8!^*$#Bq?n7HJVQ7*IBq}me*oli7I;J! zGca&>f-s}`$$lAcNy)rvFI=n6&90x& ze!5-lqs?<0$A_!!82;&hoG2(SiA?Og!hRrKI(g6E$kXn}J{4Zsti6SQaYgOzzmuo+ z@82M~;%Rbk{JuZ7v)w?_8;||nW4q?T*N5l-ZmwCg{j*x&>EnU3_h&tyqwmicWhZvK z{#Im7$`NXZ`n=|o_q2ZJ pJLiwPZ>mYrL3I_HBPrqjWaIy2AzZAHKNlE`44$rjF6*2UngBk|qND%- diff --git a/radio/src/tests/stdsize_128x64.png b/radio/src/tests/stdsize_128x64.png new file mode 100644 index 0000000000000000000000000000000000000000..f2ef3b6f313889ce3967f7d080c0a77f9ae35e2b GIT binary patch literal 483 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h5*Qq09po*^6@9Je3(KLBz$3p^r= z85p=bL736}}xjQaSb$nWw&|Tn-V)M*Oi779vJw~y7&32 zo2ygZp$jTG-&S6W@+wqLyT*3+dYyoI&e{cQJN`cZd*Y|Q;p_Bo3|jlHY0H%IE`RUM zvLQ_7z`j#k=C<=}RVY7w)Ja_T#F?zMTNXUe5edourOA;k*dW2!fs;6T`C>lzbjBIQ zwnbtMZ@I+RUBCUjDzYNvpUeN%-3(EVzm?v7U-IR&>C!15G+M;&Gq3ourdwO#iB#Wh z%`LCa>^m}-;ag~#u10mx{S-&;N1W=)SDVhfsXe`v^={cV?WX^X^$oe2Nj|Pv9Uyy- z)o``3p7HDhq6%i>4nMx7*uU5(C)=8q5qNLy(fEDt@^Y;g9*MaeO}b#Ng@b=d#Wzp$Pz$V!tc^ literal 0 HcmV?d00001 diff --git a/radio/src/tests/stdsize_212x64.png b/radio/src/tests/stdsize_212x64.png new file mode 100644 index 0000000000000000000000000000000000000000..9b5894739bbd1103be534f133eccf6956db0ab16 GIT binary patch literal 507 zcmeAS@N?(olHy`uVBq!ia0vp^SAf`og9%8!^*$#Bq?n7HJVQ7*IBq}me*oli7I;J! zGca&>f-s}`$ELqV=NH%-T(6Wmf!ZEZ(h5rsjp`Dy3#C zetg)ypW~`~rRn+4Ccam_G*ctj$gLB9IOVv|WuXhd-oHKduik0@{LSnudIRfbuf94V z_I%PuLoe%nxruJNhf90!zWTz{W+AbA>6FTOy|H!=71e_L=D$6p@krUN=151s#79A8 zyQCxTJwG}Gu6}9adv@^xqaU{OZ@no0aO!#p@69ar_bbwmUEeKqf7^zvH}`6T{_ry&TW1`( zZl`IPx90iF+{x3qzm={3Ij6sWQ|Tm$>DN*1hB>IRI`?|$t-5tWv5%+r&nW(Ax_@ci z-U!>8a*-+LcwMgUTX^`sdX^mP)Pu?4xnFjdO7Fd|{-|$vxly>bo9o>=))1!wQx z&90l@aeCLI+m=^tcXM>FTYtL2zo4}lyT9)Tx%PxZgX1SN&$;a-kFu*50;7+?)78&q Iol`;+05l-$N&o-= literal 0 HcmV?d00001