/*****************************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
****************************************************************************/
package org.apache.xmpbox.schema;
import org.apache.xmpbox.XMPMetadata;
import java.util.List;
import org.apache.xmpbox.type.ArrayProperty;
import org.apache.xmpbox.type.Cardinality;
import org.apache.xmpbox.type.PropertyType;
import org.apache.xmpbox.type.StructuredType;
import org.apache.xmpbox.type.Types;
/**
* Representation of a Exif Schema
*
*/
@StructuredType(preferedPrefix = "exif", namespace = "http://ns.adobe.com/exif/1.0/")
public class ExifSchema extends XMPSchema
{
@PropertyType(type = Types.LangAlt, card = Cardinality.Simple)
public static final String USER_COMMENT = "UserComment";
@PropertyType(type=Types.Text, card= Cardinality.Simple)
public static final String EXIF_VERSION = "ExifVersion";
@PropertyType(type=Types.Text, card= Cardinality.Simple)
public static final String FLASH_PIX_VERSION = "FlashpixVersion";
@PropertyType(type=Types.Integer, card= Cardinality.Simple)
public static final String COLOR_SPACE = "ColorSpace";
@PropertyType(type=Types.Integer, card= Cardinality.Seq)
public static final String COMPONENTS_CONFIGURATION = "ComponentsConfiguration";
@PropertyType(type=Types.Rational, card= Cardinality.Simple)
public static final String COMPRESSED_BPP = "CompressedBitsPerPixel";
@PropertyType(type=Types.Integer, card= Cardinality.Simple)
public static final String PIXEL_X_DIMENSION = "PixelXDimension";
@PropertyType(type=Types.Integer, card= Cardinality.Simple)
public static final String PIXEL_Y_DIMENSION = "PixelYDimension";
@PropertyType(type=Types.Text, card= Cardinality.Simple)
public static final String RELATED_SOUND_FILE = "RelatedSoundFile";
@PropertyType(type=Types.Date, card= Cardinality.Simple)
public static final String DATE_TIME_ORIGINAL = "DateTimeOriginal";
@PropertyType(type=Types.Date, card= Cardinality.Simple)
public static final String DATE_TIME_DIGITIZED = "DateTimeDigitized";
@PropertyType(type=Types.Rational, card= Cardinality.Simple)
public static final String EXPOSURE_TIME = "ExposureTime";
@PropertyType(type=Types.Rational, card= Cardinality.Simple)
public static final String F_NUMBER = "FNumber";
@PropertyType(type=Types.Integer, card= Cardinality.Simple)
public static final String EXPOSURE_PROGRAM = "ExposureProgram";
@PropertyType(type=Types.Text, card= Cardinality.Simple)
public static final String SPECTRAL_SENSITIVITY = "SpectralSensitivity";
@PropertyType(type=Types.Integer, card= Cardinality.Seq)
public static final String ISO_SPEED_RATINGS = "ISOSpeedRatings";
@PropertyType(type=Types.Rational, card= Cardinality.Simple)
public static final String SHUTTER_SPEED_VALUE = "ShutterSpeedValue";
@PropertyType(type=Types.Rational, card= Cardinality.Simple)
public static final String APERTURE_VALUE = "ApertureValue";
@PropertyType(type=Types.Rational, card= Cardinality.Simple)
public static final String BRIGHTNESS_VALUE = "BrightnessValue";
@PropertyType(type=Types.Rational, card= Cardinality.Simple)
public static final String EXPOSURE_BIAS_VALUE = "ExposureBiasValue";
@PropertyType(type=Types.Rational, card= Cardinality.Simple)
public static final String MAX_APERTURE_VALUE = "MaxApertureValue";
@PropertyType(type=Types.Rational, card= Cardinality.Simple)
public static final String SUBJECT_DISTANCE = "SubjectDistance";
@PropertyType(type=Types.Integer, card= Cardinality.Simple)
public static final String METERING_MODE = "MeteringMode";
@PropertyType(type=Types.Integer, card= Cardinality.Simple)
public static final String LIGHT_SOURCE = "LightSource";
@PropertyType(type=Types.Rational, card= Cardinality.Simple)
public static final String FLASH_ENERGY = "FlashEnergy";
@PropertyType(type=Types.Rational, card= Cardinality.Simple)
public static final String FOCAL_LENGTH = "FocalLength";
@PropertyType(type=Types.Rational, card= Cardinality.Simple)
public static final String FOCAL_PLANE_XRESOLUTION = "FocalPlaneXResolution";
@PropertyType(type=Types.Rational, card= Cardinality.Simple)
public static final String FOCAL_PLANE_YRESOLUTION = "FocalPlaneYResolution";
@PropertyType(type=Types.Integer, card= Cardinality.Seq)
public static final String SUBJECT_AREA = "SubjectArea";
@PropertyType(type=Types.Integer, card= Cardinality.Simple)
public static final String FOCAL_PLANE_RESOLUTION_UNIT = "FocalPlaneResolutionUnit";
@PropertyType(type=Types.Integer, card= Cardinality.Seq)
public static final String SUBJECT_LOCATION = "SubjectLocation";
@PropertyType(type=Types.Rational, card= Cardinality.Simple)
public static final String EXPOSURE_INDEX = "ExposureIndex";
@PropertyType(type=Types.Integer, card= Cardinality.Simple)
public static final String SENSING_METHOD = "SensingMethod";
@PropertyType(type=Types.Integer, card= Cardinality.Simple)
public static final String FILE_SOURCE = "FileSource";
@PropertyType(type=Types.Integer, card= Cardinality.Simple)
public static final String SCENE_TYPE = "SceneType";
@PropertyType(type=Types.Integer, card= Cardinality.Simple)
public static final String CUSTOM_RENDERED = "CustomRendered";
@PropertyType(type=Types.Integer, card= Cardinality.Simple)
public static final String WHITE_BALANCE = "WhiteBalance";
@PropertyType(type=Types.Integer, card= Cardinality.Simple)
public static final String EXPOSURE_MODE = "ExposureMode";
@PropertyType(type=Types.Rational, card= Cardinality.Simple)
public static final String DIGITAL_ZOOM_RATIO = "DigitalZoomRatio";
@PropertyType(type=Types.Integer, card= Cardinality.Simple)
public static final String FOCAL_LENGTH_IN_3_5MM_FILM = "FocalLengthIn35mmFilm";
@PropertyType(type=Types.Integer, card= Cardinality.Simple)
public static final String SCENE_CAPTURE_TYPE = "SceneCaptureType";
@PropertyType(type=Types.Integer, card= Cardinality.Simple)
public static final String GAIN_CONTROL = "GainControl";
@PropertyType(type=Types.Integer, card= Cardinality.Simple)
public static final String CONTRAST = "Contrast";
@PropertyType(type=Types.Integer, card= Cardinality.Simple)
public static final String SATURATION = "Saturation";
@PropertyType(type=Types.Integer, card= Cardinality.Simple)
public static final String SHARPNESS = "Sharpness";
@PropertyType(type=Types.Integer, card= Cardinality.Simple)
public static final String SUBJECT_DISTANCE_RANGE = "SubjectDistanceRange";
@PropertyType(type=Types.Text, card= Cardinality.Simple)
public static final String IMAGE_UNIQUE_ID = "ImageUniqueID";
@PropertyType(type=Types.Text, card= Cardinality.Simple)
public static final String GPSVERSION_ID = "GPSVersionID";
@PropertyType(type=Types.Text, card= Cardinality.Simple)
public static final String GPS_SATELLITES = "GPSSatellites";
@PropertyType(type=Types.Text, card= Cardinality.Simple)
public static final String GPS_STATUS = "GPSStatus";
@PropertyType(type=Types.Text, card= Cardinality.Simple)
public static final String GPS_MEASURE_MODE = "GPSMeasureMode";
@PropertyType(type=Types.Text, card= Cardinality.Simple)
public static final String GPS_MAP_DATUM = "GPSMapDatum";
@PropertyType(type=Types.Text, card= Cardinality.Simple)
public static final String GPS_SPEED_REF = "GPSSpeedRef";
@PropertyType(type=Types.Text, card= Cardinality.Simple)
public static final String GPS_TRACK_REF = "GPSTrackRef";
@PropertyType(type=Types.Text, card= Cardinality.Simple)
public static final String GPS_IMG_DIRECTION_REF = "GPSImgDirectionRef";
@PropertyType(type=Types.Text, card= Cardinality.Simple)
public static final String GPS_DEST_BEARING_REF = "GPSDestBearingRef";
@PropertyType(type=Types.Text, card= Cardinality.Simple)
public static final String GPS_DEST_DISTANCE_REF = "GPSDestDistanceRef";
@PropertyType(type=Types.Text, card= Cardinality.Simple)
public static final String GPS_PROCESSING_METHOD = "GPSProcessingMethod";
@PropertyType(type=Types.Text, card= Cardinality.Simple)
public static final String GPS_AREA_INFORMATION = "GPSAreaInformation";
@PropertyType(type=Types.Rational, card= Cardinality.Simple)
public static final String GPS_ALTITUDE = "GPSAltitude";
@PropertyType(type=Types.Rational, card= Cardinality.Simple)
public static final String GPS_DOP = "GPSDOP";
@PropertyType(type=Types.Rational, card= Cardinality.Simple)
public static final String GPS_SPEED = "GPSSpeed";
@PropertyType(type=Types.Rational, card= Cardinality.Simple)
public static final String GPS_TRACK = "GPSTrack";
@PropertyType(type=Types.Rational, card= Cardinality.Simple)
public static final String GPS_IMG_DIRECTION = "GPSImgDirection";
@PropertyType(type=Types.Rational, card= Cardinality.Simple)
public static final String GPS_DEST_BEARING = "GPSDestBearing";
@PropertyType(type=Types.Rational, card= Cardinality.Simple)
public static final String GPS_DEST_DISTANCE = "GPSDestDistance";
@PropertyType(type=Types.Integer, card= Cardinality.Simple)
public static final String GPS_ALTITUDE_REF = "GPSAltitudeRef";
@PropertyType(type=Types.Integer, card= Cardinality.Simple)
public static final String GPS_DIFFERENTIAL = "GPSDifferential";
@PropertyType(type=Types.Date, card= Cardinality.Simple)
public static final String GPS_TIME_STAMP = "GPSTimeStamp";
@PropertyType(type=Types.OECF)
public static final String OECF = "OECF";
@PropertyType(type=Types.OECF)
public static final String SPATIAL_FREQUENCY_RESPONSE = "SpatialFrequencyResponse";
@PropertyType(type=Types.GPSCoordinate)
public static final String GPS_LATITUDE = "GPSLatitude";
@PropertyType(type=Types.GPSCoordinate)
public static final String GPS_LONGITUDE = "GPSLongitude";
@PropertyType(type=Types.GPSCoordinate)
public static final String GPS_DEST_LATITUDE = "GPSDestLatitude";
@PropertyType(type=Types.GPSCoordinate)
public static final String GPS_DEST_LONGITUDE = "GPSDestLongitude";
@PropertyType(type = Types.CFAPattern)
public static final String CFA_PATTERN = "CFAPattern";
@PropertyType(type = Types.Flash)
public static final String FLASH = "Flash";
@PropertyType(type = Types.CFAPattern)
public static final String CFA_PATTERN_TYPE = "CFAPatternType";
@PropertyType(type = Types.DeviceSettings)
public static final String DEVICE_SETTING_DESCRIPTION = "DeviceSettingDescription";
public ExifSchema(XMPMetadata metadata)
{
super(metadata);
}
public ExifSchema(XMPMetadata metadata, String ownPrefix)
{
super(metadata, ownPrefix);
}
/**
* Return the Lang Alt UserComment property
*
* @return user comment property
*/
public ArrayProperty getUserCommentProperty()
{
return (ArrayProperty) getProperty(USER_COMMENT);
}
/**
* Return a list of languages defined in UserComment property
*
* @return list of UserComment languages values defined
*/
public List<String> getUserCommentLanguages()
{
return getUnqualifiedLanguagePropertyLanguagesValue(USER_COMMENT);
}
/**
* Return a language value for UserComment property
*
* @param lang
* language concerned
* @return the UserComment value for specified language
*/
public String getUserComment(String lang)
{
return getUnqualifiedLanguagePropertyValue(USER_COMMENT, lang);
}
/**
* Return the default value for UserComment property
*
* @see ExifSchema#getUserComment(String)
*/
public String getUserComment()
{
return getUserComment(null);
}
}