| 1 18 package org.apache.batik.ext.awt.image.codec.tiff; 19 20 21 class TIFFFaxDecoder { 22 23 private int bitPointer, bytePointer; 24 private byte[] data; 25 private int w, h; 26 private int fillOrder; 27 28 private int changingElemSize = 0; 31 private int prevChangingElems[]; 32 private int currChangingElems[]; 33 34 private int lastChangingElement = 0; 36 37 private int compression = 2; 38 39 private int uncompressedMode = 0; 41 private int fillBits = 0; 42 private int oneD; 43 44 static int table1[] = { 45 0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f, 0x7f, 0xff }; 55 56 static int table2[] = { 57 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc, 0xfe, 0xff }; 67 68 static byte flipTable[] = { 70 0, -128, 64, -64, 32, -96, 96, -32, 71 16, -112, 80, -48, 48, -80, 112, -16, 72 8, -120, 72, -56, 40, -88, 104, -24, 73 24, -104, 88, -40, 56, -72, 120, -8, 74 4, -124, 68, -60, 36, -92, 100, -28, 75 20, -108, 84, -44, 52, -76, 116, -12, 76 12, -116, 76, -52, 44, -84, 108, -20, 77 28, -100, 92, -36, 60, -68, 124, -4, 78 2, -126, 66, -62, 34, -94, 98, -30, 79 18, -110, 82, -46, 50, -78, 114, -14, 80 10, -118, 74, -54, 42, -86, 106, -22, 81 26, -102, 90, -38, 58, -70, 122, -6, 82 6, -122, 70, -58, 38, -90, 102, -26, 83 22, -106, 86, -42, 54, -74, 118, -10, 84 14, -114, 78, -50, 46, -82, 110, -18, 85 30, -98, 94, -34, 62, -66, 126, -2, 86 1, -127, 65, -63, 33, -95, 97, -31, 87 17, -111, 81, -47, 49, -79, 113, -15, 88 9, -119, 73, -55, 41, -87, 105, -23, 89 25, -103, 89, -39, 57, -71, 121, -7, 90 5, -123, 69, -59, 37, -91, 101, -27, 91 21, -107, 85, -43, 53, -75, 117, -11, 92 13, -115, 77, -51, 45, -83, 109, -19, 93 29, -99, 93, -35, 61, -67, 125, -3, 94 3, -125, 67, -61, 35, -93, 99, -29, 95 19, -109, 83, -45, 51, -77, 115, -13, 96 11, -117, 75, -53, 43, -85, 107, -21, 97 27, -101, 91, -37, 59, -69, 123, -5, 98 7, -121, 71, -57, 39, -89, 103, -25, 99 23, -105, 87, -41, 55, -73, 119, -9, 100 15, -113, 79, -49, 47, -81, 111, -17, 101 31, -97, 95, -33, 63, -65, 127, -1, 102 }; 103 104 static short white[] = { 106 6430, 6400, 6400, 6400, 3225, 3225, 3225, 3225, 108 944, 944, 944, 944, 976, 976, 976, 976, 110 1456, 1456, 1456, 1456, 1488, 1488, 1488, 1488, 112 718, 718, 718, 718, 718, 718, 718, 718, 114 750, 750, 750, 750, 750, 750, 750, 750, 116 1520, 1520, 1520, 1520, 1552, 1552, 1552, 1552, 118 428, 428, 428, 428, 428, 428, 428, 428, 120 428, 428, 428, 428, 428, 428, 428, 428, 122 654, 654, 654, 654, 654, 654, 654, 654, 124 1072, 1072, 1072, 1072, 1104, 1104, 1104, 1104, 126 1136, 1136, 1136, 1136, 1168, 1168, 1168, 1168, 128 1200, 1200, 1200, 1200, 1232, 1232, 1232, 1232, 130 622, 622, 622, 622, 622, 622, 622, 622, 132 1008, 1008, 1008, 1008, 1040, 1040, 1040, 1040, 134 44, 44, 44, 44, 44, 44, 44, 44, 136 44, 44, 44, 44, 44, 44, 44, 44, 138 396, 396, 396, 396, 396, 396, 396, 396, 140 396, 396, 396, 396, 396, 396, 396, 396, 142 1712, 1712, 1712, 1712, 1744, 1744, 1744, 1744, 144 846, 846, 846, 846, 846, 846, 846, 846, 146 1264, 1264, 1264, 1264, 1296, 1296, 1296, 1296, 148 1328, 1328, 1328, 1328, 1360, 1360, 1360, 1360, 150 1392, 1392, 1392, 1392, 1424, 1424, 1424, 1424, 152 686, 686, 686, 686, 686, 686, 686, 686, 154 910, 910, 910, 910, 910, 910, 910, 910, 156 1968, 1968, 1968, 1968, 2000, 2000, 2000, 2000, 158 2032, 2032, 2032, 2032, 16, 16, 16, 16, 160 10257, 10257, 10257, 10257, 12305, 12305, 12305, 12305, 162 330, 330, 330, 330, 330, 330, 330, 330, 164 330, 330, 330, 330, 330, 330, 330, 330, 166 330, 330, 330, 330, 330, 330, 330, 330, 168 330, 330, 330, 330, 330, 330, 330, 330, 170 362, 362, 362, 362, 362, 362, 362, 362, 172 362, 362, 362, 362, 362, 362, 362, 362, 174 362, 362, 362, 362, 362, 362, 362, 362, 176 362, 362, 362, 362, 362, 362, 362, 362, 178 878, 878, 878, 878, 878, 878, 878, 878, 180 1904, 1904, 1904, 1904, 1936, 1936, 1936, 1936, 182 -18413, -18413, -16365, -16365, -14317, -14317, -10221, -10221, 184 590, 590, 590, 590, 590, 590, 590, 590, 186 782, 782, 782, 782, 782, 782, 782, 782, 188 1584, 1584, 1584, 1584, 1616, 1616, 1616, 1616, 190 1648, 1648, 1648, 1648, 1680, 1680, 1680, 1680, 192 814, 814, 814, 814, 814, 814, 814, 814, 194 1776, 1776, 1776, 1776, 1808, 1808, 1808, 1808, 196 1840, 1840, 1840, 1840, 1872, 1872, 1872, 1872, 198 6157, 6157, 6157, 6157, 6157, 6157, 6157, 6157, 200 6157, 6157, 6157, 6157, 6157, 6157, 6157, 6157, 202 -12275, -12275, -12275, -12275, -12275, -12275, -12275, -12275, 204 -12275, -12275, -12275, -12275, -12275, -12275, -12275, -12275, 206 14353, 14353, 14353, 14353, 16401, 16401, 16401, 16401, 208 22547, 22547, 24595, 24595, 20497, 20497, 20497, 20497, 210 18449, 18449, 18449, 18449, 26643, 26643, 28691, 28691, 212 30739, 30739, -32749, -32749, -30701, -30701, -28653, -28653, 214 -26605, -26605, -24557, -24557, -22509, -22509, -20461, -20461, 216 8207, 8207, 8207, 8207, 8207, 8207, 8207, 8207, 218 72, 72, 72, 72, 72, 72, 72, 72, 220 72, 72, 72, 72, 72, 72, 72, 72, 222 72, 72, 72, 72, 72, 72, 72, 72, 224 72, 72, 72, 72, 72, 72, 72, 72, 226 72, 72, 72, 72, 72, 72, 72, 72, 228 72, 72, 72, 72, 72, 72, 72, 72, 230 72, 72, 72, 72, 72, 72, 72, 72, 232 72, 72, 72, 72, 72, 72, 72, 72, 234 104, 104, 104, 104, 104, 104, 104, 104, 236 104, 104, 104, 104, 104, 104, 104, 104, 238 104, 104, 104, 104, 104, 104, 104, 104, 240 104, 104, 104, 104, 104, 104, 104, 104, 242 104, 104, 104, 104, 104, 104, 104, 104, 244 104, 104, 104, 104, 104, 104, 104, 104, 246 104, 104, 104, 104, 104, 104, 104, 104, 248 104, 104, 104, 104, 104, 104, 104, 104, 250 4107, 4107, 4107, 4107, 4107, 4107, 4107, 4107, 252 4107, 4107, 4107, 4107, 4107, 4107, 4107, 4107, 254 4107, 4107, 4107, 4107, 4107, 4107, 4107, 4107, 256 4107, 4107, 4107, 4107, 4107, 4107, 4107, 4107, 258 266, 266, 266, 266, 266, 266, 266, 266, 260 266, 266, 266, 266, 266, 266, 266, 266, 262 266, 266, 266, 266, 266, 266, 266, 266, 264 266, 266, 266, 266, 266, 266, 266, 266, 266 298, 298, 298, 298, 298, 298, 298, 298, 268 298, 298, 298, 298, 298, 298, 298, 298, 270 298, 298, 298, 298, 298, 298, 298, 298, 272 298, 298, 298, 298, 298, 298, 298, 298, 274 524, 524, 524, 524, 524, 524, 524, 524, 276 524, 524, 524, 524, 524, 524, 524, 524, 278 556, 556, 556, 556, 556, 556, 556, 556, 280 556, 556, 556, 556, 556, 556, 556, 556, 282 136, 136, 136, 136, 136, 136, 136, 136, 284 136, 136, 136, 136, 136, 136, 136, 136, 286 136, 136, 136, 136, 136, 136, 136, 136, 288 136, 136, 136, 136, 136, 136, 136, 136, 290 136, 136, 136, 136, 136, 136, 136, 136, 292 136, 136, 136, 136, 136, 136, 136, 136, 294 136, 136, 136, 136, 136, 136, 136, 136, 296 136, 136, 136, 136, 136, 136, 136, 136, 298 168, 168, 168, 168, 168, 168, 168, 168, 300 168, 168, 168, 168, 168, 168, 168, 168, 302 168, 168, 168, 168, 168, 168, 168, 168, 304 168, 168, 168, 168, 168, 168, 168, 168, 306 168, 168, 168, 168, 168, 168, 168, 168, 308 168, 168, 168, 168, 168, 168, 168, 168, 310 168, 168, 168, 168, 168, 168, 168, 168, 312 168, 168, 168, 168, 168, 168, 168, 168, 314 460, 460, 460, 460, 460, 460, 460, 460, 316 460, 460, 460, 460, 460, 460, 460, 460, 318 492, 492, 492, 492, 492, 492, 492, 492, 320 492, 492, 492, 492, 492, 492, 492, 492, 322 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 324 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 326 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 328 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 330 200, 200, 200, 200, 200, 200, 200, 200, 332 200, 200, 200, 200, 200, 200, 200, 200, 334 200, 200, 200, 200, 200, 200, 200, 200, 336 200, 200, 200, 200, 200, 200, 200, 200, 338 200, 200, 200, 200, 200, 200, 200, 200, 340 200, 200, 200, 200, 200, 200, 200, 200, 342 200, 200, 200, 200, 200, 200, 200, 200, 344 200, 200, 200, 200, 200, 200, 200, 200, 346 232, 232, 232, 232, 232, 232, 232, 232, 348 232, 232, 232, 232, 232, 232, 232, 232, 350 232, 232, 232, 232, 232, 232, 232, 232, 352 232, 232, 232, 232, 232, 232, 232, 232, 354 232, 232, 232, 232, 232, 232, 232, 232, 356 232, 232, 232, 232, 232, 232, 232, 232, 358 232, 232, 232, 232, 232, 232, 232, 232, 360 232, 232, 232, 232, 232, 232, 232, 232, 362 }; 363 364 static short additionalMakeup[] = { 366 28679, 28679, 31752, (short)32777, 367 (short)33801, (short)34825, (short)35849, (short)36873, 368 (short)29703, (short)29703, (short)30727, (short)30727, 369 (short)37897, (short)38921, (short)39945, (short)40969 370 }; 371 372 static short initBlack[] = { 374 3226, 6412, 200, 168, 38, 38, 134, 134, 376 100, 100, 100, 100, 68, 68, 68, 68 378 }; 379 380 static short twoBitBlack[] = {292, 260, 226, 226}; 383 static short black[] = { 385 62, 62, 30, 30, 0, 0, 0, 0, 387 0, 0, 0, 0, 0, 0, 0, 0, 389 0, 0, 0, 0, 0, 0, 0, 0, 391 0, 0, 0, 0, 0, 0, 0, 0, 393 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225, 395 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225, 397 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225, 399 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225, 401 588, 588, 588, 588, 588, 588, 588, 588, 403 1680, 1680, 20499, 22547, 24595, 26643, 1776, 1776, 405 1808, 1808, -24557, -22509, -20461, -18413, 1904, 1904, 407 1936, 1936, -16365, -14317, 782, 782, 782, 782, 409 814, 814, 814, 814, -12269, -10221, 10257, 10257, 411 12305, 12305, 14353, 14353, 16403, 18451, 1712, 1712, 413 1744, 1744, 28691, 30739, -32749, -30701, -28653, -26605, 415 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 417 424, 424, 424, 424, 424, 424, 424, 424, 419 424, 424, 424, 424, 424, 424, 424, 424, 421 424, 424, 424, 424, 424, 424, 424, 424, 423 424, 424, 424, 424, 424, 424, 424, 424, 425 750, 750, 750, 750, 1616, 1616, 1648, 1648, 427 1424, 1424, 1456, 1456, 1488, 1488, 1520, 1520, 429 1840, 1840, 1872, 1872, 1968, 1968, 8209, 8209, 431 524, 524, 524, 524, 524, 524, 524, 524, 433 556, 556, 556, 556, 556, 556, 556, 556, 435 1552, 1552, 1584, 1584, 2000, 2000, 2032, 2032, 437 976, 976, 1008, 1008, 1040, 1040, 1072, 1072, 439 1296, 1296, 1328, 1328, 718, 718, 718, 718, 441 456, 456, 456, 456, 456, 456, 456, 456, 443 456, 456, 456, 456, 456, 456, 456, 456, 445 456, 456, 456, 456, 456, 456, 456, 456, 447 456, 456, 456, 456, 456, 456, 456, 456, 449 326, 326, 326, 326, 326, 326, 326, 326, 451 326, 326, 326, 326, 326, 326, 326, 326, 453 326, 326, 326, 326, 326, 326, 326, 326, 455 326, 326, 326, 326, 326, 326, 326, 326, 457 326, 326, 326, 326, 326, 326, 326, 326, 459 326, 326, 326, 326, 326, 326, 326, 326, 461 326, 326, 326, 326, 326, 326, 326, 326, 463 326, 326, 326, 326, 326, 326, 326, 326, 465 358, 358, 358, 358, 358, 358, 358, 358, 467 358, 358, 358, 358, 358, 358, 358, 358, 469 358, 358, 358, 358, 358, 358, 358, 358, 471 358, 358, 358, 358, 358, 358, 358, 358, 473 358, 358, 358, 358, 358, 358, 358, 358, 475 358, 358, 358, 358, 358, 358, 358, 358, 477 358, 358, 358, 358, 358, 358, 358, 358, 479 358, 358, 358, 358, 358, 358, 358, 358, 481 490, 490, 490, 490, 490, 490, 490, 490, 483 490, 490, 490, 490, 490, 490, 490, 490, 485 4113, 4113, 6161, 6161, 848, 848, 880, 880, 487 912, 912, 944, 944, 622, 622, 622, 622, 489 654, 654, 654, 654, 1104, 1104, 1136, 1136, 491 1168, 1168, 1200, 1200, 1232, 1232, 1264, 1264, 493 686, 686, 686, 686, 1360, 1360, 1392, 1392, 495 12, 12, 12, 12, 12, 12, 12, 12, 497 390, 390, 390, 390, 390, 390, 390, 390, 499 390, 390, 390, 390, 390, 390, 390, 390, 501 390, 390, 390, 390, 390, 390, 390, 390, 503 390, 390, 390, 390, 390, 390, 390, 390, 505 390, 390, 390, 390, 390, 390, 390, 390, 507 390, 390, 390, 390, 390, 390, 390, 390, 509 390, 390, 390, 390, 390, 390, 390, 390, 511 390, 390, 390, 390, 390, 390, 390, 390, 513 }; 514 515 static byte twoDCodes[] = { 516 80, 88, 23, 71, 30, 30, 62, 62, 518 4, 4, 4, 4, 4, 4, 4, 4, 520 11, 11, 11, 11, 11, 11, 11, 11, 522 11, 11, 11, 11, 11, 11, 11, 11, 524 35, 35, 35, 35, 35, 35, 35, 35, 526 35, 35, 35, 35, 35, 35, 35, 35, 528 51, 51, 51, 51, 51, 51, 51, 51, 530 51, 51, 51, 51, 51, 51, 51, 51, 532 41, 41, 41, 41, 41, 41, 41, 41, 534 41, 41, 41, 41, 41, 41, 41, 41, 536 41, 41, 41, 41, 41, 41, 41, 41, 538 41, 41, 41, 41
|