struct CCITTCode {
short bits;
short n;
};
#define ccittEOL -2
#define twoDimPass 0
#define twoDimHoriz 1
#define twoDimVert0 2
#define twoDimVertR1 3
#define twoDimVertL1 4
#define twoDimVertR2 5
#define twoDimVertL2 6
#define twoDimVertR3 7
#define twoDimVertL3 8
static CCITTCode twoDimTab1[128] = {
{-1, -1}, {-1, -1}, {7, twoDimVertL3}, {7, twoDimVertR3}, {6, twoDimVertL2}, {6, twoDimVertL2}, {6, twoDimVertR2}, {6, twoDimVertR2}, {4, twoDimPass}, {4, twoDimPass}, {4, twoDimPass}, {4, twoDimPass},
{4, twoDimPass}, {4, twoDimPass},
{4, twoDimPass}, {4, twoDimPass},
{3, twoDimHoriz}, {3, twoDimHoriz}, {3, twoDimHoriz}, {3, twoDimHoriz},
{3, twoDimHoriz}, {3, twoDimHoriz},
{3, twoDimHoriz}, {3, twoDimHoriz},
{3, twoDimHoriz}, {3, twoDimHoriz},
{3, twoDimHoriz}, {3, twoDimHoriz},
{3, twoDimHoriz}, {3, twoDimHoriz},
{3, twoDimHoriz}, {3, twoDimHoriz},
{3, twoDimVertL1}, {3, twoDimVertL1}, {3, twoDimVertL1}, {3, twoDimVertL1},
{3, twoDimVertL1}, {3, twoDimVertL1},
{3, twoDimVertL1}, {3, twoDimVertL1},
{3, twoDimVertL1}, {3, twoDimVertL1},
{3, twoDimVertL1}, {3, twoDimVertL1},
{3, twoDimVertL1}, {3, twoDimVertL1},
{3, twoDimVertL1}, {3, twoDimVertL1},
{3, twoDimVertR1}, {3, twoDimVertR1}, {3, twoDimVertR1}, {3, twoDimVertR1},
{3, twoDimVertR1}, {3, twoDimVertR1},
{3, twoDimVertR1}, {3, twoDimVertR1},
{3, twoDimVertR1}, {3, twoDimVertR1},
{3, twoDimVertR1}, {3, twoDimVertR1},
{3, twoDimVertR1}, {3, twoDimVertR1},
{3, twoDimVertR1}, {3, twoDimVertR1},
{1, twoDimVert0}, {1, twoDimVert0}, {1, twoDimVert0}, {1, twoDimVert0},
{1, twoDimVert0}, {1, twoDimVert0},
{1, twoDimVert0}, {1, twoDimVert0},
{1, twoDimVert0}, {1, twoDimVert0},
{1, twoDimVert0}, {1, twoDimVert0},
{1, twoDimVert0}, {1, twoDimVert0},
{1, twoDimVert0}, {1, twoDimVert0},
{1, twoDimVert0}, {1, twoDimVert0},
{1, twoDimVert0}, {1, twoDimVert0},
{1, twoDimVert0}, {1, twoDimVert0},
{1, twoDimVert0}, {1, twoDimVert0},
{1, twoDimVert0}, {1, twoDimVert0},
{1, twoDimVert0}, {1, twoDimVert0},
{1, twoDimVert0}, {1, twoDimVert0},
{1, twoDimVert0}, {1, twoDimVert0},
{1, twoDimVert0}, {1, twoDimVert0},
{1, twoDimVert0}, {1, twoDimVert0},
{1, twoDimVert0}, {1, twoDimVert0},
{1, twoDimVert0}, {1, twoDimVert0},
{1, twoDimVert0}, {1, twoDimVert0},
{1, twoDimVert0}, {1, twoDimVert0},
{1, twoDimVert0}, {1, twoDimVert0},
{1, twoDimVert0}, {1, twoDimVert0},
{1, twoDimVert0}, {1, twoDimVert0},
{1, twoDimVert0}, {1, twoDimVert0},
{1, twoDimVert0}, {1, twoDimVert0},
{1, twoDimVert0}, {1, twoDimVert0},
{1, twoDimVert0}, {1, twoDimVert0},
{1, twoDimVert0}, {1, twoDimVert0},
{1, twoDimVert0}, {1, twoDimVert0},
{1, twoDimVert0}, {1, twoDimVert0}
};
static CCITTCode whiteTab1[32] = {
{-1, -1}, {12, ccittEOL}, {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, {11, 1792}, {11, 1792}, {12, 1984}, {12, 2048}, {12, 2112}, {12, 2176}, {12, 2240}, {12, 2304}, {11, 1856}, {11, 1856}, {11, 1920}, {11, 1920}, {12, 2368}, {12, 2432}, {12, 2496}, {12, 2560} };
static CCITTCode whiteTab2[512] = {
{-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, {8, 29}, {8, 29}, {8, 30}, {8, 30}, {8, 45}, {8, 45}, {8, 46}, {8, 46}, {7, 22}, {7, 22}, {7, 22}, {7, 22}, {7, 23}, {7, 23}, {7, 23}, {7, 23}, {8, 47}, {8, 47}, {8, 48}, {8, 48}, {6, 13}, {6, 13}, {6, 13}, {6, 13}, {6, 13}, {6, 13}, {6, 13}, {6, 13},
{7, 20}, {7, 20}, {7, 20}, {7, 20}, {8, 33}, {8, 33}, {8, 34}, {8, 34}, {8, 35}, {8, 35}, {8, 36}, {8, 36}, {8, 37}, {8, 37}, {8, 38}, {8, 38}, {7, 19}, {7, 19}, {7, 19}, {7, 19}, {8, 31}, {8, 31}, {8, 32}, {8, 32}, {6, 1}, {6, 1}, {6, 1}, {6, 1}, {6, 1}, {6, 1}, {6, 1}, {6, 1},
{6, 12}, {6, 12}, {6, 12}, {6, 12}, {6, 12}, {6, 12}, {6, 12}, {6, 12},
{8, 53}, {8, 53}, {8, 54}, {8, 54}, {7, 26}, {7, 26}, {7, 26}, {7, 26}, {8, 39}, {8, 39}, {8, 40}, {8, 40}, {8, 41}, {8, 41}, {8, 42}, {8, 42}, {8, 43}, {8, 43}, {8, 44}, {8, 44}, {7, 21}, {7, 21}, {7, 21}, {7, 21}, {7, 28}, {7, 28}, {7, 28}, {7, 28}, {8, 61}, {8, 61}, {8, 62}, {8, 62}, {8, 63}, {8, 63}, {8, 0}, {8, 0}, {8, 320}, {8, 320}, {8, 384}, {8, 384}, {5, 10}, {5, 10}, {5, 10}, {5, 10}, {5, 10}, {5, 10}, {5, 10}, {5, 10},
{5, 10}, {5, 10}, {5, 10}, {5, 10},
{5, 10}, {5, 10}, {5, 10}, {5, 10},
{5, 11}, {5, 11}, {5, 11}, {5, 11}, {5, 11}, {5, 11}, {5, 11}, {5, 11},
{5, 11}, {5, 11}, {5, 11}, {5, 11},
{5, 11}, {5, 11}, {5, 11}, {5, 11},
{7, 27}, {7, 27}, {7, 27}, {7, 27}, {8, 59}, {8, 59}, {8, 60}, {8, 60}, {9, 1472}, {9, 1536}, {9, 1600}, {9, 1728}, {7, 18}, {7, 18}, {7, 18}, {7, 18}, {7, 24}, {7, 24}, {7, 24}, {7, 24}, {8, 49}, {8, 49}, {8, 50}, {8, 50}, {8, 51}, {8, 51}, {8, 52}, {8, 52}, {7, 25}, {7, 25}, {7, 25}, {7, 25}, {8, 55}, {8, 55}, {8, 56}, {8, 56}, {8, 57}, {8, 57}, {8, 58}, {8, 58}, {6, 192}, {6, 192}, {6, 192}, {6, 192}, {6, 192}, {6, 192}, {6, 192}, {6, 192},
{6, 1664}, {6, 1664}, {6, 1664}, {6, 1664}, {6, 1664}, {6, 1664}, {6, 1664}, {6, 1664},
{8, 448}, {8, 448}, {8, 512}, {8, 512}, {9, 704}, {9, 768}, {8, 640}, {8, 640}, {8, 576}, {8, 576}, {9, 832}, {9, 896}, {9, 960}, {9, 1024}, {9, 1088}, {9, 1152}, {9, 1216}, {9, 1280}, {9, 1344}, {9, 1408}, {7, 256}, {7, 256}, {7, 256}, {7, 256}, {4, 2}, {4, 2}, {4, 2}, {4, 2}, {4, 2}, {4, 2}, {4, 2}, {4, 2},
{4, 2}, {4, 2}, {4, 2}, {4, 2},
{4, 2}, {4, 2}, {4, 2}, {4, 2},
{4, 2}, {4, 2}, {4, 2}, {4, 2},
{4, 2}, {4, 2}, {4, 2}, {4, 2},
{4, 2}, {4, 2}, {4, 2}, {4, 2},
{4, 2}, {4, 2}, {4, 2}, {4, 2},
{4, 3}, {4, 3}, {4, 3}, {4, 3}, {4, 3}, {4, 3}, {4, 3}, {4, 3},
{4, 3}, {4, 3}, {4, 3}, {4, 3},
{4, 3}, {4, 3}, {4, 3}, {4, 3},
{4, 3}, {4, 3}, {4, 3}, {4, 3},
{4, 3}, {4, 3}, {4, 3}, {4, 3},
{4, 3}, {4, 3}, {4, 3}, {4, 3},
{4, 3}, {4, 3}, {4, 3}, {4, 3},
{5, 128}, {5, 128}, {5, 128}, {5, 128}, {5, 128}, {5, 128}, {5, 128}, {5, 128},
{5, 128}, {5, 128}, {5, 128}, {5, 128},
{5, 128}, {5, 128}, {5, 128}, {5, 128},
{5, 8}, {5, 8}, {5, 8}, {5, 8}, {5, 8}, {5, 8}, {5, 8}, {5, 8},
{5, 8}, {5, 8}, {5, 8}, {5, 8},
{5, 8}, {5, 8}, {5, 8}, {5, 8},
{5, 9}, {5, 9}, {5, 9}, {5, 9}, {5, 9}, {5, 9}, {5, 9}, {5, 9},
{5, 9}, {5, 9}, {5, 9}, {5, 9},
{5, 9}, {5, 9}, {5, 9}, {5, 9},
{6, 16}, {6, 16}, {6, 16}, {6, 16}, {6, 16}, {6, 16}, {6, 16}, {6, 16},
{6, 17}, {6, 17}, {6, 17}, {6, 17}, {6, 17}, {6, 17}, {6, 17}, {6, 17},
{4, 4}, {4, 4}, {4, 4}, {4, 4}, {4, 4}, {4, 4}, {4, 4}, {4, 4},
{4, 4}, {4, 4}, {4, 4}, {4, 4},
{4, 4}, {4, 4}, {4, 4}, {4, 4},
{4, 4}, {4, 4}, {4, 4}, {4, 4},
{4, 4}, {4, 4}, {4, 4}, {4, 4},
{4, 4}, {4, 4}, {4, 4}, {4, 4},
{4, 4}, {4, 4}, {4, 4}, {4, 4},
{4, 5}, {4, 5}, {4, 5}, {4, 5}, {4, 5}, {4, 5}, {4, 5}, {4, 5},
{4, 5}, {4, 5}, {4, 5}, {4, 5},
{4, 5}, {4, 5}, {4, 5}, {4, 5},
{4, 5}, {4, 5}, {4, 5}, {4, 5},
{4, 5}, {4, 5}, {4, 5}, {4, 5},
{4, 5}, {4, 5}, {4, 5}, {4, 5},
{4, 5}, {4, 5}, {4, 5}, {4, 5},
{6, 14}, {6, 14}, {6, 14}, {6, 14}, {6, 14}, {6, 14}, {6, 14}, {6, 14},
{6, 15}, {6, 15}, {6, 15}, {6, 15}, {6, 15}, {6, 15}, {6, 15}, {6, 15},
{5, 64}, {5, 64}, {5, 64}, {5, 64}, {5, 64}, {5, 64}, {5, 64}, {5, 64},
{5, 64}, {5, 64}, {5, 64}, {5, 64},
{5, 64}, {5, 64}, {5, 64}, {5, 64},
{4, 6}, {4, 6}, {4, 6}, {4, 6}, {4, 6}, {4, 6}, {4, 6}, {4, 6},
{4, 6}, {4, 6}, {4, 6}, {4, 6},
{4, 6}, {4, 6}, {4, 6}, {4, 6},
{4, 6}, {4, 6}, {4, 6}, {4, 6},
{4, 6}, {4, 6}, {4, 6}, {4, 6},
{4, 6}, {4, 6}, {4, 6}, {4, 6},
{4, 6}, {4, 6}, {4, 6}, {4, 6},
{4, 7}, {4, 7}, {4, 7}, {4, 7}, {4, 7}, {4, 7}, {4, 7}, {4, 7},
{4, 7}, {4, 7}, {4, 7}, {4, 7},
{4, 7}, {4, 7}, {4, 7}, {4, 7},
{4, 7}, {4, 7}, {4, 7}, {4, 7},
{4, 7}, {4, 7}, {4, 7}, {4, 7},
{4, 7}, {4, 7}, {4, 7}, {4, 7},
{4, 7}, {4, 7}, {4, 7}, {4, 7}
};
static CCITTCode blackTab1[128] = {
{-1, -1}, {-1, -1}, {12, ccittEOL}, {12, ccittEOL}, {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, {11, 1792}, {11, 1792}, {11, 1792}, {11, 1792}, {12, 1984}, {12, 1984}, {12, 2048}, {12, 2048}, {12, 2112}, {12, 2112}, {12, 2176}, {12, 2176}, {12, 2240}, {12, 2240}, {12, 2304}, {12, 2304}, {11, 1856}, {11, 1856}, {11, 1856}, {11, 1856}, {11, 1920}, {11, 1920}, {11, 1920}, {11, 1920}, {12, 2368}, {12, 2368}, {12, 2432}, {12, 2432}, {12, 2496}, {12, 2496}, {12, 2560}, {12, 2560}, {10, 18}, {10, 18}, {10, 18}, {10, 18}, {10, 18}, {10, 18}, {10, 18}, {10, 18},
{12, 52}, {12, 52}, {13, 640}, {13, 704}, {13, 768}, {13, 832}, {12, 55}, {12, 55}, {12, 56}, {12, 56}, {13, 1280}, {13, 1344}, {13, 1408}, {13, 1472}, {12, 59}, {12, 59}, {12, 60}, {12, 60}, {13, 1536}, {13, 1600}, {11, 24}, {11, 24}, {11, 24}, {11, 24}, {11, 25}, {11, 25}, {11, 25}, {11, 25}, {13, 1664}, {13, 1728}, {12, 320}, {12, 320}, {12, 384}, {12, 384}, {12, 448}, {12, 448}, {13, 512}, {13, 576}, {12, 53}, {12, 53}, {12, 54}, {12, 54}, {13, 896}, {13, 960}, {13, 1024}, {13, 1088}, {13, 1152}, {13, 1216}, {10, 64}, {10, 64}, {10, 64}, {10, 64}, {10, 64}, {10, 64}, {10, 64}, {10, 64}
};
static CCITTCode blackTab2[192] = {
{8, 13}, {8, 13}, {8, 13}, {8, 13}, {8, 13}, {8, 13}, {8, 13}, {8, 13},
{8, 13}, {8, 13}, {8, 13}, {8, 13},
{8, 13}, {8, 13}, {8, 13}, {8, 13},
{11, 23}, {11, 23}, {12, 50}, {12, 51}, {12, 44}, {12, 45}, {12, 46}, {12, 47}, {12, 57}, {12, 58}, {12, 61}, {12, 256}, {10, 16}, {10, 16}, {10, 16}, {10, 16}, {10, 17}, {10, 17}, {10, 17}, {10, 17}, {12, 48}, {12, 49}, {12, 62}, {12, 63}, {12, 30}, {12, 31}, {12, 32}, {12, 33}, {12, 40}, {12, 41}, {11, 22}, {11, 22}, {8, 14}, {8, 14}, {8, 14}, {8, 14}, {8, 14}, {8, 14}, {8, 14}, {8, 14},
{8, 14}, {8, 14}, {8, 14}, {8, 14},
{8, 14}, {8, 14}, {8, 14}, {8, 14},
{7, 10}, {7, 10}, {7, 10}, {7, 10}, {7, 10}, {7, 10}, {7, 10}, {7, 10},
{7, 10}, {7, 10}, {7, 10}, {7, 10},
{7, 10}, {7, 10}, {7, 10}, {7, 10},
{7, 10}, {7, 10}, {7, 10}, {7, 10},
{7, 10}, {7, 10}, {7, 10}, {7, 10},
{7, 10}, {7, 10}, {7, 10}, {7, 10},
{7, 10}, {7, 10}, {7, 10}, {7, 10},
{7, 11}, {7, 11}, {7, 11}, {7, 11}, {7, 11}, {7, 11}, {7, 11}, {7, 11},
{7, 11}, {7, 11}, {7, 11}, {7, 11},
{7, 11}, {7, 11}, {7, 11}, {7, 11},
{7, 11}, {7, 11}, {7, 11}, {7, 11},
{7, 11}, {7, 11}, {7, 11}, {7, 11},
{7, 11}, {7, 11}, {7, 11}, {7, 11},
{7, 11}, {7, 11}, {7, 11}, {7, 11},
{9, 15}, {9, 15}, {9, 15}, {9, 15}, {9, 15}, {9, 15}, {9, 15}, {9, 15},
{12, 128}, {12, 192}, {12, 26}, {12, 27}, {12, 28}, {12, 29}, {11, 19}, {11, 19}, {11, 20}, {11, 20}, {12, 34}, {12, 35}, {12, 36}, {12, 37}, {12, 38}, {12, 39}, {11, 21}, {11, 21}, {12, 42}, {12, 43}, {10, 0}, {10, 0}, {10, 0}, {10, 0}, {7, 12}, {7, 12}, {7, 12}, {7, 12}, {7, 12}, {7, 12}, {7, 12}, {7, 12},
{7, 12}, {7, 12}, {7, 12}, {7, 12},
{7, 12}, {7, 12}, {7, 12}, {7, 12},
{7, 12}, {7, 12}, {7, 12}, {7, 12},
{7, 12}, {7, 12}, {7, 12}, {7, 12},
{7, 12}, {7, 12}, {7, 12}, {7, 12},
{7, 12}, {7, 12}, {7, 12}, {7, 12}
};
static CCITTCode blackTab3[64] = {
{-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, {6, 9}, {6, 8}, {5, 7}, {5, 7}, {4, 6}, {4, 6}, {4, 6}, {4, 6}, {4, 5}, {4, 5}, {4, 5}, {4, 5}, {3, 1}, {3, 1}, {3, 1}, {3, 1}, {3, 1}, {3, 1}, {3, 1}, {3, 1},
{3, 4}, {3, 4}, {3, 4}, {3, 4}, {3, 4}, {3, 4}, {3, 4}, {3, 4},
{2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3},
{2, 3}, {2, 3}, {2, 3}, {2, 3},
{2, 3}, {2, 3}, {2, 3}, {2, 3},
{2, 2}, {2, 2}, {2, 2}, {2, 2}, {2, 2}, {2, 2}, {2, 2}, {2, 2},
{2, 2}, {2, 2}, {2, 2}, {2, 2},
{2, 2}, {2, 2}, {2, 2}, {2, 2}
};