author | llornkcor <llornkcor> | 2002-09-14 02:19:09 (UTC) |
---|---|---|
committer | llornkcor <llornkcor> | 2002-09-14 02:19:09 (UTC) |
commit | 2d0c1ffcb39f9fac8193ed2e9e93794de0bd7975 (patch) (unidiff) | |
tree | eeed16b5f80dd5883991a7a06133f5f7a6936256 /noncore/apps/opie-reader/CEncoding.cpp | |
parent | 5a95ed6a000a56849b8f093deea500214856c626 (diff) | |
download | opie-2d0c1ffcb39f9fac8193ed2e9e93794de0bd7975.zip opie-2d0c1ffcb39f9fac8193ed2e9e93794de0bd7975.tar.gz opie-2d0c1ffcb39f9fac8193ed2e9e93794de0bd7975.tar.bz2 |
update by Tim
Diffstat (limited to 'noncore/apps/opie-reader/CEncoding.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/apps/opie-reader/CEncoding.cpp | 182 |
1 files changed, 121 insertions, 61 deletions
diff --git a/noncore/apps/opie-reader/CEncoding.cpp b/noncore/apps/opie-reader/CEncoding.cpp index 18d18d3..c1dcfe8 100644 --- a/noncore/apps/opie-reader/CEncoding.cpp +++ b/noncore/apps/opie-reader/CEncoding.cpp | |||
@@ -1,20 +1,26 @@ | |||
1 | #include <stdio.h> | 1 | #include <stdio.h> |
2 | #include "CEncoding.h" | 2 | #include "CEncoding.h" |
3 | 3 | ||
4 | tchar CUtf8::getch() | 4 | void CUtf8::getch(tchar& ch, CStyle& sty) |
5 | { | 5 | { |
6 | int iret = parent->getch(); | 6 | int iret; |
7 | if (iret == EOF) return UEOF; | 7 | parent->getch(iret, sty); |
8 | if (iret == EOF) | ||
9 | { | ||
10 | ch = UEOF; | ||
11 | return; | ||
12 | } | ||
8 | tchar ret = iret; | 13 | tchar ret = iret; |
9 | int count = 0; | 14 | int count = 0; |
10 | if (ret & (1 << 7)) | 15 | if (ret & (1 << 7)) |
11 | { | 16 | { |
12 | unsigned char flags = ret << 1; | 17 | unsigned char flags = ret << 1; |
13 | while ((flags & (1 << 7)) != 0) | 18 | while ((flags & (1 << 7)) != 0) |
14 | { | 19 | { |
15 | ret <<= 6; | 20 | ret <<= 6; |
16 | ret += parent->getch() & 0x3f; | 21 | parent->getch(iret, sty); |
22 | ret += iret & 0x3f; | ||
17 | flags <<= 1; | 23 | flags <<= 1; |
18 | count++; | 24 | count++; |
19 | } | 25 | } |
20 | switch (count) | 26 | switch (count) |
@@ -32,119 +38,173 @@ tchar CUtf8::getch() | |||
32 | default: | 38 | default: |
33 | printf("Only 16bit unicode supported..."); | 39 | printf("Only 16bit unicode supported..."); |
34 | } | 40 | } |
35 | } | 41 | } |
36 | return ret; | 42 | ch = ret; |
43 | return; | ||
37 | } | 44 | } |
38 | 45 | ||
39 | 46 | void CUcs16be::getch(tchar& ch, CStyle& sty) | |
40 | tchar CUcs16be::getch() | ||
41 | { | 47 | { |
42 | int iret = parent->getch(); | 48 | int iret; |
43 | if (iret == EOF) return UEOF; | 49 | parent->getch(iret, sty); |
50 | if (iret == EOF) | ||
51 | { | ||
52 | ch = UEOF; | ||
53 | return; | ||
54 | } | ||
44 | tchar ret = iret; | 55 | tchar ret = iret; |
45 | return (ret << 8) + parent->getch(); | 56 | parent->getch(iret, sty); |
57 | ch = (ret << 8) + iret; | ||
46 | } | 58 | } |
47 | 59 | ||
48 | tchar CUcs16le::getch() | 60 | void CUcs16le::getch(tchar& ch, CStyle& sty) |
49 | { | 61 | { |
50 | int iret = parent->getch(); | 62 | int iret; |
51 | if (iret == EOF) return UEOF; | 63 | parent->getch(iret, sty); |
64 | if (iret == EOF) | ||
65 | { | ||
66 | ch = UEOF; | ||
67 | return; | ||
68 | } | ||
52 | tchar ret = iret; | 69 | tchar ret = iret; |
53 | return ret + (parent->getch() << 8); | 70 | parent->getch(iret, sty); |
71 | ch = ret + (iret << 8); | ||
54 | } | 72 | } |
55 | 73 | ||
56 | tchar Ccp1252::getch() | 74 | void Ccp1252::getch(tchar& ch, CStyle& sty) |
57 | { | 75 | { |
58 | int iret = parent->getch(); | 76 | int iret; |
59 | switch (iret) | 77 | parent->getch(iret, sty); |
78 | ch = iret; | ||
79 | switch (ch) | ||
60 | { | 80 | { |
61 | case EOF: | 81 | case EOF: |
62 | return UEOF; | 82 | ch = UEOF; |
83 | break; | ||
63 | case 0x80: | 84 | case 0x80: |
64 | return 0x20ac; | 85 | ch = 0x20ac; |
86 | break; | ||
65 | case 0x82: | 87 | case 0x82: |
66 | return 0x201a; | 88 | ch = 0x201a; |
89 | break; | ||
67 | case 0x83: | 90 | case 0x83: |
68 | return 0x0192; | 91 | ch = 0x0192; |
92 | break; | ||
69 | case 0x84: | 93 | case 0x84: |
70 | return 0x201e; | 94 | ch = 0x201e; |
95 | break; | ||
71 | case 0x85: | 96 | case 0x85: |
72 | return 0x2026; | 97 | ch = 0x2026; |
98 | break; | ||
73 | case 0x86: | 99 | case 0x86: |
74 | return 0x2020; | 100 | ch = 0x2020; |
101 | break; | ||
75 | case 0x87: | 102 | case 0x87: |
76 | return 0x2021; | 103 | ch = 0x2021; |
104 | break; | ||
77 | case 0x88: | 105 | case 0x88: |
78 | return 0x02c6; | 106 | ch = 0x02c6; |
107 | break; | ||
79 | case 0x89: | 108 | case 0x89: |
80 | return 0x2030; | 109 | ch = 0x2030; |
110 | break; | ||
81 | case 0x8a: | 111 | case 0x8a: |
82 | return 0x0160; | 112 | ch = 0x0160; |
113 | break; | ||
83 | case 0x8b: | 114 | case 0x8b: |
84 | return 0x2039; | 115 | ch = 0x2039; |
116 | break; | ||
85 | case 0x8c: | 117 | case 0x8c: |
86 | return 0x0152; | 118 | ch = 0x0152; |
119 | break; | ||
87 | case 0x8e: | 120 | case 0x8e: |
88 | return 0x017d; | 121 | ch = 0x017d; |
122 | break; | ||
89 | case 0x91: | 123 | case 0x91: |
90 | return 0x2018; | 124 | ch = 0x2018; |
125 | break; | ||
91 | case 0x92: | 126 | case 0x92: |
92 | return 0x2019; | 127 | ch = 0x2019; |
128 | break; | ||
93 | case 0x93: | 129 | case 0x93: |
94 | return 0x201c; | 130 | ch = 0x201c; |
131 | break; | ||
95 | case 0x94: | 132 | case 0x94: |
96 | return 0x201d; | 133 | ch = 0x201d; |
134 | break; | ||
97 | case 0x95: | 135 | case 0x95: |
98 | return 0x2022; | 136 | ch = 0x2022; |
137 | break; | ||
99 | case 0x96: | 138 | case 0x96: |
100 | return 0x2013; | 139 | ch = 0x2013; |
140 | break; | ||
101 | case 0x97: | 141 | case 0x97: |
102 | return 0x2014; | 142 | ch = 0x2014; |
143 | break; | ||
103 | case 0x98: | 144 | case 0x98: |
104 | return 0x02dc; | 145 | ch = 0x02dc; |
146 | break; | ||
105 | case 0x99: | 147 | case 0x99: |
106 | return 0x2122; | 148 | ch = 0x2122; |
149 | break; | ||
107 | case 0x9a: | 150 | case 0x9a: |
108 | return 0x0161; | 151 | ch = 0x0161; |
152 | break; | ||
109 | case 0x9b: | 153 | case 0x9b: |
110 | return 0x203a; | 154 | ch = 0x203a; |
155 | break; | ||
111 | case 0x9c: | 156 | case 0x9c: |
112 | return 0x0153; | 157 | ch = 0x0153; |
158 | break; | ||
113 | case 0x9e: | 159 | case 0x9e: |
114 | return 0x017e; | 160 | ch = 0x017e; |
161 | break; | ||
115 | case 0x9f: | 162 | case 0x9f: |
116 | return 0x0178; | 163 | ch = 0x0178; |
164 | break; | ||
117 | default: | 165 | default: |
118 | return iret; | 166 | break; |
119 | } | 167 | } |
120 | } | 168 | } |
121 | 169 | ||
122 | tchar CPalm::getch() | 170 | void CPalm::getch(tchar& ch, CStyle& sty) |
123 | { | 171 | { |
124 | tchar iret = Ccp1252::getch(); | 172 | Ccp1252::getch(ch, sty); |
125 | switch (iret) | 173 | switch (ch) |
126 | { | 174 | { |
127 | case 0x18: | 175 | case 0x18: |
128 | return 0x2026; | 176 | ch = 0x2026; |
177 | break; | ||
129 | case 0x19: | 178 | case 0x19: |
130 | return 0x2007; | 179 | ch = 0x2007; |
180 | break; | ||
131 | case 0x8d: | 181 | case 0x8d: |
132 | return 0x2662; | 182 | ch = 0x2662; |
183 | break; | ||
133 | case 0x8e: | 184 | case 0x8e: |
134 | return 0x2663; | 185 | ch = 0x2663; |
186 | break; | ||
135 | case 0x8f: | 187 | case 0x8f: |
136 | return 0x2661; | 188 | ch = 0x2661; |
189 | break; | ||
137 | case 0x90: | 190 | case 0x90: |
138 | return 0x2660; | 191 | ch = 0x2660; |
192 | break; | ||
139 | default: | 193 | default: |
140 | return iret; | 194 | break; |
141 | } | 195 | } |
142 | } | 196 | } |
143 | 197 | ||
144 | tchar CAscii::getch() | 198 | void CAscii::getch(tchar& ch, CStyle& sty) |
145 | { | 199 | { |
146 | int iret = parent->getch(); | 200 | int iret; |
147 | if (iret == EOF) return UEOF; | 201 | parent->getch(iret, sty); |
148 | return iret; | 202 | if (iret == EOF) |
203 | { | ||
204 | ch = UEOF; | ||
205 | } | ||
206 | else | ||
207 | { | ||
208 | ch = iret; | ||
209 | } | ||
149 | } | 210 | } |
150 | |||