Add Cyrillic support.
Fork of UniGraphicCyrillic by
Diff: Graphics/GraphicsDisplay.cpp
- Revision:
- 35:77ba72271a4b
- Parent:
- 32:9cd6227dc7a6
- Child:
- 36:d04939621de7
--- a/Graphics/GraphicsDisplay.cpp Tue Jul 26 12:39:06 2016 +0000 +++ b/Graphics/GraphicsDisplay.cpp Tue Aug 16 13:23:04 2016 +0000 @@ -255,6 +255,11 @@ } int GraphicsDisplay::_putc(int value) { + static int flagCir; + if (value>=208){flagCir=value;} else + /* if (value==208){flagCir=value;} else + if (value==209){flagCir=value;} else + if (value==210){flagCir=value;} else*/ if (value == '\n') { // new line char_x = 0; char_y = char_y + fontvert*fontzoomver; @@ -262,13 +267,71 @@ char_y = 0; } } else { - character(char_x, char_y, value); + /* + int x = value / 100; + int y = (value-x*100) / 10; + int z = (value-x*100-y*10); + + character(char_x, char_y, 48+x); + character(char_x, char_y, 48+y); + character(char_x, char_y, 48+z); */ + /* if (flagCir==208) { + switch (value){ + case 129: value=168; break; + case 132: value=170; break; + case 134: value=178; break; + case 135: value=175; break; + default: + value+=48;break; + } + } + if (flagCir==209) { + switch (value){ + case 145: value=184; break; + case 148: value=186; break; + case 150: value=179; break; + case 151: value=191; break; + default: + value+=112;break; + } + } + if (flagCir==210) { + switch (value){ + case 144: value=165; break; + case 145: value=180; break; + } + }*/ + character(char_x, char_y,flagCir*256+value); + flagCir=0; if(auto_up) copy_to_lcd(); } return value; } void GraphicsDisplay::character(int x, int y, int c) -{ +{ + switch (c){ + case (208*256+129): c=168; break; + case (208*256+132): c=170; break; + case (208*256+134): c=178; break; + case (208*256+135): c=175; break; + case (209*256+145): c=184; break; + case (209*256+148): c=186; break; + case (209*256+150): c=179; break; + case (209*256+151): c=191; break; + case (210*256+144): c=165; break; + case (210*256+145): c=180; break; + } + + int val = 209; // Read D8..D15 + val <<= 8; + val |= 128; //Read D0..D7 */ + if (c>=val){c=c-val+240;} + + val = 208; // Read D8..D15 + val <<= 8; + val |= 144; //Read D0..D7 */ + if (c>=val){c=c-val+192;} + char_x=x; char_y=y; int j,i,b; @@ -320,6 +383,7 @@ else char_x += fonthor*fontzoomhor; } else char_x += fonthor*fontzoomhor; // fixed width + } void GraphicsDisplay::Bitmap_BW(Bitmap_s bm, int x, int y) {