001/* 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017package org.apache.commons.imaging.formats.tiff.constants; 018 019import java.util.Arrays; 020import java.util.Collections; 021import java.util.List; 022 023import org.apache.commons.imaging.formats.tiff.taginfos.TagInfo; 024import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoAscii; 025import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoByte; 026import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoBytes; 027import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoGpsText; 028import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoRational; 029import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoRationals; 030import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoShort; 031 032public final class GpsTagConstants { 033 034 public static final TagInfoBytes GPS_TAG_GPS_VERSION_ID = new TagInfoBytes( 035 "GPSVersionID", 0x0000, 4, 036 TiffDirectoryType.EXIF_DIRECTORY_GPS); 037 038 private static final byte[] GPS_VERSION = new byte[] { (byte)2, (byte)3, (byte)0, (byte)0 }; 039 040 public static byte[] gpsVersion() { 041 return GPS_VERSION.clone(); 042 } 043 044 // ************************************************************ 045 public static final TagInfoAscii GPS_TAG_GPS_LATITUDE_REF = new TagInfoAscii( 046 "GPSLatitudeRef", 0x0001, 2, 047 TiffDirectoryType.EXIF_DIRECTORY_GPS); 048 049 public static final String GPS_TAG_GPS_LATITUDE_REF_VALUE_NORTH = "N"; 050 public static final String GPS_TAG_GPS_LATITUDE_REF_VALUE_SOUTH = "S"; 051 // ************************************************************ 052 public static final TagInfoRationals GPS_TAG_GPS_LATITUDE = new TagInfoRationals( 053 "GPSLatitude", 0x0002, 3, 054 TiffDirectoryType.EXIF_DIRECTORY_GPS); 055 056 // ************************************************************ 057 public static final TagInfoAscii GPS_TAG_GPS_LONGITUDE_REF = new TagInfoAscii( 058 "GPSLongitudeRef", 0x0003, 2, 059 TiffDirectoryType.EXIF_DIRECTORY_GPS); 060 061 public static final String GPS_TAG_GPS_LONGITUDE_REF_VALUE_EAST = "E"; 062 public static final String GPS_TAG_GPS_LONGITUDE_REF_VALUE_WEST = "W"; 063 // ************************************************************ 064 public static final TagInfoRationals GPS_TAG_GPS_LONGITUDE = new TagInfoRationals( 065 "GPSLongitude", 0x0004, 3, 066 TiffDirectoryType.EXIF_DIRECTORY_GPS); 067 068 // ************************************************************ 069 public static final TagInfoByte GPS_TAG_GPS_ALTITUDE_REF = new TagInfoByte( 070 "GPSAltitudeRef", 0x0005, 071 TiffDirectoryType.EXIF_DIRECTORY_GPS); 072 073 public static final int GPS_TAG_GPS_ALTITUDE_REF_VALUE_ABOVE_SEA_LEVEL = 0; 074 public static final int GPS_TAG_GPS_ALTITUDE_REF_VALUE_BELOW_SEA_LEVEL = 1; 075 // ************************************************************ 076 public static final TagInfoRational GPS_TAG_GPS_ALTITUDE = new TagInfoRational( 077 "GPSAltitude", 0x0006, 078 TiffDirectoryType.EXIF_DIRECTORY_GPS); 079 080 // ************************************************************ 081 public static final TagInfoRationals GPS_TAG_GPS_TIME_STAMP = new TagInfoRationals( 082 "GPSTimeStamp", 0x0007, 3, 083 TiffDirectoryType.EXIF_DIRECTORY_GPS); 084 085 // ************************************************************ 086 public static final TagInfoAscii GPS_TAG_GPS_SATELLITES = new TagInfoAscii( 087 "GPSSatellites", 0x0008, -1, 088 TiffDirectoryType.EXIF_DIRECTORY_GPS); 089 090 // ************************************************************ 091 public static final TagInfoAscii GPS_TAG_GPS_STATUS = new TagInfoAscii( 092 "GPSStatus", 0x0009, 2, 093 TiffDirectoryType.EXIF_DIRECTORY_GPS); 094 095 public static final String GPS_TAG_GPS_STATUS_VALUE_MEASUREMENT_IN_PROGRESS = "A"; 096 public static final String GPS_TAG_GPS_STATUS_VALUE_MEASUREMENT_INTEROPERABILITY = "V"; 097 // ************************************************************ 098 public static final TagInfoAscii GPS_TAG_GPS_MEASURE_MODE = new TagInfoAscii( 099 "GPSMeasureMode", 0x000a, 2, 100 TiffDirectoryType.EXIF_DIRECTORY_GPS); 101 102 public static final int GPS_TAG_GPS_MEASURE_MODE_VALUE_2_DIMENSIONAL_MEASUREMENT = 2; 103 public static final int GPS_TAG_GPS_MEASURE_MODE_VALUE_3_DIMENSIONAL_MEASUREMENT = 3; 104 // ************************************************************ 105 public static final TagInfoRational GPS_TAG_GPS_DOP = new TagInfoRational( 106 "GPSDOP", 0x000b, 107 TiffDirectoryType.EXIF_DIRECTORY_GPS); 108 109 // ************************************************************ 110 public static final TagInfoAscii GPS_TAG_GPS_SPEED_REF = new TagInfoAscii( 111 "GPSSpeedRef", 0x000c, 2, 112 TiffDirectoryType.EXIF_DIRECTORY_GPS); 113 114 public static final String GPS_TAG_GPS_SPEED_REF_VALUE_KMPH = "K"; 115 public static final String GPS_TAG_GPS_SPEED_REF_VALUE_MPH = "M"; 116 public static final String GPS_TAG_GPS_SPEED_REF_VALUE_KNOTS = "N"; 117 // ************************************************************ 118 public static final TagInfoRational GPS_TAG_GPS_SPEED = new TagInfoRational( 119 "GPSSpeed", 0x000d, 120 TiffDirectoryType.EXIF_DIRECTORY_GPS); 121 122 // ************************************************************ 123 public static final TagInfoAscii GPS_TAG_GPS_TRACK_REF = new TagInfoAscii( 124 "GPSTrackRef", 0x000e, 2, 125 TiffDirectoryType.EXIF_DIRECTORY_GPS); 126 127 public static final String GPS_TAG_GPS_TRACK_REF_VALUE_MAGNETIC_NORTH = "M"; 128 public static final String GPS_TAG_GPS_TRACK_REF_VALUE_TRUE_NORTH = "T"; 129 // ************************************************************ 130 public static final TagInfoRational GPS_TAG_GPS_TRACK = new TagInfoRational( 131 "GPSTrack", 0x000f, 132 TiffDirectoryType.EXIF_DIRECTORY_GPS); 133 134 // ************************************************************ 135 public static final TagInfoAscii GPS_TAG_GPS_IMG_DIRECTION_REF = new TagInfoAscii( 136 "GPSImgDirectionRef", 0x0010, 2, 137 TiffDirectoryType.EXIF_DIRECTORY_GPS); 138 139 public static final String GPS_TAG_GPS_IMG_DIRECTION_REF_VALUE_MAGNETIC_NORTH = "M"; 140 public static final String GPS_TAG_GPS_IMG_DIRECTION_REF_VALUE_TRUE_NORTH = "T"; 141 // ************************************************************ 142 public static final TagInfoRational GPS_TAG_GPS_IMG_DIRECTION = new TagInfoRational( 143 "GPSImgDirection", 0x0011, 144 TiffDirectoryType.EXIF_DIRECTORY_GPS); 145 146 // ************************************************************ 147 public static final TagInfoAscii GPS_TAG_GPS_MAP_DATUM = new TagInfoAscii( 148 "GPSMapDatum", 0x0012, -1, 149 TiffDirectoryType.EXIF_DIRECTORY_GPS); 150 151 // ************************************************************ 152 public static final TagInfoAscii GPS_TAG_GPS_DEST_LATITUDE_REF = new TagInfoAscii( 153 "GPSDestLatitudeRef", 0x0013, 2, 154 TiffDirectoryType.EXIF_DIRECTORY_GPS); 155 156 public static final String GPS_TAG_GPS_DEST_LATITUDE_REF_VALUE_NORTH = "N"; 157 public static final String GPS_TAG_GPS_DEST_LATITUDE_REF_VALUE_SOUTH = "S"; 158 // ************************************************************ 159 public static final TagInfoRationals GPS_TAG_GPS_DEST_LATITUDE = new TagInfoRationals( 160 "GPSDestLatitude", 0x0014, 3, 161 TiffDirectoryType.EXIF_DIRECTORY_GPS); 162 163 // ************************************************************ 164 public static final TagInfoAscii GPS_TAG_GPS_DEST_LONGITUDE_REF = new TagInfoAscii( 165 "GPSDestLongitudeRef", 0x0015, 2, 166 TiffDirectoryType.EXIF_DIRECTORY_GPS); 167 168 public static final String GPS_TAG_GPS_DEST_LONGITUDE_REF_VALUE_EAST = "E"; 169 public static final String GPS_TAG_GPS_DEST_LONGITUDE_REF_VALUE_WEST = "W"; 170 // ************************************************************ 171 public static final TagInfoRationals GPS_TAG_GPS_DEST_LONGITUDE = new TagInfoRationals( 172 "GPSDestLongitude", 0x0016, 3, 173 TiffDirectoryType.EXIF_DIRECTORY_GPS); 174 175 // ************************************************************ 176 public static final TagInfoAscii GPS_TAG_GPS_DEST_BEARING_REF = new TagInfoAscii( 177 "GPSDestBearingRef", 0x0017, 2, 178 TiffDirectoryType.EXIF_DIRECTORY_GPS); 179 180 public static final String GPS_TAG_GPS_DEST_BEARING_REF_VALUE_MAGNETIC_NORTH = "M"; 181 public static final String GPS_TAG_GPS_DEST_BEARING_REF_VALUE_TRUE_NORTH = "T"; 182 // ************************************************************ 183 public static final TagInfoRational GPS_TAG_GPS_DEST_BEARING = new TagInfoRational( 184 "GPSDestBearing", 0x0018, 185 TiffDirectoryType.EXIF_DIRECTORY_GPS); 186 187 // ************************************************************ 188 public static final TagInfoAscii GPS_TAG_GPS_DEST_DISTANCE_REF = new TagInfoAscii( 189 "GPSDestDistanceRef", 0x0019, 2, 190 TiffDirectoryType.EXIF_DIRECTORY_GPS); 191 192 public static final String GPS_TAG_GPS_DEST_DISTANCE_REF_VALUE_KILOMETERS = "K"; 193 public static final String GPS_TAG_GPS_DEST_DISTANCE_REF_VALUE_MILES = "M"; 194 public static final String GPS_TAG_GPS_DEST_DISTANCE_REF_VALUE_NAUTICAL_MILES = "N"; 195 // ************************************************************ 196 public static final TagInfoRational GPS_TAG_GPS_DEST_DISTANCE = new TagInfoRational( 197 "GPSDestDistance", 0x001a, 198 TiffDirectoryType.EXIF_DIRECTORY_GPS); 199 200 // ************************************************************ 201 public static final TagInfoGpsText GPS_TAG_GPS_PROCESSING_METHOD = new TagInfoGpsText( 202 "GPSProcessingMethod", 0x001b, 203 TiffDirectoryType.EXIF_DIRECTORY_GPS); 204 205 // ************************************************************ 206 public static final TagInfoGpsText GPS_TAG_GPS_AREA_INFORMATION = new TagInfoGpsText( 207 "GPSAreaInformation", 0x001c, 208 TiffDirectoryType.EXIF_DIRECTORY_GPS); 209 210 // ************************************************************ 211 public static final TagInfoAscii GPS_TAG_GPS_DATE_STAMP = new TagInfoAscii( 212 "GPSDateStamp", 0x001d, 11, 213 TiffDirectoryType.EXIF_DIRECTORY_GPS); 214 215 // ************************************************************ 216 public static final TagInfoShort GPS_TAG_GPS_DIFFERENTIAL = new TagInfoShort( 217 "GPSDifferential", 0x001e, 218 TiffDirectoryType.EXIF_DIRECTORY_GPS); 219 220 public static final int GPS_TAG_GPS_DIFFERENTIAL_VALUE_NO_CORRECTION = 0; 221 public static final int GPS_TAG_GPS_DIFFERENTIAL_VALUE_DIFFERENTIAL_CORRECTED = 1; 222 // ************************************************************ 223 224 public static final List<TagInfo> ALL_GPS_TAGS = 225 Collections.unmodifiableList(Arrays.asList( 226 GPS_TAG_GPS_VERSION_ID, GPS_TAG_GPS_LATITUDE_REF, 227 GPS_TAG_GPS_LATITUDE, GPS_TAG_GPS_LONGITUDE_REF, 228 GPS_TAG_GPS_LONGITUDE, GPS_TAG_GPS_ALTITUDE_REF, 229 GPS_TAG_GPS_ALTITUDE, GPS_TAG_GPS_TIME_STAMP, 230 GPS_TAG_GPS_SATELLITES, GPS_TAG_GPS_STATUS, 231 GPS_TAG_GPS_MEASURE_MODE, GPS_TAG_GPS_DOP, GPS_TAG_GPS_SPEED_REF, 232 GPS_TAG_GPS_SPEED, GPS_TAG_GPS_TRACK_REF, GPS_TAG_GPS_TRACK, 233 GPS_TAG_GPS_IMG_DIRECTION_REF, GPS_TAG_GPS_IMG_DIRECTION, 234 GPS_TAG_GPS_MAP_DATUM, GPS_TAG_GPS_DEST_LATITUDE_REF, 235 GPS_TAG_GPS_DEST_LATITUDE, GPS_TAG_GPS_DEST_LONGITUDE_REF, 236 GPS_TAG_GPS_DEST_LONGITUDE, GPS_TAG_GPS_DEST_BEARING_REF, 237 GPS_TAG_GPS_DEST_BEARING, GPS_TAG_GPS_DEST_DISTANCE_REF, 238 GPS_TAG_GPS_DEST_DISTANCE, GPS_TAG_GPS_PROCESSING_METHOD, 239 GPS_TAG_GPS_AREA_INFORMATION, GPS_TAG_GPS_DATE_STAMP, 240 GPS_TAG_GPS_DIFFERENTIAL)); 241 242 private GpsTagConstants() { 243 } 244}