1 /*
   2  * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.  Oracle designates this
   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any
  23  * questions.
  24  */
  25 package javax.imageio.plugins.tiff;
  26 
  27 import java.util.ArrayList;
  28 import java.util.List;
  29 
  30 /**
  31  * A class representing the set of tags found in the baseline TIFF
  32  * specification as well as some common additional tags.
  33  *
  34  * <p> The non-baseline tags included in this class are:
  35  * <ul>
  36  * <li> {@link #TAG_JPEG_TABLES JPEGTables}
  37  * <li> {@link #TAG_ICC_PROFILE ICC&nbsp;Profile}
  38  * </ul>
  39  *
  40  * <p> The non-baseline values of baseline tags included in this class are
  41  * <ul>
  42  * <li>{@link #TAG_COMPRESSION Compression} tag values:
  43  * <ul>
  44  * <li>{@link #COMPRESSION_JPEG JPEG-in-TIFF&nbsp;compression}</li>
  45  * <li>{@link #COMPRESSION_ZLIB Zlib-in-TIFF&nbsp;compression}</li>
  46  * <li>{@link #COMPRESSION_DEFLATE Deflate&nbsp;compression}</li>
  47  * </ul>
  48  * </li>
  49  * <li>{@link #TAG_PHOTOMETRIC_INTERPRETATION PhotometricInterpretation}
  50  * tag values:
  51  * <ul>
  52  * <li>{@link #PHOTOMETRIC_INTERPRETATION_ICCLAB ICCLAB&nbsp;
  53  * photometric&nbsp;interpretation}</li>
  54  * </ul>
  55  * </li>
  56  * </ul>
  57  *
  58  * @since 9
  59  * @see   <a href="https://www.itu.int/itudoc/itu-t/com16/tiff-fx/docs/tiff6.pdf">  TIFF 6.0 Specification</a>
  60  */
  61 public final class BaselineTIFFTagSet extends TIFFTagSet {
  62 
  63     private static BaselineTIFFTagSet theInstance = null;
  64 
  65     // Tags from TIFF 6.0 specification
  66 
  67     /**
  68      * Constant specifying the "NewSubfileType" tag.
  69      *
  70      * @see #NEW_SUBFILE_TYPE_REDUCED_RESOLUTION
  71      * @see #NEW_SUBFILE_TYPE_SINGLE_PAGE
  72      * @see #NEW_SUBFILE_TYPE_TRANSPARENCY
  73      */
  74     public static final int TAG_NEW_SUBFILE_TYPE = 254;
  75 
  76     /**
  77      * A mask to be used with the "NewSubfileType" tag.
  78      *
  79      * @see #TAG_NEW_SUBFILE_TYPE
  80      */
  81     public static final int NEW_SUBFILE_TYPE_REDUCED_RESOLUTION = 1;
  82 
  83     /**
  84      * A mask to be used with the "NewSubfileType" tag.
  85      *
  86      * @see #TAG_NEW_SUBFILE_TYPE
  87      */
  88     public static final int NEW_SUBFILE_TYPE_SINGLE_PAGE = 2;
  89 
  90     /**
  91      * A mask to be used with the "NewSubfileType" tag.
  92      *
  93      * @see #TAG_NEW_SUBFILE_TYPE
  94      */
  95     public static final int NEW_SUBFILE_TYPE_TRANSPARENCY = 4;
  96 
  97     /**
  98      * Constant specifying the "SubfileType" tag.
  99      *
 100      * @see #SUBFILE_TYPE_FULL_RESOLUTION
 101      * @see #SUBFILE_TYPE_REDUCED_RESOLUTION
 102      * @see #SUBFILE_TYPE_SINGLE_PAGE
 103      */
 104     public static final int TAG_SUBFILE_TYPE = 255;
 105 
 106     /**
 107      * A value to be used with the "SubfileType" tag.
 108      *
 109      * @see #TAG_SUBFILE_TYPE
 110      */
 111     public static final int SUBFILE_TYPE_FULL_RESOLUTION = 1;
 112 
 113     /**
 114      * A value to be used with the "SubfileType" tag.
 115      *
 116      * @see #TAG_SUBFILE_TYPE
 117      */
 118     public static final int SUBFILE_TYPE_REDUCED_RESOLUTION = 2;
 119 
 120     /**
 121      * A value to be used with the "SubfileType" tag.
 122      *
 123      * @see #TAG_SUBFILE_TYPE
 124      */
 125     public static final int SUBFILE_TYPE_SINGLE_PAGE = 3;
 126 
 127     /**
 128      * Constant specifying the "ImageWidth" tag.
 129      */
 130     public static final int TAG_IMAGE_WIDTH = 256;
 131 
 132     /**
 133      * Constant specifying the "ImageLength" tag.
 134      */
 135     public static final int TAG_IMAGE_LENGTH = 257;
 136 
 137     /**
 138      * Constant specifying the "BitsPerSample" tag.
 139      */
 140     public static final int TAG_BITS_PER_SAMPLE = 258;
 141 
 142     /**
 143      * Constant specifying the "Compression" tag.
 144      *
 145      * @see #COMPRESSION_NONE
 146      * @see #COMPRESSION_CCITT_RLE
 147      * @see #COMPRESSION_CCITT_T_4
 148      * @see #COMPRESSION_CCITT_T_6
 149      * @see #COMPRESSION_LZW
 150      * @see #COMPRESSION_OLD_JPEG
 151      * @see #COMPRESSION_JPEG
 152      * @see #COMPRESSION_ZLIB
 153      * @see #COMPRESSION_PACKBITS
 154      * @see #COMPRESSION_DEFLATE
 155      */
 156     public static final int TAG_COMPRESSION = 259;
 157 
 158     /**
 159      * A value to be used with the "Compression" tag.
 160      *
 161      * @see #TAG_COMPRESSION
 162      */
 163     public static final int COMPRESSION_NONE = 1;
 164 
 165     /**
 166      * A value to be used with the "Compression" tag.
 167      *
 168      * @see #TAG_COMPRESSION
 169      */
 170     public static final int COMPRESSION_CCITT_RLE = 2;
 171 
 172     /**
 173      * A value to be used with the "Compression" tag.
 174      *
 175      * @see #TAG_COMPRESSION
 176      */
 177     public static final int COMPRESSION_CCITT_T_4 = 3;
 178 
 179     /**
 180      * A value to be used with the "Compression" tag.
 181      *
 182      * @see #TAG_COMPRESSION
 183      */
 184     public static final int COMPRESSION_CCITT_T_6 = 4;
 185 
 186     /**
 187      * A value to be used with the "Compression" tag.
 188      *
 189      * @see #TAG_COMPRESSION
 190      */
 191     public static final int COMPRESSION_LZW = 5;
 192 
 193     /**
 194      * A value to be used with the "Compression" tag.
 195      *
 196      * @see #TAG_COMPRESSION
 197      */
 198     public static final int COMPRESSION_OLD_JPEG = 6;
 199 
 200     /**
 201      * A value to be used with the "Compression" tag.
 202      *
 203      * @see #TAG_COMPRESSION
 204      */
 205     public static final int COMPRESSION_JPEG = 7;
 206 
 207     /**
 208      * A value to be used with the "Compression" tag.
 209      *
 210      * @see #TAG_COMPRESSION
 211      */
 212     public static final int COMPRESSION_ZLIB = 8;
 213 
 214     /**
 215      * A value to be used with the "Compression" tag.
 216      *
 217      * @see #TAG_COMPRESSION
 218      */
 219     public static final int COMPRESSION_PACKBITS = 32773;
 220 
 221     /**
 222      * A value to be used with the "Compression" tag.
 223      *
 224      * @see #TAG_COMPRESSION
 225      * @see <a href="https://tools.ietf.org/html/rfc1951">DEFLATE specification</a>
 226      */
 227     public static final int COMPRESSION_DEFLATE = 32946;
 228 
 229     /**
 230      * Constant specifying the "PhotometricInterpretation" tag.
 231      *
 232      * @see #PHOTOMETRIC_INTERPRETATION_WHITE_IS_ZERO
 233      * @see #PHOTOMETRIC_INTERPRETATION_BLACK_IS_ZERO
 234      * @see #PHOTOMETRIC_INTERPRETATION_RGB
 235      * @see #PHOTOMETRIC_INTERPRETATION_PALETTE_COLOR
 236      * @see #PHOTOMETRIC_INTERPRETATION_TRANSPARENCY_MASK
 237      * @see #PHOTOMETRIC_INTERPRETATION_Y_CB_CR
 238      * @see #PHOTOMETRIC_INTERPRETATION_CIELAB
 239      * @see #PHOTOMETRIC_INTERPRETATION_ICCLAB
 240      */
 241     public static final int TAG_PHOTOMETRIC_INTERPRETATION = 262;
 242 
 243     /**
 244      * A value to be used with the "PhotometricInterpretation" tag.
 245      *
 246      * @see #TAG_PHOTOMETRIC_INTERPRETATION
 247      */
 248     public static final int PHOTOMETRIC_INTERPRETATION_WHITE_IS_ZERO = 0;
 249 
 250     /**
 251      * A value to be used with the "PhotometricInterpretation" tag.
 252      *
 253      * @see #TAG_PHOTOMETRIC_INTERPRETATION
 254      */
 255     public static final int PHOTOMETRIC_INTERPRETATION_BLACK_IS_ZERO = 1;
 256 
 257     /**
 258      * A value to be used with the "PhotometricInterpretation" tag.
 259      *
 260      * @see #TAG_PHOTOMETRIC_INTERPRETATION
 261      */
 262     public static final int PHOTOMETRIC_INTERPRETATION_RGB = 2;
 263 
 264     /**
 265      * A value to be used with the "PhotometricInterpretation" tag.
 266      *
 267      * @see #TAG_PHOTOMETRIC_INTERPRETATION
 268      */
 269     public static final int PHOTOMETRIC_INTERPRETATION_PALETTE_COLOR = 3;
 270 
 271     /**
 272      * A value to be used with the "PhotometricInterpretation" tag.
 273      *
 274      * @see #TAG_PHOTOMETRIC_INTERPRETATION
 275      */
 276     public static final int PHOTOMETRIC_INTERPRETATION_TRANSPARENCY_MASK = 4;
 277 
 278     /**
 279      * A value to be used with the "PhotometricInterpretation" tag.
 280      *
 281      * @see #TAG_PHOTOMETRIC_INTERPRETATION
 282      */
 283     public static final int PHOTOMETRIC_INTERPRETATION_CMYK = 5;
 284 
 285     /**
 286      * A value to be used with the "PhotometricInterpretation" tag.
 287      *
 288      * @see #TAG_PHOTOMETRIC_INTERPRETATION
 289      */
 290     public static final int PHOTOMETRIC_INTERPRETATION_Y_CB_CR = 6;
 291 
 292     /**
 293      * A value to be used with the "PhotometricInterpretation" tag.
 294      *
 295      * @see #TAG_PHOTOMETRIC_INTERPRETATION
 296      */
 297     public static final int PHOTOMETRIC_INTERPRETATION_CIELAB = 8;
 298 
 299     /**
 300      * A value to be used with the "PhotometricInterpretation" tag.
 301      *
 302      * @see #TAG_PHOTOMETRIC_INTERPRETATION
 303      */
 304     public static final int PHOTOMETRIC_INTERPRETATION_ICCLAB = 9;
 305 
 306     /**
 307      * Constant specifying the "Threshholding" tag.
 308      *
 309      * @see #THRESHHOLDING_NONE
 310      * @see #THRESHHOLDING_ORDERED_DITHER
 311      * @see #THRESHHOLDING_RANDOMIZED_DITHER
 312      */
 313     public static final int TAG_THRESHHOLDING = 263;
 314 
 315     /**
 316      * A value to be used with the "Thresholding" tag.
 317      *
 318      * @see #TAG_THRESHHOLDING
 319      */
 320     public static final int THRESHHOLDING_NONE = 1;
 321 
 322     /**
 323      * A value to be used with the "Thresholding" tag.
 324      *
 325      * @see #TAG_THRESHHOLDING
 326      */
 327     public static final int THRESHHOLDING_ORDERED_DITHER = 2;
 328 
 329     /**
 330      * A value to be used with the "Thresholding" tag.
 331      *
 332      * @see #TAG_THRESHHOLDING
 333      */
 334     public static final int THRESHHOLDING_RANDOMIZED_DITHER = 3;
 335 
 336     /**
 337      * Constant specifying the "Cell_Width" tag.
 338      */
 339     public static final int TAG_CELL_WIDTH = 264;
 340 
 341     /**
 342      * Constant specifying the "cell_length" tag.
 343      */
 344     public static final int TAG_CELL_LENGTH = 265;
 345 
 346     /**
 347      * Constant specifying the "fill_order" tag.
 348      *
 349      * @see #FILL_ORDER_LEFT_TO_RIGHT
 350      * @see #FILL_ORDER_RIGHT_TO_LEFT
 351      */
 352     public static final int TAG_FILL_ORDER = 266;
 353 
 354     /**
 355      * A value to be used with the "FillOrder" tag.
 356      *
 357      * @see #TAG_FILL_ORDER
 358      */
 359     public static final int FILL_ORDER_LEFT_TO_RIGHT = 1;
 360 
 361     /**
 362      * A value to be used with the "FillOrder" tag.
 363      *
 364      * @see #TAG_FILL_ORDER
 365      */
 366     public static final int FILL_ORDER_RIGHT_TO_LEFT = 2;
 367 
 368     /**
 369      * Constant specifying the "document_name" tag.
 370      */
 371     public static final int TAG_DOCUMENT_NAME = 269;
 372 
 373     /**
 374      * Constant specifying the "Image_description" tag.
 375      */
 376     public static final int TAG_IMAGE_DESCRIPTION = 270;
 377 
 378     /**
 379      * Constant specifying the "Make" tag.
 380      */
 381     public static final int TAG_MAKE = 271;
 382 
 383     /**
 384      * Constant specifying the "Model" tag.
 385      */
 386     public static final int TAG_MODEL = 272;
 387 
 388     /**
 389      * Constant specifying the "Strip_offsets" tag.
 390      */
 391     public static final int TAG_STRIP_OFFSETS = 273;
 392 
 393     /**
 394      * Constant specifying the "Orientation" tag.
 395      *
 396      * @see #ORIENTATION_ROW_0_TOP_COLUMN_0_LEFT
 397      * @see #ORIENTATION_ROW_0_TOP_COLUMN_0_RIGHT
 398      * @see #ORIENTATION_ROW_0_BOTTOM_COLUMN_0_RIGHT
 399      * @see #ORIENTATION_ROW_0_BOTTOM_COLUMN_0_LEFT
 400      * @see #ORIENTATION_ROW_0_LEFT_COLUMN_0_TOP
 401      * @see #ORIENTATION_ROW_0_RIGHT_COLUMN_0_TOP
 402      * @see #ORIENTATION_ROW_0_RIGHT_COLUMN_0_BOTTOM
 403      * @see #ORIENTATION_ROW_0_LEFT_COLUMN_0_BOTTOM
 404      */
 405     public static final int TAG_ORIENTATION = 274;
 406 
 407     /**
 408      * A value to be used with the "Orientation" tag.
 409      *
 410      * @see #TAG_ORIENTATION
 411      */
 412     public static final int ORIENTATION_ROW_0_TOP_COLUMN_0_LEFT = 1;
 413 
 414     /**
 415      * A value to be used with the "Orientation" tag.
 416      *
 417      * @see #TAG_ORIENTATION
 418      */
 419     public static final int ORIENTATION_ROW_0_TOP_COLUMN_0_RIGHT = 2;
 420 
 421     /**
 422      * A value to be used with the "Orientation" tag.
 423      *
 424      * @see #TAG_ORIENTATION
 425      */
 426     public static final int ORIENTATION_ROW_0_BOTTOM_COLUMN_0_RIGHT = 3;
 427 
 428     /**
 429      * A value to be used with the "Orientation" tag.
 430      *
 431      * @see #TAG_ORIENTATION
 432      */
 433     public static final int ORIENTATION_ROW_0_BOTTOM_COLUMN_0_LEFT = 4;
 434 
 435     /**
 436      * A value to be used with the "Orientation" tag.
 437      *
 438      * @see #TAG_ORIENTATION
 439      */
 440     public static final int ORIENTATION_ROW_0_LEFT_COLUMN_0_TOP = 5;
 441 
 442     /**
 443      * A value to be used with the "Orientation" tag.
 444      *
 445      * @see #TAG_ORIENTATION
 446      */
 447     public static final int ORIENTATION_ROW_0_RIGHT_COLUMN_0_TOP = 6;
 448 
 449     /**
 450      * A value to be used with the "Orientation" tag.
 451      *
 452      * @see #TAG_ORIENTATION
 453      */
 454     public static final int ORIENTATION_ROW_0_RIGHT_COLUMN_0_BOTTOM = 7;
 455 
 456     /**
 457      * A value to be used with the "Orientation" tag.
 458      *
 459      * @see #TAG_ORIENTATION
 460      */
 461     public static final int ORIENTATION_ROW_0_LEFT_COLUMN_0_BOTTOM = 8;
 462 
 463     /**
 464      * Constant specifying the "Samples_per_pixel" tag.
 465      */
 466     public static final int TAG_SAMPLES_PER_PIXEL = 277;
 467 
 468     /**
 469      * Constant specifying the "Rows_per_strip" tag.
 470      */
 471     public static final int TAG_ROWS_PER_STRIP = 278;
 472 
 473     /**
 474      * Constant specifying the "Strip_byte_counts" tag.
 475      */
 476     public static final int TAG_STRIP_BYTE_COUNTS = 279;
 477 
 478     /**
 479      * Constant specifying the "Min_sample_value" tag.
 480      */
 481     public static final int TAG_MIN_SAMPLE_VALUE = 280;
 482 
 483     /**
 484      * Constant specifying the "Max_sample_value" tag.
 485      */
 486     public static final int TAG_MAX_SAMPLE_VALUE = 281;
 487 
 488     /**
 489      * Constant specifying the "XResolution" tag.
 490      */
 491     public static final int TAG_X_RESOLUTION = 282;
 492 
 493     /**
 494      * Constant specifying the "YResolution" tag.
 495      */
 496     public static final int TAG_Y_RESOLUTION = 283;
 497 
 498     /**
 499      * Constant specifying the "PlanarConfiguration" tag.
 500      *
 501      * @see #PLANAR_CONFIGURATION_CHUNKY
 502      * @see #PLANAR_CONFIGURATION_PLANAR
 503      */
 504     public static final int TAG_PLANAR_CONFIGURATION = 284;
 505 
 506     /**
 507      * A value to be used with the "PlanarConfiguration" tag.
 508      *
 509      * @see #TAG_PLANAR_CONFIGURATION
 510      */
 511     public static final int PLANAR_CONFIGURATION_CHUNKY = 1;
 512 
 513     /**
 514      * A value to be used with the "PlanarConfiguration" tag.
 515      *
 516      * @see #TAG_PLANAR_CONFIGURATION
 517      */
 518     public static final int PLANAR_CONFIGURATION_PLANAR = 2;
 519 
 520     /**
 521      * Constant specifying the "PageName" tag.
 522      */
 523     public static final int TAG_PAGE_NAME = 285;
 524 
 525     /**
 526      * Constant specifying the "XPosition" tag.
 527      */
 528     public static final int TAG_X_POSITION = 286;
 529 
 530     /**
 531      * Constant specifying the "YPosition" tag.
 532      */
 533     public static final int TAG_Y_POSITION = 287;
 534 
 535     /**
 536      * Constant specifying the "FreeOffsets" tag.
 537      */
 538     public static final int TAG_FREE_OFFSETS = 288;
 539 
 540     /**
 541      * Constant specifying the "FreeByteCounts" tag.
 542      */
 543     public static final int TAG_FREE_BYTE_COUNTS = 289;
 544 
 545     /**
 546      * Constant specifying the "GrayResponseUnit" tag.
 547      *
 548      * @see #GRAY_RESPONSE_UNIT_TENTHS
 549      * @see #GRAY_RESPONSE_UNIT_HUNDREDTHS
 550      * @see #GRAY_RESPONSE_UNIT_THOUSANDTHS
 551      * @see #GRAY_RESPONSE_UNIT_TEN_THOUSANDTHS
 552      * @see #GRAY_RESPONSE_UNIT_HUNDRED_THOUSANDTHS
 553      */
 554     public static final int TAG_GRAY_RESPONSE_UNIT = 290;
 555 
 556     /**
 557      * A value to be used with the "GrayResponseUnit" tag.
 558      *
 559      * @see #TAG_GRAY_RESPONSE_UNIT
 560      */
 561     public static final int GRAY_RESPONSE_UNIT_TENTHS = 1;
 562 
 563     /**
 564      * A value to be used with the "GrayResponseUnit" tag.
 565      *
 566      * @see #TAG_GRAY_RESPONSE_UNIT
 567      */
 568     public static final int GRAY_RESPONSE_UNIT_HUNDREDTHS = 2;
 569 
 570     /**
 571      * A value to be used with the "GrayResponseUnit" tag.
 572      *
 573      * @see #TAG_GRAY_RESPONSE_UNIT
 574      */
 575     public static final int GRAY_RESPONSE_UNIT_THOUSANDTHS = 3;
 576 
 577     /**
 578      * A value to be used with the "GrayResponseUnit" tag.
 579      *
 580      * @see #TAG_GRAY_RESPONSE_UNIT
 581      */
 582     public static final int GRAY_RESPONSE_UNIT_TEN_THOUSANDTHS = 4;
 583 
 584     /**
 585      * A value to be used with the "GrayResponseUnit" tag.
 586      *
 587      * @see #TAG_GRAY_RESPONSE_UNIT
 588      */
 589     public static final int GRAY_RESPONSE_UNIT_HUNDRED_THOUSANDTHS = 5;
 590 
 591     /**
 592      * Constant specifying the "GrayResponseCurve" tag.
 593      */
 594     public static final int TAG_GRAY_RESPONSE_CURVE = 291;
 595 
 596     /**
 597      * Constant specifying the "T4Options" tag.
 598      *
 599      * @see #T4_OPTIONS_2D_CODING
 600      * @see #T4_OPTIONS_UNCOMPRESSED
 601      * @see #T4_OPTIONS_EOL_BYTE_ALIGNED
 602      */
 603     public static final int TAG_T4_OPTIONS = 292;
 604 
 605     /**
 606      * A mask to be used with the "T4Options" tag.
 607      *
 608      * @see #TAG_T4_OPTIONS
 609      */
 610     public static final int T4_OPTIONS_2D_CODING = 1;
 611 
 612     /**
 613      * A mask to be used with the "T4Options" tag.
 614      *
 615      * @see #TAG_T4_OPTIONS
 616      */
 617     public static final int T4_OPTIONS_UNCOMPRESSED = 2;
 618 
 619     /**
 620      * A mask to be used with the "T4Options" tag.
 621      *
 622      * @see #TAG_T4_OPTIONS
 623      */
 624     public static final int T4_OPTIONS_EOL_BYTE_ALIGNED = 4;
 625 
 626     /**
 627      * Constant specifying the "T6Options" tag.
 628      *
 629      * @see #T6_OPTIONS_UNCOMPRESSED
 630      */
 631     public static final int TAG_T6_OPTIONS = 293;
 632 
 633     /**
 634      * A mask to be used with the "T6Options" tag.
 635      *
 636      * @see #TAG_T6_OPTIONS
 637      */
 638     public static final int T6_OPTIONS_UNCOMPRESSED = 2;
 639 
 640     /**
 641      * Constant specifying the "ResolutionUnit" tag.
 642      *
 643      * @see #RESOLUTION_UNIT_NONE
 644      * @see #RESOLUTION_UNIT_INCH
 645      * @see #RESOLUTION_UNIT_CENTIMETER
 646      */
 647     public static final int TAG_RESOLUTION_UNIT = 296;
 648 
 649     /**
 650      * A value to be used with the "ResolutionUnit" tag.
 651      *
 652      * @see #TAG_RESOLUTION_UNIT
 653      */
 654     public static final int RESOLUTION_UNIT_NONE = 1;
 655 
 656     /**
 657      * A value to be used with the "ResolutionUnit" tag.
 658      *
 659      * @see #TAG_RESOLUTION_UNIT
 660      */
 661     public static final int RESOLUTION_UNIT_INCH = 2;
 662 
 663     /**
 664      * A value to be used with the "ResolutionUnit" tag.
 665      *
 666      * @see #TAG_RESOLUTION_UNIT
 667      */
 668     public static final int RESOLUTION_UNIT_CENTIMETER = 3;
 669 
 670 
 671     /**
 672      * Constant specifying the "PageNumber" tag.
 673      */
 674     public static final int TAG_PAGE_NUMBER = 297;
 675 
 676     /**
 677      * Constant specifying the "TransferFunction" tag.
 678      */
 679     public static final int TAG_TRANSFER_FUNCTION = 301;
 680 
 681     /**
 682      * Constant specifying the "Software" tag.
 683      */
 684     public static final int TAG_SOFTWARE = 305;
 685 
 686     /**
 687      * Constant specifying the "DateTime" tag.
 688      */
 689     public static final int TAG_DATE_TIME = 306;
 690 
 691     /**
 692      * Constant specifying the "Artist" tag.
 693      */
 694     public static final int TAG_ARTIST = 315;
 695 
 696     /**
 697      * Constant specifying the "HostComputer" tag.
 698      */
 699     public static final int TAG_HOST_COMPUTER = 316;
 700 
 701     /**
 702      * Constant specifying the "Predictor" tag.
 703      *
 704      * @see #TAG_WHITE_POINT
 705      * @see #TAG_PRIMARY_CHROMATICITES
 706      * @see #TAG_COLOR_MAP
 707      * @see #TAG_HALFTONE_HINTS
 708      * @see #TAG_TILE_WIDTH
 709      * @see #TAG_TILE_LENGTH
 710      * @see #TAG_TILE_OFFSETS
 711      * @see #TAG_TILE_BYTE_COUNTS
 712      */
 713     public static final int TAG_PREDICTOR = 317;
 714 
 715     /**
 716      * A value to be used with the "Predictor" tag.
 717      *
 718      * @see #TAG_PREDICTOR
 719      */
 720     public static final int PREDICTOR_NONE = 1;
 721 
 722     /**
 723      * A value to be used with the "Predictor" tag.
 724      *
 725      * @see #TAG_PREDICTOR
 726      */
 727     public static final int PREDICTOR_HORIZONTAL_DIFFERENCING = 2;
 728 
 729     /**
 730      * Constant specifying the "WhitePoint" tag.
 731      */
 732     public static final int TAG_WHITE_POINT = 318;
 733 
 734     /**
 735      * Constant specifying the "PrimaryChromaticites" tag.
 736      */
 737     public static final int TAG_PRIMARY_CHROMATICITES = 319;
 738 
 739     /**
 740      * Constant specifying the "ColorMap" tag.
 741      */
 742     public static final int TAG_COLOR_MAP = 320;
 743 
 744     /**
 745      * Constant specifying the "HalftoneHints" tag.
 746      */
 747     public static final int TAG_HALFTONE_HINTS = 321;
 748 
 749     /**
 750      * Constant specifying the "TileWidth" tag.
 751      */
 752     public static final int TAG_TILE_WIDTH = 322;
 753 
 754     /**
 755      * Constant specifying the "TileLength" tag.
 756      */
 757     public static final int TAG_TILE_LENGTH = 323;
 758 
 759     /**
 760      * Constant specifying the "TileOffsets" tag.
 761      */
 762     public static final int TAG_TILE_OFFSETS = 324;
 763 
 764     /**
 765      * Constant specifying the "TileByteCounts" tag.
 766      */
 767     public static final int TAG_TILE_BYTE_COUNTS = 325;
 768 
 769     /**
 770      * Constant specifying the "InkSet" tag.
 771      *
 772      * @see #INK_SET_CMYK
 773      * @see #INK_SET_NOT_CMYK
 774      */
 775     public static final int TAG_INK_SET = 332;
 776 
 777     /**
 778      * A value to be used with the "InkSet" tag.
 779      *
 780      * @see #TAG_INK_SET
 781      */
 782     public static final int INK_SET_CMYK = 1;
 783 
 784     /**
 785      * A value to be used with the "InkSet" tag.
 786      *
 787      * @see #TAG_INK_SET
 788      */
 789     public static final int INK_SET_NOT_CMYK = 2;
 790 
 791     /**
 792      * Constant specifying the "InkNames" tag.
 793      */
 794     public static final int TAG_INK_NAMES = 333;
 795 
 796     /**
 797      * Constant specifying the "NumberOfInks" tag.
 798      */
 799     public static final int TAG_NUMBER_OF_INKS = 334;
 800 
 801     /**
 802      * Constant specifying the "DotRange" tag.
 803      */
 804     public static final int TAG_DOT_RANGE = 336;
 805 
 806     /**
 807      * Constant specifying the "TargetPrinter" tag.
 808      */
 809     public static final int TAG_TARGET_PRINTER = 337;
 810 
 811     /**
 812      * Constant specifying the "ExtraSamples" tag.
 813      *
 814      * @see #EXTRA_SAMPLES_UNSPECIFIED
 815      * @see #EXTRA_SAMPLES_ASSOCIATED_ALPHA
 816      * @see #EXTRA_SAMPLES_UNASSOCIATED_ALPHA
 817      */
 818     public static final int TAG_EXTRA_SAMPLES = 338;
 819 
 820     /**
 821      * A value to be used with the "ExtraSamples" tag.
 822      *
 823      * @see #TAG_EXTRA_SAMPLES
 824      */
 825     public static final int EXTRA_SAMPLES_UNSPECIFIED = 0;
 826 
 827     /**
 828      * A value to be used with the "ExtraSamples" tag.
 829      *
 830      * @see #TAG_EXTRA_SAMPLES
 831      */
 832     public static final int EXTRA_SAMPLES_ASSOCIATED_ALPHA = 1;
 833 
 834     /**
 835      * A value to be used with the "ExtraSamples" tag.
 836      *
 837      * @see #TAG_EXTRA_SAMPLES
 838      */
 839     public static final int EXTRA_SAMPLES_UNASSOCIATED_ALPHA = 2;
 840 
 841     /**
 842      * Constant specifying the "SampleFormat" tag.
 843      *
 844      * @see #SAMPLE_FORMAT_UNSIGNED_INTEGER
 845      * @see #SAMPLE_FORMAT_SIGNED_INTEGER
 846      * @see #SAMPLE_FORMAT_FLOATING_POINT
 847      * @see #SAMPLE_FORMAT_UNDEFINED
 848      */
 849     public static final int TAG_SAMPLE_FORMAT = 339;
 850 
 851     /**
 852      * A value to be used with the "SampleFormat" tag.
 853      *
 854      * @see #TAG_SAMPLE_FORMAT
 855      */
 856     public static final int SAMPLE_FORMAT_UNSIGNED_INTEGER = 1;
 857 
 858     /**
 859      * A value to be used with the "SampleFormat" tag.
 860      *
 861      * @see #TAG_SAMPLE_FORMAT
 862      */
 863     public static final int SAMPLE_FORMAT_SIGNED_INTEGER = 2;
 864 
 865     /**
 866      * A value to be used with the "SampleFormat" tag.
 867      *
 868      * @see #TAG_SAMPLE_FORMAT
 869      */
 870     public static final int SAMPLE_FORMAT_FLOATING_POINT = 3;
 871 
 872     /**
 873      * A value to be used with the "SampleFormat" tag.
 874      *
 875      * @see #TAG_SAMPLE_FORMAT
 876      */
 877     public static final int SAMPLE_FORMAT_UNDEFINED = 4;
 878 
 879     /**
 880      * Constant specifying the "SMinSampleValue" tag.
 881      */
 882     public static final int TAG_S_MIN_SAMPLE_VALUE = 340;
 883 
 884     /**
 885      * Constant specifying the "SMaxSampleValue" tag.
 886      */
 887     public static final int TAG_S_MAX_SAMPLE_VALUE = 341;
 888 
 889     /**
 890      * Constant specifying the "TransferRange" tag.
 891      */
 892     public static final int TAG_TRANSFER_RANGE = 342;
 893 
 894     /**
 895      * Constant specifying the "JPEGTables" tag.
 896      *
 897      * @see <a href="ftp://ftp.sgi.com/graphics/tiff/TTN2.draft.txt">JPEG-in-TIFF compression</a>
 898      */
 899     public static final int TAG_JPEG_TABLES = 347;
 900 
 901     /**
 902      * Constant specifying the "JPEGProc" tag.
 903      */
 904     public static final int TAG_JPEG_PROC = 512;
 905 
 906     /**
 907      * A value to be used with the "JPEGProc" tag.
 908      *
 909      * @see #TAG_JPEG_PROC
 910      */
 911     public static final int JPEG_PROC_BASELINE = 1;
 912 
 913     /**
 914      * A value to be used with the "JPEGProc" tag.
 915      *
 916      * @see #TAG_JPEG_PROC
 917      */
 918     public static final int JPEG_PROC_LOSSLESS = 14;
 919 
 920     /**
 921      * Constant specifying the "JPEGInterchangeFormat" tag.
 922      */
 923     public static final int TAG_JPEG_INTERCHANGE_FORMAT = 513;
 924 
 925     /**
 926      * Constant specifying the "JPEGInterchangeFormatLength" tag.
 927      */
 928     public static final int TAG_JPEG_INTERCHANGE_FORMAT_LENGTH = 514;
 929 
 930     /**
 931      * Constant specifying the "JPEGRestartInterval" tag.
 932      */
 933     public static final int TAG_JPEG_RESTART_INTERVAL = 515;
 934 
 935     /**
 936      * Constant specifying the "JPEGLosslessPredictors" tag.
 937      */
 938     public static final int TAG_JPEG_LOSSLESS_PREDICTORS = 517;
 939 
 940     /**
 941      * Constant specifying the "JPEGPointTransforms" tag.
 942      */
 943     public static final int TAG_JPEG_POINT_TRANSFORMS = 518;
 944 
 945     /**
 946      * Constant specifying the "JPEGQTables" tag.
 947      */
 948     public static final int TAG_JPEG_Q_TABLES = 519;
 949 
 950     /**
 951      * Constant specifying the "JPEGDCTables" tag.
 952      */
 953     public static final int TAG_JPEG_DC_TABLES = 520;
 954 
 955     /**
 956      * Constant specifying the "JPEGACTables" tag.
 957      */
 958     public static final int TAG_JPEG_AC_TABLES = 521;
 959 
 960     /**
 961      * Constant specifying the "YCbCrCoefficients" tag.
 962      */
 963     public static final int TAG_Y_CB_CR_COEFFICIENTS = 529;
 964 
 965     /**
 966      * Constant specifying the "YCbCrSubsampling" tag.
 967      */
 968     public static final int TAG_Y_CB_CR_SUBSAMPLING = 530;
 969 
 970     /**
 971      * Constant specifying the "YCbCrPositioning" tag.
 972      *
 973      * @see #Y_CB_CR_POSITIONING_CENTERED
 974      * @see #Y_CB_CR_POSITIONING_COSITED
 975      */
 976     public static final int TAG_Y_CB_CR_POSITIONING = 531;
 977 
 978     /**
 979      * A value to be used with the "YCbCrPositioning" tag.
 980      *
 981      * @see #TAG_Y_CB_CR_POSITIONING
 982      */
 983     public static final int Y_CB_CR_POSITIONING_CENTERED = 1;
 984 
 985     /**
 986      * A value to be used with the "YCbCrPositioning" tag.
 987      *
 988      * @see #TAG_Y_CB_CR_POSITIONING
 989      */
 990     public static final int Y_CB_CR_POSITIONING_COSITED = 2;
 991 
 992     /**
 993      * Constant specifying the "ReferenceBlackWhite" tag.
 994      */
 995     public static final int TAG_REFERENCE_BLACK_WHITE = 532;
 996 
 997     /**
 998      * Constant specifying the "Copyright" tag.
 999      */
1000     public static final int TAG_COPYRIGHT = 33432;
1001 
1002     // Common non-baseline tags
1003 
1004     // ICC profiles (Spec ICC 1:2001-04, Appendix B)
1005 
1006     // 34675 - Embedded ICC Profile               (UNDEFINED/any)
1007 
1008     /**
1009      * Constant specifying the "ICC Profile" tag.
1010      *
1011      * @see <a href="http://www.color.org/ICC1V42.pdf">ICC Specification, section B.4: Embedding ICC profiles in TIFF files</a>
1012      */
1013     public static final int TAG_ICC_PROFILE = 34675;
1014 
1015     // Artist
1016 
1017     static class Artist extends TIFFTag {
1018 
1019         public Artist() {
1020             super("Artist",
1021                   TAG_ARTIST,
1022                   1 << TIFF_ASCII);
1023         }
1024     }
1025 
1026     // BitsPerSample
1027 
1028     static class BitsPerSample extends TIFFTag {
1029 
1030         public BitsPerSample() {
1031             super("BitsPerSample",
1032                   TAG_BITS_PER_SAMPLE,
1033                   1 << TIFF_SHORT);
1034         }
1035     }
1036 
1037     // CellLength
1038 
1039     static class CellLength extends TIFFTag {
1040 
1041         public CellLength() {
1042             super("CellLength",
1043                   TAG_CELL_LENGTH,
1044                   1 << TIFF_SHORT,
1045                   1);
1046         }
1047     }
1048 
1049     // CellWidth tag
1050 
1051     static class CellWidth extends TIFFTag {
1052 
1053         public CellWidth() {
1054             super("CellWidth",
1055                   TAG_CELL_WIDTH,
1056                   1 << TIFF_SHORT,
1057                   1);
1058         }
1059     }
1060 
1061     // ColorMap
1062 
1063     static class ColorMap extends TIFFTag {
1064 
1065         public ColorMap() {
1066             super("ColorMap",
1067                   TAG_COLOR_MAP,
1068                   1 << TIFF_SHORT);
1069         }
1070     }
1071 
1072     // Compression
1073 
1074     static class Compression extends TIFFTag {
1075 
1076         public Compression() {
1077             super("Compression",
1078                   TAG_COMPRESSION,
1079                   1 << TIFF_SHORT,
1080                   1);
1081 
1082             addValueName(COMPRESSION_NONE, "Uncompressed");
1083             addValueName(COMPRESSION_CCITT_RLE, "CCITT RLE");
1084             addValueName(COMPRESSION_CCITT_T_4, "CCITT T.4");
1085             addValueName(COMPRESSION_CCITT_T_6, "CCITT T.6");
1086             addValueName(COMPRESSION_LZW, "LZW");
1087             addValueName(COMPRESSION_OLD_JPEG, "Old JPEG");
1088             addValueName(COMPRESSION_JPEG, "JPEG");
1089             addValueName(COMPRESSION_ZLIB, "ZLib");
1090             addValueName(COMPRESSION_PACKBITS, "PackBits");
1091             addValueName(COMPRESSION_DEFLATE, "Deflate"); // Non-baseline
1092 
1093             // 32771 CCITT
1094             // 32809 ThunderScan
1095             // 32766 NeXT
1096             // 32909 Pixar
1097             // 34676 SGI
1098             // 34677 SGI
1099         }
1100     }
1101 
1102     // Copyright
1103 
1104     static class Copyright extends TIFFTag {
1105 
1106         public Copyright() {
1107             super("Copyright",
1108                   TAG_COPYRIGHT,
1109                   1 << TIFF_ASCII);
1110         }
1111     }
1112 
1113     // DateTime
1114 
1115     static class DateTime extends TIFFTag {
1116 
1117         public DateTime() {
1118             super("DateTime",
1119                   TAG_DATE_TIME,
1120                   1 << TIFF_ASCII,
1121                   20);
1122         }
1123     }
1124 
1125     // DocumentName
1126 
1127     static class DocumentName extends TIFFTag {
1128 
1129         public DocumentName() {
1130             super("DocumentName",
1131                   TAG_DOCUMENT_NAME,
1132                   1 << TIFF_ASCII);
1133         }
1134     }
1135 
1136     // DotRange
1137 
1138     static class DotRange extends TIFFTag {
1139 
1140         public DotRange() {
1141             super("DotRange",
1142                   TAG_DOT_RANGE,
1143                   (1 << TIFF_BYTE) |
1144                   (1 << TIFF_SHORT));
1145         }
1146     }
1147 
1148     // ExtraSamples
1149 
1150     static class ExtraSamples extends TIFFTag {
1151 
1152         public ExtraSamples() {
1153             super("ExtraSamples",
1154                   TAG_EXTRA_SAMPLES,
1155                   1 << TIFF_SHORT);
1156 
1157             addValueName(EXTRA_SAMPLES_UNSPECIFIED,
1158                          "Unspecified");
1159             addValueName(EXTRA_SAMPLES_ASSOCIATED_ALPHA,
1160                          "Associated Alpha");
1161             addValueName(EXTRA_SAMPLES_UNASSOCIATED_ALPHA,
1162                          "Unassociated Alpha");
1163         }
1164     }
1165 
1166     // FillOrder
1167 
1168     static class FillOrder extends TIFFTag {
1169 
1170         public FillOrder() {
1171             super("FillOrder",
1172                   TAG_FILL_ORDER,
1173                   1 << TIFF_SHORT,
1174                   1);
1175 
1176             addValueName(FILL_ORDER_LEFT_TO_RIGHT, "LeftToRight");
1177             addValueName(FILL_ORDER_RIGHT_TO_LEFT, "RightToLeft");
1178         }
1179     }
1180 
1181     // FreeByteCounts
1182 
1183     static class FreeByteCounts extends TIFFTag {
1184 
1185         public FreeByteCounts() {
1186             super("FreeByteCounts",
1187                   TAG_FREE_BYTE_COUNTS,
1188                   1 << TIFF_LONG);
1189         }
1190     }
1191 
1192     // FreeOffsets
1193 
1194     static class FreeOffsets extends TIFFTag {
1195 
1196         public FreeOffsets() {
1197             super("FreeOffsets",
1198                   TAG_FREE_OFFSETS,
1199                   1 << TIFF_LONG);
1200         }
1201     }
1202 
1203     // GrayResponseCurve
1204 
1205     static class GrayResponseCurve extends TIFFTag {
1206 
1207         public GrayResponseCurve() {
1208             super("GrayResponseCurve",
1209                   TAG_GRAY_RESPONSE_CURVE,
1210                   1 << TIFF_SHORT);
1211         }
1212     }
1213 
1214     // GrayResponseUnit
1215 
1216     static class GrayResponseUnit extends TIFFTag {
1217 
1218         public GrayResponseUnit() {
1219             super("GrayResponseUnit",
1220                   TAG_GRAY_RESPONSE_UNIT,
1221                   1 << TIFF_SHORT,
1222                   1);
1223 
1224             addValueName(GRAY_RESPONSE_UNIT_TENTHS,
1225                          "Tenths");
1226             addValueName(GRAY_RESPONSE_UNIT_HUNDREDTHS,
1227                          "Hundredths");
1228             addValueName(GRAY_RESPONSE_UNIT_THOUSANDTHS,
1229                          "Thousandths");
1230             addValueName(GRAY_RESPONSE_UNIT_TEN_THOUSANDTHS,
1231                          "Ten-Thousandths");
1232             addValueName(GRAY_RESPONSE_UNIT_HUNDRED_THOUSANDTHS,
1233                          "Hundred-Thousandths");
1234         }
1235     }
1236 
1237     // HalftoneHints
1238 
1239     static class HalftoneHints extends TIFFTag {
1240 
1241         public HalftoneHints() {
1242             super("HalftoneHints",
1243                   TAG_HALFTONE_HINTS,
1244                   1 << TIFF_SHORT,
1245                   2);
1246         }
1247     }
1248 
1249     // HostComputer
1250 
1251     static class HostComputer extends TIFFTag {
1252 
1253         public HostComputer() {
1254             super("HostComputer",
1255                   TAG_HOST_COMPUTER,
1256                   1 << TIFF_ASCII);
1257         }
1258     }
1259 
1260     // ImageDescription
1261 
1262     static class ImageDescription extends TIFFTag {
1263 
1264         public ImageDescription() {
1265             super("ImageDescription",
1266                   TAG_IMAGE_DESCRIPTION,
1267                   1 << TIFF_ASCII);
1268         }
1269     }
1270 
1271     // ImageLength tag
1272 
1273     static class ImageLength extends TIFFTag {
1274 
1275         public ImageLength() {
1276             super("ImageLength",
1277                   TAG_IMAGE_LENGTH,
1278                   (1 << TIFF_SHORT) |
1279                   (1 << TIFF_LONG),
1280                   1);
1281         }
1282     }
1283 
1284     // ImageWidth tag
1285 
1286     static class ImageWidth extends TIFFTag {
1287 
1288         public ImageWidth() {
1289             super("ImageWidth",
1290                   TAG_IMAGE_WIDTH,
1291                   (1 << TIFF_SHORT) |
1292                   (1 << TIFF_LONG),
1293                   1);
1294         }
1295     }
1296 
1297     // InkNames
1298 
1299     static class InkNames extends TIFFTag {
1300 
1301         public InkNames() {
1302             super("InkNames",
1303                   TAG_INK_NAMES,
1304                   1 << TIFF_ASCII);
1305         }
1306     }
1307 
1308     // InkSet
1309 
1310     static class InkSet extends TIFFTag {
1311 
1312         public InkSet() {
1313             super("InkSet",
1314                   TAG_INK_SET,
1315                   1 << TIFF_SHORT,
1316                   1);
1317 
1318             addValueName(INK_SET_CMYK, "CMYK");
1319             addValueName(INK_SET_NOT_CMYK, "Not CMYK");
1320         }
1321     }
1322 
1323     // JPEGTables (Tech note)
1324 
1325     static class JPEGTables extends TIFFTag {
1326 
1327         public JPEGTables() {
1328             super("JPEGTables",
1329                   TAG_JPEG_TABLES,
1330                   1 << TIFF_UNDEFINED);
1331         }
1332     }
1333 
1334     // JPEGACTables
1335 
1336     static class JPEGACTables extends TIFFTag {
1337 
1338         public JPEGACTables() {
1339             super("JPEGACTables",
1340                   TAG_JPEG_AC_TABLES,
1341                   1 << TIFF_LONG);
1342         }
1343     }
1344 
1345     // JPEGDCTables
1346 
1347     static class JPEGDCTables extends TIFFTag {
1348 
1349         public JPEGDCTables() {
1350             super("JPEGDCTables",
1351                   TAG_JPEG_DC_TABLES,
1352                   1 << TIFF_LONG);
1353         }
1354     }
1355 
1356     // JPEGInterchangeFormat
1357 
1358     static class JPEGInterchangeFormat extends TIFFTag {
1359 
1360         public JPEGInterchangeFormat() {
1361             super("JPEGInterchangeFormat",
1362                   TAG_JPEG_INTERCHANGE_FORMAT,
1363                   1 << TIFF_LONG,
1364                   1);
1365         }
1366     }
1367 
1368     // JPEGInterchangeFormatLength
1369 
1370     static class JPEGInterchangeFormatLength extends TIFFTag {
1371 
1372         public JPEGInterchangeFormatLength() {
1373             super("JPEGInterchangeFormatLength",
1374                   TAG_JPEG_INTERCHANGE_FORMAT_LENGTH,
1375                   1 << TIFF_LONG,
1376                   1);
1377         }
1378     }
1379 
1380     // JPEGLosslessPredictors
1381 
1382     static class JPEGLosslessPredictors extends TIFFTag {
1383 
1384         public JPEGLosslessPredictors() {
1385             super("JPEGLosslessPredictors",
1386                   TAG_JPEG_LOSSLESS_PREDICTORS,
1387                   1 << TIFF_SHORT);
1388 
1389             addValueName(1, "A");
1390             addValueName(2, "B");
1391             addValueName(3, "C");
1392             addValueName(4, "A+B-C");
1393             addValueName(5, "A+((B-C)/2)");
1394             addValueName(6, "B+((A-C)/2)");
1395             addValueName(7, "(A+B)/2");
1396         }
1397     }
1398 
1399     // JPEGPointTransforms
1400 
1401     static class JPEGPointTransforms extends TIFFTag {
1402 
1403         public JPEGPointTransforms() {
1404             super("JPEGPointTransforms",
1405                   TAG_JPEG_POINT_TRANSFORMS,
1406                   1 << TIFF_SHORT);
1407         }
1408     }
1409 
1410     // JPEGProc
1411 
1412     static class JPEGProc extends TIFFTag {
1413 
1414         public JPEGProc() {
1415             super("JPEGProc",
1416                   TAG_JPEG_PROC,
1417                   1 << TIFF_SHORT,
1418                   1);
1419 
1420             addValueName(JPEG_PROC_BASELINE, "Baseline sequential process");
1421             addValueName(JPEG_PROC_LOSSLESS,
1422                          "Lossless process with Huffman coding");
1423         }
1424     }
1425 
1426     // JPEGQTables
1427 
1428     static class JPEGQTables extends TIFFTag {
1429 
1430         public JPEGQTables() {
1431             super("JPEGQTables",
1432                   TAG_JPEG_Q_TABLES,
1433                   1 << TIFF_LONG);
1434         }
1435     }
1436 
1437     // JPEGRestartInterval
1438 
1439     static class JPEGRestartInterval extends TIFFTag {
1440 
1441         public JPEGRestartInterval() {
1442             super("JPEGRestartInterval",
1443                   TAG_JPEG_RESTART_INTERVAL,
1444                   1 << TIFF_SHORT,
1445                   1);
1446         }
1447     }
1448 
1449     // Make
1450 
1451     static class Make extends TIFFTag {
1452 
1453         public Make() {
1454             super("Make",
1455                   TAG_MAKE,
1456                   1 << TIFF_ASCII);
1457         }
1458     }
1459 
1460     // MaxSampleValue
1461 
1462     static class MaxSampleValue extends TIFFTag {
1463 
1464         public MaxSampleValue() {
1465             super("MaxSampleValue",
1466                   TAG_MAX_SAMPLE_VALUE,
1467                   1 << TIFF_SHORT);
1468         }
1469     }
1470 
1471     // MinSampleValue
1472 
1473     static class MinSampleValue extends TIFFTag {
1474 
1475         public MinSampleValue() {
1476             super("MinSampleValue",
1477                   TAG_MIN_SAMPLE_VALUE,
1478                   1 << TIFF_SHORT);
1479         }
1480     }
1481 
1482     // Model
1483 
1484     static class Model extends TIFFTag {
1485 
1486         public Model() {
1487             super("Model",
1488                   TAG_MODEL,
1489                   1 << TIFF_ASCII);
1490         }
1491     }
1492 
1493     // NewSubfileType
1494 
1495     static class NewSubfileType extends TIFFTag {
1496 
1497         public NewSubfileType() {
1498             super("NewSubfileType",
1499                   TAG_NEW_SUBFILE_TYPE,
1500                   1 << TIFF_LONG,
1501                   1);
1502 
1503             addValueName(0,
1504                          "Default");
1505             addValueName(NEW_SUBFILE_TYPE_REDUCED_RESOLUTION,
1506                          "ReducedResolution");
1507             addValueName(NEW_SUBFILE_TYPE_SINGLE_PAGE,
1508                          "SinglePage");
1509             addValueName(NEW_SUBFILE_TYPE_SINGLE_PAGE |
1510                          NEW_SUBFILE_TYPE_REDUCED_RESOLUTION,
1511                          "SinglePage+ReducedResolution");
1512             addValueName(NEW_SUBFILE_TYPE_TRANSPARENCY,
1513                          "Transparency");
1514             addValueName(NEW_SUBFILE_TYPE_TRANSPARENCY |
1515                          NEW_SUBFILE_TYPE_REDUCED_RESOLUTION,
1516                          "Transparency+ReducedResolution");
1517             addValueName(NEW_SUBFILE_TYPE_TRANSPARENCY |
1518                          NEW_SUBFILE_TYPE_SINGLE_PAGE,
1519                          "Transparency+SinglePage");
1520             addValueName(NEW_SUBFILE_TYPE_TRANSPARENCY |
1521                          NEW_SUBFILE_TYPE_SINGLE_PAGE |
1522                          NEW_SUBFILE_TYPE_REDUCED_RESOLUTION,
1523                          "Transparency+SinglePage+ReducedResolution");
1524         }
1525     }
1526 
1527     // NumberOfInks
1528 
1529     static class NumberOfInks extends TIFFTag {
1530 
1531         public NumberOfInks() {
1532             super("NumberOfInks",
1533                   TAG_NUMBER_OF_INKS,
1534                   1 << TIFF_SHORT,
1535                   1);
1536         }
1537     }
1538 
1539     // Orientation
1540 
1541     static class Orientation extends TIFFTag {
1542 
1543         public Orientation() {
1544             super("Orientation",
1545                   TAG_ORIENTATION,
1546                   1 << TIFF_SHORT,
1547                   1);
1548 
1549             addValueName(ORIENTATION_ROW_0_TOP_COLUMN_0_LEFT,
1550                          "Row 0=Top, Column 0=Left");
1551             addValueName(ORIENTATION_ROW_0_TOP_COLUMN_0_RIGHT,
1552                          "Row 0=Top, Column 0=Right");
1553             addValueName(ORIENTATION_ROW_0_BOTTOM_COLUMN_0_RIGHT,
1554                          "Row 0=Bottom, Column 0=Right");
1555             addValueName(ORIENTATION_ROW_0_BOTTOM_COLUMN_0_LEFT,
1556                          "Row 0=Bottom, Column 0=Left");
1557             addValueName(ORIENTATION_ROW_0_LEFT_COLUMN_0_TOP,
1558                          "Row 0=Left, Column 0=Top");
1559             addValueName(ORIENTATION_ROW_0_RIGHT_COLUMN_0_TOP,
1560                          "Row 0=Right, Column 0=Top");
1561             addValueName(ORIENTATION_ROW_0_RIGHT_COLUMN_0_BOTTOM,
1562                          "Row 0=Right, Column 0=Bottom");
1563         }
1564     }
1565 
1566     // PageName
1567 
1568     static class PageName extends TIFFTag {
1569 
1570         public PageName() {
1571             super("PageName",
1572                   TAG_PAGE_NAME,
1573                   1 << TIFF_ASCII);
1574         }
1575     }
1576 
1577     // PageNumber
1578 
1579     static class PageNumber extends TIFFTag {
1580 
1581         public PageNumber() {
1582             super("PageNumber",
1583                   TAG_PAGE_NUMBER,
1584                   1 << TIFF_SHORT);
1585         }
1586     }
1587 
1588     // PhotometricInterpretation
1589 
1590     static class PhotometricInterpretation extends TIFFTag {
1591 
1592         public PhotometricInterpretation() {
1593             super("PhotometricInterpretation",
1594                   TAG_PHOTOMETRIC_INTERPRETATION,
1595                   1 << TIFF_SHORT,
1596                   1);
1597 
1598             addValueName(PHOTOMETRIC_INTERPRETATION_WHITE_IS_ZERO,
1599                          "WhiteIsZero");
1600             addValueName(PHOTOMETRIC_INTERPRETATION_BLACK_IS_ZERO,
1601                          "BlackIsZero");
1602             addValueName(PHOTOMETRIC_INTERPRETATION_RGB,
1603                          "RGB");
1604             addValueName(PHOTOMETRIC_INTERPRETATION_PALETTE_COLOR,
1605                          "Palette Color");
1606             addValueName(PHOTOMETRIC_INTERPRETATION_TRANSPARENCY_MASK,
1607                          "Transparency Mask");
1608             addValueName(PHOTOMETRIC_INTERPRETATION_CMYK,
1609                          "CMYK");
1610             addValueName(PHOTOMETRIC_INTERPRETATION_Y_CB_CR,
1611                          "YCbCr");
1612             addValueName(PHOTOMETRIC_INTERPRETATION_CIELAB,
1613                          "CIELAB");
1614             addValueName(PHOTOMETRIC_INTERPRETATION_ICCLAB,
1615                          "ICCLAB"); // Non-baseline
1616         }
1617     }
1618 
1619     // PlanarConfiguration
1620 
1621     static class PlanarConfiguration extends TIFFTag {
1622 
1623         public PlanarConfiguration() {
1624             super("PlanarConfiguration",
1625                   TAG_PLANAR_CONFIGURATION,
1626                   1 << TIFF_SHORT,
1627                   1);
1628 
1629             addValueName(PLANAR_CONFIGURATION_CHUNKY, "Chunky");
1630             addValueName(PLANAR_CONFIGURATION_PLANAR, "Planar");
1631         }
1632     }
1633 
1634     // Predictor
1635 
1636     static class Predictor extends TIFFTag {
1637 
1638         public Predictor() {
1639             super("Predictor",
1640                   TAG_PREDICTOR,
1641                   1 << TIFF_SHORT,
1642                   1);
1643 
1644             addValueName(PREDICTOR_NONE,
1645                          "None");
1646             addValueName(PREDICTOR_HORIZONTAL_DIFFERENCING,
1647                          "Horizontal Differencing");
1648         }
1649     }
1650 
1651     // PrimaryChromaticities
1652 
1653     static class PrimaryChromaticities extends TIFFTag {
1654 
1655         public PrimaryChromaticities() {
1656             super("PrimaryChromaticities",
1657                   TAG_PRIMARY_CHROMATICITES,
1658                   1 << TIFF_RATIONAL,
1659                   6);
1660         }
1661     }
1662 
1663     // ReferenceBlackWhite
1664 
1665     static class ReferenceBlackWhite extends TIFFTag {
1666 
1667         public ReferenceBlackWhite() {
1668             super("ReferenceBlackWhite",
1669                   TAG_REFERENCE_BLACK_WHITE,
1670                   1 << TIFF_RATIONAL);
1671         }
1672     }
1673 
1674     // ResolutionUnit
1675 
1676     static class ResolutionUnit extends TIFFTag {
1677 
1678         public ResolutionUnit() {
1679             super("ResolutionUnit",
1680                   TAG_RESOLUTION_UNIT,
1681                   1 << TIFF_SHORT,
1682                   1);
1683 
1684             addValueName(RESOLUTION_UNIT_NONE, "None");
1685             addValueName(RESOLUTION_UNIT_INCH, "Inch");
1686             addValueName(RESOLUTION_UNIT_CENTIMETER, "Centimeter");
1687         }
1688     }
1689 
1690     // RowsPerStrip
1691 
1692     static class RowsPerStrip extends TIFFTag {
1693 
1694         public RowsPerStrip() {
1695             super("RowsPerStrip",
1696                   TAG_ROWS_PER_STRIP,
1697                   (1 << TIFF_SHORT) |
1698                   (1 << TIFF_LONG),
1699                   1);
1700         }
1701     }
1702 
1703     // SampleFormat
1704 
1705     static class SampleFormat extends TIFFTag {
1706 
1707         public SampleFormat() {
1708             super("SampleFormat",
1709                   TAG_SAMPLE_FORMAT,
1710                   1 << TIFF_SHORT);
1711 
1712             addValueName(SAMPLE_FORMAT_UNSIGNED_INTEGER, "Unsigned Integer");
1713             addValueName(SAMPLE_FORMAT_SIGNED_INTEGER, "Signed Integer");
1714             addValueName(SAMPLE_FORMAT_FLOATING_POINT, "Floating Point");
1715             addValueName(SAMPLE_FORMAT_UNDEFINED, "Undefined");
1716         }
1717     }
1718 
1719     // SamplesPerPixel
1720 
1721     static class SamplesPerPixel extends TIFFTag {
1722 
1723         public SamplesPerPixel() {
1724             super("SamplesPerPixel",
1725                   TAG_SAMPLES_PER_PIXEL,
1726                   1 << TIFF_SHORT,
1727                   1);
1728         }
1729     }
1730 
1731     // SMaxSampleValue
1732 
1733     static class SMaxSampleValue extends TIFFTag {
1734 
1735         public SMaxSampleValue() {
1736             super("SMaxSampleValue",
1737                   TAG_S_MAX_SAMPLE_VALUE,
1738                   (1 << TIFF_BYTE) |
1739                   (1 << TIFF_SHORT) |
1740                   (1 << TIFF_LONG) |
1741                   (1 << TIFF_RATIONAL) |
1742                   (1 << TIFF_SBYTE) |
1743                   (1 << TIFF_SSHORT) |
1744                   (1 << TIFF_SLONG) |
1745                   (1 << TIFF_SRATIONAL) |
1746                   (1 << TIFF_FLOAT) |
1747                   (1 << TIFF_DOUBLE));
1748         }
1749     }
1750 
1751     // SMinSampleValue
1752 
1753     static class SMinSampleValue extends TIFFTag {
1754 
1755         public SMinSampleValue() {
1756             super("SMinSampleValue",
1757                   TAG_S_MIN_SAMPLE_VALUE,
1758                   (1 << TIFF_BYTE) |
1759                   (1 << TIFF_SHORT) |
1760                   (1 << TIFF_LONG) |
1761                   (1 << TIFF_RATIONAL) |
1762                   (1 << TIFF_SBYTE) |
1763                   (1 << TIFF_SSHORT) |
1764                   (1 << TIFF_SLONG) |
1765                   (1 << TIFF_SRATIONAL) |
1766                   (1 << TIFF_FLOAT) |
1767                   (1 << TIFF_DOUBLE));
1768         }
1769     }
1770 
1771     // Software
1772 
1773     static class Software extends TIFFTag {
1774 
1775         public Software() {
1776             super("Software",
1777                   TAG_SOFTWARE,
1778                   1 << TIFF_ASCII);
1779         }
1780     }
1781 
1782     // StripByteCounts
1783 
1784     static class StripByteCounts extends TIFFTag {
1785 
1786         public StripByteCounts() {
1787             super("StripByteCounts",
1788                   TAG_STRIP_BYTE_COUNTS,
1789                   (1 << TIFF_SHORT) |
1790                   (1 << TIFF_LONG));
1791         }
1792     }
1793 
1794     // StripOffsets
1795 
1796     static class StripOffsets extends TIFFTag {
1797 
1798         public StripOffsets() {
1799             super("StripOffsets",
1800                   TAG_STRIP_OFFSETS,
1801                   (1 << TIFF_SHORT) |
1802                   (1 << TIFF_LONG));
1803         }
1804     }
1805 
1806     // SubfileType (deprecated by TIFF but retained for backward compatibility)
1807 
1808     static class SubfileType extends TIFFTag {
1809 
1810         public SubfileType() {
1811             super("SubfileType",
1812                   TAG_SUBFILE_TYPE,
1813                   1 << TIFF_SHORT,
1814                   1);
1815 
1816             addValueName(SUBFILE_TYPE_FULL_RESOLUTION, "FullResolution");
1817             addValueName(SUBFILE_TYPE_REDUCED_RESOLUTION, "ReducedResolution");
1818             addValueName(SUBFILE_TYPE_SINGLE_PAGE, "SinglePage");
1819         }
1820     }
1821 
1822     // T4Options
1823 
1824     static class T4Options extends TIFFTag {
1825 
1826         public T4Options() {
1827             super("T4Options",
1828                   TAG_T4_OPTIONS,
1829                   1 << TIFF_LONG,
1830                   1);
1831 
1832             addValueName(0,
1833                          "Default 1DCoding"); // 0x00
1834             addValueName(T4_OPTIONS_2D_CODING,
1835                          "2DCoding"); // 0x01
1836             addValueName(T4_OPTIONS_UNCOMPRESSED,
1837                          "Uncompressed"); // 0x02
1838             addValueName(T4_OPTIONS_2D_CODING |
1839                          T4_OPTIONS_UNCOMPRESSED,
1840                          "2DCoding+Uncompressed"); // 0x03
1841             addValueName(T4_OPTIONS_EOL_BYTE_ALIGNED,
1842                          "EOLByteAligned"); // 0x04
1843             addValueName(T4_OPTIONS_2D_CODING |
1844                          T4_OPTIONS_EOL_BYTE_ALIGNED,
1845                          "2DCoding+EOLByteAligned"); // 0x05
1846             addValueName(T4_OPTIONS_UNCOMPRESSED |
1847                          T4_OPTIONS_EOL_BYTE_ALIGNED,
1848                          "Uncompressed+EOLByteAligned"); // 0x06
1849             addValueName(T4_OPTIONS_2D_CODING |
1850                          T4_OPTIONS_UNCOMPRESSED |
1851                          T4_OPTIONS_EOL_BYTE_ALIGNED,
1852                          "2DCoding+Uncompressed+EOLByteAligned"); // 0x07
1853         }
1854     }
1855 
1856     // T6Options
1857 
1858     static class T6Options extends TIFFTag {
1859 
1860         public T6Options() {
1861             super("T6Options",
1862                   TAG_T6_OPTIONS,
1863                   1 << TIFF_LONG,
1864                   1);
1865 
1866             addValueName(0,
1867                          "Default"); // 0x00
1868             // 0x01 is not possible as bit 0 is unused and always zero.
1869             addValueName(T6_OPTIONS_UNCOMPRESSED,
1870                          "Uncompressed"); // 0x02
1871         }
1872     }
1873 
1874     // TargetPrinter
1875 
1876     static class TargetPrinter extends TIFFTag {
1877 
1878         public TargetPrinter() {
1879             super("TargetPrinter",
1880                   TAG_TARGET_PRINTER,
1881                   1 << TIFF_ASCII);
1882         }
1883     }
1884 
1885     // Threshholding
1886 
1887     static class Threshholding extends TIFFTag {
1888 
1889         public Threshholding() {
1890             super("Threshholding",
1891                   TAG_THRESHHOLDING,
1892                   1 << TIFF_SHORT,
1893                   1);
1894 
1895             addValueName(1, "None");
1896             addValueName(2, "OrderedDither");
1897             addValueName(3, "RandomizedDither");
1898         }
1899     }
1900 
1901     // TileByteCounts
1902 
1903     static class TileByteCounts extends TIFFTag {
1904 
1905         public TileByteCounts() {
1906             super("TileByteCounts",
1907                   TAG_TILE_BYTE_COUNTS,
1908                   (1 << TIFF_SHORT) |
1909                   (1 << TIFF_LONG));
1910         }
1911     }
1912 
1913     // TileOffsets
1914 
1915     static class TileOffsets extends TIFFTag {
1916 
1917         public TileOffsets() {
1918             super("TileOffsets",
1919                   TAG_TILE_OFFSETS,
1920                   1 << TIFF_LONG);
1921         }
1922     }
1923 
1924     // TileLength tag
1925 
1926     static class TileLength extends TIFFTag {
1927 
1928         public TileLength() {
1929             super("TileLength",
1930                   TAG_TILE_LENGTH,
1931                   (1 << TIFF_SHORT) |
1932                   (1 << TIFF_LONG),
1933                   1);
1934         }
1935     }
1936 
1937     // TileWidth tag
1938 
1939     static class TileWidth extends TIFFTag {
1940 
1941         public TileWidth() {
1942             super("TileWidth",
1943                   TAG_TILE_WIDTH,
1944                   (1 << TIFF_SHORT) |
1945                   (1 << TIFF_LONG),
1946                   1);
1947         }
1948     }
1949 
1950     // TransferFunction
1951 
1952     static class TransferFunction extends TIFFTag {
1953 
1954         public TransferFunction() {
1955             super("TransferFunction",
1956                   TAG_TRANSFER_FUNCTION,
1957                   1 << TIFF_SHORT);
1958         }
1959     }
1960 
1961     // TransferRange
1962 
1963     static class TransferRange extends TIFFTag {
1964 
1965         public TransferRange() {
1966             super("TransferRange",
1967                   TAG_TRANSFER_RANGE,
1968                   1 << TIFF_SHORT,
1969                   6);
1970         }
1971     }
1972 
1973     // WhitePoint
1974 
1975     static class WhitePoint extends TIFFTag {
1976 
1977         public WhitePoint() {
1978             super("WhitePoint",
1979                   TAG_WHITE_POINT,
1980                   1 << TIFF_RATIONAL,
1981                   2);
1982         }
1983     }
1984 
1985     // XPosition
1986 
1987     static class XPosition extends TIFFTag {
1988 
1989         public XPosition() {
1990             super("XPosition",
1991                   TAG_X_POSITION,
1992                   1 << TIFF_RATIONAL,
1993                   1);
1994         }
1995     }
1996 
1997     // XResolution
1998 
1999     static class XResolution extends TIFFTag {
2000 
2001         public XResolution() {
2002             super("XResolution",
2003                   TAG_X_RESOLUTION,
2004                   1 << TIFF_RATIONAL,
2005                   1);
2006         }
2007     }
2008 
2009     // YCbCrCoefficients
2010 
2011     static class YCbCrCoefficients extends TIFFTag {
2012 
2013         public YCbCrCoefficients() {
2014             super("YCbCrCoefficients",
2015                   TAG_Y_CB_CR_COEFFICIENTS,
2016                   1 << TIFF_RATIONAL,
2017                   3);
2018         }
2019     }
2020 
2021     // YCbCrPositioning
2022 
2023     static class YCbCrPositioning extends TIFFTag {
2024 
2025         public YCbCrPositioning() {
2026             super("YCbCrPositioning",
2027                   TAG_Y_CB_CR_POSITIONING,
2028                   1 << TIFF_SHORT,
2029                   1);
2030 
2031             addValueName(Y_CB_CR_POSITIONING_CENTERED, "Centered");
2032             addValueName(Y_CB_CR_POSITIONING_COSITED, "Cosited");
2033         }
2034     }
2035 
2036     // YCbCrSubSampling
2037 
2038     static class YCbCrSubSampling extends TIFFTag {
2039 
2040         public YCbCrSubSampling() {
2041             super("YCbCrSubSampling",
2042                   TAG_Y_CB_CR_SUBSAMPLING,
2043                   1 << TIFF_SHORT,
2044                   2);
2045         }
2046     }
2047 
2048     // YPosition
2049 
2050     static class YPosition extends TIFFTag {
2051 
2052         public YPosition() {
2053             super("YPosition",
2054                   TAG_Y_POSITION,
2055                   1 << TIFF_RATIONAL,
2056                   1);
2057         }
2058     }
2059 
2060     // YResolution
2061 
2062     static class YResolution extends TIFFTag {
2063 
2064         public YResolution() {
2065             super("YResolution",
2066                   TAG_Y_RESOLUTION,
2067                   1 << TIFF_RATIONAL,
2068                   1);
2069         }
2070     }
2071 
2072     // Non-6.0 tags
2073 
2074     // ICC Profile (Spec. ICC.1:2001-12, File Format for Color Profiles)
2075 
2076     static class ICCProfile extends TIFFTag {
2077 
2078         public ICCProfile() {
2079             super("ICC Profile",
2080                   TAG_ICC_PROFILE,
2081                   1 << TIFF_UNDEFINED);
2082         }
2083     }
2084 
2085     private static List<TIFFTag> tags;
2086 
2087     private static void initTags() {
2088         tags = new ArrayList<TIFFTag>(76);
2089 
2090         tags.add(new BaselineTIFFTagSet.Artist());
2091         tags.add(new BaselineTIFFTagSet.BitsPerSample());
2092         tags.add(new BaselineTIFFTagSet.CellLength());
2093         tags.add(new BaselineTIFFTagSet.CellWidth());
2094         tags.add(new BaselineTIFFTagSet.ColorMap());
2095         tags.add(new BaselineTIFFTagSet.Compression());
2096         tags.add(new BaselineTIFFTagSet.Copyright());
2097         tags.add(new BaselineTIFFTagSet.DateTime());
2098         tags.add(new BaselineTIFFTagSet.DocumentName());
2099         tags.add(new BaselineTIFFTagSet.DotRange());
2100         tags.add(new BaselineTIFFTagSet.ExtraSamples());
2101         tags.add(new BaselineTIFFTagSet.FillOrder());
2102         tags.add(new BaselineTIFFTagSet.FreeByteCounts());
2103         tags.add(new BaselineTIFFTagSet.FreeOffsets());
2104         tags.add(new BaselineTIFFTagSet.GrayResponseCurve());
2105         tags.add(new BaselineTIFFTagSet.GrayResponseUnit());
2106         tags.add(new BaselineTIFFTagSet.HalftoneHints());
2107         tags.add(new BaselineTIFFTagSet.HostComputer());
2108         tags.add(new BaselineTIFFTagSet.ImageDescription());
2109         tags.add(new BaselineTIFFTagSet.ICCProfile());
2110         tags.add(new BaselineTIFFTagSet.ImageLength());
2111         tags.add(new BaselineTIFFTagSet.ImageWidth());
2112         tags.add(new BaselineTIFFTagSet.InkNames());
2113         tags.add(new BaselineTIFFTagSet.InkSet());
2114         tags.add(new BaselineTIFFTagSet.JPEGACTables());
2115         tags.add(new BaselineTIFFTagSet.JPEGDCTables());
2116         tags.add(new BaselineTIFFTagSet.JPEGInterchangeFormat());
2117         tags.add(new BaselineTIFFTagSet.JPEGInterchangeFormatLength());
2118         tags.add(new BaselineTIFFTagSet.JPEGLosslessPredictors());
2119         tags.add(new BaselineTIFFTagSet.JPEGPointTransforms());
2120         tags.add(new BaselineTIFFTagSet.JPEGProc());
2121         tags.add(new BaselineTIFFTagSet.JPEGQTables());
2122         tags.add(new BaselineTIFFTagSet.JPEGRestartInterval());
2123         tags.add(new BaselineTIFFTagSet.JPEGTables());
2124         tags.add(new BaselineTIFFTagSet.Make());
2125         tags.add(new BaselineTIFFTagSet.MaxSampleValue());
2126         tags.add(new BaselineTIFFTagSet.MinSampleValue());
2127         tags.add(new BaselineTIFFTagSet.Model());
2128         tags.add(new BaselineTIFFTagSet.NewSubfileType());
2129         tags.add(new BaselineTIFFTagSet.NumberOfInks());
2130         tags.add(new BaselineTIFFTagSet.Orientation());
2131         tags.add(new BaselineTIFFTagSet.PageName());
2132         tags.add(new BaselineTIFFTagSet.PageNumber());
2133         tags.add(new BaselineTIFFTagSet.PhotometricInterpretation());
2134         tags.add(new BaselineTIFFTagSet.PlanarConfiguration());
2135         tags.add(new BaselineTIFFTagSet.Predictor());
2136         tags.add(new BaselineTIFFTagSet.PrimaryChromaticities());
2137         tags.add(new BaselineTIFFTagSet.ReferenceBlackWhite());
2138         tags.add(new BaselineTIFFTagSet.ResolutionUnit());
2139         tags.add(new BaselineTIFFTagSet.RowsPerStrip());
2140         tags.add(new BaselineTIFFTagSet.SampleFormat());
2141         tags.add(new BaselineTIFFTagSet.SamplesPerPixel());
2142         tags.add(new BaselineTIFFTagSet.SMaxSampleValue());
2143         tags.add(new BaselineTIFFTagSet.SMinSampleValue());
2144         tags.add(new BaselineTIFFTagSet.Software());
2145         tags.add(new BaselineTIFFTagSet.StripByteCounts());
2146         tags.add(new BaselineTIFFTagSet.StripOffsets());
2147         tags.add(new BaselineTIFFTagSet.SubfileType());
2148         tags.add(new BaselineTIFFTagSet.T4Options());
2149         tags.add(new BaselineTIFFTagSet.T6Options());
2150         tags.add(new BaselineTIFFTagSet.TargetPrinter());
2151         tags.add(new BaselineTIFFTagSet.Threshholding());
2152         tags.add(new BaselineTIFFTagSet.TileByteCounts());
2153         tags.add(new BaselineTIFFTagSet.TileOffsets());
2154         tags.add(new BaselineTIFFTagSet.TileLength());
2155         tags.add(new BaselineTIFFTagSet.TileWidth());
2156         tags.add(new BaselineTIFFTagSet.TransferFunction());
2157         tags.add(new BaselineTIFFTagSet.TransferRange());
2158         tags.add(new BaselineTIFFTagSet.WhitePoint());
2159         tags.add(new BaselineTIFFTagSet.XPosition());
2160         tags.add(new BaselineTIFFTagSet.XResolution());
2161         tags.add(new BaselineTIFFTagSet.YCbCrCoefficients());
2162         tags.add(new BaselineTIFFTagSet.YCbCrPositioning());
2163         tags.add(new BaselineTIFFTagSet.YCbCrSubSampling());
2164         tags.add(new BaselineTIFFTagSet.YPosition());
2165         tags.add(new BaselineTIFFTagSet.YResolution());
2166     }
2167 
2168     private BaselineTIFFTagSet() {
2169         super(tags);
2170     }
2171 
2172     /**
2173      * Returns a shared instance of a {@code BaselineTIFFTagSet}.
2174      *
2175      * @return a {@code BaselineTIFFTagSet} instance.
2176      */
2177     public synchronized static BaselineTIFFTagSet getInstance() {
2178         if (theInstance == null) {
2179             initTags();
2180             theInstance = new BaselineTIFFTagSet();
2181             tags = null;
2182         }
2183         return theInstance;
2184     }
2185 }