Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-12-10 10:23:50

0001 //========================================================================
0002 //
0003 // Stream-CCITT.h
0004 //
0005 // Tables for CCITT Fax decoding.
0006 //
0007 // Copyright 1996-2003 Glyph & Cog, LLC
0008 //
0009 //========================================================================
0010 
0011 //========================================================================
0012 //
0013 // Modified under the Poppler project - http://poppler.freedesktop.org
0014 //
0015 // All changes made under the Poppler project to this file are licensed
0016 // under GPL version 2 or later
0017 //
0018 // Copyright (C) 2008 Albert Astals Cid <aacid@kde.org>
0019 //
0020 // To see a description of the changes please see the Changelog file that
0021 // came with your tarball or type make ChangeLog if you are building from git
0022 //
0023 //========================================================================
0024 
0025 #ifndef STREAM_CCITT_H
0026 #define STREAM_CCITT_H
0027 
0028 struct CCITTCode
0029 {
0030     short bits;
0031     short n;
0032 };
0033 
0034 #define ccittEOL -2
0035 
0036 //------------------------------------------------------------------------
0037 // 2D codes
0038 //------------------------------------------------------------------------
0039 
0040 #define twoDimPass 0
0041 #define twoDimHoriz 1
0042 #define twoDimVert0 2
0043 #define twoDimVertR1 3
0044 #define twoDimVertL1 4
0045 #define twoDimVertR2 5
0046 #define twoDimVertL2 6
0047 #define twoDimVertR3 7
0048 #define twoDimVertL3 8
0049 
0050 // 1-7 bit codes
0051 static const CCITTCode twoDimTab1[128] = { { -1, -1 },          { -1, -1 }, // 000000x
0052                                            { 7, twoDimVertL3 }, // 0000010
0053                                            { 7, twoDimVertR3 }, // 0000011
0054                                            { 6, twoDimVertL2 }, { 6, twoDimVertL2 }, // 000010x
0055                                            { 6, twoDimVertR2 }, { 6, twoDimVertR2 }, // 000011x
0056                                            { 4, twoDimPass },   { 4, twoDimPass }, // 0001xxx
0057                                            { 4, twoDimPass },   { 4, twoDimPass },   { 4, twoDimPass },   { 4, twoDimPass },   { 4, twoDimPass },   { 4, twoDimPass },   { 3, twoDimHoriz },  { 3, twoDimHoriz }, // 001xxxx
0058                                            { 3, twoDimHoriz },  { 3, twoDimHoriz },  { 3, twoDimHoriz },  { 3, twoDimHoriz },  { 3, twoDimHoriz },  { 3, twoDimHoriz },  { 3, twoDimHoriz },  { 3, twoDimHoriz },  { 3, twoDimHoriz },
0059                                            { 3, twoDimHoriz },  { 3, twoDimHoriz },  { 3, twoDimHoriz },  { 3, twoDimHoriz },  { 3, twoDimHoriz },  { 3, twoDimVertL1 }, { 3, twoDimVertL1 }, // 010xxxx
0060                                            { 3, twoDimVertL1 }, { 3, twoDimVertL1 }, { 3, twoDimVertL1 }, { 3, twoDimVertL1 }, { 3, twoDimVertL1 }, { 3, twoDimVertL1 }, { 3, twoDimVertL1 }, { 3, twoDimVertL1 }, { 3, twoDimVertL1 },
0061                                            { 3, twoDimVertL1 }, { 3, twoDimVertL1 }, { 3, twoDimVertL1 }, { 3, twoDimVertL1 }, { 3, twoDimVertL1 }, { 3, twoDimVertR1 }, { 3, twoDimVertR1 }, // 011xxxx
0062                                            { 3, twoDimVertR1 }, { 3, twoDimVertR1 }, { 3, twoDimVertR1 }, { 3, twoDimVertR1 }, { 3, twoDimVertR1 }, { 3, twoDimVertR1 }, { 3, twoDimVertR1 }, { 3, twoDimVertR1 }, { 3, twoDimVertR1 },
0063                                            { 3, twoDimVertR1 }, { 3, twoDimVertR1 }, { 3, twoDimVertR1 }, { 3, twoDimVertR1 }, { 3, twoDimVertR1 }, { 1, twoDimVert0 },  { 1, twoDimVert0 }, // 1xxxxxx
0064                                            { 1, twoDimVert0 },  { 1, twoDimVert0 },  { 1, twoDimVert0 },  { 1, twoDimVert0 },  { 1, twoDimVert0 },  { 1, twoDimVert0 },  { 1, twoDimVert0 },  { 1, twoDimVert0 },  { 1, twoDimVert0 },
0065                                            { 1, twoDimVert0 },  { 1, twoDimVert0 },  { 1, twoDimVert0 },  { 1, twoDimVert0 },  { 1, twoDimVert0 },  { 1, twoDimVert0 },  { 1, twoDimVert0 },  { 1, twoDimVert0 },  { 1, twoDimVert0 },
0066                                            { 1, twoDimVert0 },  { 1, twoDimVert0 },  { 1, twoDimVert0 },  { 1, twoDimVert0 },  { 1, twoDimVert0 },  { 1, twoDimVert0 },  { 1, twoDimVert0 },  { 1, twoDimVert0 },  { 1, twoDimVert0 },
0067                                            { 1, twoDimVert0 },  { 1, twoDimVert0 },  { 1, twoDimVert0 },  { 1, twoDimVert0 },  { 1, twoDimVert0 },  { 1, twoDimVert0 },  { 1, twoDimVert0 },  { 1, twoDimVert0 },  { 1, twoDimVert0 },
0068                                            { 1, twoDimVert0 },  { 1, twoDimVert0 },  { 1, twoDimVert0 },  { 1, twoDimVert0 },  { 1, twoDimVert0 },  { 1, twoDimVert0 },  { 1, twoDimVert0 },  { 1, twoDimVert0 },  { 1, twoDimVert0 },
0069                                            { 1, twoDimVert0 },  { 1, twoDimVert0 },  { 1, twoDimVert0 },  { 1, twoDimVert0 },  { 1, twoDimVert0 },  { 1, twoDimVert0 },  { 1, twoDimVert0 },  { 1, twoDimVert0 },  { 1, twoDimVert0 },
0070                                            { 1, twoDimVert0 },  { 1, twoDimVert0 },  { 1, twoDimVert0 },  { 1, twoDimVert0 },  { 1, twoDimVert0 },  { 1, twoDimVert0 },  { 1, twoDimVert0 },  { 1, twoDimVert0 } };
0071 
0072 //------------------------------------------------------------------------
0073 // white run lengths
0074 //------------------------------------------------------------------------
0075 
0076 // 11-12 bit codes (upper 7 bits are 0)
0077 static const CCITTCode whiteTab1[32] = {
0078     { -1, -1 }, // 00000
0079     { 12, ccittEOL }, // 00001
0080     { -1, -1 },       { -1, -1 }, // 0001x
0081     { -1, -1 },       { -1, -1 },   { -1, -1 }, { -1, -1 }, // 001xx
0082     { -1, -1 },       { -1, -1 },   { -1, -1 }, { -1, -1 }, // 010xx
0083     { -1, -1 },       { -1, -1 },   { -1, -1 }, { -1, -1 }, // 011xx
0084     { 11, 1792 },     { 11, 1792 }, // 1000x
0085     { 12, 1984 }, // 10010
0086     { 12, 2048 }, // 10011
0087     { 12, 2112 }, // 10100
0088     { 12, 2176 }, // 10101
0089     { 12, 2240 }, // 10110
0090     { 12, 2304 }, // 10111
0091     { 11, 1856 },     { 11, 1856 }, // 1100x
0092     { 11, 1920 },     { 11, 1920 }, // 1101x
0093     { 12, 2368 }, // 11100
0094     { 12, 2432 }, // 11101
0095     { 12, 2496 }, // 11110
0096     { 12, 2560 } // 11111
0097 };
0098 
0099 // 1-9 bit codes
0100 static const CCITTCode whiteTab2[512] = {
0101     { -1, -1 },  { -1, -1 },  { -1, -1 },  { -1, -1 }, // 0000000xx
0102     { 8, 29 },   { 8, 29 }, // 00000010x
0103     { 8, 30 },   { 8, 30 }, // 00000011x
0104     { 8, 45 },   { 8, 45 }, // 00000100x
0105     { 8, 46 },   { 8, 46 }, // 00000101x
0106     { 7, 22 },   { 7, 22 },   { 7, 22 },   { 7, 22 }, // 0000011xx
0107     { 7, 23 },   { 7, 23 },   { 7, 23 },   { 7, 23 }, // 0000100xx
0108     { 8, 47 },   { 8, 47 }, // 00001010x
0109     { 8, 48 },   { 8, 48 }, // 00001011x
0110     { 6, 13 },   { 6, 13 },   { 6, 13 },   { 6, 13 }, // 000011xxx
0111     { 6, 13 },   { 6, 13 },   { 6, 13 },   { 6, 13 },   { 7, 20 },   { 7, 20 },   { 7, 20 },   { 7, 20 }, // 0001000xx
0112     { 8, 33 },   { 8, 33 }, // 00010010x
0113     { 8, 34 },   { 8, 34 }, // 00010011x
0114     { 8, 35 },   { 8, 35 }, // 00010100x
0115     { 8, 36 },   { 8, 36 }, // 00010101x
0116     { 8, 37 },   { 8, 37 }, // 00010110x
0117     { 8, 38 },   { 8, 38 }, // 00010111x
0118     { 7, 19 },   { 7, 19 },   { 7, 19 },   { 7, 19 }, // 0001100xx
0119     { 8, 31 },   { 8, 31 }, // 00011010x
0120     { 8, 32 },   { 8, 32 }, // 00011011x
0121     { 6, 1 },    { 6, 1 },    { 6, 1 },    { 6, 1 }, // 000111xxx
0122     { 6, 1 },    { 6, 1 },    { 6, 1 },    { 6, 1 },    { 6, 12 },   { 6, 12 },   { 6, 12 },   { 6, 12 }, // 001000xxx
0123     { 6, 12 },   { 6, 12 },   { 6, 12 },   { 6, 12 },   { 8, 53 },   { 8, 53 }, // 00100100x
0124     { 8, 54 },   { 8, 54 }, // 00100101x
0125     { 7, 26 },   { 7, 26 },   { 7, 26 },   { 7, 26 }, // 0010011xx
0126     { 8, 39 },   { 8, 39 }, // 00101000x
0127     { 8, 40 },   { 8, 40 }, // 00101001x
0128     { 8, 41 },   { 8, 41 }, // 00101010x
0129     { 8, 42 },   { 8, 42 }, // 00101011x
0130     { 8, 43 },   { 8, 43 }, // 00101100x
0131     { 8, 44 },   { 8, 44 }, // 00101101x
0132     { 7, 21 },   { 7, 21 },   { 7, 21 },   { 7, 21 }, // 0010111xx
0133     { 7, 28 },   { 7, 28 },   { 7, 28 },   { 7, 28 }, // 0011000xx
0134     { 8, 61 },   { 8, 61 }, // 00110010x
0135     { 8, 62 },   { 8, 62 }, // 00110011x
0136     { 8, 63 },   { 8, 63 }, // 00110100x
0137     { 8, 0 },    { 8, 0 }, // 00110101x
0138     { 8, 320 },  { 8, 320 }, // 00110110x
0139     { 8, 384 },  { 8, 384 }, // 00110111x
0140     { 5, 10 },   { 5, 10 },   { 5, 10 },   { 5, 10 }, // 00111xxxx
0141     { 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 }, // 01000xxxx
0142     { 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 }, // 0100100xx
0143     { 8, 59 },   { 8, 59 }, // 01001010x
0144     { 8, 60 },   { 8, 60 }, // 01001011x
0145     { 9, 1472 }, // 010011000
0146     { 9, 1536 }, // 010011001
0147     { 9, 1600 }, // 010011010
0148     { 9, 1728 }, // 010011011
0149     { 7, 18 },   { 7, 18 },   { 7, 18 },   { 7, 18 }, // 0100111xx
0150     { 7, 24 },   { 7, 24 },   { 7, 24 },   { 7, 24 }, // 0101000xx
0151     { 8, 49 },   { 8, 49 }, // 01010010x
0152     { 8, 50 },   { 8, 50 }, // 01010011x
0153     { 8, 51 },   { 8, 51 }, // 01010100x
0154     { 8, 52 },   { 8, 52 }, // 01010101x
0155     { 7, 25 },   { 7, 25 },   { 7, 25 },   { 7, 25 }, // 0101011xx
0156     { 8, 55 },   { 8, 55 }, // 01011000x
0157     { 8, 56 },   { 8, 56 }, // 01011001x
0158     { 8, 57 },   { 8, 57 }, // 01011010x
0159     { 8, 58 },   { 8, 58 }, // 01011011x
0160     { 6, 192 },  { 6, 192 },  { 6, 192 },  { 6, 192 }, // 010111xxx
0161     { 6, 192 },  { 6, 192 },  { 6, 192 },  { 6, 192 },  { 6, 1664 }, { 6, 1664 }, { 6, 1664 }, { 6, 1664 }, // 011000xxx
0162     { 6, 1664 }, { 6, 1664 }, { 6, 1664 }, { 6, 1664 }, { 8, 448 },  { 8, 448 }, // 01100100x
0163     { 8, 512 },  { 8, 512 }, // 01100101x
0164     { 9, 704 }, // 011001100
0165     { 9, 768 }, // 011001101
0166     { 8, 640 },  { 8, 640 }, // 01100111x
0167     { 8, 576 },  { 8, 576 }, // 01101000x
0168     { 9, 832 }, // 011010010
0169     { 9, 896 }, // 011010011
0170     { 9, 960 }, // 011010100
0171     { 9, 1024 }, // 011010101
0172     { 9, 1088 }, // 011010110
0173     { 9, 1152 }, // 011010111
0174     { 9, 1216 }, // 011011000
0175     { 9, 1280 }, // 011011001
0176     { 9, 1344 }, // 011011010
0177     { 9, 1408 }, // 011011011
0178     { 7, 256 },  { 7, 256 },  { 7, 256 },  { 7, 256 }, // 0110111xx
0179     { 4, 2 },    { 4, 2 },    { 4, 2 },    { 4, 2 }, // 0111xxxxx
0180     { 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 },
0181     { 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 }, // 1000xxxxx
0182     { 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 },
0183     { 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 }, // 10010xxxx
0184     { 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 }, // 10011xxxx
0185     { 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 }, // 10100xxxx
0186     { 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 }, // 101010xxx
0187     { 6, 16 },   { 6, 16 },   { 6, 16 },   { 6, 16 },   { 6, 17 },   { 6, 17 },   { 6, 17 },   { 6, 17 }, // 101011xxx
0188     { 6, 17 },   { 6, 17 },   { 6, 17 },   { 6, 17 },   { 4, 4 },    { 4, 4 },    { 4, 4 },    { 4, 4 }, // 1011xxxxx
0189     { 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 },
0190     { 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 }, // 1100xxxxx
0191     { 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 },
0192     { 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 }, // 110100xxx
0193     { 6, 14 },   { 6, 14 },   { 6, 14 },   { 6, 14 },   { 6, 15 },   { 6, 15 },   { 6, 15 },   { 6, 15 }, // 110101xxx
0194     { 6, 15 },   { 6, 15 },   { 6, 15 },   { 6, 15 },   { 5, 64 },   { 5, 64 },   { 5, 64 },   { 5, 64 }, // 11011xxxx
0195     { 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 }, // 1110xxxxx
0196     { 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 },
0197     { 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 }, // 1111xxxxx
0198     { 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 },
0199     { 4, 7 },    { 4, 7 },    { 4, 7 },    { 4, 7 },    { 4, 7 },    { 4, 7 },    { 4, 7 },    { 4, 7 },    { 4, 7 },   { 4, 7 },   { 4, 7 },   { 4, 7 }
0200 };
0201 
0202 //------------------------------------------------------------------------
0203 // black run lengths
0204 //------------------------------------------------------------------------
0205 
0206 // 10-13 bit codes (upper 6 bits are 0)
0207 static const CCITTCode blackTab1[128] = { { -1, -1 },       { -1, -1 }, // 000000000000x
0208                                           { 12, ccittEOL }, { 12, ccittEOL }, // 000000000001x
0209                                           { -1, -1 },       { -1, -1 },       { -1, -1 },   { -1, -1 }, // 00000000001xx
0210                                           { -1, -1 },       { -1, -1 },       { -1, -1 },   { -1, -1 }, // 00000000010xx
0211                                           { -1, -1 },       { -1, -1 },       { -1, -1 },   { -1, -1 }, // 00000000011xx
0212                                           { -1, -1 },       { -1, -1 },       { -1, -1 },   { -1, -1 }, // 00000000100xx
0213                                           { -1, -1 },       { -1, -1 },       { -1, -1 },   { -1, -1 }, // 00000000101xx
0214                                           { -1, -1 },       { -1, -1 },       { -1, -1 },   { -1, -1 }, // 00000000110xx
0215                                           { -1, -1 },       { -1, -1 },       { -1, -1 },   { -1, -1 }, // 00000000111xx
0216                                           { 11, 1792 },     { 11, 1792 },     { 11, 1792 }, { 11, 1792 }, // 00000001000xx
0217                                           { 12, 1984 },     { 12, 1984 }, // 000000010010x
0218                                           { 12, 2048 },     { 12, 2048 }, // 000000010011x
0219                                           { 12, 2112 },     { 12, 2112 }, // 000000010100x
0220                                           { 12, 2176 },     { 12, 2176 }, // 000000010101x
0221                                           { 12, 2240 },     { 12, 2240 }, // 000000010110x
0222                                           { 12, 2304 },     { 12, 2304 }, // 000000010111x
0223                                           { 11, 1856 },     { 11, 1856 },     { 11, 1856 }, { 11, 1856 }, // 00000001100xx
0224                                           { 11, 1920 },     { 11, 1920 },     { 11, 1920 }, { 11, 1920 }, // 00000001101xx
0225                                           { 12, 2368 },     { 12, 2368 }, // 000000011100x
0226                                           { 12, 2432 },     { 12, 2432 }, // 000000011101x
0227                                           { 12, 2496 },     { 12, 2496 }, // 000000011110x
0228                                           { 12, 2560 },     { 12, 2560 }, // 000000011111x
0229                                           { 10, 18 },       { 10, 18 },       { 10, 18 },   { 10, 18 }, // 0000001000xxx
0230                                           { 10, 18 },       { 10, 18 },       { 10, 18 },   { 10, 18 },   { 12, 52 }, { 12, 52 }, // 000000100100x
0231                                           { 13, 640 }, // 0000001001010
0232                                           { 13, 704 }, // 0000001001011
0233                                           { 13, 768 }, // 0000001001100
0234                                           { 13, 832 }, // 0000001001101
0235                                           { 12, 55 },       { 12, 55 }, // 000000100111x
0236                                           { 12, 56 },       { 12, 56 }, // 000000101000x
0237                                           { 13, 1280 }, // 0000001010010
0238                                           { 13, 1344 }, // 0000001010011
0239                                           { 13, 1408 }, // 0000001010100
0240                                           { 13, 1472 }, // 0000001010101
0241                                           { 12, 59 },       { 12, 59 }, // 000000101011x
0242                                           { 12, 60 },       { 12, 60 }, // 000000101100x
0243                                           { 13, 1536 }, // 0000001011010
0244                                           { 13, 1600 }, // 0000001011011
0245                                           { 11, 24 },       { 11, 24 },       { 11, 24 },   { 11, 24 }, // 00000010111xx
0246                                           { 11, 25 },       { 11, 25 },       { 11, 25 },   { 11, 25 }, // 00000011000xx
0247                                           { 13, 1664 }, // 0000001100100
0248                                           { 13, 1728 }, // 0000001100101
0249                                           { 12, 320 },      { 12, 320 }, // 000000110011x
0250                                           { 12, 384 },      { 12, 384 }, // 000000110100x
0251                                           { 12, 448 },      { 12, 448 }, // 000000110101x
0252                                           { 13, 512 }, // 0000001101100
0253                                           { 13, 576 }, // 0000001101101
0254                                           { 12, 53 },       { 12, 53 }, // 000000110111x
0255                                           { 12, 54 },       { 12, 54 }, // 000000111000x
0256                                           { 13, 896 }, // 0000001110010
0257                                           { 13, 960 }, // 0000001110011
0258                                           { 13, 1024 }, // 0000001110100
0259                                           { 13, 1088 }, // 0000001110101
0260                                           { 13, 1152 }, // 0000001110110
0261                                           { 13, 1216 }, // 0000001110111
0262                                           { 10, 64 },       { 10, 64 },       { 10, 64 },   { 10, 64 }, // 0000001111xxx
0263                                           { 10, 64 },       { 10, 64 },       { 10, 64 },   { 10, 64 } };
0264 
0265 // 7-12 bit codes (upper 4 bits are 0)
0266 static const CCITTCode blackTab2[192] = {
0267     { 8, 13 },   { 8, 13 },  { 8, 13 },  { 8, 13 }, // 00000100xxxx
0268     { 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 }, // 00000101000x
0269     { 12, 50 }, // 000001010010
0270     { 12, 51 }, // 000001010011
0271     { 12, 44 }, // 000001010100
0272     { 12, 45 }, // 000001010101
0273     { 12, 46 }, // 000001010110
0274     { 12, 47 }, // 000001010111
0275     { 12, 57 }, // 000001011000
0276     { 12, 58 }, // 000001011001
0277     { 12, 61 }, // 000001011010
0278     { 12, 256 }, // 000001011011
0279     { 10, 16 },  { 10, 16 }, { 10, 16 }, { 10, 16 }, // 0000010111xx
0280     { 10, 17 },  { 10, 17 }, { 10, 17 }, { 10, 17 }, // 0000011000xx
0281     { 12, 48 }, // 000001100100
0282     { 12, 49 }, // 000001100101
0283     { 12, 62 }, // 000001100110
0284     { 12, 63 }, // 000001100111
0285     { 12, 30 }, // 000001101000
0286     { 12, 31 }, // 000001101001
0287     { 12, 32 }, // 000001101010
0288     { 12, 33 }, // 000001101011
0289     { 12, 40 }, // 000001101100
0290     { 12, 41 }, // 000001101101
0291     { 11, 22 },  { 11, 22 }, // 00000110111x
0292     { 8, 14 },   { 8, 14 },  { 8, 14 },  { 8, 14 }, // 00000111xxxx
0293     { 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 }, // 0000100xxxxx
0294     { 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 },
0295     { 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 }, // 0000101xxxxx
0296     { 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 },
0297     { 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 }, // 000011000xxx
0298     { 9, 15 },   { 9, 15 },  { 9, 15 },  { 9, 15 },  { 12, 128 }, // 000011001000
0299     { 12, 192 }, // 000011001001
0300     { 12, 26 }, // 000011001010
0301     { 12, 27 }, // 000011001011
0302     { 12, 28 }, // 000011001100
0303     { 12, 29 }, // 000011001101
0304     { 11, 19 },  { 11, 19 }, // 00001100111x
0305     { 11, 20 },  { 11, 20 }, // 00001101000x
0306     { 12, 34 }, // 000011010010
0307     { 12, 35 }, // 000011010011
0308     { 12, 36 }, // 000011010100
0309     { 12, 37 }, // 000011010101
0310     { 12, 38 }, // 000011010110
0311     { 12, 39 }, // 000011010111
0312     { 11, 21 },  { 11, 21 }, // 00001101100x
0313     { 12, 42 }, // 000011011010
0314     { 12, 43 }, // 000011011011
0315     { 10, 0 },   { 10, 0 },  { 10, 0 },  { 10, 0 }, // 0000110111xx
0316     { 7, 12 },   { 7, 12 },  { 7, 12 },  { 7, 12 }, // 0000111xxxxx
0317     { 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 },
0318     { 7, 12 },   { 7, 12 },  { 7, 12 },  { 7, 12 },  { 7, 12 },   { 7, 12 }, { 7, 12 }, { 7, 12 }, { 7, 12 }, { 7, 12 }, { 7, 12 }, { 7, 12 }
0319 };
0320 
0321 // 2-6 bit codes
0322 static const CCITTCode blackTab3[64] = { { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 }, // 0000xx
0323                                          { 6, 9 }, // 000100
0324                                          { 6, 8 }, // 000101
0325                                          { 5, 7 },   { 5, 7 }, // 00011x
0326                                          { 4, 6 },   { 4, 6 },   { 4, 6 },   { 4, 6 }, // 0010xx
0327                                          { 4, 5 },   { 4, 5 },   { 4, 5 },   { 4, 5 }, // 0011xx
0328                                          { 3, 1 },   { 3, 1 },   { 3, 1 },   { 3, 1 }, // 010xxx
0329                                          { 3, 1 },   { 3, 1 },   { 3, 1 },   { 3, 1 },   { 3, 4 }, { 3, 4 }, { 3, 4 }, { 3, 4 }, // 011xxx
0330                                          { 3, 4 },   { 3, 4 },   { 3, 4 },   { 3, 4 },   { 2, 3 }, { 2, 3 }, { 2, 3 }, { 2, 3 }, // 10xxxx
0331                                          { 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 }, // 11xxxx
0332                                          { 2, 2 },   { 2, 2 },   { 2, 2 },   { 2, 2 },   { 2, 2 }, { 2, 2 }, { 2, 2 }, { 2, 2 }, { 2, 2 }, { 2, 2 }, { 2, 2 }, { 2, 2 } };
0333 
0334 #endif