00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 struct CCITTCode {
00012 short bits;
00013 short n;
00014 };
00015
00016 #define ccittEOL -2
00017
00018
00019
00020
00021
00022 #define twoDimPass 0
00023 #define twoDimHoriz 1
00024 #define twoDimVert0 2
00025 #define twoDimVertR1 3
00026 #define twoDimVertL1 4
00027 #define twoDimVertR2 5
00028 #define twoDimVertL2 6
00029 #define twoDimVertR3 7
00030 #define twoDimVertL3 8
00031
00032
00033 static CCITTCode twoDimTab1[128] = {
00034 {-1, -1}, {-1, -1},
00035 {7, twoDimVertL3},
00036 {7, twoDimVertR3},
00037 {6, twoDimVertL2}, {6, twoDimVertL2},
00038 {6, twoDimVertR2}, {6, twoDimVertR2},
00039 {4, twoDimPass}, {4, twoDimPass},
00040 {4, twoDimPass}, {4, twoDimPass},
00041 {4, twoDimPass}, {4, twoDimPass},
00042 {4, twoDimPass}, {4, twoDimPass},
00043 {3, twoDimHoriz}, {3, twoDimHoriz},
00044 {3, twoDimHoriz}, {3, twoDimHoriz},
00045 {3, twoDimHoriz}, {3, twoDimHoriz},
00046 {3, twoDimHoriz}, {3, twoDimHoriz},
00047 {3, twoDimHoriz}, {3, twoDimHoriz},
00048 {3, twoDimHoriz}, {3, twoDimHoriz},
00049 {3, twoDimHoriz}, {3, twoDimHoriz},
00050 {3, twoDimHoriz}, {3, twoDimHoriz},
00051 {3, twoDimVertL1}, {3, twoDimVertL1},
00052 {3, twoDimVertL1}, {3, twoDimVertL1},
00053 {3, twoDimVertL1}, {3, twoDimVertL1},
00054 {3, twoDimVertL1}, {3, twoDimVertL1},
00055 {3, twoDimVertL1}, {3, twoDimVertL1},
00056 {3, twoDimVertL1}, {3, twoDimVertL1},
00057 {3, twoDimVertL1}, {3, twoDimVertL1},
00058 {3, twoDimVertL1}, {3, twoDimVertL1},
00059 {3, twoDimVertR1}, {3, twoDimVertR1},
00060 {3, twoDimVertR1}, {3, twoDimVertR1},
00061 {3, twoDimVertR1}, {3, twoDimVertR1},
00062 {3, twoDimVertR1}, {3, twoDimVertR1},
00063 {3, twoDimVertR1}, {3, twoDimVertR1},
00064 {3, twoDimVertR1}, {3, twoDimVertR1},
00065 {3, twoDimVertR1}, {3, twoDimVertR1},
00066 {3, twoDimVertR1}, {3, twoDimVertR1},
00067 {1, twoDimVert0}, {1, twoDimVert0},
00068 {1, twoDimVert0}, {1, twoDimVert0},
00069 {1, twoDimVert0}, {1, twoDimVert0},
00070 {1, twoDimVert0}, {1, twoDimVert0},
00071 {1, twoDimVert0}, {1, twoDimVert0},
00072 {1, twoDimVert0}, {1, twoDimVert0},
00073 {1, twoDimVert0}, {1, twoDimVert0},
00074 {1, twoDimVert0}, {1, twoDimVert0},
00075 {1, twoDimVert0}, {1, twoDimVert0},
00076 {1, twoDimVert0}, {1, twoDimVert0},
00077 {1, twoDimVert0}, {1, twoDimVert0},
00078 {1, twoDimVert0}, {1, twoDimVert0},
00079 {1, twoDimVert0}, {1, twoDimVert0},
00080 {1, twoDimVert0}, {1, twoDimVert0},
00081 {1, twoDimVert0}, {1, twoDimVert0},
00082 {1, twoDimVert0}, {1, twoDimVert0},
00083 {1, twoDimVert0}, {1, twoDimVert0},
00084 {1, twoDimVert0}, {1, twoDimVert0},
00085 {1, twoDimVert0}, {1, twoDimVert0},
00086 {1, twoDimVert0}, {1, twoDimVert0},
00087 {1, twoDimVert0}, {1, twoDimVert0},
00088 {1, twoDimVert0}, {1, twoDimVert0},
00089 {1, twoDimVert0}, {1, twoDimVert0},
00090 {1, twoDimVert0}, {1, twoDimVert0},
00091 {1, twoDimVert0}, {1, twoDimVert0},
00092 {1, twoDimVert0}, {1, twoDimVert0},
00093 {1, twoDimVert0}, {1, twoDimVert0},
00094 {1, twoDimVert0}, {1, twoDimVert0},
00095 {1, twoDimVert0}, {1, twoDimVert0},
00096 {1, twoDimVert0}, {1, twoDimVert0},
00097 {1, twoDimVert0}, {1, twoDimVert0},
00098 {1, twoDimVert0}, {1, twoDimVert0}
00099 };
00100
00101
00102
00103
00104
00105
00106 static CCITTCode whiteTab1[32] = {
00107 {-1, -1},
00108 {12, ccittEOL},
00109 {-1, -1}, {-1, -1},
00110 {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1},
00111 {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1},
00112 {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1},
00113 {11, 1792}, {11, 1792},
00114 {12, 1984},
00115 {12, 2048},
00116 {12, 2112},
00117 {12, 2176},
00118 {12, 2240},
00119 {12, 2304},
00120 {11, 1856}, {11, 1856},
00121 {11, 1920}, {11, 1920},
00122 {12, 2368},
00123 {12, 2432},
00124 {12, 2496},
00125 {12, 2560}
00126 };
00127
00128
00129 static CCITTCode whiteTab2[512] = {
00130 {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1},
00131 {8, 29}, {8, 29},
00132 {8, 30}, {8, 30},
00133 {8, 45}, {8, 45},
00134 {8, 46}, {8, 46},
00135 {7, 22}, {7, 22}, {7, 22}, {7, 22},
00136 {7, 23}, {7, 23}, {7, 23}, {7, 23},
00137 {8, 47}, {8, 47},
00138 {8, 48}, {8, 48},
00139 {6, 13}, {6, 13}, {6, 13}, {6, 13},
00140 {6, 13}, {6, 13}, {6, 13}, {6, 13},
00141 {7, 20}, {7, 20}, {7, 20}, {7, 20},
00142 {8, 33}, {8, 33},
00143 {8, 34}, {8, 34},
00144 {8, 35}, {8, 35},
00145 {8, 36}, {8, 36},
00146 {8, 37}, {8, 37},
00147 {8, 38}, {8, 38},
00148 {7, 19}, {7, 19}, {7, 19}, {7, 19},
00149 {8, 31}, {8, 31},
00150 {8, 32}, {8, 32},
00151 {6, 1}, {6, 1}, {6, 1}, {6, 1},
00152 {6, 1}, {6, 1}, {6, 1}, {6, 1},
00153 {6, 12}, {6, 12}, {6, 12}, {6, 12},
00154 {6, 12}, {6, 12}, {6, 12}, {6, 12},
00155 {8, 53}, {8, 53},
00156 {8, 54}, {8, 54},
00157 {7, 26}, {7, 26}, {7, 26}, {7, 26},
00158 {8, 39}, {8, 39},
00159 {8, 40}, {8, 40},
00160 {8, 41}, {8, 41},
00161 {8, 42}, {8, 42},
00162 {8, 43}, {8, 43},
00163 {8, 44}, {8, 44},
00164 {7, 21}, {7, 21}, {7, 21}, {7, 21},
00165 {7, 28}, {7, 28}, {7, 28}, {7, 28},
00166 {8, 61}, {8, 61},
00167 {8, 62}, {8, 62},
00168 {8, 63}, {8, 63},
00169 {8, 0}, {8, 0},
00170 {8, 320}, {8, 320},
00171 {8, 384}, {8, 384},
00172 {5, 10}, {5, 10}, {5, 10}, {5, 10},
00173 {5, 10}, {5, 10}, {5, 10}, {5, 10},
00174 {5, 10}, {5, 10}, {5, 10}, {5, 10},
00175 {5, 10}, {5, 10}, {5, 10}, {5, 10},
00176 {5, 11}, {5, 11}, {5, 11}, {5, 11},
00177 {5, 11}, {5, 11}, {5, 11}, {5, 11},
00178 {5, 11}, {5, 11}, {5, 11}, {5, 11},
00179 {5, 11}, {5, 11}, {5, 11}, {5, 11},
00180 {7, 27}, {7, 27}, {7, 27}, {7, 27},
00181 {8, 59}, {8, 59},
00182 {8, 60}, {8, 60},
00183 {9, 1472},
00184 {9, 1536},
00185 {9, 1600},
00186 {9, 1728},
00187 {7, 18}, {7, 18}, {7, 18}, {7, 18},
00188 {7, 24}, {7, 24}, {7, 24}, {7, 24},
00189 {8, 49}, {8, 49},
00190 {8, 50}, {8, 50},
00191 {8, 51}, {8, 51},
00192 {8, 52}, {8, 52},
00193 {7, 25}, {7, 25}, {7, 25}, {7, 25},
00194 {8, 55}, {8, 55},
00195 {8, 56}, {8, 56},
00196 {8, 57}, {8, 57},
00197 {8, 58}, {8, 58},
00198 {6, 192}, {6, 192}, {6, 192}, {6, 192},
00199 {6, 192}, {6, 192}, {6, 192}, {6, 192},
00200 {6, 1664}, {6, 1664}, {6, 1664}, {6, 1664},
00201 {6, 1664}, {6, 1664}, {6, 1664}, {6, 1664},
00202 {8, 448}, {8, 448},
00203 {8, 512}, {8, 512},
00204 {9, 704},
00205 {9, 768},
00206 {8, 640}, {8, 640},
00207 {8, 576}, {8, 576},
00208 {9, 832},
00209 {9, 896},
00210 {9, 960},
00211 {9, 1024},
00212 {9, 1088},
00213 {9, 1152},
00214 {9, 1216},
00215 {9, 1280},
00216 {9, 1344},
00217 {9, 1408},
00218 {7, 256}, {7, 256}, {7, 256}, {7, 256},
00219 {4, 2}, {4, 2}, {4, 2}, {4, 2},
00220 {4, 2}, {4, 2}, {4, 2}, {4, 2},
00221 {4, 2}, {4, 2}, {4, 2}, {4, 2},
00222 {4, 2}, {4, 2}, {4, 2}, {4, 2},
00223 {4, 2}, {4, 2}, {4, 2}, {4, 2},
00224 {4, 2}, {4, 2}, {4, 2}, {4, 2},
00225 {4, 2}, {4, 2}, {4, 2}, {4, 2},
00226 {4, 2}, {4, 2}, {4, 2}, {4, 2},
00227 {4, 3}, {4, 3}, {4, 3}, {4, 3},
00228 {4, 3}, {4, 3}, {4, 3}, {4, 3},
00229 {4, 3}, {4, 3}, {4, 3}, {4, 3},
00230 {4, 3}, {4, 3}, {4, 3}, {4, 3},
00231 {4, 3}, {4, 3}, {4, 3}, {4, 3},
00232 {4, 3}, {4, 3}, {4, 3}, {4, 3},
00233 {4, 3}, {4, 3}, {4, 3}, {4, 3},
00234 {4, 3}, {4, 3}, {4, 3}, {4, 3},
00235 {5, 128}, {5, 128}, {5, 128}, {5, 128},
00236 {5, 128}, {5, 128}, {5, 128}, {5, 128},
00237 {5, 128}, {5, 128}, {5, 128}, {5, 128},
00238 {5, 128}, {5, 128}, {5, 128}, {5, 128},
00239 {5, 8}, {5, 8}, {5, 8}, {5, 8},
00240 {5, 8}, {5, 8}, {5, 8}, {5, 8},
00241 {5, 8}, {5, 8}, {5, 8}, {5, 8},
00242 {5, 8}, {5, 8}, {5, 8}, {5, 8},
00243 {5, 9}, {5, 9}, {5, 9}, {5, 9},
00244 {5, 9}, {5, 9}, {5, 9}, {5, 9},
00245 {5, 9}, {5, 9}, {5, 9}, {5, 9},
00246 {5, 9}, {5, 9}, {5, 9}, {5, 9},
00247 {6, 16}, {6, 16}, {6, 16}, {6, 16},
00248 {6, 16}, {6, 16}, {6, 16}, {6, 16},
00249 {6, 17}, {6, 17}, {6, 17}, {6, 17},
00250 {6, 17}, {6, 17}, {6, 17}, {6, 17},
00251 {4, 4}, {4, 4}, {4, 4}, {4, 4},
00252 {4, 4}, {4, 4}, {4, 4}, {4, 4},
00253 {4, 4}, {4, 4}, {4, 4}, {4, 4},
00254 {4, 4}, {4, 4}, {4, 4}, {4, 4},
00255 {4, 4}, {4, 4}, {4, 4}, {4, 4},
00256 {4, 4}, {4, 4}, {4, 4}, {4, 4},
00257 {4, 4}, {4, 4}, {4, 4}, {4, 4},
00258 {4, 4}, {4, 4}, {4, 4}, {4, 4},
00259 {4, 5}, {4, 5}, {4, 5}, {4, 5},
00260 {4, 5}, {4, 5}, {4, 5}, {4, 5},
00261 {4, 5}, {4, 5}, {4, 5}, {4, 5},
00262 {4, 5}, {4, 5}, {4, 5}, {4, 5},
00263 {4, 5}, {4, 5}, {4, 5}, {4, 5},
00264 {4, 5}, {4, 5}, {4, 5}, {4, 5},
00265 {4, 5}, {4, 5}, {4, 5}, {4, 5},
00266 {4, 5}, {4, 5}, {4, 5}, {4, 5},
00267 {6, 14}, {6, 14}, {6, 14}, {6, 14},
00268 {6, 14}, {6, 14}, {6, 14}, {6, 14},
00269 {6, 15}, {6, 15}, {6, 15}, {6, 15},
00270 {6, 15}, {6, 15}, {6, 15}, {6, 15},
00271 {5, 64}, {5, 64}, {5, 64}, {5, 64},
00272 {5, 64}, {5, 64}, {5, 64}, {5, 64},
00273 {5, 64}, {5, 64}, {5, 64}, {5, 64},
00274 {5, 64}, {5, 64}, {5, 64}, {5, 64},
00275 {4, 6}, {4, 6}, {4, 6}, {4, 6},
00276 {4, 6}, {4, 6}, {4, 6}, {4, 6},
00277 {4, 6}, {4, 6}, {4, 6}, {4, 6},
00278 {4, 6}, {4, 6}, {4, 6}, {4, 6},
00279 {4, 6}, {4, 6}, {4, 6}, {4, 6},
00280 {4, 6}, {4, 6}, {4, 6}, {4, 6},
00281 {4, 6}, {4, 6}, {4, 6}, {4, 6},
00282 {4, 6}, {4, 6}, {4, 6}, {4, 6},
00283 {4, 7}, {4, 7}, {4, 7}, {4, 7},
00284 {4, 7}, {4, 7}, {4, 7}, {4, 7},
00285 {4, 7}, {4, 7}, {4, 7}, {4, 7},
00286 {4, 7}, {4, 7}, {4, 7}, {4, 7},
00287 {4, 7}, {4, 7}, {4, 7}, {4, 7},
00288 {4, 7}, {4, 7}, {4, 7}, {4, 7},
00289 {4, 7}, {4, 7}, {4, 7}, {4, 7},
00290 {4, 7}, {4, 7}, {4, 7}, {4, 7}
00291 };
00292
00293
00294
00295
00296
00297
00298 static CCITTCode blackTab1[128] = {
00299 {-1, -1}, {-1, -1},
00300 {12, ccittEOL}, {12, ccittEOL},
00301 {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1},
00302 {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1},
00303 {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1},
00304 {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1},
00305 {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1},
00306 {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1},
00307 {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1},
00308 {11, 1792}, {11, 1792}, {11, 1792}, {11, 1792},
00309 {12, 1984}, {12, 1984},
00310 {12, 2048}, {12, 2048},
00311 {12, 2112}, {12, 2112},
00312 {12, 2176}, {12, 2176},
00313 {12, 2240}, {12, 2240},
00314 {12, 2304}, {12, 2304},
00315 {11, 1856}, {11, 1856}, {11, 1856}, {11, 1856},
00316 {11, 1920}, {11, 1920}, {11, 1920}, {11, 1920},
00317 {12, 2368}, {12, 2368},
00318 {12, 2432}, {12, 2432},
00319 {12, 2496}, {12, 2496},
00320 {12, 2560}, {12, 2560},
00321 {10, 18}, {10, 18}, {10, 18}, {10, 18},
00322 {10, 18}, {10, 18}, {10, 18}, {10, 18},
00323 {12, 52}, {12, 52},
00324 {13, 640},
00325 {13, 704},
00326 {13, 768},
00327 {13, 832},
00328 {12, 55}, {12, 55},
00329 {12, 56}, {12, 56},
00330 {13, 1280},
00331 {13, 1344},
00332 {13, 1408},
00333 {13, 1472},
00334 {12, 59}, {12, 59},
00335 {12, 60}, {12, 60},
00336 {13, 1536},
00337 {13, 1600},
00338 {11, 24}, {11, 24}, {11, 24}, {11, 24},
00339 {11, 25}, {11, 25}, {11, 25}, {11, 25},
00340 {13, 1664},
00341 {13, 1728},
00342 {12, 320}, {12, 320},
00343 {12, 384}, {12, 384},
00344 {12, 448}, {12, 448},
00345 {13, 512},
00346 {13, 576},
00347 {12, 53}, {12, 53},
00348 {12, 54}, {12, 54},
00349 {13, 896},
00350 {13, 960},
00351 {13, 1024},
00352 {13, 1088},
00353 {13, 1152},
00354 {13, 1216},
00355 {10, 64}, {10, 64}, {10, 64}, {10, 64},
00356 {10, 64}, {10, 64}, {10, 64}, {10, 64}
00357 };
00358
00359
00360 static CCITTCode blackTab2[192] = {
00361 {8, 13}, {8, 13}, {8, 13}, {8, 13},
00362 {8, 13}, {8, 13}, {8, 13}, {8, 13},
00363 {8, 13}, {8, 13}, {8, 13}, {8, 13},
00364 {8, 13}, {8, 13}, {8, 13}, {8, 13},
00365 {11, 23}, {11, 23},
00366 {12, 50},
00367 {12, 51},
00368 {12, 44},
00369 {12, 45},
00370 {12, 46},
00371 {12, 47},
00372 {12, 57},
00373 {12, 58},
00374 {12, 61},
00375 {12, 256},
00376 {10, 16}, {10, 16}, {10, 16}, {10, 16},
00377 {10, 17}, {10, 17}, {10, 17}, {10, 17},
00378 {12, 48},
00379 {12, 49},
00380 {12, 62},
00381 {12, 63},
00382 {12, 30},
00383 {12, 31},
00384 {12, 32},
00385 {12, 33},
00386 {12, 40},
00387 {12, 41},
00388 {11, 22}, {11, 22},
00389 {8, 14}, {8, 14}, {8, 14}, {8, 14},
00390 {8, 14}, {8, 14}, {8, 14}, {8, 14},
00391 {8, 14}, {8, 14}, {8, 14}, {8, 14},
00392 {8, 14}, {8, 14}, {8, 14}, {8, 14},
00393 {7, 10}, {7, 10}, {7, 10}, {7, 10},
00394 {7, 10}, {7, 10}, {7, 10}, {7, 10},
00395 {7, 10}, {7, 10}, {7, 10}, {7, 10},
00396 {7, 10}, {7, 10}, {7, 10}, {7, 10},
00397 {7, 10}, {7, 10}, {7, 10}, {7, 10},
00398 {7, 10}, {7, 10}, {7, 10}, {7, 10},
00399 {7, 10}, {7, 10}, {7, 10}, {7, 10},
00400 {7, 10}, {7, 10}, {7, 10}, {7, 10},
00401 {7, 11}, {7, 11}, {7, 11}, {7, 11},
00402 {7, 11}, {7, 11}, {7, 11}, {7, 11},
00403 {7, 11}, {7, 11}, {7, 11}, {7, 11},
00404 {7, 11}, {7, 11}, {7, 11}, {7, 11},
00405 {7, 11}, {7, 11}, {7, 11}, {7, 11},
00406 {7, 11}, {7, 11}, {7, 11}, {7, 11},
00407 {7, 11}, {7, 11}, {7, 11}, {7, 11},
00408 {7, 11}, {7, 11}, {7, 11}, {7, 11},
00409 {9, 15}, {9, 15}, {9, 15}, {9, 15},
00410 {9, 15}, {9, 15}, {9, 15}, {9, 15},
00411 {12, 128},
00412 {12, 192},
00413 {12, 26},
00414 {12, 27},
00415 {12, 28},
00416 {12, 29},
00417 {11, 19}, {11, 19},
00418 {11, 20}, {11, 20},
00419 {12, 34},
00420 {12, 35},
00421 {12, 36},
00422 {12, 37},
00423 {12, 38},
00424 {12, 39},
00425 {11, 21}, {11, 21},
00426 {12, 42},
00427 {12, 43},
00428 {10, 0}, {10, 0}, {10, 0}, {10, 0},
00429 {7, 12}, {7, 12}, {7, 12}, {7, 12},
00430 {7, 12}, {7, 12}, {7, 12}, {7, 12},
00431 {7, 12}, {7, 12}, {7, 12}, {7, 12},
00432 {7, 12}, {7, 12}, {7, 12}, {7, 12},
00433 {7, 12}, {7, 12}, {7, 12}, {7, 12},
00434 {7, 12}, {7, 12}, {7, 12}, {7, 12},
00435 {7, 12}, {7, 12}, {7, 12}, {7, 12},
00436 {7, 12}, {7, 12}, {7, 12}, {7, 12}
00437 };
00438
00439
00440 static CCITTCode blackTab3[64] = {
00441 {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1},
00442 {6, 9},
00443 {6, 8},
00444 {5, 7}, {5, 7},
00445 {4, 6}, {4, 6}, {4, 6}, {4, 6},
00446 {4, 5}, {4, 5}, {4, 5}, {4, 5},
00447 {3, 1}, {3, 1}, {3, 1}, {3, 1},
00448 {3, 1}, {3, 1}, {3, 1}, {3, 1},
00449 {3, 4}, {3, 4}, {3, 4}, {3, 4},
00450 {3, 4}, {3, 4}, {3, 4}, {3, 4},
00451 {2, 3}, {2, 3}, {2, 3}, {2, 3},
00452 {2, 3}, {2, 3}, {2, 3}, {2, 3},
00453 {2, 3}, {2, 3}, {2, 3}, {2, 3},
00454 {2, 3}, {2, 3}, {2, 3}, {2, 3},
00455 {2, 2}, {2, 2}, {2, 2}, {2, 2},
00456 {2, 2}, {2, 2}, {2, 2}, {2, 2},
00457 {2, 2}, {2, 2}, {2, 2}, {2, 2},
00458 {2, 2}, {2, 2}, {2, 2}, {2, 2}
00459 };