Add Cyrillic support.

Fork of UniGraphicCyrillic by SlavaRoland

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)
 {