001/* 002 * $RCSfile: EXIFTIFFTagSet.java,v $ 003 * 004 * 005 * Copyright (c) 2005 Sun Microsystems, Inc. All Rights Reserved. 006 * 007 * Redistribution and use in source and binary forms, with or without 008 * modification, are permitted provided that the following conditions 009 * are met: 010 * 011 * - Redistribution of source code must retain the above copyright 012 * notice, this list of conditions and the following disclaimer. 013 * 014 * - Redistribution in binary form must reproduce the above copyright 015 * notice, this list of conditions and the following disclaimer in 016 * the documentation and/or other materials provided with the 017 * distribution. 018 * 019 * Neither the name of Sun Microsystems, Inc. or the names of 020 * contributors may be used to endorse or promote products derived 021 * from this software without specific prior written permission. 022 * 023 * This software is provided "AS IS," without a warranty of any 024 * kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND 025 * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, 026 * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY 027 * EXCLUDED. SUN MIDROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL 028 * NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF 029 * USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS 030 * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR 031 * ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, 032 * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND 033 * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR 034 * INABILITY TO USE THIS SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE 035 * POSSIBILITY OF SUCH DAMAGES. 036 * 037 * You acknowledge that this software is not designed or intended for 038 * use in the design, construction, operation or maintenance of any 039 * nuclear facility. 040 * 041 * $Revision: 1.4 $ 042 * $Date: 2005/10/28 16:56:45 $ 043 * $State: Exp $ 044 */ 045package com.github.jaiimageio.plugins.tiff; 046 047import java.util.ArrayList; 048import java.util.List; 049 050/** 051 * A class representing the tags found in an EXIF IFD. EXIF is a 052 * standard for annotating images used by most digital camera 053 * manufacturers. The EXIF specification may be found at 054 * <a href="http://www.exif.org/Exif2-2.PDF"> 055 * <code>http://www.exif.org/Exif2-2.PDF</code> 056 * </a>. 057 * 058 * <p> The definitions of the data types referenced by the field 059 * definitions may be found in the {@link TIFFTag 060 * <code>TIFFTag</code>} class. 061 */ 062public class EXIFTIFFTagSet extends TIFFTagSet { 063 064 private static EXIFTIFFTagSet theInstance = null; 065 066 /** 067 * A tag pointing to a GPS info IFD (type LONG). 068 * 069 * @deprecated Superseded by 070 * {@link EXIFParentTIFFTagSet#TAG_GPS_INFO_IFD_POINTER} 071 */ 072 public static final int TAG_GPS_INFO_IFD_POINTER = 34853; 073 074 /** A tag pointing to an interoperability IFD (type LONG). */ 075 public static final int TAG_INTEROPERABILITY_IFD_POINTER = 40965; 076 077 /** 078 * A tag containing the EXIF version number (type UNDEFINED, count = 079 * 4). Conformance to the EXIF 2.1 standard is indicated using 080 * the ASCII value "0210" (with no terminating NUL). 081 * 082 * @see #EXIF_VERSION_2_1 083 * @see #EXIF_VERSION_2_2 084 */ 085 public static final int TAG_EXIF_VERSION = 36864; 086 087 /** 088 * An array of bytes containing the values <code>{'0', '2', '1', 089 * '0'}</code> to be used with the "EXIFVersion" tag to indicate 090 * EXIF version 2.1. 091 * 092 * @see #TAG_EXIF_VERSION 093 */ 094 public static byte[] EXIF_VERSION_2_1 = { '0', '2', '1', '0' }; 095 096 /** 097 * An array of bytes containing the values <code>{'0', '2', '2', 098 * '0'}</code> to be used with the "EXIFVersion" tag to indicate 099 * EXIF version 2.2. 100 * 101 * @see #TAG_EXIF_VERSION 102 */ 103 public static byte[] EXIF_VERSION_2_2 = { '0', '2', '2', '0' }; 104 105 /** 106 * A tag indicating the FlashPix version number (type UNDEFINED, 107 * count = 4). 108 */ 109 public static final int TAG_FLASHPIX_VERSION = 40960; 110 111 /** 112 * A tag indicating the color space information (type SHORT). The 113 * legal values are given by the <code>COLOR_SPACE_*</code> 114 * constants. 115 * 116 * @see #COLOR_SPACE_SRGB 117 * @see #COLOR_SPACE_UNCALIBRATED 118 */ 119 public static final int TAG_COLOR_SPACE = 40961; 120 121 /** 122 * A value to be used with the "ColorSpace" tag. 123 * 124 * @see #TAG_COLOR_SPACE 125 */ 126 public static final int COLOR_SPACE_SRGB = 1; 127 128 /** 129 * A value to be used with the "ColorSpace" tag. 130 * 131 * @see #TAG_COLOR_SPACE 132 */ 133 public static final int COLOR_SPACE_UNCALIBRATED = 0xFFFF; 134 135 /** 136 * A tag containing the components configuration information (type 137 * UNDEFINED, count = 4). 138 * 139 * @see #COMPONENTS_CONFIGURATION_DOES_NOT_EXIST 140 * @see #COMPONENTS_CONFIGURATION_Y 141 * @see #COMPONENTS_CONFIGURATION_CB 142 * @see #COMPONENTS_CONFIGURATION_CR 143 * @see #COMPONENTS_CONFIGURATION_R 144 * @see #COMPONENTS_CONFIGURATION_G 145 * @see #COMPONENTS_CONFIGURATION_B 146 */ 147 public static final int TAG_COMPONENTS_CONFIGURATION = 37121; 148 149 /** 150 * A value to be used with the "ComponentsConfiguration" tag. 151 * 152 * @see #TAG_COMPONENTS_CONFIGURATION 153 */ 154 public static final int COMPONENTS_CONFIGURATION_DOES_NOT_EXIST = 0; 155 156 /** 157 * A value to be used with the "ComponentsConfiguration" tag. 158 * 159 * @see #TAG_COMPONENTS_CONFIGURATION 160 */ 161 public static final int COMPONENTS_CONFIGURATION_Y = 1; 162 163 /** 164 * A value to be used with the "ComponentsConfiguration" tag. 165 * 166 * @see #TAG_COMPONENTS_CONFIGURATION 167 */ 168 public static final int COMPONENTS_CONFIGURATION_CB = 2; 169 170 /** 171 * A value to be used with the "ComponentsConfiguration" tag. 172 * 173 * @see #TAG_COMPONENTS_CONFIGURATION 174 */ 175 public static final int COMPONENTS_CONFIGURATION_CR = 3; 176 177 /** 178 * A value to be used with the "ComponentsConfiguration" tag. 179 * 180 * @see #TAG_COMPONENTS_CONFIGURATION 181 */ 182 public static final int COMPONENTS_CONFIGURATION_R = 4; 183 184 /** 185 * A value to be used with the "ComponentsConfiguration" tag. 186 * 187 * @see #TAG_COMPONENTS_CONFIGURATION 188 */ 189 public static final int COMPONENTS_CONFIGURATION_G = 5; 190 191 /** 192 * A value to be used with the "ComponentsConfiguration" tag. 193 * 194 * @see #TAG_COMPONENTS_CONFIGURATION 195 */ 196 public static final int COMPONENTS_CONFIGURATION_B = 6; 197 198 /** 199 * A tag indicating the number of compressed bits per pixel 200 * (type RATIONAL). 201 */ 202 public static final int TAG_COMPRESSED_BITS_PER_PIXEL = 37122; 203 204 /** 205 * A tag indicating the pixel X dimension (type SHORT or LONG). 206 * This value records the valid width of the meaningful image for 207 * a compressed file, whether or not there is padding or a restart 208 * marker. 209 */ 210 public static final int TAG_PIXEL_X_DIMENSION = 40962; 211 212 /** 213 * A tag indicating the pixel Y dimension (type SHORT or LONG). 214 * This value records the valid height of the meaningful image for 215 * a compressed file, whether or not there is padding or a restart 216 * marker. 217 */ 218 public static final int TAG_PIXEL_Y_DIMENSION = 40963; 219 220 /** 221 * A tag indicating a manufacturer-defined maker note (type 222 * UNDEFINED). 223 */ 224 public static final int TAG_MAKER_NOTE = 37500; 225 226 /** 227 * A tag indicating a manufacturer-defined marker note (type 228 * UNDEFINED). 229 * 230 * @deprecated Superseded by {@link #TAG_MAKER_NOTE}. 231 */ 232 public static final int TAG_MARKER_NOTE = TAG_MAKER_NOTE; 233 234 /** 235 * A tag indicating a user comment (type UNDEFINED). The first 8 236 * bytes are used to specify the character encoding. 237 */ 238 public static final int TAG_USER_COMMENT = 37510; 239 240 /** 241 * A tag indicating the name of a related sound file (type ASCII). 242 */ 243 public static final int TAG_RELATED_SOUND_FILE = 40964; 244 245 /** 246 * A tag indicating the date and time when the original image was 247 * generated (type ASCII). 248 */ 249 public static final int TAG_DATE_TIME_ORIGINAL = 36867; 250 251 /** 252 * A tag indicating the date and time when the image was stored as 253 * digital data (type ASCII). 254 */ 255 public static final int TAG_DATE_TIME_DIGITIZED = 36868; 256 257 /** 258 * A tag used to record fractions of seconds for the "DateTime" tag 259 * (type ASCII). 260 */ 261 public static final int TAG_SUB_SEC_TIME = 37520; 262 263 /** 264 * A tag used to record fractions of seconds for the 265 * "DateTimeOriginal" tag (type ASCII). 266 */ 267 public static final int TAG_SUB_SEC_TIME_ORIGINAL = 37521; 268 269 /** 270 * A tag used to record fractions of seconds for the 271 * "DateTimeDigitized" tag (type ASCII). 272 */ 273 public static final int TAG_SUB_SEC_TIME_DIGITIZED = 37522; 274 275 /** 276 * A tag indicating the exposure time, in seconds (type RATIONAL). 277 */ 278 public static final int TAG_EXPOSURE_TIME = 33434; 279 280 /** 281 * A tag indicating the F number (type RATIONAL). 282 */ 283 public static final int TAG_F_NUMBER = 33437; 284 285 /** 286 * A tag indicating the class of the programs used to set exposure 287 * when the picture was taken (type SHORT). 288 * 289 * @see #EXPOSURE_PROGRAM_NOT_DEFINED 290 * @see #EXPOSURE_PROGRAM_MANUAL 291 * @see #EXPOSURE_PROGRAM_NORMAL_PROGRAM 292 * @see #EXPOSURE_PROGRAM_APERTURE_PRIORITY 293 * @see #EXPOSURE_PROGRAM_SHUTTER_PRIORITY 294 * @see #EXPOSURE_PROGRAM_CREATIVE_PROGRAM 295 * @see #EXPOSURE_PROGRAM_ACTION_PROGRAM 296 * @see #EXPOSURE_PROGRAM_PORTRAIT_MODE 297 * @see #EXPOSURE_PROGRAM_LANDSCAPE_MODE 298 * @see #EXPOSURE_PROGRAM_MAX_RESERVED 299 */ 300 public static final int TAG_EXPOSURE_PROGRAM = 34850; 301 302 /** 303 * A value to be used with the "ExposureProgram" tag. 304 * 305 * @see #TAG_EXPOSURE_PROGRAM 306 */ 307 public static final int EXPOSURE_PROGRAM_NOT_DEFINED = 0; 308 309 /** 310 * A value to be used with the "ExposureProgram" tag. 311 * 312 * @see #TAG_EXPOSURE_PROGRAM 313 */ 314 public static final int EXPOSURE_PROGRAM_MANUAL = 1; 315 316 /** 317 * A value to be used with the "ExposureProgram" tag. 318 * 319 * @see #TAG_EXPOSURE_PROGRAM 320 */ 321 public static final int EXPOSURE_PROGRAM_NORMAL_PROGRAM = 2; 322 323 /** 324 * A value to be used with the "ExposureProgram" tag. 325 * 326 * @see #TAG_EXPOSURE_PROGRAM 327 */ 328 public static final int EXPOSURE_PROGRAM_APERTURE_PRIORITY = 3; 329 330 /** 331 * A value to be used with the "ExposureProgram" tag. 332 * 333 * @see #TAG_EXPOSURE_PROGRAM 334 */ 335 public static final int EXPOSURE_PROGRAM_SHUTTER_PRIORITY = 4; 336 337 /** 338 * A value to be used with the "ExposureProgram" tag. 339 * 340 * @see #TAG_EXPOSURE_PROGRAM 341 */ 342 public static final int EXPOSURE_PROGRAM_CREATIVE_PROGRAM = 5; 343 344 /** 345 * A value to be used with the "ExposureProgram" tag. 346 * 347 * @see #TAG_EXPOSURE_PROGRAM 348 */ 349 public static final int EXPOSURE_PROGRAM_ACTION_PROGRAM = 6; 350 351 /** 352 * A value to be used with the "ExposureProgram" tag. 353 * 354 * @see #TAG_EXPOSURE_PROGRAM 355 */ 356 public static final int EXPOSURE_PROGRAM_PORTRAIT_MODE = 7; 357 358 /** 359 * A value to be used with the "ExposureProgram" tag. 360 * 361 * @see #TAG_EXPOSURE_PROGRAM 362 */ 363 public static final int EXPOSURE_PROGRAM_LANDSCAPE_MODE = 8; 364 365 /** 366 * A value to be used with the "ExposureProgram" tag. 367 * 368 * @see #TAG_EXPOSURE_PROGRAM 369 */ 370 public static final int EXPOSURE_PROGRAM_MAX_RESERVED = 255; 371 372 /** 373 * A tag indicating the spectral sensitivity of each channel of 374 * the camera used (type ASCII). The tag value is an ASCII string 375 * compatible with the ASTM standard. 376 */ 377 public static final int TAG_SPECTRAL_SENSITIVITY = 34852; 378 379 /** 380 * A tag indicating the ISO speed and ISO latitude of the camera 381 * or input device, as specified in ISO 12232<sup>xiv</sup> (type 382 * SHORT). 383 */ 384 public static final int TAG_ISO_SPEED_RATINGS= 34855; 385 386 /** 387 * A tag indicating the optoelectric conversion function, 388 * specified in ISO 14254<sup>xv</sup> (type UNDEFINED). OECF is 389 * the relationship between the camera optical input and the image 390 * values. 391 */ 392 public static final int TAG_OECF = 34856; 393 394 /** 395 * A tag indicating the shutter speed (type SRATIONAL). 396 */ 397 public static final int TAG_SHUTTER_SPEED_VALUE = 37377; 398 399 /** 400 * A tag indicating the lens aperture (type RATIONAL). 401 */ 402 public static final int TAG_APERTURE_VALUE = 37378; 403 404 /** 405 * A tag indicating the value of brightness (type SRATIONAL). 406 */ 407 public static final int TAG_BRIGHTNESS_VALUE = 37379; 408 409 /** 410 * A tag indicating the exposure bias (type SRATIONAL). 411 */ 412 public static final int TAG_EXPOSURE_BIAS_VALUE = 37380; 413 414 /** 415 * A tag indicating the smallest F number of the lens (type 416 * RATIONAL). 417 */ 418 public static final int TAG_MAX_APERTURE_VALUE = 37381; 419 420 /** 421 * A tag indicating the distance to the subject, in meters (type 422 * RATIONAL). 423 */ 424 public static final int TAG_SUBJECT_DISTANCE = 37382; 425 426 /** 427 * A tag indicating the metering mode (type SHORT). 428 * 429 * @see #METERING_MODE_UNKNOWN 430 * @see #METERING_MODE_AVERAGE 431 * @see #METERING_MODE_CENTER_WEIGHTED_AVERAGE 432 * @see #METERING_MODE_SPOT 433 * @see #METERING_MODE_MULTI_SPOT 434 * @see #METERING_MODE_PATTERN 435 * @see #METERING_MODE_PARTIAL 436 * @see #METERING_MODE_MIN_RESERVED 437 * @see #METERING_MODE_MAX_RESERVED 438 * @see #METERING_MODE_OTHER 439 */ 440 public static final int TAG_METERING_MODE = 37383; 441 442 /** 443 * A value to be used with the "MeteringMode" tag. 444 * 445 * @see #TAG_METERING_MODE 446 */ 447 public static final int METERING_MODE_UNKNOWN = 0; 448 449 /** 450 * A value to be used with the "MeteringMode" tag. 451 * 452 * @see #TAG_METERING_MODE 453 */ 454 public static final int METERING_MODE_AVERAGE = 1; 455 456 /** 457 * A value to be used with the "MeteringMode" tag. 458 * 459 * @see #TAG_METERING_MODE 460 */ 461 public static final int METERING_MODE_CENTER_WEIGHTED_AVERAGE = 2; 462 463 /** 464 * A value to be used with the "MeteringMode" tag. 465 * 466 * @see #TAG_METERING_MODE 467 */ 468 public static final int METERING_MODE_SPOT = 3; 469 470 /** 471 * A value to be used with the "MeteringMode" tag. 472 * 473 * @see #TAG_METERING_MODE 474 */ 475 public static final int METERING_MODE_MULTI_SPOT = 4; 476 477 /** 478 * A value to be used with the "MeteringMode" tag. 479 * 480 * @see #TAG_METERING_MODE 481 */ 482 public static final int METERING_MODE_PATTERN = 5; 483 484 /** 485 * A value to be used with the "MeteringMode" tag. 486 * 487 * @see #TAG_METERING_MODE 488 */ 489 public static final int METERING_MODE_PARTIAL = 6; 490 491 /** 492 * A value to be used with the "MeteringMode" tag. 493 * 494 * @see #TAG_METERING_MODE 495 */ 496 public static final int METERING_MODE_MIN_RESERVED = 7; 497 498 /** 499 * A value to be used with the "MeteringMode" tag. 500 * 501 * @see #TAG_METERING_MODE 502 */ 503 public static final int METERING_MODE_MAX_RESERVED = 254; 504 505 /** 506 * A value to be used with the "MeteringMode" tag. 507 * 508 * @see #TAG_METERING_MODE 509 */ 510 public static final int METERING_MODE_OTHER = 255; 511 512 /** 513 * A tag indicatingthe kind of light source (type SHORT). 514 * 515 * @see #LIGHT_SOURCE_UNKNOWN 516 * @see #LIGHT_SOURCE_DAYLIGHT 517 * @see #LIGHT_SOURCE_FLUORESCENT 518 * @see #LIGHT_SOURCE_TUNGSTEN 519 * @see #LIGHT_SOURCE_STANDARD_LIGHT_A 520 * @see #LIGHT_SOURCE_STANDARD_LIGHT_B 521 * @see #LIGHT_SOURCE_STANDARD_LIGHT_C 522 * @see #LIGHT_SOURCE_D55 523 * @see #LIGHT_SOURCE_D65 524 * @see #LIGHT_SOURCE_D75 525 * @see #LIGHT_SOURCE_OTHER 526 */ 527 public static final int TAG_LIGHT_SOURCE = 37384; 528 529 /** 530 * A value to be used with the "LightSource" tag. 531 * 532 * @see #TAG_LIGHT_SOURCE 533 */ 534 public static final int LIGHT_SOURCE_UNKNOWN = 0; 535 536 /** 537 * A value to be used with the "LightSource" tag. 538 * 539 * @see #TAG_LIGHT_SOURCE 540 */ 541 public static final int LIGHT_SOURCE_DAYLIGHT = 1; 542 543 /** 544 * A value to be used with the "LightSource" tag. 545 * 546 * @see #TAG_LIGHT_SOURCE 547 */ 548 public static final int LIGHT_SOURCE_FLUORESCENT = 2; 549 550 /** 551 * A value to be used with the "LightSource" tag. 552 * 553 * @see #TAG_LIGHT_SOURCE 554 */ 555 public static final int LIGHT_SOURCE_TUNGSTEN = 3; 556 557 /** 558 * A value to be used with the "LightSource" tag. 559 * 560 * @see #TAG_LIGHT_SOURCE 561 */ 562 public static final int LIGHT_SOURCE_FLASH = 4; 563 564 /** 565 * A value to be used with the "LightSource" tag. 566 * 567 * @see #TAG_LIGHT_SOURCE 568 */ 569 public static final int LIGHT_SOURCE_FINE_WEATHER = 9; 570 571 /** 572 * A value to be used with the "LightSource" tag. 573 * 574 * @see #TAG_LIGHT_SOURCE 575 */ 576 public static final int LIGHT_SOURCE_CLOUDY_WEATHER = 10; 577 578 /** 579 * A value to be used with the "LightSource" tag. 580 * 581 * @see #TAG_LIGHT_SOURCE 582 */ 583 public static final int LIGHT_SOURCE_SHADE = 11; 584 585 /** 586 * A value to be used with the "LightSource" tag. 587 * 588 * @see #TAG_LIGHT_SOURCE 589 */ 590 public static final int LIGHT_SOURCE_DAYLIGHT_FLUORESCENT = 12; 591 592 /** 593 * A value to be used with the "LightSource" tag. 594 * 595 * @see #TAG_LIGHT_SOURCE 596 */ 597 public static final int LIGHT_SOURCE_DAY_WHITE_FLUORESCENT = 13; 598 599 /** 600 * A value to be used with the "LightSource" tag. 601 * 602 * @see #TAG_LIGHT_SOURCE 603 */ 604 public static final int LIGHT_SOURCE_COOL_WHITE_FLUORESCENT = 14; 605 606 /** 607 * A value to be used with the "LightSource" tag. 608 * 609 * @see #TAG_LIGHT_SOURCE 610 */ 611 public static final int LIGHT_SOURCE_WHITE_FLUORESCENT = 15; 612 613 /** 614 * A value to be used with the "LightSource" tag. 615 * 616 * @see #TAG_LIGHT_SOURCE 617 */ 618 public static final int LIGHT_SOURCE_STANDARD_LIGHT_A = 17; 619 620 /** 621 * A value to be used with the "LightSource" tag. 622 * 623 * @see #TAG_LIGHT_SOURCE 624 */ 625 public static final int LIGHT_SOURCE_STANDARD_LIGHT_B = 18; 626 627 /** 628 * A value to be used with the "LightSource" tag. 629 * 630 * @see #TAG_LIGHT_SOURCE 631 */ 632 public static final int LIGHT_SOURCE_STANDARD_LIGHT_C = 19; 633 634 /** 635 * A value to be used with the "LightSource" tag. 636 * 637 * @see #TAG_LIGHT_SOURCE 638 */ 639 public static final int LIGHT_SOURCE_D55 = 20; 640 641 /** 642 * A value to be used with the "LightSource" tag. 643 * 644 * @see #TAG_LIGHT_SOURCE 645 */ 646 public static final int LIGHT_SOURCE_D65 = 21; 647 648 /** 649 * A value to be used with the "LightSource" tag. 650 * 651 * @see #TAG_LIGHT_SOURCE 652 */ 653 public static final int LIGHT_SOURCE_D75 = 22; 654 655 /** 656 * A value to be used with the "LightSource" tag. 657 * 658 * @see #TAG_LIGHT_SOURCE 659 */ 660 public static final int LIGHT_SOURCE_D50 = 23; 661 662 /** 663 * A value to be used with the "LightSource" tag. 664 * 665 * @see #TAG_LIGHT_SOURCE 666 */ 667 public static final int LIGHT_SOURCE_ISO_STUDIO_TUNGSTEN = 24; 668 669 /** 670 * A value to be used with the "LightSource" tag. 671 * 672 * @see #TAG_LIGHT_SOURCE 673 */ 674 public static final int LIGHT_SOURCE_OTHER = 255; 675 676 /** 677 * A tag indicating the flash firing status and flash return 678 * status (type SHORT). 679 * 680 * @see #FLASH_DID_NOT_FIRE 681 * @see #FLASH_FIRED 682 * @see #FLASH_STROBE_RETURN_LIGHT_NOT_DETECTED 683 * @see #FLASH_STROBE_RETURN_LIGHT_DETECTED 684 */ 685 public static final int TAG_FLASH = 37385; 686 687 /** 688 * A value to be used with the "Flash" tag, indicating that the 689 * flash did not fire. 690 * 691 * @see #TAG_FLASH 692 */ 693 public static final int FLASH_DID_NOT_FIRE = 0x0; 694 695 /** 696 * A value to be used with the "Flash" tag, indicating that the 697 * flash fired, but the strobe return status is unknown. 698 * 699 * @see #TAG_FLASH 700 */ 701 public static final int FLASH_FIRED = 0x1; 702 703 /** 704 * A value to be used with the "Flash" tag, indicating that the 705 * flash fired, but the strobe return light was not detected. 706 * 707 * @see #TAG_FLASH 708 */ 709 public static final int FLASH_STROBE_RETURN_LIGHT_NOT_DETECTED = 0x5; 710 711 /** 712 * A value to be used with the "Flash" tag, indicating that the 713 * flash fired, and the strobe return light was detected. 714 * 715 * @see #TAG_FLASH 716 */ 717 public static final int FLASH_STROBE_RETURN_LIGHT_DETECTED = 0x7; 718 719 /** 720 * A mask to be used with the "Flash" tag, indicating that the 721 * flash fired. 722 * 723 * @see #TAG_FLASH 724 */ 725 public static final int FLASH_MASK_FIRED = 0x1; 726 727 /** 728 * A mask to be used with the "Flash" tag, indicating strobe return 729 * light not detected. 730 * 731 * @see #TAG_FLASH 732 */ 733 public static final int FLASH_MASK_RETURN_NOT_DETECTED = 0x4; 734 735 /** 736 * A mask to be used with the "Flash" tag, indicating strobe return 737 * light detected. 738 * 739 * @see #TAG_FLASH 740 */ 741 public static final int FLASH_MASK_RETURN_DETECTED = 0x6; 742 743 /** 744 * A mask to be used with the "Flash" tag, indicating compulsory flash 745 * firing mode. 746 * 747 * @see #TAG_FLASH 748 */ 749 public static final int FLASH_MASK_MODE_FLASH_FIRING = 0x8; 750 751 /** 752 * A mask to be used with the "Flash" tag, indicating compulsory flash 753 * suppression mode. 754 * 755 * @see #TAG_FLASH 756 */ 757 public static final int FLASH_MASK_MODE_FLASH_SUPPRESSION = 0x10; 758 759 /** 760 * A mask to be used with the "Flash" tag, indicating auto mode. 761 * 762 * @see #TAG_FLASH 763 */ 764 public static final int FLASH_MASK_MODE_AUTO = 0x18; 765 766 /** 767 * A mask to be used with the "Flash" tag, indicating no flash function 768 * present. 769 * 770 * @see #TAG_FLASH 771 */ 772 public static final int FLASH_MASK_FUNCTION_NOT_PRESENT = 0x20; 773 774 /** 775 * A mask to be used with the "Flash" tag, indicating red-eye reduction 776 * supported. 777 * 778 * @see #TAG_FLASH 779 */ 780 public static final int FLASH_MASK_RED_EYE_REDUCTION = 0x40; 781 782 /** 783 * A tag indicating the actual focal length of the lens, in 784 * millimeters (type RATIONAL). 785 */ 786 public static final int TAG_FOCAL_LENGTH = 37386; 787 788 /** 789 * A tag indicating the location and area of the main subject in 790 * the overall scene. 791 */ 792 public static final int TAG_SUBJECT_AREA = 37396; 793 794 /** 795 * A tag indicating the strobe energy at the time the image was 796 * captured, as measured in Beam Candle Power Seconds (BCPS) (type 797 * RATIONAL). 798 */ 799 public static final int TAG_FLASH_ENERGY = 41483; 800 801 /** 802 * A tag indicating the camera or input device spatial frequency 803 * table and SFR values in the direction of image width, image 804 * height, and diagonal direction, as specified in ISO 805 * 12233<sup>xvi</sup> (type UNDEFINED). 806 */ 807 public static final int TAG_SPATIAL_FREQUENCY_RESPONSE = 41484; 808 809 /** 810 * Indicates the number of pixels in the image width (X) direction 811 * per FocalPlaneResolutionUnit on the camera focal plane (type 812 * RATIONAL). 813 */ 814 public static final int TAG_FOCAL_PLANE_X_RESOLUTION = 41486; 815 816 /** 817 * Indicate the number of pixels in the image height (Y) direction 818 * per FocalPlaneResolutionUnit on the camera focal plane (type 819 * RATIONAL). 820 */ 821 public static final int TAG_FOCAL_PLANE_Y_RESOLUTION = 41487; 822 823 /** 824 * Indicates the unit for measuring FocalPlaneXResolution and 825 * FocalPlaneYResolution (type SHORT). 826 * 827 * @see #FOCAL_PLANE_RESOLUTION_UNIT_NONE 828 * @see #FOCAL_PLANE_RESOLUTION_UNIT_INCH 829 * @see #FOCAL_PLANE_RESOLUTION_UNIT_CENTIMETER 830 */ 831 public static final int TAG_FOCAL_PLANE_RESOLUTION_UNIT = 41488; 832 833 /** 834 * A value to be used with the "FocalPlaneResolutionUnit" tag. 835 * 836 * @see #TAG_FOCAL_PLANE_RESOLUTION_UNIT 837 */ 838 public static final int FOCAL_PLANE_RESOLUTION_UNIT_NONE = 1; 839 840 /** 841 * A value to be used with the "FocalPlaneXResolution" tag. 842 * 843 * @see #TAG_FOCAL_PLANE_RESOLUTION_UNIT 844 */ 845 public static final int FOCAL_PLANE_RESOLUTION_UNIT_INCH = 2; 846 847 /** 848 * A value to be used with the "FocalPlaneXResolution" tag. 849 * 850 * @see #TAG_FOCAL_PLANE_RESOLUTION_UNIT 851 */ 852 public static final int FOCAL_PLANE_RESOLUTION_UNIT_CENTIMETER = 3; 853 854 /** 855 * A tag indicating the column and row of the center pixel of the 856 * main subject in the scene (type SHORT, count = 2). 857 */ 858 public static final int TAG_SUBJECT_LOCATION = 41492; 859 860 /** 861 * A tag indicating the exposure index selected on the camera or 862 * input device at the time the image was captured (type 863 * RATIONAL). 864 */ 865 public static final int TAG_EXPOSURE_INDEX = 41493; 866 867 /** 868 * A tag indicating the sensor type on the camera or input device 869 * (type SHORT). 870 * 871 * @see #SENSING_METHOD_NOT_DEFINED 872 * @see #SENSING_METHOD_ONE_CHIP_COLOR_AREA_SENSOR 873 * @see #SENSING_METHOD_TWO_CHIP_COLOR_AREA_SENSOR 874 * @see #SENSING_METHOD_THREE_CHIP_COLOR_AREA_SENSOR 875 * @see #SENSING_METHOD_COLOR_SEQUENTIAL_AREA_SENSOR 876 * @see #SENSING_METHOD_TRILINEAR_SENSOR 877 * @see #SENSING_METHOD_COLOR_SEQUENTIAL_LINEAR_SENSOR 878 */ 879 public static final int TAG_SENSING_METHOD = 41495; 880 881 /** 882 * A value to be used with the "SensingMethod" tag. 883 * 884 * @see #TAG_SENSING_METHOD 885 */ 886 public static final int SENSING_METHOD_NOT_DEFINED = 1; 887 888 /** 889 * A value to be used with the "SensingMethod" tag. 890 * 891 * @see #TAG_SENSING_METHOD 892 */ 893 public static final int SENSING_METHOD_ONE_CHIP_COLOR_AREA_SENSOR = 2; 894 895 /** 896 * A value to be used with the "SensingMethod" tag. 897 * 898 * @see #TAG_SENSING_METHOD 899 */ 900 public static final int SENSING_METHOD_TWO_CHIP_COLOR_AREA_SENSOR = 3; 901 902 /** 903 * A value to be used with the "SensingMethod" tag. 904 * 905 * @see #TAG_SENSING_METHOD 906 */ 907 public static final int SENSING_METHOD_THREE_CHIP_COLOR_AREA_SENSOR = 4; 908 909 /** 910 * A value to be used with the "SensingMethod" tag. 911 * 912 * @see #TAG_SENSING_METHOD 913 */ 914 public static final int SENSING_METHOD_COLOR_SEQUENTIAL_AREA_SENSOR = 5; 915 916 /** 917 * A value to be used with the "SensingMethod" tag. 918 * 919 * @see #TAG_SENSING_METHOD 920 */ 921 public static final int SENSING_METHOD_TRILINEAR_SENSOR = 7; 922 923 /** 924 * A value to be used with the "SensingMethod" tag. 925 * 926 * @see #TAG_SENSING_METHOD 927 */ 928 public static final int SENSING_METHOD_COLOR_SEQUENTIAL_LINEAR_SENSOR = 8; 929 930 /** 931 * A tag indicating the image source (type UNDEFINED). 932 * 933 * @see #FILE_SOURCE_DSC 934 */ 935 public static final int TAG_FILE_SOURCE = 41728; 936 937 /** 938 * A value to be used with the "FileSource" tag. 939 * 940 * @see #TAG_FILE_SOURCE 941 */ 942 public static final int FILE_SOURCE_DSC = 3; 943 944 /** 945 * A tag indicating the type of scene (type UNDEFINED). 946 * 947 * @see #SCENE_TYPE_DSC 948 */ 949 public static final int TAG_SCENE_TYPE = 41729; 950 951 /** 952 * A value to be used with the "SceneType" tag. 953 * 954 * @see #TAG_SCENE_TYPE 955 */ 956 public static final int SCENE_TYPE_DSC = 1; 957 958 /** 959 * A tag indicating the color filter array geometric pattern of 960 * the image sensor when a one-chip color area sensor if used 961 * (type UNDEFINED). 962 */ 963 public static final int TAG_CFA_PATTERN = 41730; 964 965 /** 966 * A tag indicating the use of special processing on image data, 967 * such as rendering geared to output. 968 */ 969 public static final int TAG_CUSTOM_RENDERED = 41985; 970 971 /** 972 * A value to be used with the "CustomRendered" tag. 973 * 974 * @see #TAG_CUSTOM_RENDERED 975 */ 976 public static final int CUSTOM_RENDERED_NORMAL = 0; 977 978 /** 979 * A value to be used with the "CustomRendered" tag. 980 * 981 * @see #TAG_CUSTOM_RENDERED 982 */ 983 public static final int CUSTOM_RENDERED_CUSTOM = 1; 984 985 /** 986 * A tag indicating the exposure mode set when the image was shot. 987 */ 988 public static final int TAG_EXPOSURE_MODE = 41986; 989 990 /** 991 * A value to be used with the "ExposureMode" tag. 992 * 993 * @see #TAG_EXPOSURE_MODE 994 */ 995 public static final int EXPOSURE_MODE_AUTO_EXPOSURE = 0; 996 997 /** 998 * A value to be used with the "ExposureMode" tag. 999 * 1000 * @see #TAG_EXPOSURE_MODE 1001 */ 1002 public static final int EXPOSURE_MODE_MANUAL_EXPOSURE = 1; 1003 1004 /** 1005 * A value to be used with the "ExposureMode" tag. 1006 * 1007 * @see #TAG_EXPOSURE_MODE 1008 */ 1009 public static final int EXPOSURE_MODE_AUTO_BRACKET = 2; 1010 1011 /** 1012 * A tag indicating the white balance mode set when the image was shot. 1013 */ 1014 public static final int TAG_WHITE_BALANCE = 41987; 1015 1016 /** 1017 * A value to be used with the "WhiteBalance" tag. 1018 * 1019 * @see #TAG_WHITE_BALANCE 1020 */ 1021 public static final int WHITE_BALANCE_AUTO = 0; 1022 1023 /** 1024 * A value to be used with the "WhiteBalance" tag. 1025 * 1026 * @see #TAG_WHITE_BALANCE 1027 */ 1028 public static final int WHITE_BALANCE_MANUAL = 1; 1029 1030 /** 1031 * A tag indicating the digital zoom ratio when the image was shot. 1032 */ 1033 public static final int TAG_DIGITAL_ZOOM_RATIO = 41988; 1034 1035 /** 1036 * A tag indicating the equivalent focal length assuming a 35mm film 1037 * camera, in millimeters. 1038 */ 1039 public static final int TAG_FOCAL_LENGTH_IN_35MM_FILM = 41989; 1040 1041 /** 1042 * A tag indicating the type of scene that was shot. 1043 */ 1044 public static final int TAG_SCENE_CAPTURE_TYPE = 41990; 1045 1046 /** 1047 * A value to be used with the "SceneCaptureType" tag. 1048 * 1049 * @see #TAG_SCENE_CAPTURE_TYPE 1050 */ 1051 public static final int SCENE_CAPTURE_TYPE_STANDARD = 0; 1052 1053 /** 1054 * A value to be used with the "SceneCaptureType" tag. 1055 * 1056 * @see #TAG_SCENE_CAPTURE_TYPE 1057 */ 1058 public static final int SCENE_CAPTURE_TYPE_LANDSCAPE = 1; 1059 1060 /** 1061 * A value to be used with the "SceneCaptureType" tag. 1062 * 1063 * @see #TAG_SCENE_CAPTURE_TYPE 1064 */ 1065 public static final int SCENE_CAPTURE_TYPE_PORTRAIT = 2; 1066 1067 /** 1068 * A value to be used with the "SceneCaptureType" tag. 1069 * 1070 * @see #TAG_SCENE_CAPTURE_TYPE 1071 */ 1072 public static final int SCENE_CAPTURE_TYPE_NIGHT_SCENE = 3; 1073 1074 /** 1075 * A tag indicating the degree of overall image gain adjustment. 1076 */ 1077 public static final int TAG_GAIN_CONTROL = 41991; 1078 1079 /** 1080 * A value to be used with the "GainControl" tag. 1081 * 1082 * @see #TAG_GAIN_CONTROL 1083 */ 1084 public static final int GAIN_CONTROL_NONE = 0; 1085 1086 /** 1087 * A value to be used with the "GainControl" tag. 1088 * 1089 * @see #TAG_GAIN_CONTROL 1090 */ 1091 public static final int GAIN_CONTROL_LOW_GAIN_UP = 1; 1092 1093 /** 1094 * A value to be used with the "GainControl" tag. 1095 * 1096 * @see #TAG_GAIN_CONTROL 1097 */ 1098 public static final int GAIN_CONTROL_HIGH_GAIN_UP = 2; 1099 1100 /** 1101 * A value to be used with the "GainControl" tag. 1102 * 1103 * @see #TAG_GAIN_CONTROL 1104 */ 1105 public static final int GAIN_CONTROL_LOW_GAIN_DOWN = 3; 1106 1107 /** 1108 * A value to be used with the "GainControl" tag. 1109 * 1110 * @see #TAG_GAIN_CONTROL 1111 */ 1112 public static final int GAIN_CONTROL_HIGH_GAIN_DOWN = 4; 1113 1114 /** 1115 * A tag indicating the direction of contrast processing applied 1116 * by the camera when the image was shot. 1117 */ 1118 public static final int TAG_CONTRAST = 41992; 1119 1120 /** 1121 * A value to be used with the "Contrast" tag. 1122 * 1123 * @see #TAG_CONTRAST 1124 */ 1125 public static final int CONTRAST_NORMAL = 0; 1126 1127 /** 1128 * A value to be used with the "Contrast" tag. 1129 * 1130 * @see #TAG_CONTRAST 1131 */ 1132 public static final int CONTRAST_SOFT = 1; 1133 1134 /** 1135 * A value to be used with the "Contrast" tag. 1136 * 1137 * @see #TAG_CONTRAST 1138 */ 1139 public static final int CONTRAST_HARD = 2; 1140 1141 /** 1142 * A tag indicating the direction of saturation processing 1143 * applied by the camera when the image was shot. 1144 */ 1145 public static final int TAG_SATURATION = 41993; 1146 1147 /** 1148 * A value to be used with the "Saturation" tag. 1149 * 1150 * @see #TAG_SATURATION 1151 */ 1152 public static final int SATURATION_NORMAL = 0; 1153 1154 /** 1155 * A value to be used with the "Saturation" tag. 1156 * 1157 * @see #TAG_SATURATION 1158 */ 1159 public static final int SATURATION_LOW = 1; 1160 1161 /** 1162 * A value to be used with the "Saturation" tag. 1163 * 1164 * @see #TAG_SATURATION 1165 */ 1166 public static final int SATURATION_HIGH = 2; 1167 1168 /** 1169 * A tag indicating the direction of sharpness processing 1170 * applied by the camera when the image was shot. 1171 */ 1172 public static final int TAG_SHARPNESS = 41994; 1173 1174 /** 1175 * A value to be used with the "Sharpness" tag. 1176 * 1177 * @see #TAG_SHARPNESS 1178 */ 1179 public static final int SHARPNESS_NORMAL = 0; 1180 1181 /** 1182 * A value to be used with the "Sharpness" tag. 1183 * 1184 * @see #TAG_SHARPNESS 1185 */ 1186 public static final int SHARPNESS_SOFT = 1; 1187 1188 /** 1189 * A value to be used with the "Sharpness" tag. 1190 * 1191 * @see #TAG_SHARPNESS 1192 */ 1193 public static final int SHARPNESS_HARD = 2; 1194 1195 /** 1196 * A tag indicating information on the picture-taking conditions 1197 * of a particular camera model. 1198 */ 1199 public static final int TAG_DEVICE_SETTING_DESCRIPTION = 41995; 1200 1201 /** 1202 * A tag indicating the distance to the subject. 1203 */ 1204 public static final int TAG_SUBJECT_DISTANCE_RANGE = 41996; 1205 1206 /** 1207 * A value to be used with the "SubjectDistanceRange" tag. 1208 * 1209 * @see #TAG_SUBJECT_DISTANCE_RANGE 1210 */ 1211 public static final int SUBJECT_DISTANCE_RANGE_UNKNOWN = 0; 1212 1213 /** 1214 * A value to be used with the "SubjectDistanceRange" tag. 1215 * 1216 * @see #TAG_SUBJECT_DISTANCE_RANGE 1217 */ 1218 public static final int SUBJECT_DISTANCE_RANGE_MACRO = 1; 1219 1220 /** 1221 * A value to be used with the "SubjectDistanceRange" tag. 1222 * 1223 * @see #TAG_SUBJECT_DISTANCE_RANGE 1224 */ 1225 public static final int SUBJECT_DISTANCE_RANGE_CLOSE_VIEW = 2; 1226 1227 /** 1228 * A value to be used with the "SubjectDistanceRange" tag. 1229 * 1230 * @see #TAG_SUBJECT_DISTANCE_RANGE 1231 */ 1232 public static final int SUBJECT_DISTANCE_RANGE_DISTANT_VIEW = 3; 1233 1234 /** 1235 * A tag indicating an identifier assigned uniquely to each image. 1236 */ 1237 public static final int TAG_IMAGE_UNIQUE_ID = 42016; 1238 1239 // EXIF 2.1 private 1240 1241 // GPS Attribute Information 1242 // 0 - GPSVersionID (BYTE/4) 1243 // 1 - GPSLatitudeRef (ASCII/2) 1244 // 2 - GPSLatitude (RATIONAL/3) 1245 // 3 - GPSLongitudeRef (ASCII/2) 1246 // 4 - GPSLongitude (RATIONAL/3) 1247 // 5 - GPSAltitudeRef (BYTE/1) 1248 // 6 - GPSAltitude (RATIONAL/1) 1249 // 7 - GPSTimeStamp (RATIONAL/3) 1250 // 8 - GPSSatellites (ASCII/any) 1251 // 9 - GPSStatus (ASCII/2) 1252 // 10 - GPSMeasureMode (ASCII/2) 1253 // 11 - GPSDOP (RATIONAL/1) 1254 // 12 - GPSSpeedRef (ASCII/2) 1255 // 13 - GPSSpeed (RATIONAL/1) 1256 // 14 - GPSTrackRef (ASCII/2) 1257 // 15 - GPSTrack (RATIONAL/1) 1258 // 16 - GPSImgDirectionRef (ASCII/2) 1259 // 17 - GPSImgDirection (RATIONAL/1) 1260 // 18 - GPSMapDatum (ASCII/any) 1261 // 19 - GPSDestLatitudeRef (ASCII/2) 1262 // 20 - GPSDestLatitude (RATIONAL/3) 1263 // 21 - GPSDestLongitudeRef (ASCII/2) 1264 // 22 - GPSDestLongitude (RATIONAL/3) 1265 // 23 - GPSDestBearingRef (ASCII/2) 1266 // 24 - GPSDestBearing (RATIONAL/1) 1267 // 25 - GPSDestDistanceRef (ASCII/2) 1268 // 26 - GPSDestDistance (RATIONAL/1) 1269 1270 // EXIF Interoperability Information ??? 1271 1272 // 0 - Interoperability Index (ASCII/any) 1273 1274 // EXIF tags 1275 1276 static class EXIFVersion extends TIFFTag { 1277 1278 public EXIFVersion() { 1279 super("EXIFversion", 1280 TAG_EXIF_VERSION, 1281 1 << TIFFTag.TIFF_UNDEFINED); 1282 } 1283 } 1284 1285 static class FlashPixVersion extends TIFFTag { 1286 1287 public FlashPixVersion() { 1288 super("FlashPixVersion", 1289 TAG_FLASHPIX_VERSION, 1290 1 << TIFFTag.TIFF_UNDEFINED); 1291 } 1292 } 1293 1294 static class ColorSpace extends TIFFTag { 1295 1296 public ColorSpace() { 1297 super("ColorSpace", 1298 TAG_COLOR_SPACE, 1299 1 << TIFFTag.TIFF_SHORT); 1300 1301 addValueName(COLOR_SPACE_SRGB, "sRGB"); 1302 addValueName(COLOR_SPACE_UNCALIBRATED, "Uncalibrated"); 1303 } 1304 } 1305 1306 static class ComponentsConfiguration extends TIFFTag { 1307 1308 public ComponentsConfiguration() { 1309 super("ComponentsConfiguration", 1310 TAG_COMPONENTS_CONFIGURATION, 1311 1 << TIFFTag.TIFF_UNDEFINED); 1312 1313 addValueName(COMPONENTS_CONFIGURATION_DOES_NOT_EXIST, 1314 "DoesNotExist"); 1315 addValueName(COMPONENTS_CONFIGURATION_Y, "Y"); 1316 addValueName(COMPONENTS_CONFIGURATION_CB, "Cb"); 1317 addValueName(COMPONENTS_CONFIGURATION_CR, "Cr"); 1318 addValueName(COMPONENTS_CONFIGURATION_R, "R"); 1319 addValueName(COMPONENTS_CONFIGURATION_G, "G"); 1320 addValueName(COMPONENTS_CONFIGURATION_B, "B"); 1321 } 1322 } 1323 1324 static class CompressedBitsPerPixel extends TIFFTag { 1325 1326 public CompressedBitsPerPixel() { 1327 super("CompressedBitsPerPixel", 1328 TAG_COMPRESSED_BITS_PER_PIXEL, 1329 1 << TIFFTag.TIFF_RATIONAL); 1330 } 1331 } 1332 1333 static class PixelXDimension extends TIFFTag { 1334 1335 public PixelXDimension() { 1336 super("PixelXDimension", 1337 TAG_PIXEL_X_DIMENSION, 1338 (1 << TIFFTag.TIFF_SHORT) | 1339 (1 << TIFFTag.TIFF_LONG)); 1340 } 1341 } 1342 1343 static class PixelYDimension extends TIFFTag { 1344 1345 public PixelYDimension() { 1346 super("PixelYDimension", 1347 TAG_PIXEL_Y_DIMENSION, 1348 (1 << TIFFTag.TIFF_SHORT) | 1349 (1 << TIFFTag.TIFF_LONG)); 1350 } 1351 } 1352 1353 static class MakerNote extends TIFFTag { 1354 1355 public MakerNote() { 1356 super("MakerNote", 1357 TAG_MAKER_NOTE, 1358 1 << TIFFTag.TIFF_UNDEFINED); 1359 } 1360 } 1361 1362 static class UserComment extends TIFFTag { 1363 1364 public UserComment() { 1365 super("UserComment", 1366 TAG_USER_COMMENT, 1367 1 << TIFFTag.TIFF_UNDEFINED); 1368 } 1369 } 1370 1371 static class RelatedSoundFile extends TIFFTag { 1372 1373 public RelatedSoundFile() { 1374 super("RelatedSoundFile", 1375 TAG_RELATED_SOUND_FILE, 1376 1 << TIFFTag.TIFF_ASCII); 1377 } 1378 } 1379 1380 static class DateTimeOriginal extends TIFFTag { 1381 1382 public DateTimeOriginal() { 1383 super("DateTimeOriginal", 1384 TAG_DATE_TIME_ORIGINAL, 1385 1 << TIFFTag.TIFF_ASCII); 1386 } 1387 } 1388 1389 static class DateTimeDigitized extends TIFFTag { 1390 1391 public DateTimeDigitized() { 1392 super("DateTimeDigitized", 1393 TAG_DATE_TIME_DIGITIZED, 1394 1 << TIFFTag.TIFF_ASCII); 1395 } 1396 } 1397 1398 static class SubSecTime extends TIFFTag { 1399 1400 public SubSecTime() { 1401 super("SubSecTime", 1402 TAG_SUB_SEC_TIME, 1403 1 << TIFFTag.TIFF_ASCII); 1404 } 1405 } 1406 1407 static class SubSecTimeOriginal extends TIFFTag { 1408 1409 public SubSecTimeOriginal() { 1410 super("SubSecTimeOriginal", 1411 TAG_SUB_SEC_TIME_ORIGINAL, 1412 1 << TIFFTag.TIFF_ASCII); 1413 } 1414 } 1415 1416 static class SubSecTimeDigitized extends TIFFTag { 1417 1418 public SubSecTimeDigitized() { 1419 super("SubSecTimeDigitized", 1420 TAG_SUB_SEC_TIME_DIGITIZED, 1421 1 << TIFFTag.TIFF_ASCII); 1422 } 1423 } 1424 1425 static class ExposureTime extends TIFFTag { 1426 1427 public ExposureTime() { 1428 super("ExposureTime", 1429 TAG_EXPOSURE_TIME, 1430 1 << TIFFTag.TIFF_RATIONAL); 1431 } 1432 } 1433 1434 static class FNumber extends TIFFTag { 1435 1436 public FNumber() { 1437 super("FNumber", 1438 TAG_F_NUMBER, 1439 1 << TIFFTag.TIFF_RATIONAL); 1440 } 1441 } 1442 1443 static class ExposureProgram extends TIFFTag { 1444 1445 public ExposureProgram() { 1446 super("ExposureProgram", 1447 TAG_EXPOSURE_PROGRAM, 1448 1 << TIFFTag.TIFF_SHORT); 1449 1450 addValueName(EXPOSURE_PROGRAM_NOT_DEFINED, "Not Defined"); 1451 addValueName(EXPOSURE_PROGRAM_MANUAL, "Manual"); 1452 addValueName(EXPOSURE_PROGRAM_NORMAL_PROGRAM, "Normal Program"); 1453 addValueName(EXPOSURE_PROGRAM_APERTURE_PRIORITY, 1454 "Aperture Priority"); 1455 addValueName(EXPOSURE_PROGRAM_SHUTTER_PRIORITY, 1456 "Shutter Priority"); 1457 addValueName(EXPOSURE_PROGRAM_CREATIVE_PROGRAM, 1458 "Creative Program"); 1459 addValueName(EXPOSURE_PROGRAM_ACTION_PROGRAM, "Action Program"); 1460 addValueName(EXPOSURE_PROGRAM_PORTRAIT_MODE, "Portrait Mode"); 1461 addValueName(EXPOSURE_PROGRAM_LANDSCAPE_MODE, "Landscape Mode"); 1462 } 1463 } 1464 1465 static class SpectralSensitivity extends TIFFTag { 1466 public SpectralSensitivity() { 1467 super("SpectralSensitivity", 1468 TAG_SPECTRAL_SENSITIVITY, 1469 1 << TIFFTag.TIFF_ASCII); 1470 } 1471 } 1472 1473 static class ISOSpeedRatings extends TIFFTag { 1474 1475 public ISOSpeedRatings() { 1476 super("ISOSpeedRatings", 1477 TAG_ISO_SPEED_RATINGS, 1478 1 << TIFFTag.TIFF_SHORT); 1479 } 1480 } 1481 1482 static class OECF extends TIFFTag { 1483 1484 public OECF() { 1485 super("OECF", 1486 TAG_OECF, 1487 1 << TIFFTag.TIFF_UNDEFINED); 1488 } 1489 } 1490 1491 static class ShutterSpeedValue extends TIFFTag { 1492 1493 public ShutterSpeedValue() { 1494 super("ShutterSpeedValue", 1495 TAG_SHUTTER_SPEED_VALUE, 1496 1 << TIFFTag.TIFF_SRATIONAL); 1497 } 1498 } 1499 1500 static class ApertureValue extends TIFFTag { 1501 1502 public ApertureValue() { 1503 super("ApertureValue", 1504 TAG_APERTURE_VALUE, 1505 1 << TIFFTag.TIFF_RATIONAL); 1506 } 1507 } 1508 1509 static class BrightnessValue extends TIFFTag { 1510 1511 public BrightnessValue() { 1512 super("BrightnessValue", 1513 TAG_BRIGHTNESS_VALUE, 1514 1 << TIFFTag.TIFF_SRATIONAL); 1515 } 1516 } 1517 1518 static class ExposureBiasValue extends TIFFTag { 1519 1520 public ExposureBiasValue() { 1521 super("ExposureBiasValue", 1522 TAG_EXPOSURE_BIAS_VALUE, 1523 1 << TIFFTag.TIFF_SRATIONAL); 1524 } 1525 } 1526 1527 static class MaxApertureValue extends TIFFTag { 1528 1529 public MaxApertureValue() { 1530 super("MaxApertureValue", 1531 TAG_MAX_APERTURE_VALUE, 1532 1 << TIFFTag.TIFF_RATIONAL); 1533 } 1534 } 1535 1536 static class SubjectDistance extends TIFFTag { 1537 1538 public SubjectDistance() { 1539 super("SubjectDistance", 1540 TAG_SUBJECT_DISTANCE, 1541 1 << TIFFTag.TIFF_RATIONAL); 1542 } 1543 } 1544 1545 static class MeteringMode extends TIFFTag { 1546 1547 public MeteringMode() { 1548 super("MeteringMode", 1549 TAG_METERING_MODE, 1550 1 << TIFFTag.TIFF_SHORT); 1551 1552 addValueName(METERING_MODE_UNKNOWN, "Unknown"); 1553 addValueName(METERING_MODE_AVERAGE, "Average"); 1554 addValueName(METERING_MODE_CENTER_WEIGHTED_AVERAGE, 1555 "CenterWeightedAverage"); 1556 addValueName(METERING_MODE_SPOT, "Spot"); 1557 addValueName(METERING_MODE_MULTI_SPOT, "MultiSpot"); 1558 addValueName(METERING_MODE_PATTERN, "Pattern"); 1559 addValueName(METERING_MODE_PARTIAL, "Partial"); 1560 addValueName(METERING_MODE_OTHER, "Other"); 1561 } 1562 } 1563 1564 static class LightSource extends TIFFTag { 1565 1566 public LightSource() { 1567 super("LightSource", 1568 TAG_LIGHT_SOURCE, 1569 1 << TIFFTag.TIFF_SHORT); 1570 1571 addValueName(LIGHT_SOURCE_UNKNOWN, "Unknown"); 1572 addValueName(LIGHT_SOURCE_DAYLIGHT, "Daylight"); 1573 addValueName(LIGHT_SOURCE_FLUORESCENT, "Fluorescent"); 1574 addValueName(LIGHT_SOURCE_TUNGSTEN, "Tungsten"); 1575 addValueName(LIGHT_SOURCE_STANDARD_LIGHT_A, "Standard Light A"); 1576 addValueName(LIGHT_SOURCE_STANDARD_LIGHT_B, "Standard Light B"); 1577 addValueName(LIGHT_SOURCE_STANDARD_LIGHT_C, "Standard Light C"); 1578 addValueName(LIGHT_SOURCE_D55, "D55"); 1579 addValueName(LIGHT_SOURCE_D65, "D65"); 1580 addValueName(LIGHT_SOURCE_D75, "D75"); 1581 addValueName(LIGHT_SOURCE_OTHER, "Other"); 1582 } 1583 } 1584 1585 static class Flash extends TIFFTag { 1586 1587 public Flash() { 1588 super("Flash", 1589 TAG_FLASH, 1590 1 << TIFFTag.TIFF_SHORT); 1591 1592 addValueName(FLASH_DID_NOT_FIRE, "Flash Did Not Fire"); 1593 addValueName(FLASH_FIRED, "Flash Fired"); 1594 addValueName(FLASH_STROBE_RETURN_LIGHT_NOT_DETECTED, 1595 "Strobe Return Light Not Detected"); 1596 addValueName(FLASH_STROBE_RETURN_LIGHT_DETECTED, 1597 "Strobe Return Light Detected"); 1598 } 1599 } 1600 1601 static class FocalLength extends TIFFTag { 1602 1603 public FocalLength() { 1604 super("FocalLength", 1605 TAG_FOCAL_LENGTH, 1606 1 << TIFFTag.TIFF_RATIONAL); 1607 } 1608 } 1609 1610 static class SubjectArea extends TIFFTag { 1611 1612 public SubjectArea() { 1613 super("SubjectArea", 1614 TAG_SUBJECT_AREA, 1615 1 << TIFFTag.TIFF_SHORT); 1616 } 1617 } 1618 1619 static class FlashEnergy extends TIFFTag { 1620 1621 public FlashEnergy() { 1622 super("FlashEnergy", 1623 TAG_FLASH_ENERGY, 1624 1 << TIFFTag.TIFF_RATIONAL); 1625 } 1626 } 1627 1628 static class SpatialFrequencyResponse extends TIFFTag { 1629 1630 public SpatialFrequencyResponse() { 1631 super("SpatialFrequencyResponse", 1632 TAG_SPATIAL_FREQUENCY_RESPONSE, 1633 1 << TIFFTag.TIFF_UNDEFINED); 1634 } 1635 } 1636 1637 static class FocalPlaneXResolution extends TIFFTag { 1638 1639 public FocalPlaneXResolution() { 1640 super("FocalPlaneXResolution", 1641 TAG_FOCAL_PLANE_X_RESOLUTION, 1642 1 << TIFFTag.TIFF_RATIONAL); 1643 } 1644 } 1645 1646 static class FocalPlaneYResolution extends TIFFTag { 1647 1648 public FocalPlaneYResolution() { 1649 super("FocalPlaneYResolution", 1650 TAG_FOCAL_PLANE_Y_RESOLUTION, 1651 1 << TIFFTag.TIFF_RATIONAL); 1652 } 1653 } 1654 1655 static class FocalPlaneResolutionUnit extends TIFFTag { 1656 1657 public FocalPlaneResolutionUnit() { 1658 super("FocalPlaneResolutionUnit", 1659 TAG_FOCAL_PLANE_RESOLUTION_UNIT, 1660 1 << TIFFTag.TIFF_SHORT); 1661 1662 addValueName(FOCAL_PLANE_RESOLUTION_UNIT_NONE, "None"); 1663 addValueName(FOCAL_PLANE_RESOLUTION_UNIT_INCH, "Inch"); 1664 addValueName(FOCAL_PLANE_RESOLUTION_UNIT_CENTIMETER, "Centimeter"); 1665 } 1666 } 1667 1668 static class SubjectLocation extends TIFFTag { 1669 1670 public SubjectLocation() { 1671 super("SubjectLocation", 1672 TAG_SUBJECT_LOCATION, 1673 1 << TIFFTag.TIFF_SHORT); 1674 } 1675 } 1676 1677 static class ExposureIndex extends TIFFTag { 1678 1679 public ExposureIndex() { 1680 super("ExposureIndex", 1681 TAG_EXPOSURE_INDEX, 1682 1 << TIFFTag.TIFF_RATIONAL); 1683 } 1684 } 1685 1686 static class SensingMethod extends TIFFTag { 1687 1688 public SensingMethod() { 1689 super("SensingMethod", 1690 TAG_SENSING_METHOD, 1691 1 << TIFFTag.TIFF_SHORT); 1692 1693 addValueName(SENSING_METHOD_NOT_DEFINED, "Not Defined"); 1694 addValueName(SENSING_METHOD_ONE_CHIP_COLOR_AREA_SENSOR, 1695 "One-chip color area sensor"); 1696 addValueName(SENSING_METHOD_TWO_CHIP_COLOR_AREA_SENSOR, 1697 "Two-chip color area sensor"); 1698 addValueName(SENSING_METHOD_THREE_CHIP_COLOR_AREA_SENSOR, 1699 "Three-chip color area sensor"); 1700 addValueName(SENSING_METHOD_COLOR_SEQUENTIAL_AREA_SENSOR, 1701 "Color sequential area sensor"); 1702 addValueName(SENSING_METHOD_TRILINEAR_SENSOR, "Trilinear sensor"); 1703 addValueName(SENSING_METHOD_COLOR_SEQUENTIAL_LINEAR_SENSOR, 1704 "Color sequential linear sensor"); 1705 } 1706 } 1707 1708 static class FileSource extends TIFFTag { 1709 1710 public FileSource() { 1711 super("FileSource", 1712 TAG_FILE_SOURCE, 1713 1 << TIFFTag.TIFF_UNDEFINED); 1714 1715 addValueName(FILE_SOURCE_DSC, "DSC"); 1716 } 1717 } 1718 1719 static class SceneType extends TIFFTag { 1720 1721 public SceneType() { 1722 super("SceneType", 1723 TAG_SCENE_TYPE, 1724 1 << TIFFTag.TIFF_UNDEFINED); 1725 1726 addValueName(SCENE_TYPE_DSC, "A directly photographed image"); 1727 } 1728 } 1729 1730 static class CFAPattern extends TIFFTag { 1731 1732 public CFAPattern() { 1733 super("CFAPattern", 1734 TAG_CFA_PATTERN, 1735 1 << TIFFTag.TIFF_UNDEFINED); 1736 } 1737 } 1738 1739 static class CustomRendered extends TIFFTag { 1740 1741 public CustomRendered() { 1742 super("CustomRendered", 1743 TAG_CUSTOM_RENDERED, 1744 1 << TIFFTag.TIFF_SHORT); 1745 1746 addValueName(CUSTOM_RENDERED_NORMAL, "Normal process"); 1747 addValueName(CUSTOM_RENDERED_CUSTOM, "Custom process"); 1748 } 1749 } 1750 1751 static class ExposureMode extends TIFFTag { 1752 1753 public ExposureMode() { 1754 super("ExposureMode", 1755 TAG_EXPOSURE_MODE, 1756 1 << TIFFTag.TIFF_SHORT); 1757 1758 addValueName(EXPOSURE_MODE_AUTO_EXPOSURE, "Auto exposure"); 1759 addValueName(EXPOSURE_MODE_MANUAL_EXPOSURE, "Manual exposure"); 1760 addValueName(EXPOSURE_MODE_AUTO_BRACKET, "Auto bracket"); 1761 } 1762 } 1763 1764 static class WhiteBalance extends TIFFTag { 1765 1766 public WhiteBalance() { 1767 super("WhiteBalance", 1768 TAG_WHITE_BALANCE, 1769 1 << TIFFTag.TIFF_SHORT); 1770 1771 addValueName(WHITE_BALANCE_AUTO, "Auto white balance"); 1772 addValueName(WHITE_BALANCE_MANUAL, "Manual white balance"); 1773 } 1774 } 1775 1776 static class DigitalZoomRatio extends TIFFTag { 1777 1778 public DigitalZoomRatio() { 1779 super("DigitalZoomRatio", 1780 TAG_DIGITAL_ZOOM_RATIO, 1781 1 << TIFFTag.TIFF_RATIONAL); 1782 } 1783 } 1784 1785 static class FocalLengthIn35mmFilm extends TIFFTag { 1786 1787 public FocalLengthIn35mmFilm() { 1788 super("FocalLengthIn35mmFilm", 1789 TAG_FOCAL_LENGTH_IN_35MM_FILM, 1790 1 << TIFFTag.TIFF_SHORT); 1791 } 1792 } 1793 1794 static class SceneCaptureType extends TIFFTag { 1795 1796 public SceneCaptureType() { 1797 super("SceneCaptureType", 1798 TAG_SCENE_CAPTURE_TYPE, 1799 1 << TIFFTag.TIFF_SHORT); 1800 1801 addValueName(SCENE_CAPTURE_TYPE_STANDARD, "Standard"); 1802 addValueName(SCENE_CAPTURE_TYPE_LANDSCAPE, "Landscape"); 1803 addValueName(SCENE_CAPTURE_TYPE_PORTRAIT, "Portrait"); 1804 addValueName(SCENE_CAPTURE_TYPE_NIGHT_SCENE, "Night scene"); 1805 } 1806 } 1807 1808 static class GainControl extends TIFFTag { 1809 1810 public GainControl() { 1811 super("GainControl", 1812 TAG_GAIN_CONTROL, 1813 1 << TIFFTag.TIFF_SHORT); 1814 1815 addValueName(GAIN_CONTROL_NONE, "None"); 1816 addValueName(GAIN_CONTROL_LOW_GAIN_UP, "Low gain up"); 1817 addValueName(GAIN_CONTROL_HIGH_GAIN_UP, "High gain up"); 1818 addValueName(GAIN_CONTROL_LOW_GAIN_DOWN, "Low gain down"); 1819 addValueName(GAIN_CONTROL_HIGH_GAIN_DOWN, "High gain down"); 1820 } 1821 } 1822 1823 static class Contrast extends TIFFTag { 1824 1825 public Contrast() { 1826 super("Contrast", 1827 TAG_CONTRAST, 1828 1 << TIFFTag.TIFF_SHORT); 1829 1830 addValueName(CONTRAST_NORMAL, "Normal"); 1831 addValueName(CONTRAST_SOFT, "Soft"); 1832 addValueName(CONTRAST_HARD, "Hard"); 1833 } 1834 } 1835 1836 static class Saturation extends TIFFTag { 1837 1838 public Saturation() { 1839 super("Saturation", 1840 TAG_SATURATION, 1841 1 << TIFFTag.TIFF_SHORT); 1842 1843 addValueName(SATURATION_NORMAL, "Normal"); 1844 addValueName(SATURATION_LOW, "Low saturation"); 1845 addValueName(SATURATION_HIGH, "High saturation"); 1846 } 1847 } 1848 1849 static class Sharpness extends TIFFTag { 1850 1851 public Sharpness() { 1852 super("Sharpness", 1853 TAG_SHARPNESS, 1854 1 << TIFFTag.TIFF_SHORT); 1855 1856 addValueName(SHARPNESS_NORMAL, "Normal"); 1857 addValueName(SHARPNESS_SOFT, "Soft"); 1858 addValueName(SHARPNESS_HARD, "Hard"); 1859 } 1860 } 1861 1862 static class DeviceSettingDescription extends TIFFTag { 1863 1864 public DeviceSettingDescription() { 1865 super("DeviceSettingDescription", 1866 TAG_DEVICE_SETTING_DESCRIPTION, 1867 1 << TIFFTag.TIFF_UNDEFINED); 1868 } 1869 } 1870 1871 static class SubjectDistanceRange extends TIFFTag { 1872 1873 public SubjectDistanceRange() { 1874 super("SubjectDistanceRange", 1875 TAG_SUBJECT_DISTANCE_RANGE, 1876 1 << TIFFTag.TIFF_SHORT); 1877 1878 addValueName(SUBJECT_DISTANCE_RANGE_UNKNOWN, "unknown"); 1879 addValueName(SUBJECT_DISTANCE_RANGE_MACRO, "Macro"); 1880 addValueName(SUBJECT_DISTANCE_RANGE_CLOSE_VIEW, "Close view"); 1881 addValueName(SUBJECT_DISTANCE_RANGE_DISTANT_VIEW, "Distant view"); 1882 } 1883 } 1884 1885 static class ImageUniqueID extends TIFFTag { 1886 1887 public ImageUniqueID() { 1888 super("ImageUniqueID", 1889 TAG_IMAGE_UNIQUE_ID, 1890 1 << TIFFTag.TIFF_ASCII); 1891 } 1892 } 1893 1894 static class InteroperabilityIFD extends TIFFTag { 1895 public InteroperabilityIFD() { 1896 super("InteroperabilityIFD", 1897 TAG_INTEROPERABILITY_IFD_POINTER, 1898 1 << TIFFTag.TIFF_LONG, 1899 EXIFInteroperabilityTagSet.getInstance()); 1900 } 1901 } 1902 1903 private static List tags; 1904 1905 private static void initTags() { 1906 tags = new ArrayList(42); 1907 1908 tags.add(new EXIFTIFFTagSet.EXIFVersion()); 1909 tags.add(new EXIFTIFFTagSet.FlashPixVersion()); 1910 tags.add(new EXIFTIFFTagSet.ColorSpace()); 1911 tags.add(new EXIFTIFFTagSet.ComponentsConfiguration()); 1912 tags.add(new EXIFTIFFTagSet.CompressedBitsPerPixel()); 1913 tags.add(new EXIFTIFFTagSet.PixelXDimension()); 1914 tags.add(new EXIFTIFFTagSet.PixelYDimension()); 1915 tags.add(new EXIFTIFFTagSet.MakerNote()); 1916 tags.add(new EXIFTIFFTagSet.UserComment()); 1917 tags.add(new EXIFTIFFTagSet.RelatedSoundFile()); 1918 tags.add(new EXIFTIFFTagSet.DateTimeOriginal()); 1919 tags.add(new EXIFTIFFTagSet.DateTimeDigitized()); 1920 tags.add(new EXIFTIFFTagSet.SubSecTime()); 1921 tags.add(new EXIFTIFFTagSet.SubSecTimeOriginal()); 1922 tags.add(new EXIFTIFFTagSet.SubSecTimeDigitized()); 1923 tags.add(new EXIFTIFFTagSet.ExposureTime()); 1924 tags.add(new EXIFTIFFTagSet.FNumber()); 1925 tags.add(new EXIFTIFFTagSet.ExposureProgram()); 1926 tags.add(new EXIFTIFFTagSet.SpectralSensitivity()); 1927 tags.add(new EXIFTIFFTagSet.ISOSpeedRatings()); 1928 tags.add(new EXIFTIFFTagSet.OECF()); 1929 tags.add(new EXIFTIFFTagSet.ShutterSpeedValue()); 1930 tags.add(new EXIFTIFFTagSet.ApertureValue()); 1931 tags.add(new EXIFTIFFTagSet.BrightnessValue()); 1932 tags.add(new EXIFTIFFTagSet.ExposureBiasValue()); 1933 tags.add(new EXIFTIFFTagSet.MaxApertureValue()); 1934 tags.add(new EXIFTIFFTagSet.SubjectDistance()); 1935 tags.add(new EXIFTIFFTagSet.MeteringMode()); 1936 tags.add(new EXIFTIFFTagSet.LightSource()); 1937 tags.add(new EXIFTIFFTagSet.Flash()); 1938 tags.add(new EXIFTIFFTagSet.FocalLength()); 1939 tags.add(new EXIFTIFFTagSet.SubjectArea()); 1940 tags.add(new EXIFTIFFTagSet.FlashEnergy()); 1941 tags.add(new EXIFTIFFTagSet.SpatialFrequencyResponse()); 1942 tags.add(new EXIFTIFFTagSet.FocalPlaneXResolution()); 1943 tags.add(new EXIFTIFFTagSet.FocalPlaneYResolution()); 1944 tags.add(new EXIFTIFFTagSet.FocalPlaneResolutionUnit()); 1945 tags.add(new EXIFTIFFTagSet.SubjectLocation()); 1946 tags.add(new EXIFTIFFTagSet.ExposureIndex()); 1947 tags.add(new EXIFTIFFTagSet.SensingMethod()); 1948 tags.add(new EXIFTIFFTagSet.FileSource()); 1949 tags.add(new EXIFTIFFTagSet.SceneType()); 1950 tags.add(new EXIFTIFFTagSet.CFAPattern()); 1951 tags.add(new EXIFTIFFTagSet.CustomRendered()); 1952 tags.add(new EXIFTIFFTagSet.ExposureMode()); 1953 tags.add(new EXIFTIFFTagSet.WhiteBalance()); 1954 tags.add(new EXIFTIFFTagSet.DigitalZoomRatio()); 1955 tags.add(new EXIFTIFFTagSet.FocalLengthIn35mmFilm()); 1956 tags.add(new EXIFTIFFTagSet.SceneCaptureType()); 1957 tags.add(new EXIFTIFFTagSet.GainControl()); 1958 tags.add(new EXIFTIFFTagSet.Contrast()); 1959 tags.add(new EXIFTIFFTagSet.Saturation()); 1960 tags.add(new EXIFTIFFTagSet.Sharpness()); 1961 tags.add(new EXIFTIFFTagSet.DeviceSettingDescription()); 1962 tags.add(new EXIFTIFFTagSet.SubjectDistanceRange()); 1963 tags.add(new EXIFTIFFTagSet.ImageUniqueID()); 1964 tags.add(new EXIFTIFFTagSet.InteroperabilityIFD()); 1965 } 1966 1967 private EXIFTIFFTagSet() { 1968 super(tags); 1969 } 1970 1971 /** 1972 * Returns a shared instance of an <code>EXIFTIFFTagSet</code>. 1973 * 1974 * @return an <code>EXIFTIFFTagSet</code> instance. 1975 */ 1976 public synchronized static EXIFTIFFTagSet getInstance() { 1977 if (theInstance == null) { 1978 initTags(); 1979 theInstance = new EXIFTIFFTagSet(); 1980 tags = null; 1981 } 1982 return theInstance; 1983 } 1984}