]> git.ipfire.org Git - thirdparty/cups.git/blob - pdftops/Stream-CCITT.h
Merge changes from CUPS 1.4svn-r7199.
[thirdparty/cups.git] / pdftops / Stream-CCITT.h
1 //========================================================================
2 //
3 // Stream-CCITT.h
4 //
5 // Tables for CCITT Fax decoding.
6 //
7 // Copyright 1996-2003 Glyph & Cog, LLC
8 //
9 //========================================================================
10
11 struct CCITTCode {
12 short bits;
13 short n;
14 };
15
16 #define ccittEOL -2
17
18 //------------------------------------------------------------------------
19 // 2D codes
20 //------------------------------------------------------------------------
21
22 #define twoDimPass 0
23 #define twoDimHoriz 1
24 #define twoDimVert0 2
25 #define twoDimVertR1 3
26 #define twoDimVertL1 4
27 #define twoDimVertR2 5
28 #define twoDimVertL2 6
29 #define twoDimVertR3 7
30 #define twoDimVertL3 8
31
32 // 1-7 bit codes
33 static CCITTCode twoDimTab1[128] = {
34 {-1, -1}, {-1, -1}, // 000000x
35 {7, twoDimVertL3}, // 0000010
36 {7, twoDimVertR3}, // 0000011
37 {6, twoDimVertL2}, {6, twoDimVertL2}, // 000010x
38 {6, twoDimVertR2}, {6, twoDimVertR2}, // 000011x
39 {4, twoDimPass}, {4, twoDimPass}, // 0001xxx
40 {4, twoDimPass}, {4, twoDimPass},
41 {4, twoDimPass}, {4, twoDimPass},
42 {4, twoDimPass}, {4, twoDimPass},
43 {3, twoDimHoriz}, {3, twoDimHoriz}, // 001xxxx
44 {3, twoDimHoriz}, {3, twoDimHoriz},
45 {3, twoDimHoriz}, {3, twoDimHoriz},
46 {3, twoDimHoriz}, {3, twoDimHoriz},
47 {3, twoDimHoriz}, {3, twoDimHoriz},
48 {3, twoDimHoriz}, {3, twoDimHoriz},
49 {3, twoDimHoriz}, {3, twoDimHoriz},
50 {3, twoDimHoriz}, {3, twoDimHoriz},
51 {3, twoDimVertL1}, {3, twoDimVertL1}, // 010xxxx
52 {3, twoDimVertL1}, {3, twoDimVertL1},
53 {3, twoDimVertL1}, {3, twoDimVertL1},
54 {3, twoDimVertL1}, {3, twoDimVertL1},
55 {3, twoDimVertL1}, {3, twoDimVertL1},
56 {3, twoDimVertL1}, {3, twoDimVertL1},
57 {3, twoDimVertL1}, {3, twoDimVertL1},
58 {3, twoDimVertL1}, {3, twoDimVertL1},
59 {3, twoDimVertR1}, {3, twoDimVertR1}, // 011xxxx
60 {3, twoDimVertR1}, {3, twoDimVertR1},
61 {3, twoDimVertR1}, {3, twoDimVertR1},
62 {3, twoDimVertR1}, {3, twoDimVertR1},
63 {3, twoDimVertR1}, {3, twoDimVertR1},
64 {3, twoDimVertR1}, {3, twoDimVertR1},
65 {3, twoDimVertR1}, {3, twoDimVertR1},
66 {3, twoDimVertR1}, {3, twoDimVertR1},
67 {1, twoDimVert0}, {1, twoDimVert0}, // 1xxxxxx
68 {1, twoDimVert0}, {1, twoDimVert0},
69 {1, twoDimVert0}, {1, twoDimVert0},
70 {1, twoDimVert0}, {1, twoDimVert0},
71 {1, twoDimVert0}, {1, twoDimVert0},
72 {1, twoDimVert0}, {1, twoDimVert0},
73 {1, twoDimVert0}, {1, twoDimVert0},
74 {1, twoDimVert0}, {1, twoDimVert0},
75 {1, twoDimVert0}, {1, twoDimVert0},
76 {1, twoDimVert0}, {1, twoDimVert0},
77 {1, twoDimVert0}, {1, twoDimVert0},
78 {1, twoDimVert0}, {1, twoDimVert0},
79 {1, twoDimVert0}, {1, twoDimVert0},
80 {1, twoDimVert0}, {1, twoDimVert0},
81 {1, twoDimVert0}, {1, twoDimVert0},
82 {1, twoDimVert0}, {1, twoDimVert0},
83 {1, twoDimVert0}, {1, twoDimVert0},
84 {1, twoDimVert0}, {1, twoDimVert0},
85 {1, twoDimVert0}, {1, twoDimVert0},
86 {1, twoDimVert0}, {1, twoDimVert0},
87 {1, twoDimVert0}, {1, twoDimVert0},
88 {1, twoDimVert0}, {1, twoDimVert0},
89 {1, twoDimVert0}, {1, twoDimVert0},
90 {1, twoDimVert0}, {1, twoDimVert0},
91 {1, twoDimVert0}, {1, twoDimVert0},
92 {1, twoDimVert0}, {1, twoDimVert0},
93 {1, twoDimVert0}, {1, twoDimVert0},
94 {1, twoDimVert0}, {1, twoDimVert0},
95 {1, twoDimVert0}, {1, twoDimVert0},
96 {1, twoDimVert0}, {1, twoDimVert0},
97 {1, twoDimVert0}, {1, twoDimVert0},
98 {1, twoDimVert0}, {1, twoDimVert0}
99 };
100
101 //------------------------------------------------------------------------
102 // white run lengths
103 //------------------------------------------------------------------------
104
105 // 11-12 bit codes (upper 7 bits are 0)
106 static CCITTCode whiteTab1[32] = {
107 {-1, -1}, // 00000
108 {12, ccittEOL}, // 00001
109 {-1, -1}, {-1, -1}, // 0001x
110 {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, // 001xx
111 {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, // 010xx
112 {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, // 011xx
113 {11, 1792}, {11, 1792}, // 1000x
114 {12, 1984}, // 10010
115 {12, 2048}, // 10011
116 {12, 2112}, // 10100
117 {12, 2176}, // 10101
118 {12, 2240}, // 10110
119 {12, 2304}, // 10111
120 {11, 1856}, {11, 1856}, // 1100x
121 {11, 1920}, {11, 1920}, // 1101x
122 {12, 2368}, // 11100
123 {12, 2432}, // 11101
124 {12, 2496}, // 11110
125 {12, 2560} // 11111
126 };
127
128 // 1-9 bit codes
129 static CCITTCode whiteTab2[512] = {
130 {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, // 0000000xx
131 {8, 29}, {8, 29}, // 00000010x
132 {8, 30}, {8, 30}, // 00000011x
133 {8, 45}, {8, 45}, // 00000100x
134 {8, 46}, {8, 46}, // 00000101x
135 {7, 22}, {7, 22}, {7, 22}, {7, 22}, // 0000011xx
136 {7, 23}, {7, 23}, {7, 23}, {7, 23}, // 0000100xx
137 {8, 47}, {8, 47}, // 00001010x
138 {8, 48}, {8, 48}, // 00001011x
139 {6, 13}, {6, 13}, {6, 13}, {6, 13}, // 000011xxx
140 {6, 13}, {6, 13}, {6, 13}, {6, 13},
141 {7, 20}, {7, 20}, {7, 20}, {7, 20}, // 0001000xx
142 {8, 33}, {8, 33}, // 00010010x
143 {8, 34}, {8, 34}, // 00010011x
144 {8, 35}, {8, 35}, // 00010100x
145 {8, 36}, {8, 36}, // 00010101x
146 {8, 37}, {8, 37}, // 00010110x
147 {8, 38}, {8, 38}, // 00010111x
148 {7, 19}, {7, 19}, {7, 19}, {7, 19}, // 0001100xx
149 {8, 31}, {8, 31}, // 00011010x
150 {8, 32}, {8, 32}, // 00011011x
151 {6, 1}, {6, 1}, {6, 1}, {6, 1}, // 000111xxx
152 {6, 1}, {6, 1}, {6, 1}, {6, 1},
153 {6, 12}, {6, 12}, {6, 12}, {6, 12}, // 001000xxx
154 {6, 12}, {6, 12}, {6, 12}, {6, 12},
155 {8, 53}, {8, 53}, // 00100100x
156 {8, 54}, {8, 54}, // 00100101x
157 {7, 26}, {7, 26}, {7, 26}, {7, 26}, // 0010011xx
158 {8, 39}, {8, 39}, // 00101000x
159 {8, 40}, {8, 40}, // 00101001x
160 {8, 41}, {8, 41}, // 00101010x
161 {8, 42}, {8, 42}, // 00101011x
162 {8, 43}, {8, 43}, // 00101100x
163 {8, 44}, {8, 44}, // 00101101x
164 {7, 21}, {7, 21}, {7, 21}, {7, 21}, // 0010111xx
165 {7, 28}, {7, 28}, {7, 28}, {7, 28}, // 0011000xx
166 {8, 61}, {8, 61}, // 00110010x
167 {8, 62}, {8, 62}, // 00110011x
168 {8, 63}, {8, 63}, // 00110100x
169 {8, 0}, {8, 0}, // 00110101x
170 {8, 320}, {8, 320}, // 00110110x
171 {8, 384}, {8, 384}, // 00110111x
172 {5, 10}, {5, 10}, {5, 10}, {5, 10}, // 00111xxxx
173 {5, 10}, {5, 10}, {5, 10}, {5, 10},
174 {5, 10}, {5, 10}, {5, 10}, {5, 10},
175 {5, 10}, {5, 10}, {5, 10}, {5, 10},
176 {5, 11}, {5, 11}, {5, 11}, {5, 11}, // 01000xxxx
177 {5, 11}, {5, 11}, {5, 11}, {5, 11},
178 {5, 11}, {5, 11}, {5, 11}, {5, 11},
179 {5, 11}, {5, 11}, {5, 11}, {5, 11},
180 {7, 27}, {7, 27}, {7, 27}, {7, 27}, // 0100100xx
181 {8, 59}, {8, 59}, // 01001010x
182 {8, 60}, {8, 60}, // 01001011x
183 {9, 1472}, // 010011000
184 {9, 1536}, // 010011001
185 {9, 1600}, // 010011010
186 {9, 1728}, // 010011011
187 {7, 18}, {7, 18}, {7, 18}, {7, 18}, // 0100111xx
188 {7, 24}, {7, 24}, {7, 24}, {7, 24}, // 0101000xx
189 {8, 49}, {8, 49}, // 01010010x
190 {8, 50}, {8, 50}, // 01010011x
191 {8, 51}, {8, 51}, // 01010100x
192 {8, 52}, {8, 52}, // 01010101x
193 {7, 25}, {7, 25}, {7, 25}, {7, 25}, // 0101011xx
194 {8, 55}, {8, 55}, // 01011000x
195 {8, 56}, {8, 56}, // 01011001x
196 {8, 57}, {8, 57}, // 01011010x
197 {8, 58}, {8, 58}, // 01011011x
198 {6, 192}, {6, 192}, {6, 192}, {6, 192}, // 010111xxx
199 {6, 192}, {6, 192}, {6, 192}, {6, 192},
200 {6, 1664}, {6, 1664}, {6, 1664}, {6, 1664}, // 011000xxx
201 {6, 1664}, {6, 1664}, {6, 1664}, {6, 1664},
202 {8, 448}, {8, 448}, // 01100100x
203 {8, 512}, {8, 512}, // 01100101x
204 {9, 704}, // 011001100
205 {9, 768}, // 011001101
206 {8, 640}, {8, 640}, // 01100111x
207 {8, 576}, {8, 576}, // 01101000x
208 {9, 832}, // 011010010
209 {9, 896}, // 011010011
210 {9, 960}, // 011010100
211 {9, 1024}, // 011010101
212 {9, 1088}, // 011010110
213 {9, 1152}, // 011010111
214 {9, 1216}, // 011011000
215 {9, 1280}, // 011011001
216 {9, 1344}, // 011011010
217 {9, 1408}, // 011011011
218 {7, 256}, {7, 256}, {7, 256}, {7, 256}, // 0110111xx
219 {4, 2}, {4, 2}, {4, 2}, {4, 2}, // 0111xxxxx
220 {4, 2}, {4, 2}, {4, 2}, {4, 2},
221 {4, 2}, {4, 2}, {4, 2}, {4, 2},
222 {4, 2}, {4, 2}, {4, 2}, {4, 2},
223 {4, 2}, {4, 2}, {4, 2}, {4, 2},
224 {4, 2}, {4, 2}, {4, 2}, {4, 2},
225 {4, 2}, {4, 2}, {4, 2}, {4, 2},
226 {4, 2}, {4, 2}, {4, 2}, {4, 2},
227 {4, 3}, {4, 3}, {4, 3}, {4, 3}, // 1000xxxxx
228 {4, 3}, {4, 3}, {4, 3}, {4, 3},
229 {4, 3}, {4, 3}, {4, 3}, {4, 3},
230 {4, 3}, {4, 3}, {4, 3}, {4, 3},
231 {4, 3}, {4, 3}, {4, 3}, {4, 3},
232 {4, 3}, {4, 3}, {4, 3}, {4, 3},
233 {4, 3}, {4, 3}, {4, 3}, {4, 3},
234 {4, 3}, {4, 3}, {4, 3}, {4, 3},
235 {5, 128}, {5, 128}, {5, 128}, {5, 128}, // 10010xxxx
236 {5, 128}, {5, 128}, {5, 128}, {5, 128},
237 {5, 128}, {5, 128}, {5, 128}, {5, 128},
238 {5, 128}, {5, 128}, {5, 128}, {5, 128},
239 {5, 8}, {5, 8}, {5, 8}, {5, 8}, // 10011xxxx
240 {5, 8}, {5, 8}, {5, 8}, {5, 8},
241 {5, 8}, {5, 8}, {5, 8}, {5, 8},
242 {5, 8}, {5, 8}, {5, 8}, {5, 8},
243 {5, 9}, {5, 9}, {5, 9}, {5, 9}, // 10100xxxx
244 {5, 9}, {5, 9}, {5, 9}, {5, 9},
245 {5, 9}, {5, 9}, {5, 9}, {5, 9},
246 {5, 9}, {5, 9}, {5, 9}, {5, 9},
247 {6, 16}, {6, 16}, {6, 16}, {6, 16}, // 101010xxx
248 {6, 16}, {6, 16}, {6, 16}, {6, 16},
249 {6, 17}, {6, 17}, {6, 17}, {6, 17}, // 101011xxx
250 {6, 17}, {6, 17}, {6, 17}, {6, 17},
251 {4, 4}, {4, 4}, {4, 4}, {4, 4}, // 1011xxxxx
252 {4, 4}, {4, 4}, {4, 4}, {4, 4},
253 {4, 4}, {4, 4}, {4, 4}, {4, 4},
254 {4, 4}, {4, 4}, {4, 4}, {4, 4},
255 {4, 4}, {4, 4}, {4, 4}, {4, 4},
256 {4, 4}, {4, 4}, {4, 4}, {4, 4},
257 {4, 4}, {4, 4}, {4, 4}, {4, 4},
258 {4, 4}, {4, 4}, {4, 4}, {4, 4},
259 {4, 5}, {4, 5}, {4, 5}, {4, 5}, // 1100xxxxx
260 {4, 5}, {4, 5}, {4, 5}, {4, 5},
261 {4, 5}, {4, 5}, {4, 5}, {4, 5},
262 {4, 5}, {4, 5}, {4, 5}, {4, 5},
263 {4, 5}, {4, 5}, {4, 5}, {4, 5},
264 {4, 5}, {4, 5}, {4, 5}, {4, 5},
265 {4, 5}, {4, 5}, {4, 5}, {4, 5},
266 {4, 5}, {4, 5}, {4, 5}, {4, 5},
267 {6, 14}, {6, 14}, {6, 14}, {6, 14}, // 110100xxx
268 {6, 14}, {6, 14}, {6, 14}, {6, 14},
269 {6, 15}, {6, 15}, {6, 15}, {6, 15}, // 110101xxx
270 {6, 15}, {6, 15}, {6, 15}, {6, 15},
271 {5, 64}, {5, 64}, {5, 64}, {5, 64}, // 11011xxxx
272 {5, 64}, {5, 64}, {5, 64}, {5, 64},
273 {5, 64}, {5, 64}, {5, 64}, {5, 64},
274 {5, 64}, {5, 64}, {5, 64}, {5, 64},
275 {4, 6}, {4, 6}, {4, 6}, {4, 6}, // 1110xxxxx
276 {4, 6}, {4, 6}, {4, 6}, {4, 6},
277 {4, 6}, {4, 6}, {4, 6}, {4, 6},
278 {4, 6}, {4, 6}, {4, 6}, {4, 6},
279 {4, 6}, {4, 6}, {4, 6}, {4, 6},
280 {4, 6}, {4, 6}, {4, 6}, {4, 6},
281 {4, 6}, {4, 6}, {4, 6}, {4, 6},
282 {4, 6}, {4, 6}, {4, 6}, {4, 6},
283 {4, 7}, {4, 7}, {4, 7}, {4, 7}, // 1111xxxxx
284 {4, 7}, {4, 7}, {4, 7}, {4, 7},
285 {4, 7}, {4, 7}, {4, 7}, {4, 7},
286 {4, 7}, {4, 7}, {4, 7}, {4, 7},
287 {4, 7}, {4, 7}, {4, 7}, {4, 7},
288 {4, 7}, {4, 7}, {4, 7}, {4, 7},
289 {4, 7}, {4, 7}, {4, 7}, {4, 7},
290 {4, 7}, {4, 7}, {4, 7}, {4, 7}
291 };
292
293 //------------------------------------------------------------------------
294 // black run lengths
295 //------------------------------------------------------------------------
296
297 // 10-13 bit codes (upper 6 bits are 0)
298 static CCITTCode blackTab1[128] = {
299 {-1, -1}, {-1, -1}, // 000000000000x
300 {12, ccittEOL}, {12, ccittEOL}, // 000000000001x
301 {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, // 00000000001xx
302 {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, // 00000000010xx
303 {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, // 00000000011xx
304 {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, // 00000000100xx
305 {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, // 00000000101xx
306 {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, // 00000000110xx
307 {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, // 00000000111xx
308 {11, 1792}, {11, 1792}, {11, 1792}, {11, 1792}, // 00000001000xx
309 {12, 1984}, {12, 1984}, // 000000010010x
310 {12, 2048}, {12, 2048}, // 000000010011x
311 {12, 2112}, {12, 2112}, // 000000010100x
312 {12, 2176}, {12, 2176}, // 000000010101x
313 {12, 2240}, {12, 2240}, // 000000010110x
314 {12, 2304}, {12, 2304}, // 000000010111x
315 {11, 1856}, {11, 1856}, {11, 1856}, {11, 1856}, // 00000001100xx
316 {11, 1920}, {11, 1920}, {11, 1920}, {11, 1920}, // 00000001101xx
317 {12, 2368}, {12, 2368}, // 000000011100x
318 {12, 2432}, {12, 2432}, // 000000011101x
319 {12, 2496}, {12, 2496}, // 000000011110x
320 {12, 2560}, {12, 2560}, // 000000011111x
321 {10, 18}, {10, 18}, {10, 18}, {10, 18}, // 0000001000xxx
322 {10, 18}, {10, 18}, {10, 18}, {10, 18},
323 {12, 52}, {12, 52}, // 000000100100x
324 {13, 640}, // 0000001001010
325 {13, 704}, // 0000001001011
326 {13, 768}, // 0000001001100
327 {13, 832}, // 0000001001101
328 {12, 55}, {12, 55}, // 000000100111x
329 {12, 56}, {12, 56}, // 000000101000x
330 {13, 1280}, // 0000001010010
331 {13, 1344}, // 0000001010011
332 {13, 1408}, // 0000001010100
333 {13, 1472}, // 0000001010101
334 {12, 59}, {12, 59}, // 000000101011x
335 {12, 60}, {12, 60}, // 000000101100x
336 {13, 1536}, // 0000001011010
337 {13, 1600}, // 0000001011011
338 {11, 24}, {11, 24}, {11, 24}, {11, 24}, // 00000010111xx
339 {11, 25}, {11, 25}, {11, 25}, {11, 25}, // 00000011000xx
340 {13, 1664}, // 0000001100100
341 {13, 1728}, // 0000001100101
342 {12, 320}, {12, 320}, // 000000110011x
343 {12, 384}, {12, 384}, // 000000110100x
344 {12, 448}, {12, 448}, // 000000110101x
345 {13, 512}, // 0000001101100
346 {13, 576}, // 0000001101101
347 {12, 53}, {12, 53}, // 000000110111x
348 {12, 54}, {12, 54}, // 000000111000x
349 {13, 896}, // 0000001110010
350 {13, 960}, // 0000001110011
351 {13, 1024}, // 0000001110100
352 {13, 1088}, // 0000001110101
353 {13, 1152}, // 0000001110110
354 {13, 1216}, // 0000001110111
355 {10, 64}, {10, 64}, {10, 64}, {10, 64}, // 0000001111xxx
356 {10, 64}, {10, 64}, {10, 64}, {10, 64}
357 };
358
359 // 7-12 bit codes (upper 4 bits are 0)
360 static CCITTCode blackTab2[192] = {
361 {8, 13}, {8, 13}, {8, 13}, {8, 13}, // 00000100xxxx
362 {8, 13}, {8, 13}, {8, 13}, {8, 13},
363 {8, 13}, {8, 13}, {8, 13}, {8, 13},
364 {8, 13}, {8, 13}, {8, 13}, {8, 13},
365 {11, 23}, {11, 23}, // 00000101000x
366 {12, 50}, // 000001010010
367 {12, 51}, // 000001010011
368 {12, 44}, // 000001010100
369 {12, 45}, // 000001010101
370 {12, 46}, // 000001010110
371 {12, 47}, // 000001010111
372 {12, 57}, // 000001011000
373 {12, 58}, // 000001011001
374 {12, 61}, // 000001011010
375 {12, 256}, // 000001011011
376 {10, 16}, {10, 16}, {10, 16}, {10, 16}, // 0000010111xx
377 {10, 17}, {10, 17}, {10, 17}, {10, 17}, // 0000011000xx
378 {12, 48}, // 000001100100
379 {12, 49}, // 000001100101
380 {12, 62}, // 000001100110
381 {12, 63}, // 000001100111
382 {12, 30}, // 000001101000
383 {12, 31}, // 000001101001
384 {12, 32}, // 000001101010
385 {12, 33}, // 000001101011
386 {12, 40}, // 000001101100
387 {12, 41}, // 000001101101
388 {11, 22}, {11, 22}, // 00000110111x
389 {8, 14}, {8, 14}, {8, 14}, {8, 14}, // 00000111xxxx
390 {8, 14}, {8, 14}, {8, 14}, {8, 14},
391 {8, 14}, {8, 14}, {8, 14}, {8, 14},
392 {8, 14}, {8, 14}, {8, 14}, {8, 14},
393 {7, 10}, {7, 10}, {7, 10}, {7, 10}, // 0000100xxxxx
394 {7, 10}, {7, 10}, {7, 10}, {7, 10},
395 {7, 10}, {7, 10}, {7, 10}, {7, 10},
396 {7, 10}, {7, 10}, {7, 10}, {7, 10},
397 {7, 10}, {7, 10}, {7, 10}, {7, 10},
398 {7, 10}, {7, 10}, {7, 10}, {7, 10},
399 {7, 10}, {7, 10}, {7, 10}, {7, 10},
400 {7, 10}, {7, 10}, {7, 10}, {7, 10},
401 {7, 11}, {7, 11}, {7, 11}, {7, 11}, // 0000101xxxxx
402 {7, 11}, {7, 11}, {7, 11}, {7, 11},
403 {7, 11}, {7, 11}, {7, 11}, {7, 11},
404 {7, 11}, {7, 11}, {7, 11}, {7, 11},
405 {7, 11}, {7, 11}, {7, 11}, {7, 11},
406 {7, 11}, {7, 11}, {7, 11}, {7, 11},
407 {7, 11}, {7, 11}, {7, 11}, {7, 11},
408 {7, 11}, {7, 11}, {7, 11}, {7, 11},
409 {9, 15}, {9, 15}, {9, 15}, {9, 15}, // 000011000xxx
410 {9, 15}, {9, 15}, {9, 15}, {9, 15},
411 {12, 128}, // 000011001000
412 {12, 192}, // 000011001001
413 {12, 26}, // 000011001010
414 {12, 27}, // 000011001011
415 {12, 28}, // 000011001100
416 {12, 29}, // 000011001101
417 {11, 19}, {11, 19}, // 00001100111x
418 {11, 20}, {11, 20}, // 00001101000x
419 {12, 34}, // 000011010010
420 {12, 35}, // 000011010011
421 {12, 36}, // 000011010100
422 {12, 37}, // 000011010101
423 {12, 38}, // 000011010110
424 {12, 39}, // 000011010111
425 {11, 21}, {11, 21}, // 00001101100x
426 {12, 42}, // 000011011010
427 {12, 43}, // 000011011011
428 {10, 0}, {10, 0}, {10, 0}, {10, 0}, // 0000110111xx
429 {7, 12}, {7, 12}, {7, 12}, {7, 12}, // 0000111xxxxx
430 {7, 12}, {7, 12}, {7, 12}, {7, 12},
431 {7, 12}, {7, 12}, {7, 12}, {7, 12},
432 {7, 12}, {7, 12}, {7, 12}, {7, 12},
433 {7, 12}, {7, 12}, {7, 12}, {7, 12},
434 {7, 12}, {7, 12}, {7, 12}, {7, 12},
435 {7, 12}, {7, 12}, {7, 12}, {7, 12},
436 {7, 12}, {7, 12}, {7, 12}, {7, 12}
437 };
438
439 // 2-6 bit codes
440 static CCITTCode blackTab3[64] = {
441 {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, // 0000xx
442 {6, 9}, // 000100
443 {6, 8}, // 000101
444 {5, 7}, {5, 7}, // 00011x
445 {4, 6}, {4, 6}, {4, 6}, {4, 6}, // 0010xx
446 {4, 5}, {4, 5}, {4, 5}, {4, 5}, // 0011xx
447 {3, 1}, {3, 1}, {3, 1}, {3, 1}, // 010xxx
448 {3, 1}, {3, 1}, {3, 1}, {3, 1},
449 {3, 4}, {3, 4}, {3, 4}, {3, 4}, // 011xxx
450 {3, 4}, {3, 4}, {3, 4}, {3, 4},
451 {2, 3}, {2, 3}, {2, 3}, {2, 3}, // 10xxxx
452 {2, 3}, {2, 3}, {2, 3}, {2, 3},
453 {2, 3}, {2, 3}, {2, 3}, {2, 3},
454 {2, 3}, {2, 3}, {2, 3}, {2, 3},
455 {2, 2}, {2, 2}, {2, 2}, {2, 2}, // 11xxxx
456 {2, 2}, {2, 2}, {2, 2}, {2, 2},
457 {2, 2}, {2, 2}, {2, 2}, {2, 2},
458 {2, 2}, {2, 2}, {2, 2}, {2, 2}
459 };