001: /*
002: * $RCSfile: EXIFInteroperabilityTagSet.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.1 $
042: * $Date: 2005/10/28 16:56:45 $
043: * $State: Exp $
044: */
045:
046: package com.sun.media.imageio.plugins.tiff;
047:
048: import java.util.ArrayList;
049: import java.util.List;
050:
051: /**
052: * A class representing the tags found in an EXIF Interoperability IFD.
053: *
054: * @see EXIFTIFFTagSet
055: */
056: public class EXIFInteroperabilityTagSet extends TIFFTagSet {
057: /**
058: * A tag indicating the identification of the Interoperability rule
059: * (type ASCII).
060: *
061: * @see #INTEROPERABILITY_INDEX_R98
062: * @see #INTEROPERABILITY_INDEX_THM
063: */
064: public static final int TAG_INTEROPERABILITY_INDEX = 1;
065:
066: /**
067: * A value to be used with the "InteroperabilityIndex" tag. Indicates
068: * a file conforming to the R98 file specification of Recommended Exif
069: * Interoperability Rules (ExifR98) or to the DCF basic file stipulated
070: * by the Design Rule for Camera File System (type ASCII).
071: *
072: * @see #TAG_INTEROPERABILITY_INDEX
073: */
074: public static final String INTEROPERABILITY_INDEX_R98 = "R98";
075:
076: /**
077: * A value to be used with the "InteroperabilityIndex" tag. Indicates
078: * a file conforming to the DCF thumbnail file stipulated by the Design
079: * rule for Camera File System (type ASCII).
080: *
081: * @see #TAG_INTEROPERABILITY_INDEX
082: */
083: public static final String INTEROPERABILITY_INDEX_THM = "THM";
084:
085: private static EXIFInteroperabilityTagSet theInstance = null;
086:
087: static class InteroperabilityIndex extends TIFFTag {
088:
089: public InteroperabilityIndex() {
090: super ("InteroperabilityIndex", TAG_INTEROPERABILITY_INDEX,
091: 1 << TIFFTag.TIFF_ASCII);
092: }
093: }
094:
095: private static List tags;
096:
097: private static void initTags() {
098: tags = new ArrayList(42);
099:
100: tags
101: .add(new EXIFInteroperabilityTagSet.InteroperabilityIndex());
102: }
103:
104: private EXIFInteroperabilityTagSet() {
105: super (tags);
106: }
107:
108: /**
109: * Returns the shared instance of
110: * <code>EXIFInteroperabilityTagSet</code>.
111: *
112: * @return the <code>EXIFInteroperabilityTagSet</code> instance.
113: */
114: public synchronized static EXIFInteroperabilityTagSet getInstance() {
115: if (theInstance == null) {
116: initTags();
117: theInstance = new EXIFInteroperabilityTagSet();
118: tags = null;
119: }
120: return theInstance;
121: }
122: }
|