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