Fri, 21 Feb 2003 12:29:16 +0000
updated HDRS
eric@69 | 1 | /* |
eric@69 | 2 | * t2p: Create a PDF file from the contents of one or more TIFF |
eric@69 | 3 | * bilevel image files. The images in the resulting PDF file |
eric@69 | 4 | * will be compressed using ITU-T T.6 (G4) fax encoding. |
eric@69 | 5 | * |
eric@69 | 6 | * G4 encoding tables |
eric@69 | 7 | * $Id: pdf_g4_tables.h,v 1.2 2003/02/21 04:28:37 eric Exp $ |
eric@69 | 8 | * Copyright 2001, 2002, 2003 Eric Smith <eric@brouhaha.com> |
eric@69 | 9 | * |
eric@69 | 10 | * This program is free software; you can redistribute it and/or modify |
eric@69 | 11 | * it under the terms of the GNU General Public License version 2 as |
eric@69 | 12 | * published by the Free Software Foundation. Note that permission is |
eric@69 | 13 | * not granted to redistribute this program under the terms of any |
eric@69 | 14 | * other version of the General Public License. |
eric@69 | 15 | * |
eric@69 | 16 | * This program is distributed in the hope that it will be useful, |
eric@69 | 17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
eric@69 | 18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
eric@69 | 19 | * GNU General Public License for more details. |
eric@69 | 20 | * |
eric@69 | 21 | * You should have received a copy of the GNU General Public License |
eric@69 | 22 | * along with this program; if not, write to the Free Software |
eric@69 | 23 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA |
eric@69 | 24 | */ |
eric@69 | 25 | |
eric@69 | 26 | |
eric@68 | 27 | typedef struct |
eric@68 | 28 | { |
eric@68 | 29 | uint32_t count; |
eric@68 | 30 | uint32_t bits; |
eric@68 | 31 | } g4_bits; |
eric@68 | 32 | |
eric@68 | 33 | static g4_bits g4_long_makeup_code [12] = |
eric@68 | 34 | { |
eric@68 | 35 | { 11, 0x008 }, /* 1792 */ |
eric@68 | 36 | { 11, 0x00c }, /* 1856 */ |
eric@68 | 37 | { 11, 0x00d }, /* 1920 */ |
eric@68 | 38 | { 12, 0x012 }, /* 1984 */ |
eric@68 | 39 | { 12, 0x013 }, /* 2048 */ |
eric@68 | 40 | { 12, 0x014 }, /* 2112 */ |
eric@68 | 41 | { 12, 0x015 }, /* 2176 */ |
eric@68 | 42 | { 12, 0x016 }, /* 2240 */ |
eric@68 | 43 | { 12, 0x017 }, /* 2304 */ |
eric@68 | 44 | { 12, 0x01c }, /* 2368 */ |
eric@68 | 45 | { 12, 0x01d }, /* 2432 */ |
eric@68 | 46 | { 12, 0x01e } /* 2496 */ |
eric@68 | 47 | }; |
eric@68 | 48 | |
eric@68 | 49 | static g4_bits g4_makeup_code [2] [27] = |
eric@68 | 50 | { |
eric@68 | 51 | { |
eric@68 | 52 | /* white */ |
eric@68 | 53 | { 5, 0x1b }, /* 64 */ |
eric@68 | 54 | { 5, 0x12 }, /* 128 */ |
eric@68 | 55 | { 6, 0x17 }, /* 192 */ |
eric@68 | 56 | { 7, 0x37 }, /* 256 */ |
eric@68 | 57 | { 8, 0x36 }, /* 320 */ |
eric@68 | 58 | { 8, 0x37 }, /* 384 */ |
eric@68 | 59 | { 8, 0x64 }, /* 448 */ |
eric@68 | 60 | { 8, 0x65 }, /* 512 */ |
eric@68 | 61 | { 8, 0x68 }, /* 576 */ |
eric@68 | 62 | { 8, 0x67 }, /* 640 */ |
eric@68 | 63 | { 9, 0x0cc }, /* 704 */ |
eric@68 | 64 | { 9, 0x0cd }, /* 768 */ |
eric@68 | 65 | { 9, 0x0d2 }, /* 832 */ |
eric@68 | 66 | { 9, 0x0d3 }, /* 896 */ |
eric@68 | 67 | { 9, 0x0d4 }, /* 960 */ |
eric@68 | 68 | { 9, 0x0d5 }, /* 1024 */ |
eric@68 | 69 | { 9, 0x0d6 }, /* 1088 */ |
eric@68 | 70 | { 9, 0x0d7 }, /* 1152 */ |
eric@68 | 71 | { 9, 0x0d8 }, /* 1216 */ |
eric@68 | 72 | { 9, 0x0d9 }, /* 1280 */ |
eric@68 | 73 | { 9, 0x0da }, /* 1344 */ |
eric@68 | 74 | { 9, 0x0db }, /* 1408 */ |
eric@68 | 75 | { 9, 0x098 }, /* 1472 */ |
eric@68 | 76 | { 9, 0x099 }, /* 1536 */ |
eric@68 | 77 | { 9, 0x09a }, /* 1600 */ |
eric@68 | 78 | { 6, 0x18 }, /* 1664 */ |
eric@68 | 79 | { 9, 0x09b } /* 1728 */ |
eric@68 | 80 | }, |
eric@68 | 81 | { |
eric@68 | 82 | /* black */ |
eric@68 | 83 | { 10, 0x00f }, /* 64 */ |
eric@68 | 84 | { 12, 0x0c8 }, /* 128 */ |
eric@68 | 85 | { 12, 0x0c9 }, /* 192 */ |
eric@68 | 86 | { 12, 0x05b }, /* 256 */ |
eric@68 | 87 | { 12, 0x033 }, /* 320 */ |
eric@68 | 88 | { 12, 0x034 }, /* 384 */ |
eric@68 | 89 | { 12, 0x035 }, /* 448 */ |
eric@68 | 90 | { 13, 0x006c }, /* 512 */ |
eric@68 | 91 | { 13, 0x006d }, /* 576 */ |
eric@68 | 92 | { 13, 0x004a }, /* 640 */ |
eric@68 | 93 | { 13, 0x004b }, /* 704 */ |
eric@68 | 94 | { 13, 0x004c }, /* 768 */ |
eric@68 | 95 | { 13, 0x004d }, /* 832 */ |
eric@68 | 96 | { 13, 0x0072 }, /* 896 */ |
eric@68 | 97 | { 13, 0x0073 }, /* 960 */ |
eric@68 | 98 | { 13, 0x0074 }, /* 1024 */ |
eric@68 | 99 | { 13, 0x0075 }, /* 1088 */ |
eric@68 | 100 | { 13, 0x0076 }, /* 1152 */ |
eric@68 | 101 | { 13, 0x0077 }, /* 1216 */ |
eric@68 | 102 | { 13, 0x0052 }, /* 1280 */ |
eric@68 | 103 | { 13, 0x0053 }, /* 1344 */ |
eric@68 | 104 | { 13, 0x0054 }, /* 1408 */ |
eric@68 | 105 | { 13, 0x0055 }, /* 1472 */ |
eric@68 | 106 | { 13, 0x005a }, /* 1536 */ |
eric@68 | 107 | { 13, 0x005b }, /* 1600 */ |
eric@68 | 108 | { 13, 0x0064 }, /* 1664 */ |
eric@68 | 109 | { 13, 0x0065 }, /* 1728 */ |
eric@68 | 110 | } |
eric@68 | 111 | }; |
eric@68 | 112 | |
eric@68 | 113 | |
eric@68 | 114 | static g4_bits g4_h_code [2] [64] = |
eric@68 | 115 | { |
eric@68 | 116 | { |
eric@68 | 117 | /* white */ |
eric@68 | 118 | { 8, 0x35 }, /* 0 */ |
eric@68 | 119 | { 6, 0x07 }, /* 1 */ |
eric@68 | 120 | { 4, 0x7 }, /* 2 */ |
eric@68 | 121 | { 4, 0x8 }, /* 3 */ |
eric@68 | 122 | { 4, 0xb }, /* 4 */ |
eric@68 | 123 | { 4, 0xc }, /* 5 */ |
eric@68 | 124 | { 4, 0xe }, /* 6 */ |
eric@68 | 125 | { 4, 0xf }, /* 7 */ |
eric@68 | 126 | { 5, 0x13 }, /* 8 */ |
eric@68 | 127 | { 5, 0x14 }, /* 9 */ |
eric@68 | 128 | { 5, 0x07 }, /* 10 */ |
eric@68 | 129 | { 5, 0x08 }, /* 11 */ |
eric@68 | 130 | { 6, 0x08 }, /* 12 */ |
eric@68 | 131 | { 6, 0x03 }, /* 13 */ |
eric@68 | 132 | { 6, 0x34 }, /* 14 */ |
eric@68 | 133 | { 6, 0x35 }, /* 15 */ |
eric@68 | 134 | { 6, 0x2a }, /* 16 */ |
eric@68 | 135 | { 6, 0x2b }, /* 17 */ |
eric@68 | 136 | { 7, 0x27 }, /* 18 */ |
eric@68 | 137 | { 7, 0x0c }, /* 19 */ |
eric@68 | 138 | { 7, 0x04 }, /* 20 */ |
eric@68 | 139 | { 7, 0x17 }, /* 21 */ |
eric@68 | 140 | { 7, 0x03 }, /* 22 */ |
eric@68 | 141 | { 7, 0x04 }, /* 23 */ |
eric@68 | 142 | { 7, 0x28 }, /* 24 */ |
eric@68 | 143 | { 7, 0x2b }, /* 25 */ |
eric@68 | 144 | { 7, 0x13 }, /* 26 */ |
eric@68 | 145 | { 7, 0x24 }, /* 27 */ |
eric@68 | 146 | { 7, 0x18 }, /* 28 */ |
eric@68 | 147 | { 8, 0x02 }, /* 29 */ |
eric@68 | 148 | { 8, 0x03 }, /* 30 */ |
eric@68 | 149 | { 8, 0x1a }, /* 31 */ |
eric@68 | 150 | { 8, 0x1b }, /* 32 */ |
eric@68 | 151 | { 8, 0x12 }, /* 33 */ |
eric@68 | 152 | { 8, 0x13 }, /* 34 */ |
eric@68 | 153 | { 8, 0x14 }, /* 35 */ |
eric@68 | 154 | { 8, 0x15 }, /* 36 */ |
eric@68 | 155 | { 8, 0x16 }, /* 37 */ |
eric@68 | 156 | { 8, 0x17 }, /* 38 */ |
eric@68 | 157 | { 8, 0x28 }, /* 39 */ |
eric@68 | 158 | { 8, 0x29 }, /* 40 */ |
eric@68 | 159 | { 8, 0x2a }, /* 41 */ |
eric@68 | 160 | { 8, 0x2b }, /* 42 */ |
eric@68 | 161 | { 8, 0x2c }, /* 43 */ |
eric@68 | 162 | { 8, 0x2d }, /* 44 */ |
eric@68 | 163 | { 8, 0x04 }, /* 45 */ |
eric@68 | 164 | { 8, 0x05 }, /* 46 */ |
eric@68 | 165 | { 8, 0x0a }, /* 47 */ |
eric@68 | 166 | { 8, 0x0b }, /* 48 */ |
eric@68 | 167 | { 8, 0x52 }, /* 49 */ |
eric@68 | 168 | { 8, 0x53 }, /* 50 */ |
eric@68 | 169 | { 8, 0x54 }, /* 51 */ |
eric@68 | 170 | { 8, 0x55 }, /* 52 */ |
eric@68 | 171 | { 8, 0x24 }, /* 53 */ |
eric@68 | 172 | { 8, 0x25 }, /* 54 */ |
eric@68 | 173 | { 8, 0x58 }, /* 55 */ |
eric@68 | 174 | { 8, 0x59 }, /* 56 */ |
eric@68 | 175 | { 8, 0x5a }, /* 57 */ |
eric@68 | 176 | { 8, 0x5b }, /* 58 */ |
eric@68 | 177 | { 8, 0x4a }, /* 59 */ |
eric@68 | 178 | { 8, 0x4b }, /* 60 */ |
eric@68 | 179 | { 8, 0x32 }, /* 61 */ |
eric@68 | 180 | { 8, 0x33 }, /* 62 */ |
eric@68 | 181 | { 8, 0x34 } /* 63 */ |
eric@68 | 182 | }, |
eric@68 | 183 | { |
eric@68 | 184 | /* black */ |
eric@68 | 185 | { 10, 0x037 }, /* 0 */ |
eric@68 | 186 | { 3, 0x2 }, /* 1 */ |
eric@68 | 187 | { 2, 0x3 }, /* 2 */ |
eric@68 | 188 | { 2, 0x2 }, /* 3 */ |
eric@68 | 189 | { 3, 0x3 }, /* 4 */ |
eric@68 | 190 | { 4, 0x3 }, /* 5 */ |
eric@68 | 191 | { 4, 0x2 }, /* 6 */ |
eric@68 | 192 | { 5, 0x03 }, /* 7 */ |
eric@68 | 193 | { 6, 0x05 }, /* 8 */ |
eric@68 | 194 | { 6, 0x04 }, /* 9 */ |
eric@68 | 195 | { 7, 0x04 }, /* 10 */ |
eric@68 | 196 | { 7, 0x05 }, /* 11 */ |
eric@68 | 197 | { 7, 0x07 }, /* 12 */ |
eric@68 | 198 | { 8, 0x04 }, /* 13 */ |
eric@68 | 199 | { 8, 0x07 }, /* 14 */ |
eric@68 | 200 | { 9, 0x018 }, /* 15 */ |
eric@68 | 201 | { 10, 0x017 }, /* 16 */ |
eric@68 | 202 | { 10, 0x018 }, /* 17 */ |
eric@68 | 203 | { 10, 0x008 }, /* 18 */ |
eric@68 | 204 | { 11, 0x067 }, /* 19 */ |
eric@68 | 205 | { 11, 0x068 }, /* 20 */ |
eric@68 | 206 | { 11, 0x06c }, /* 21 */ |
eric@68 | 207 | { 11, 0x037 }, /* 22 */ |
eric@68 | 208 | { 11, 0x028 }, /* 23 */ |
eric@68 | 209 | { 11, 0x017 }, /* 24 */ |
eric@68 | 210 | { 11, 0x018 }, /* 25 */ |
eric@68 | 211 | { 12, 0x0ca }, /* 26 */ |
eric@68 | 212 | { 12, 0x0cb }, /* 27 */ |
eric@68 | 213 | { 12, 0x0cc }, /* 28 */ |
eric@68 | 214 | { 12, 0x0cd }, /* 29 */ |
eric@68 | 215 | { 12, 0x068 }, /* 30 */ |
eric@68 | 216 | { 12, 0x069 }, /* 31 */ |
eric@68 | 217 | { 12, 0x06a }, /* 32 */ |
eric@68 | 218 | { 12, 0x06b }, /* 33 */ |
eric@68 | 219 | { 12, 0x0d2 }, /* 34 */ |
eric@68 | 220 | { 12, 0x0d3 }, /* 35 */ |
eric@68 | 221 | { 12, 0x0d4 }, /* 36 */ |
eric@68 | 222 | { 12, 0x0d5 }, /* 37 */ |
eric@68 | 223 | { 12, 0x0d6 }, /* 38 */ |
eric@68 | 224 | { 12, 0x0d7 }, /* 39 */ |
eric@68 | 225 | { 12, 0x06c }, /* 40 */ |
eric@68 | 226 | { 12, 0x06d }, /* 41 */ |
eric@68 | 227 | { 12, 0x0da }, /* 42 */ |
eric@68 | 228 | { 12, 0x0db }, /* 43 */ |
eric@68 | 229 | { 12, 0x054 }, /* 44 */ |
eric@68 | 230 | { 12, 0x055 }, /* 45 */ |
eric@68 | 231 | { 12, 0x056 }, /* 46 */ |
eric@68 | 232 | { 12, 0x057 }, /* 47 */ |
eric@68 | 233 | { 12, 0x064 }, /* 48 */ |
eric@68 | 234 | { 12, 0x065 }, /* 49 */ |
eric@68 | 235 | { 12, 0x052 }, /* 50 */ |
eric@68 | 236 | { 12, 0x053 }, /* 51 */ |
eric@68 | 237 | { 12, 0x024 }, /* 52 */ |
eric@68 | 238 | { 12, 0x037 }, /* 53 */ |
eric@68 | 239 | { 12, 0x038 }, /* 54 */ |
eric@68 | 240 | { 12, 0x027 }, /* 55 */ |
eric@68 | 241 | { 12, 0x028 }, /* 56 */ |
eric@68 | 242 | { 12, 0x058 }, /* 57 */ |
eric@68 | 243 | { 12, 0x059 }, /* 58 */ |
eric@68 | 244 | { 12, 0x02b }, /* 59 */ |
eric@68 | 245 | { 12, 0x02c }, /* 60 */ |
eric@68 | 246 | { 12, 0x05a }, /* 61 */ |
eric@68 | 247 | { 12, 0x066 }, /* 62 */ |
eric@68 | 248 | { 12, 0x067 } /* 63 */ |
eric@68 | 249 | } |
eric@68 | 250 | }; |
eric@68 | 251 | |
eric@68 | 252 | |
eric@68 | 253 | static g4_bits g4_vert_code [7] = |
eric@68 | 254 | { |
eric@68 | 255 | { 7, 0x02 }, |
eric@68 | 256 | { 6, 0x02 }, |
eric@68 | 257 | { 3, 0x02 }, |
eric@68 | 258 | { 1, 0x01 }, |
eric@68 | 259 | { 3, 0x03 }, |
eric@68 | 260 | { 6, 0x03 }, |
eric@68 | 261 | { 7, 0x03 } |
eric@68 | 262 | }; |