View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  package org.apache.commons.imaging.formats.tiff.constants;
18  
19  import java.util.Arrays;
20  import java.util.Collections;
21  import java.util.List;
22  
23  import org.apache.commons.imaging.formats.tiff.taginfos.TagInfo;
24  import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoByte;
25  import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoBytes;
26  import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoDirectory;
27  import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoLong;
28  import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoLongs;
29  import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoRationals;
30  import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoShort;
31  import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoShortOrLong;
32  import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoShorts;
33  
34  /**
35   * RFC 2301: File Format for Internet Fax.
36   * <p>
37   * www.ietf.org/rfc/rfc2301.txt
38   * </p>
39   * <p>
40   * Also subsumes "The spirit of TIFF class F"
41   * </p>
42   * <p>
43   * https://cool.culturalheritage.org/bytopic/imaging/std/tiff-f.html
44   * </p>
45   */
46  public final class Rfc2301TagConstants {
47  
48      public static final TagInfoShortOrLong TIFF_TAG_BAD_FAX_LINES = new TagInfoShortOrLong("BadFaxLines", 0x0146, 1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
49  
50      public static final TagInfoShort TIFF_TAG_CLEAN_FAX_DATA = new TagInfoShort("CleanFaxData", 0x0147, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
51      public static final int CLEAN_FAX_DATA_VALUE_CLEAN = 0;
52      public static final int CLEAN_FAX_DATA_VALUE_REGENERATED = 1;
53      public static final int CLEAN_FAX_DATA_VALUE_UNCLEAN = 2;
54  
55      public static final TagInfoShortOrLong TIFF_TAG_CONSECUTIVE_BAD_FAX_LINES = new TagInfoShortOrLong("ConsecutiveBadFaxLines", 0x0148, 1,
56              TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
57  
58      public static final TagInfoDirectory TIFF_TAG_GLOBAL_PARAMETERS_IFD = new TagInfoDirectory("GlobalParametersIFD", 0x0190,
59              TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
60  
61      public static final TagInfoLong TIFF_TAG_PROFILE_TYPE = new TagInfoLong("ProfileType", 0x0191, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
62      public static final int PROFILE_TYPE_VALUE_UNSPECIFIED = 0;
63      public static final int PROFILE_TYPE_VALUE_GROUP_3_FAX = 1;
64  
65      public static final TagInfoByte TIFF_TAG_FAX_PROFILE = new TagInfoByte("FaxProfile", 0x0192, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
66      public static final int FAX_PROFILE_VALUE_UNKNOWN = 0;
67      public static final int FAX_PROFILE_VALUE_MINIMAL_B_AND_W_LOSSLESS_S = 1;
68      public static final int FAX_PROFILE_VALUE_EXTENDED_B_AND_W_LOSSLESS_F = 2;
69      public static final int FAX_PROFILE_VALUE_LOSSLESS_JBIG_B_AND_W_J = 3;
70      public static final int FAX_PROFILE_VALUE_LOSSY_COLOR_AND_GRAYSCALE_C = 4;
71      public static final int FAX_PROFILE_VALUE_LOSSLESS_COLOR_AND_GRAYSCALE_L = 5;
72      public static final int FAX_PROFILE_VALUE_MIXED_RASTER_CONTENT_M = 6;
73  
74      public static final TagInfoLong TIFF_TAG_CODING_METHODS = new TagInfoLong("CodingMethods", 0x0193, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
75      public static final int CODING_METHODS_VALUE_T4_1D = 2;
76      public static final int CODING_METHODS_VALUE_T4_2D = 4;
77      public static final int CODING_METHODS_VALUE_T6 = 8;
78      public static final int CODING_METHODS_VALUE_T82_T85 = 16;
79      public static final int CODING_METHODS_VALUE_T81 = 32;
80      public static final int CODING_METHODS_VALUE_T82_T43 = 64;
81  
82      public static final TagInfoBytes TIFF_TAG_VERSION_YEAR = new TagInfoBytes("VersionYear", 0x0194, 4, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
83  
84      public static final TagInfoByte TIFF_TAG_MODE_NUMBER = new TagInfoByte("ModeNumber", 0x0195, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
85  
86      public static final TagInfoRationals TIFF_TAG_DECODE = new TagInfoRationals("Decode", 0x01b1, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
87  
88      public static final TagInfoShorts TIFF_TAG_DEFAULT_IMAGE_COLOR = new TagInfoShorts("DefaultImageColor", 0x01b2, -1,
89              TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
90  
91      public static final TagInfoLongs TIFF_TAG_STRIP_ROW_COUNTS = new TagInfoLongs("StripRowCounts", 0x022f, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
92  
93      public static final TagInfoShortOrLong TIFF_TAG_IMAGE_LAYER = new TagInfoShortOrLong("ImageLayer", 0x87ac, 2, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
94  
95      public static final List<TagInfo> ALL_RFC_2301_TAGS = Collections.unmodifiableList(Arrays.asList(TIFF_TAG_BAD_FAX_LINES, TIFF_TAG_CLEAN_FAX_DATA,
96              TIFF_TAG_CONSECUTIVE_BAD_FAX_LINES, TIFF_TAG_GLOBAL_PARAMETERS_IFD, TIFF_TAG_PROFILE_TYPE, TIFF_TAG_FAX_PROFILE, TIFF_TAG_CODING_METHODS,
97              TIFF_TAG_VERSION_YEAR, TIFF_TAG_MODE_NUMBER, TIFF_TAG_DECODE, TIFF_TAG_DEFAULT_IMAGE_COLOR, TIFF_TAG_STRIP_ROW_COUNTS, TIFF_TAG_IMAGE_LAYER));
98  
99      private Rfc2301TagConstants() {
100     }
101 }