summaryrefslogtreecommitdiff
path: root/noncore/apps/opie-reader/CEncoding.cpp
Unidiff
Diffstat (limited to 'noncore/apps/opie-reader/CEncoding.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/opie-reader/CEncoding.cpp182
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,22 +1,28 @@
1#include <stdio.h> 1#include <stdio.h>
2#include "CEncoding.h" 2#include "CEncoding.h"
3 3
4tchar CUtf8::getch() 4void 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)
21 { 27 {
22 case 0: 28 case 0:
@@ -30,121 +36,175 @@ tchar CUtf8::getch()
30 case 4: 36 case 4:
31 case 5: 37 case 5:
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 46void CUcs16be::getch(tchar& ch, CStyle& sty)
40tchar 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
48tchar CUcs16le::getch() 60void 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
56tchar Ccp1252::getch() 74void 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
122tchar CPalm::getch() 170void 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
144tchar CAscii::getch() 198void 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