Logic cleanup in utf_mapper.

This commit is contained in:
AnHardt 2015-03-13 19:45:10 +01:00
parent ace3c62a1c
commit 3240d89f7d

View file

@ -9,14 +9,14 @@
#define HARDWAERE_CHAR_OUT lcd.write #define HARDWAERE_CHAR_OUT lcd.write
#endif #endif
#ifndef SIMULATE_ROMFONT #if !(defined( SIMULATE_ROMFONT )) && defined( DOGLCD )
#if defined( DISPLAY_CHARSET_ISO10646_1 ) && defined( DOGLCD ) #if defined( DISPLAY_CHARSET_ISO10646_1 )
#define MAPPER_ONE_TO_ONE #define MAPPER_ONE_TO_ONE
#elif defined( DISPLAY_CHARSET_ISO10646_5 ) && defined( DOGLCD ) #elif defined( DISPLAY_CHARSET_ISO10646_5 )
#define MAPPER_ONE_TO_ONE #define MAPPER_ONE_TO_ONE
#elif defined( DISPLAY_CHARSET_ISO10646_KANA ) && defined( DOGLCD ) #elif defined( DISPLAY_CHARSET_ISO10646_KANA )
#define MAPPER_ONE_TO_ONE #define MAPPER_ONE_TO_ONE
#elif defined( DISPLAY_CHARSET_KANJI ) && defined( DOGLCD ) #elif defined( DISPLAY_CHARSET_KANJI )
#define MAPPER_NON #define MAPPER_NON
#endif #endif
#else // SIMULATE_ROMFONT #else // SIMULATE_ROMFONT
@ -59,6 +59,7 @@
#elif defined( DISPLAY_CHARSET_HD44780_WESTERN ) #elif defined( DISPLAY_CHARSET_HD44780_WESTERN )
#if defined( MAPPER_C2C3 ) #if defined( MAPPER_C2C3 )
:
const PROGMEM uint8_t utf_recode[] = const PROGMEM uint8_t utf_recode[] =
{ // 0 1 2 3 4 5 6 7 8 9 a b c d e f This is relative complete. { // 0 1 2 3 4 5 6 7 8 9 a b c d e f This is relative complete.
0x20,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0x22,0xa9,0xaa,0xab,0x3f,0x3f,0xae,0x3f, // c2a ¡¢£¤¥¦§¨©ª«¬­®¯ 0x20,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0x22,0xa9,0xaa,0xab,0x3f,0x3f,0xae,0x3f, // c2a ¡¢£¤¥¦§¨©ª«¬­®¯
@ -119,6 +120,8 @@
#elif defined( MAPPER_E382E383 ) #elif defined( MAPPER_E382E383 )
#error( "Katakana on a cyrillic display makes no sense. There are no matching symbols." ); #error( "Katakana on a cyrillic display makes no sense. There are no matching symbols." );
#endif #endif
#else
#error("Something went wrong in the selection of DISPLAY_CHARSET_HD44780's");
#endif // DISPLAY_CHARSET_HD44780_CYRILIC #endif // DISPLAY_CHARSET_HD44780_CYRILIC
#endif // SIMULATE_ROMFONT #endif // SIMULATE_ROMFONT
@ -141,7 +144,7 @@
else if (seen_c2){ else if (seen_c2){
d &= 0x3f; d &= 0x3f;
#ifndef MAPPER_ONE_TO_ONE #ifndef MAPPER_ONE_TO_ONE
HARDWAERE_CHAR_OUT( (char) pgm_read_byte_near( utf_recode + d + ( utf_hi_char << 6 ) - 0x20) ); HARDWAERE_CHAR_OUT( (char) pgm_read_byte_near( utf_recode + d + ( utf_hi_char << 6 ) - 0x20 ) );
#else #else
HARDWAERE_CHAR_OUT( (char) (0x80 + ( utf_hi_char << 6 ) + d) ) ; HARDWAERE_CHAR_OUT( (char) (0x80 + ( utf_hi_char << 6 ) + d) ) ;
#endif #endif
@ -175,7 +178,7 @@
} else if ((utf_hi_char == 1) && (d == 0x11)) { } else if ((utf_hi_char == 1) && (d == 0x11)) {
HARDWAERE_CHAR_OUT((char) 0xb5 ); // ё HARDWAERE_CHAR_OUT((char) 0xb5 ); // ё
} else { } else {
HARDWAERE_CHAR_OUT((char) pgm_read_byte_near( utf_recode + d + ( utf_hi_char << 6 ) - 0x10 )); HARDWAERE_CHAR_OUT((char) pgm_read_byte_near( utf_recode + d + ( utf_hi_char << 6 ) - 0x10 ) );
} }
} }
else { else {
@ -200,9 +203,9 @@
} else if (seen_d5) { } else if (seen_d5) {
d &= 0x3fu; d &= 0x3fu;
#ifndef MAPPER_ONE_TO_ONE #ifndef MAPPER_ONE_TO_ONE
HARDWAERE_CHAR_OUT( (char) pgm_read_byte_near( utf_recode + d + ( utf_hi_char << 6 ) - 0x20) ); HARDWAERE_CHAR_OUT( (char) pgm_read_byte_near( utf_recode + d + ( utf_hi_char << 6 ) - 0x20 ) );
#else #else
HARDWAERE_CHAR_OUT( (char) (0xa0u + ( utf_hi_char << 6 ) + d) ) ; HARDWAERE_CHAR_OUT( (char) (0xa0u + ( utf_hi_char << 6 ) + d ) ) ;
#endif #endif
} else { } else {
HARDWAERE_CHAR_OUT('?'); HARDWAERE_CHAR_OUT('?');
@ -230,9 +233,9 @@
} else if ((seen_e3 == true) && (seen_82_83 == true)){ } else if ((seen_e3 == true) && (seen_82_83 == true)){
d &= 0x3f; d &= 0x3f;
#ifndef MAPPER_ONE_TO_ONE #ifndef MAPPER_ONE_TO_ONE
HARDWAERE_CHAR_OUT( (char) pgm_read_byte_near( utf_recode + d + ( utf_hi_char << 6 ) - 0x20) ); HARDWAERE_CHAR_OUT( (char) pgm_read_byte_near( utf_recode + d + ( utf_hi_char << 6 ) - 0x20 ) );
#else #else
HARDWAERE_CHAR_OUT( (char) (0x80 + ( utf_hi_char << 6 ) + d) ) ; HARDWAERE_CHAR_OUT( (char) (0x80 + ( utf_hi_char << 6 ) + d ) ) ;
#endif #endif
} else { } else {
HARDWAERE_CHAR_OUT((char) '?' ); HARDWAERE_CHAR_OUT((char) '?' );