LEDMatrixDisplay Program 文字ごとに色を変更できるように修正
Fork of LEDMatrix_Master by
8x8fontsLib.cpp@10:e261964e4989, 2014-03-28 (annotated)
- Committer:
- nameless129
- Date:
- Fri Mar 28 15:33:29 2014 +0000
- Revision:
- 10:e261964e4989
- Parent:
- 4:70a1803901d1
?????????????????
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
nameless129 | 4:70a1803901d1 | 1 | #include "mbed.h" |
nameless129 | 4:70a1803901d1 | 2 | #include "displayCom.h" |
nameless129 | 4:70a1803901d1 | 3 | #include "kfont8.h" |
nameless129 | 4:70a1803901d1 | 4 | #include "8x8fontsLib.h" |
nameless129 | 4:70a1803901d1 | 5 | #include "unicode2SJIS.h" |
nameless129 | 4:70a1803901d1 | 6 | |
nameless129 | 4:70a1803901d1 | 7 | |
nameless129 | 4:70a1803901d1 | 8 | |
nameless129 | 4:70a1803901d1 | 9 | |
nameless129 | 4:70a1803901d1 | 10 | extern unsigned short unicode2SJIS(char c); |
nameless129 | 4:70a1803901d1 | 11 | |
nameless129 | 4:70a1803901d1 | 12 | |
nameless129 | 4:70a1803901d1 | 13 | int offsety = 0; |
nameless129 | 4:70a1803901d1 | 14 | bool kstate = false; |
nameless129 | 4:70a1803901d1 | 15 | unsigned char kbuf; |
nameless129 | 4:70a1803901d1 | 16 | |
nameless129 | 4:70a1803901d1 | 17 | const unsigned char *findface(unsigned short c){ |
nameless129 | 4:70a1803901d1 | 18 | const unsigned char *p = NULL; |
nameless129 | 4:70a1803901d1 | 19 | int i, sum; |
nameless129 | 4:70a1803901d1 | 20 | for(sum = i = 0; i < countof(font8table); i++){ |
nameless129 | 4:70a1803901d1 | 21 | if(font8table[i].start <= c && c <= font8table[i].end){ |
nameless129 | 4:70a1803901d1 | 22 | p = &font8[(sum + c - font8table[i].start) << 3]; |
nameless129 | 4:70a1803901d1 | 23 | break; |
nameless129 | 4:70a1803901d1 | 24 | } |
nameless129 | 4:70a1803901d1 | 25 | sum += font8table[i].end - font8table[i].start + 1; |
nameless129 | 4:70a1803901d1 | 26 | } |
nameless129 | 4:70a1803901d1 | 27 | return p; |
nameless129 | 4:70a1803901d1 | 28 | } |
nameless129 | 4:70a1803901d1 | 29 | |
nameless129 | 4:70a1803901d1 | 30 | // draw 8x8 font |
nameless129 | 4:70a1803901d1 | 31 | // charWidth 1~8 |
nameless129 | 4:70a1803901d1 | 32 | |
nameless129 | 4:70a1803901d1 | 33 | void drawkanji(unsigned short c,unsigned char color, signed short posX, unsigned char posY,unsigned char charWidth){ |
nameless129 | 4:70a1803901d1 | 34 | unsigned char i = 0; |
nameless129 | 4:70a1803901d1 | 35 | const unsigned char *p = findface(c); |
nameless129 | 4:70a1803901d1 | 36 | if(p == NULL) return; |
nameless129 | 4:70a1803901d1 | 37 | |
nameless129 | 4:70a1803901d1 | 38 | if(color == COLOR_G || color == COLOR_C || color == COLOR_Y || color == COLOR_W) |
nameless129 | 4:70a1803901d1 | 39 | { |
nameless129 | 4:70a1803901d1 | 40 | for(i=0;i<charWidth;i++) |
nameless129 | 4:70a1803901d1 | 41 | { |
nameless129 | 4:70a1803901d1 | 42 | if( (posX+(7-i)) >= 0) |
nameless129 | 4:70a1803901d1 | 43 | { |
nameless129 | 4:70a1803901d1 | 44 | ImageBuf[0][ posX+(7-i) ] = p[i]<<posY; |
nameless129 | 4:70a1803901d1 | 45 | } |
nameless129 | 4:70a1803901d1 | 46 | } |
nameless129 | 4:70a1803901d1 | 47 | } |
nameless129 | 4:70a1803901d1 | 48 | if(color == COLOR_R || color == COLOR_Y || color == COLOR_M || color == COLOR_W) |
nameless129 | 4:70a1803901d1 | 49 | { |
nameless129 | 4:70a1803901d1 | 50 | for(i=0;i<charWidth;i++) |
nameless129 | 4:70a1803901d1 | 51 | { |
nameless129 | 4:70a1803901d1 | 52 | if( (posX+(7-i)) >= 0) |
nameless129 | 4:70a1803901d1 | 53 | { |
nameless129 | 4:70a1803901d1 | 54 | ImageBuf[1][ posX+(7-i) ] = p[i]<<posY; |
nameless129 | 4:70a1803901d1 | 55 | } |
nameless129 | 4:70a1803901d1 | 56 | } |
nameless129 | 4:70a1803901d1 | 57 | } |
nameless129 | 4:70a1803901d1 | 58 | if(color == COLOR_B || color == COLOR_C || color == COLOR_M || color == COLOR_W) |
nameless129 | 4:70a1803901d1 | 59 | { |
nameless129 | 4:70a1803901d1 | 60 | for(i=0;i<charWidth;i++) |
nameless129 | 4:70a1803901d1 | 61 | { |
nameless129 | 4:70a1803901d1 | 62 | if( (posX+(7-i)) >= 0) |
nameless129 | 4:70a1803901d1 | 63 | { |
nameless129 | 4:70a1803901d1 | 64 | |
nameless129 | 4:70a1803901d1 | 65 | ImageBuf[2][ posX+(7-i) ] = p[i]<<posY; |
nameless129 | 4:70a1803901d1 | 66 | } |
nameless129 | 4:70a1803901d1 | 67 | } |
nameless129 | 4:70a1803901d1 | 68 | } |
nameless129 | 4:70a1803901d1 | 69 | } |
nameless129 | 4:70a1803901d1 | 70 | |
nameless129 | 4:70a1803901d1 | 71 | void drawc(unsigned char c, unsigned char color, signed short posX, unsigned char posY, unsigned char charWidth){ |
nameless129 | 4:70a1803901d1 | 72 | if(kstate) |
nameless129 | 4:70a1803901d1 | 73 | { // 2nd byte of shift-jis |
nameless129 | 4:70a1803901d1 | 74 | kstate = false; |
nameless129 | 4:70a1803901d1 | 75 | drawkanji( (kbuf << 8 | c),color,posX,posY,charWidth); |
nameless129 | 4:70a1803901d1 | 76 | } |
nameless129 | 4:70a1803901d1 | 77 | else if((0x81 <= c && c <= 0x9f) || (0xe0 <= c && c <= 0xfc)){ // 1st byte of shift-jis |
nameless129 | 4:70a1803901d1 | 78 | kstate = true; |
nameless129 | 4:70a1803901d1 | 79 | kbuf = c; |
nameless129 | 4:70a1803901d1 | 80 | } |
nameless129 | 4:70a1803901d1 | 81 | else |
nameless129 | 4:70a1803901d1 | 82 | { |
nameless129 | 4:70a1803901d1 | 83 | drawkanji( unicode2SJIS_Table[c],color,posX,posY,charWidth); |
nameless129 | 4:70a1803901d1 | 84 | } |
nameless129 | 4:70a1803901d1 | 85 | } |
nameless129 | 4:70a1803901d1 | 86 | |
nameless129 | 4:70a1803901d1 | 87 | void drawStr8x8(char *str, unsigned char color, signed short posX, unsigned char posY){ |
nameless129 | 4:70a1803901d1 | 88 | unsigned char c = 0; |
nameless129 | 4:70a1803901d1 | 89 | unsigned char f_2byteChar = 0; |
nameless129 | 4:70a1803901d1 | 90 | unsigned char countChar = 0; |
nameless129 | 4:70a1803901d1 | 91 | signed short tmp_posX = 0; |
nameless129 | 4:70a1803901d1 | 92 | |
nameless129 | 4:70a1803901d1 | 93 | c = *str; |
nameless129 | 4:70a1803901d1 | 94 | while( (c != '\0') && (posX>=(countChar*8)) ) |
nameless129 | 4:70a1803901d1 | 95 | { |
nameless129 | 4:70a1803901d1 | 96 | drawc(c,color,(posX-(countChar*8)),posY,8); |
nameless129 | 4:70a1803901d1 | 97 | if( ((0x81 <= c && c <= 0x9f) || (0xe0 <= c && c <= 0xfc)) && f_2byteChar != 1 ) |
nameless129 | 4:70a1803901d1 | 98 | { // 1st byte of shift-jis |
nameless129 | 4:70a1803901d1 | 99 | f_2byteChar = 1; |
nameless129 | 4:70a1803901d1 | 100 | } |
nameless129 | 4:70a1803901d1 | 101 | else if(f_2byteChar == 1) |
nameless129 | 4:70a1803901d1 | 102 | { |
nameless129 | 4:70a1803901d1 | 103 | f_2byteChar = 0; |
nameless129 | 4:70a1803901d1 | 104 | countChar++; |
nameless129 | 4:70a1803901d1 | 105 | } |
nameless129 | 4:70a1803901d1 | 106 | else |
nameless129 | 4:70a1803901d1 | 107 | { |
nameless129 | 4:70a1803901d1 | 108 | f_2byteChar = 0; |
nameless129 | 4:70a1803901d1 | 109 | countChar++; |
nameless129 | 4:70a1803901d1 | 110 | } |
nameless129 | 4:70a1803901d1 | 111 | str++; |
nameless129 | 4:70a1803901d1 | 112 | c = *str; |
nameless129 | 4:70a1803901d1 | 113 | } |
nameless129 | 4:70a1803901d1 | 114 | if( ((posX%8) != 0) && (c != '\0') ) |
nameless129 | 4:70a1803901d1 | 115 | { |
nameless129 | 4:70a1803901d1 | 116 | tmp_posX = posX%8; |
nameless129 | 4:70a1803901d1 | 117 | tmp_posX = tmp_posX-8; |
nameless129 | 4:70a1803901d1 | 118 | do{ |
nameless129 | 4:70a1803901d1 | 119 | drawc(c,color,tmp_posX,posY,8); |
nameless129 | 4:70a1803901d1 | 120 | if( ((0x81 <= c && c <= 0x9f) || (0xe0 <= c && c <= 0xfc)) && (f_2byteChar != 1)){ |
nameless129 | 4:70a1803901d1 | 121 | f_2byteChar = 1; |
nameless129 | 4:70a1803901d1 | 122 | str++; |
nameless129 | 4:70a1803901d1 | 123 | c = *str; |
nameless129 | 4:70a1803901d1 | 124 | } |
nameless129 | 4:70a1803901d1 | 125 | else if(f_2byteChar == 1) |
nameless129 | 4:70a1803901d1 | 126 | { |
nameless129 | 4:70a1803901d1 | 127 | f_2byteChar = 0; |
nameless129 | 4:70a1803901d1 | 128 | countChar++; |
nameless129 | 4:70a1803901d1 | 129 | } |
nameless129 | 4:70a1803901d1 | 130 | else |
nameless129 | 4:70a1803901d1 | 131 | { |
nameless129 | 4:70a1803901d1 | 132 | f_2byteChar = 0; |
nameless129 | 4:70a1803901d1 | 133 | countChar++; |
nameless129 | 4:70a1803901d1 | 134 | } |
nameless129 | 4:70a1803901d1 | 135 | }while( (f_2byteChar == 1) ); |
nameless129 | 4:70a1803901d1 | 136 | } |
nameless129 | 4:70a1803901d1 | 137 | } |