author | llornkcor <llornkcor> | 2002-07-01 23:24:08 (UTC) |
---|---|---|
committer | llornkcor <llornkcor> | 2002-07-01 23:24:08 (UTC) |
commit | 59222a752fa4c8a1e8c2a00ee2f9e22855f12bb2 (patch) (side-by-side diff) | |
tree | f148d4858859dac3b413e675c760acfdab24b8e6 /noncore/apps/opie-reader/CEncoding.cpp | |
parent | c08be8ae22dcc1bfb83cfdec807149b161d770f5 (diff) | |
download | opie-59222a752fa4c8a1e8c2a00ee2f9e22855f12bb2.zip opie-59222a752fa4c8a1e8c2a00ee2f9e22855f12bb2.tar.gz opie-59222a752fa4c8a1e8c2a00ee2f9e22855f12bb2.tar.bz2 |
initial
Diffstat (limited to 'noncore/apps/opie-reader/CEncoding.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/apps/opie-reader/CEncoding.cpp | 150 |
1 files changed, 150 insertions, 0 deletions
diff --git a/noncore/apps/opie-reader/CEncoding.cpp b/noncore/apps/opie-reader/CEncoding.cpp new file mode 100644 index 0000000..18d18d3 --- a/dev/null +++ b/noncore/apps/opie-reader/CEncoding.cpp @@ -0,0 +1,150 @@ +#include <stdio.h> +#include "CEncoding.h" + +tchar CUtf8::getch() +{ + int iret = parent->getch(); + if (iret == EOF) return UEOF; + tchar ret = iret; + int count = 0; + if (ret & (1 << 7)) + { + unsigned char flags = ret << 1; + while ((flags & (1 << 7)) != 0) + { + ret <<= 6; + ret += parent->getch() & 0x3f; + flags <<= 1; + count++; + } + switch (count) + { + case 0: + break; + case 1: + ret &= 0x07ff; + break; + case 2: + break; + case 3: + case 4: + case 5: + default: + printf("Only 16bit unicode supported..."); + } + } + return ret; +} + + +tchar CUcs16be::getch() +{ + int iret = parent->getch(); + if (iret == EOF) return UEOF; + tchar ret = iret; + return (ret << 8) + parent->getch(); +} + +tchar CUcs16le::getch() +{ + int iret = parent->getch(); + if (iret == EOF) return UEOF; + tchar ret = iret; + return ret + (parent->getch() << 8); +} + +tchar Ccp1252::getch() +{ + int iret = parent->getch(); + switch (iret) + { + case EOF: + return UEOF; + case 0x80: + return 0x20ac; + case 0x82: + return 0x201a; + case 0x83: + return 0x0192; + case 0x84: + return 0x201e; + case 0x85: + return 0x2026; + case 0x86: + return 0x2020; + case 0x87: + return 0x2021; + case 0x88: + return 0x02c6; + case 0x89: + return 0x2030; + case 0x8a: + return 0x0160; + case 0x8b: + return 0x2039; + case 0x8c: + return 0x0152; + case 0x8e: + return 0x017d; + case 0x91: + return 0x2018; + case 0x92: + return 0x2019; + case 0x93: + return 0x201c; + case 0x94: + return 0x201d; + case 0x95: + return 0x2022; + case 0x96: + return 0x2013; + case 0x97: + return 0x2014; + case 0x98: + return 0x02dc; + case 0x99: + return 0x2122; + case 0x9a: + return 0x0161; + case 0x9b: + return 0x203a; + case 0x9c: + return 0x0153; + case 0x9e: + return 0x017e; + case 0x9f: + return 0x0178; + default: + return iret; + } +} + +tchar CPalm::getch() +{ + tchar iret = Ccp1252::getch(); + switch (iret) + { + case 0x18: + return 0x2026; + case 0x19: + return 0x2007; + case 0x8d: + return 0x2662; + case 0x8e: + return 0x2663; + case 0x8f: + return 0x2661; + case 0x90: + return 0x2660; + default: + return iret; + } +} + +tchar CAscii::getch() +{ + int iret = parent->getch(); + if (iret == EOF) return UEOF; + return iret; +} + |