This is an automated email from the ASF dual-hosted git repository. ggregory pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-imaging.git
commit 9762aecfdc30b3dfdf4623d243f5709c08c87aa0 Author: Gary Gregory <[email protected]> AuthorDate: Fri Jan 2 22:27:36 2026 -0500 Javadoc --- .../commons/imaging/bytesource/ByteSource.java | 75 ++++++++++- .../commons/imaging/color/ColorConversions.java | 53 ++++++++ .../imaging/formats/jpeg/exif/ExifRewriter.java | 1 - .../formats/tiff/constants/DngTagConstants.java | 140 +++++++++++++++++++++ 4 files changed, 265 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/apache/commons/imaging/bytesource/ByteSource.java b/src/main/java/org/apache/commons/imaging/bytesource/ByteSource.java index b7faa7d1..c724ae40 100644 --- a/src/main/java/org/apache/commons/imaging/bytesource/ByteSource.java +++ b/src/main/java/org/apache/commons/imaging/bytesource/ByteSource.java @@ -29,20 +29,50 @@ import org.apache.commons.io.build.AbstractOrigin.ByteArrayOrigin; import org.apache.commons.io.build.AbstractOrigin.FileOrigin; import org.apache.commons.io.build.AbstractOrigin.PathOrigin; +/** + * A source of bytes for reading image data. + */ public class ByteSource { + /** + * Creates a ByteSource from a byte array. + * + * @param array the byte array. + * @return the ByteSource. + */ public static ByteSource array(final byte[] array) { return new ByteSource(new ByteArrayOrigin(array), null); } + /** + * Creates a ByteSource from a byte array with a name. + * + * @param array the byte array. + * @param name the name. + * @return the ByteSource. + */ public static ByteSource array(final byte[] array, final String name) { return new ByteSource(new ByteArrayOrigin(array), name); } + /** + * Creates a ByteSource from a file. + * + * @param file the file. + * @return the ByteSource. + */ public static ByteSource file(final File file) { return new ByteSource(new FileOrigin(file), file.getName()); } + /** + * Gets an input stream from a ByteSource, skipping the specified number of bytes. + * + * @param byteSource the byte source. + * @param skip the number of bytes to skip. + * @return the input stream. + * @throws IOException if an I/O error occurs. + */ public static final InputStream getInputStream(final ByteSource byteSource, final long skip) throws IOException { InputStream is = null; boolean succeeded = false; @@ -58,10 +88,24 @@ public class ByteSource { return is; } + /** + * Creates a ByteSource from an input stream. + * + * @param is the input stream. + * @param name the name. + * @return the ByteSource. + * @throws IOException if an I/O error occurs. + */ public static ByteSource inputStream(final InputStream is, final String name) throws IOException { return new InputStreamByteSource(is, name); } + /** + * Creates a ByteSource from a path. + * + * @param file the path. + * @return the ByteSource. + */ public static ByteSource path(final Path file) { return new ByteSource(new PathOrigin(file), Objects.toString(file.getFileName(), null)); } @@ -69,19 +113,44 @@ public class ByteSource { private final String fileName; private final AbstractOrigin<?, ?> origin; + /** + * Constructs a new ByteSource. + * + * @param origin the origin. + * @param fileName the file name. + */ ByteSource(final AbstractOrigin<?, ?> origin, final String fileName) { this.origin = Objects.requireNonNull(origin, "origin"); this.fileName = fileName; // may be null } + /** + * Gets a byte array from the specified position. + * + * @param position the position. + * @param length the length. + * @return the byte array. + * @throws IOException if an I/O error occurs. + */ public byte[] getByteArray(final long position, final int length) throws IOException { return origin.getByteArray(position, length); } + /** + * Gets the file name. + * + * @return the file name. + */ public final String getFileName() { return fileName; } + /** + * Gets an input stream. + * + * @return the input stream. + * @throws IOException if an I/O error occurs. + */ public InputStream getInputStream() throws IOException { return origin.getInputStream(); } @@ -89,8 +158,8 @@ public class ByteSource { /** * This operation can be VERY expensive; for InputStream byte sources, the entire stream must be drained to determine its length. * - * @return the byte source length - * @throws IOException if it fails to read the byte source data + * @return the length. + * @throws IOException if an I/O error occurs. */ public long size() throws IOException { return origin.size(); @@ -101,4 +170,4 @@ public class ByteSource { return getClass().getSimpleName() + "[" + getFileName() + "]"; } -} +} \ No newline at end of file diff --git a/src/main/java/org/apache/commons/imaging/color/ColorConversions.java b/src/main/java/org/apache/commons/imaging/color/ColorConversions.java index 4115e527..ec4aae95 100644 --- a/src/main/java/org/apache/commons/imaging/color/ColorConversions.java +++ b/src/main/java/org/apache/commons/imaging/color/ColorConversions.java @@ -16,6 +16,9 @@ */ package org.apache.commons.imaging.color; +/** + * Color space conversions. + */ public final class ColorConversions { // White reference @@ -34,6 +37,14 @@ public final class ColorConversions { /** See: https://en.wikipedia.org/wiki/CIELAB_color_space#From_CIEXYZ_to_CIELAB[10] */ private static final double XYZ_t0 = 0.008856; + /** + * Converts CIE L*a*b* color to ARGB (test version). + * + * @param cieL the L* value. + * @param cieA the a* value. + * @param cieB the b* value. + * @return the ARGB color value. + */ public static int convertCieLabToArgbTest(final int cieL, final int cieA, final int cieB) { final double x; final double y; @@ -78,10 +89,24 @@ public final class ColorConversions { return convertRgbToRgb(r, g, b); } + /** + * Converts CIE L*a*b* to CIE LCH. + * + * @param cielab the CIE L*a*b* color. + * @return the CIE LCH color. + */ public static ColorCieLch convertCieLabToCieLch(final ColorCieLab cielab) { return convertCieLabToCieLch(cielab.l, cielab.a, cielab.b); } + /** + * Converts CIE L*a*b* to CIE LCH. + * + * @param l the L* value. + * @param a the a* value. + * @param b the b* value. + * @return the CIE LCH color. + */ public static ColorCieLch convertCieLabToCieLch(final double l, final double a, final double b) { // atan2(y, x) returns atan(y/x) final double atanba = Math.atan2(b, a); // Quadrant by signs @@ -96,10 +121,24 @@ public final class ColorConversions { return new ColorCieLch(l, C, h); } + /** + * Converts CIE L*a*b* to DIN99b Lab. + * + * @param cie the CIE L*a*b* color. + * @return the DIN99b Lab color. + */ public static ColorDin99Lab convertCieLabToDin99bLab(final ColorCieLab cie) { return convertCieLabToDin99bLab(cie.l, cie.a, cie.b); } + /** + * Converts CIE L*a*b* to DIN99b Lab. + * + * @param l the L* value. + * @param a the a* value. + * @param b the b* value. + * @return the DIN99b Lab color. + */ public static ColorDin99Lab convertCieLabToDin99bLab(final double l, final double a, final double b) { final double fac1 = 100.0 / Math.log(129.0 / 50.0); // = 105.51 final double kE = 1.0; // brightness factor, 1.0 for CIE reference conditions @@ -187,10 +226,24 @@ public final class ColorConversions { return new ColorXyz(x, y, z); } + /** + * Converts CIE LCH to CIE L*a*b*. + * + * @param cielch the CIE LCH color. + * @return the CIE L*a*b* color. + */ public static ColorCieLab convertCieLchToCieLab(final ColorCieLch cielch) { return convertCieLchToCieLab(cielch.l, cielch.c, cielch.h); } + /** + * Converts CIE LCH to CIE L*a*b*. + * + * @param l the L* value. + * @param c the C* value. + * @param h the h° value. + * @return the CIE L*a*b* color. + */ public static ColorCieLab convertCieLchToCieLab(final double l, final double c, final double h) { // Where CIE-H° = 0 ÷ 360° diff --git a/src/main/java/org/apache/commons/imaging/formats/jpeg/exif/ExifRewriter.java b/src/main/java/org/apache/commons/imaging/formats/jpeg/exif/ExifRewriter.java index ab131294..21d4882e 100644 --- a/src/main/java/org/apache/commons/imaging/formats/jpeg/exif/ExifRewriter.java +++ b/src/main/java/org/apache/commons/imaging/formats/jpeg/exif/ExifRewriter.java @@ -214,7 +214,6 @@ public class ExifRewriter extends BinaryFileParser { /** * Reads a JPEG image, removes all EXIF metadata (by removing the APP1 segment), and writes the result to a stream. - * <p> * * @param src Image file. * @param os OutputStream to write the image to. diff --git a/src/main/java/org/apache/commons/imaging/formats/tiff/constants/DngTagConstants.java b/src/main/java/org/apache/commons/imaging/formats/tiff/constants/DngTagConstants.java index 82a7a004..f894603a 100644 --- a/src/main/java/org/apache/commons/imaging/formats/tiff/constants/DngTagConstants.java +++ b/src/main/java/org/apache/commons/imaging/formats/tiff/constants/DngTagConstants.java @@ -47,103 +47,150 @@ import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoUndefineds; */ public final class DngTagConstants { + /** DNG version tag. */ public static final TagInfoBytes EXIF_TAG_DNG_VERSION = new TagInfoBytes("DNGVersion", 0xc612, 4, TiffDirectoryType.EXIF_DIRECTORY_IFD0); + /** DNG backward version tag. */ public static final TagInfoBytes EXIF_TAG_DNG_BACKWARD_VERSION = new TagInfoBytes("DNGBackwardVersion", 0xc613, 4, TiffDirectoryType.EXIF_DIRECTORY_IFD0); + /** Unique camera model tag. */ public static final TagInfoAscii EXIF_TAG_UNIQUE_CAMERA_MODEL = new TagInfoAscii("UniqueCameraModel", 0xc614, -1, TiffDirectoryType.EXIF_DIRECTORY_IFD0); + /** Localized camera model tag. */ public static final TagInfoAsciiOrByte EXIF_TAG_LOCALIZED_CAMERA_MODEL = new TagInfoAsciiOrByte("LocalizedCameraModel", 0xc615, -1, TiffDirectoryType.EXIF_DIRECTORY_IFD0); + /** CFA plane color tag. */ public static final TagInfoBytes EXIF_TAG_CFAPLANE_COLOR = new TagInfoBytes("CFAPlaneColor", 0xc616, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); + /** CFA layout tag. */ public static final TagInfoShort EXIF_TAG_CFALAYOUT = new TagInfoShort("CFALayout", 0xc617, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); + /** CFA layout value: rectangular. */ public static final int CFALAYOUT_VALUE_RECTANGULAR = 1; + /** CFA layout value: even columns offset down 1/2 row. */ public static final int CFALAYOUT_VALUE_EVEN_COLUMNS_OFFSET_DOWN_1_2_ROW = 2; + /** CFA layout value: even columns offset up 1/2 row. */ public static final int CFALAYOUT_VALUE_EVEN_COLUMNS_OFFSET_UP_1_2_ROW = 3; + /** CFA layout value: even rows offset right 1/2 column. */ public static final int CFALAYOUT_VALUE_EVEN_ROWS_OFFSET_RIGHT_1_2_COLUMN = 4; + /** CFA layout value: even rows offset left 1/2 column. */ public static final int CFALAYOUT_VALUE_EVEN_ROWS_OFFSET_LEFT_1_2_COLUMN = 5; + /** CFA layout value: even rows offset up 1/2 row, even columns offset left 1/2 column. */ public static final int CFALAYOUT_VALUE_EVEN_ROWS_OFFSET_UP_1_2_ROW_EVEN_COLUMNS_OFFSET_LEFT_1_2_COLUMN = 6; + /** CFA layout value: even rows offset up 1/2 row, even columns offset right 1/2 column. */ public static final int CFALAYOUT_VALUE_EVEN_ROWS_OFFSET_UP_1_2_ROW_EVEN_COLUMNS_OFFSET_RIGHT_1_2_COLUMN = 7; + /** CFA layout value: even rows offset down 1/2 row, even columns offset left 1/2 column. */ public static final int CFALAYOUT_VALUE_EVEN_ROWS_OFFSET_DOWN_1_2_ROW_EVEN_COLUMNS_OFFSET_LEFT_1_2_COLUMN = 8; + /** CFA layout value: even rows offset down 1/2 row, even columns offset right 1/2 column. */ public static final int CFALAYOUT_VALUE_EVEN_ROWS_OFFSET_DOWN_1_2_ROW_EVEN_COLUMNS_OFFSET_RIGHT_1_2_COLUMN = 9; + /** Linearization table tag. */ public static final TagInfoShorts EXIF_TAG_LINEARIZATION_TABLE = new TagInfoShorts("LinearizationTable", 0xc618, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); + /** Black level repeat dimensions tag. */ public static final TagInfoShorts EXIF_TAG_BLACK_LEVEL_REPEAT_DIM = new TagInfoShorts("BlackLevelRepeatDim", 0xc619, 2, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); + /** Black level tag. */ public static final TagInfoShortOrLongOrRational EXIF_TAG_BLACK_LEVEL = new TagInfoShortOrLongOrRational("BlackLevel", 0xc61a, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); + /** Black level delta H tag. */ public static final TagInfoSRationals EXIF_TAG_BLACK_LEVEL_DELTA_H = new TagInfoSRationals("BlackLevelDeltaH", 0xc61b, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); + /** Black level delta V tag. */ public static final TagInfoSRationals EXIF_TAG_BLACK_LEVEL_DELTA_V = new TagInfoSRationals("BlackLevelDeltaV", 0xc61c, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); + /** White level tag. */ public static final TagInfoShortOrLong EXIF_TAG_WHITE_LEVEL = new TagInfoShortOrLong("WhiteLevel", 0xc61d, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); + /** Default scale tag. */ public static final TagInfoRationals EXIF_TAG_DEFAULT_SCALE = new TagInfoRationals("DefaultScale", 0xc61e, 2, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); + /** Default crop origin tag. */ public static final TagInfoShortOrLongOrRational EXIF_TAG_DEFAULT_CROP_ORIGIN = new TagInfoShortOrLongOrRational("DefaultCropOrigin", 0xc61f, 2, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); + /** Default crop size tag. */ public static final TagInfoShortOrLongOrRational EXIF_TAG_DEFAULT_CROP_SIZE = new TagInfoShortOrLongOrRational("DefaultCropSize", 0xc620, 2, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); + /** Color matrix 1 tag. */ public static final TagInfoSRationals EXIF_TAG_COLOR_MATRIX_1 = new TagInfoSRationals("ColorMatrix1", 0xc621, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); + /** Color matrix 2 tag. */ public static final TagInfoSRationals EXIF_TAG_COLOR_MATRIX_2 = new TagInfoSRationals("ColorMatrix2", 0xc622, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); + /** Camera calibration 1 tag. */ public static final TagInfoSRationals EXIF_TAG_CAMERA_CALIBRATION_1 = new TagInfoSRationals("CameraCalibration1", 0xc623, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); + /** Camera calibration 2 tag. */ public static final TagInfoSRationals EXIF_TAG_CAMERA_CALIBRATION_2 = new TagInfoSRationals("CameraCalibration2", 0xc624, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); + /** Reduction matrix 1 tag. */ public static final TagInfoSRationals EXIF_TAG_REDUCTION_MATRIX_1 = new TagInfoSRationals("ReductionMatrix1", 0xc625, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); + /** Reduction matrix 2 tag. */ public static final TagInfoSRationals EXIF_TAG_REDUCTION_MATRIX_2 = new TagInfoSRationals("ReductionMatrix2", 0xc626, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); + /** Analog balance tag. */ public static final TagInfoRationals EXIF_TAG_ANALOG_BALANCE = new TagInfoRationals("AnalogBalance", 0xc627, -1, TiffDirectoryType.EXIF_DIRECTORY_IFD0); + /** As-shot neutral tag. */ public static final TagInfoShortOrRational EXIF_TAG_AS_SHOT_NEUTRAL = new TagInfoShortOrRational("AsShotNeutral", 0xc628, -1, TiffDirectoryType.EXIF_DIRECTORY_IFD0); + /** As-shot white XY tag. */ public static final TagInfoRationals EXIF_TAG_AS_SHOT_WHITE_XY = new TagInfoRationals("AsShotWhiteXY", 0xc629, 2, TiffDirectoryType.EXIF_DIRECTORY_IFD0); + /** Baseline exposure tag. */ public static final TagInfoSRational EXIF_TAG_BASELINE_EXPOSURE = new TagInfoSRational("BaselineExposure", 0xc62a, TiffDirectoryType.EXIF_DIRECTORY_IFD0); + /** Baseline noise tag. */ public static final TagInfoRational EXIF_TAG_BASELINE_NOISE = new TagInfoRational("BaselineNoise", 0xc62b, TiffDirectoryType.EXIF_DIRECTORY_IFD0); + /** Baseline sharpness tag. */ public static final TagInfoRational EXIF_TAG_BASELINE_SHARPNESS = new TagInfoRational("BaselineSharpness", 0xc62c, TiffDirectoryType.EXIF_DIRECTORY_IFD0); + /** Bayer green split tag. */ public static final TagInfoLong EXIF_TAG_BAYER_GREEN_SPLIT = new TagInfoLong("BayerGreenSplit", 0xc62d, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); + /** Linear response limit tag. */ public static final TagInfoRational EXIF_TAG_LINEAR_RESPONSE_LIMIT = new TagInfoRational("LinearResponseLimit", 0xc62e, TiffDirectoryType.EXIF_DIRECTORY_IFD0); + /** Camera serial number tag. */ public static final TagInfoAscii EXIF_TAG_CAMERA_SERIAL_NUMBER = new TagInfoAscii("CameraSerialNumber", 0xc62f, -1, TiffDirectoryType.EXIF_DIRECTORY_IFD0); + /** DNG lens info tag. */ public static final TagInfoRationals EXIF_TAG_DNG_LENS_INFO = new TagInfoRationals("DNGLensInfo", 0xc630, 4, TiffDirectoryType.EXIF_DIRECTORY_IFD0); + /** Chroma blur radius tag. */ public static final TagInfoRational EXIF_TAG_CHROMA_BLUR_RADIUS = new TagInfoRational("ChromaBlurRadius", 0xc631, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); + /** Anti-alias strength tag. */ public static final TagInfoRational EXIF_TAG_ANTI_ALIAS_STRENGTH = new TagInfoRational("AntiAliasStrength", 0xc632, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); + /** Shadow scale tag. */ public static final TagInfoRational EXIF_TAG_SHADOW_SCALE = new TagInfoRational("ShadowScale", 0xc633, TiffDirectoryType.EXIF_DIRECTORY_IFD0); + /** DNG private data tag. */ public static final TagInfoBytes EXIF_TAG_DNG_PRIVATE_DATA = new TagInfoBytes("DNGPrivateData", 0xc634, -1, TiffDirectoryType.EXIF_DIRECTORY_IFD0); + /** Maker note safety tag. */ public static final TagInfoShort EXIF_TAG_MAKER_NOTE_SAFETY = new TagInfoShort("MakerNoteSafety", 0xc635, TiffDirectoryType.EXIF_DIRECTORY_IFD0); + /** Maker note safety value: unsafe. */ public static final int MAKER_NOTE_SAFETY_VALUE_UNSAFE = 0; + /** Maker note safety value: safe. */ public static final int MAKER_NOTE_SAFETY_VALUE_SAFE = 1; /** Calibration illuminant 1 tag. */ @@ -210,149 +257,242 @@ public final class DngTagConstants { /** Calibration illuminant 1 value: other. */ public static final int CALIBRATION_ILLUMINANT_1_VALUE_OTHER = 255; + /** Calibration illuminant 2 tag. */ public static final TagInfoShort EXIF_TAG_CALIBRATION_ILLUMINANT_2 = new TagInfoShort("CalibrationIlluminant2", 0xc65b, TiffDirectoryType.EXIF_DIRECTORY_IFD0); + + /** Calibration illuminant 2 value: daylight. */ public static final int CALIBRATION_ILLUMINANT_2_VALUE_DAYLIGHT = 1; + + /** Calibration illuminant 2 value: fluorescent. */ public static final int CALIBRATION_ILLUMINANT_2_VALUE_FLUORESCENT = 2; + + /** Calibration illuminant 2 value: tungsten. */ public static final int CALIBRATION_ILLUMINANT_2_VALUE_TUNGSTEN = 3; + + /** Calibration illuminant 2 value: flash. */ public static final int CALIBRATION_ILLUMINANT_2_VALUE_FLASH = 4; + + /** Calibration illuminant 2 value: fine weather. */ public static final int CALIBRATION_ILLUMINANT_2_VALUE_FINE_WEATHER = 9; + + /** Calibration illuminant 2 value: cloudy. */ public static final int CALIBRATION_ILLUMINANT_2_VALUE_CLOUDY = 10; + + /** Calibration illuminant 2 value: shade. */ public static final int CALIBRATION_ILLUMINANT_2_VALUE_SHADE = 11; + + /** Calibration illuminant 2 value: daylight fluorescent. */ public static final int CALIBRATION_ILLUMINANT_2_VALUE_DAYLIGHT_FLUORESCENT = 12; + + /** Calibration illuminant 2 value: day white fluorescent. */ public static final int CALIBRATION_ILLUMINANT_2_VALUE_DAY_WHITE_FLUORESCENT = 13; + + /** Calibration illuminant 2 value: cool white fluorescent. */ public static final int CALIBRATION_ILLUMINANT_2_VALUE_COOL_WHITE_FLUORESCENT = 14; + + /** Calibration illuminant 2 value: white fluorescent. */ public static final int CALIBRATION_ILLUMINANT_2_VALUE_WHITE_FLUORESCENT = 15; + + /** Calibration illuminant 2 value: standard light A. */ public static final int CALIBRATION_ILLUMINANT_2_VALUE_STANDARD_LIGHT_A = 17; + + /** Calibration illuminant 2 value: standard light B. */ public static final int CALIBRATION_ILLUMINANT_2_VALUE_STANDARD_LIGHT_B = 18; + + /** Calibration illuminant 2 value: standard light C. */ public static final int CALIBRATION_ILLUMINANT_2_VALUE_STANDARD_LIGHT_C = 19; + + /** Calibration illuminant 2 value: D55. */ public static final int CALIBRATION_ILLUMINANT_2_VALUE_D55 = 20; + + /** Calibration illuminant 2 value: D65. */ public static final int CALIBRATION_ILLUMINANT_2_VALUE_D65 = 21; + + /** Calibration illuminant 2 value: D75. */ public static final int CALIBRATION_ILLUMINANT_2_VALUE_D75 = 22; + + /** Calibration illuminant 2 value: D50. */ public static final int CALIBRATION_ILLUMINANT_2_VALUE_D50 = 23; + + /** Calibration illuminant 2 value: ISO studio tungsten. */ public static final int CALIBRATION_ILLUMINANT_2_VALUE_ISO_STUDIO_TUNGSTEN = 24; + + /** Calibration illuminant 2 value: other. */ public static final int CALIBRATION_ILLUMINANT_2_VALUE_OTHER = 255; + /** Best quality scale tag. */ public static final TagInfoRational EXIF_TAG_BEST_QUALITY_SCALE = new TagInfoRational("BestQualityScale", 0xc65c, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); + /** Raw data unique ID tag. */ public static final TagInfoBytes EXIF_TAG_RAW_DATA_UNIQUE_ID = new TagInfoBytes("RawDataUniqueID", 0xc65d, 16, TiffDirectoryType.EXIF_DIRECTORY_IFD0); + /** Original raw file name tag. */ public static final TagInfoAsciiOrByte EXIF_TAG_ORIGINAL_RAW_FILE_NAME = new TagInfoAsciiOrByte("OriginalRawFileName", 0xc68b, -1, TiffDirectoryType.EXIF_DIRECTORY_IFD0); + /** Original raw file data tag. */ public static final TagInfoUndefineds EXIF_TAG_ORIGINAL_RAW_FILE_DATA = new TagInfoUndefineds("OriginalRawFileData", 0xc68c, -1, TiffDirectoryType.EXIF_DIRECTORY_IFD0); + /** Active area tag. */ public static final TagInfoShortOrLong EXIF_TAG_ACTIVE_AREA = new TagInfoShortOrLong("ActiveArea", 0xc68d, 4, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); + /** Masked areas tag. */ public static final TagInfoShortOrLong EXIF_TAG_MASKED_AREAS = new TagInfoShortOrLong("MaskedAreas", 0xc68e, 4, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); + /** As-shot ICC profile tag. */ public static final TagInfoUndefineds EXIF_TAG_AS_SHOT_ICCPROFILE = new TagInfoUndefineds("AsShotICCProfile", 0xc68f, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); + /** As-shot pre-profile matrix tag. */ public static final TagInfoSRationals EXIF_TAG_AS_SHOT_PRE_PROFILE_MATRIX = new TagInfoSRationals("AsShotPreProfileMatrix", 0xc690, -1, TiffDirectoryType.EXIF_DIRECTORY_IFD0); + /** Current ICC profile tag. */ public static final TagInfoUndefineds EXIF_TAG_CURRENT_ICCPROFILE = new TagInfoUndefineds("CurrentICCProfile", 0xc691, -1, TiffDirectoryType.EXIF_DIRECTORY_IFD0); + /** Current pre-profile matrix tag. */ public static final TagInfoSRationals EXIF_TAG_CURRENT_PRE_PROFILE_MATRIX = new TagInfoSRationals("CurrentPreProfileMatrix", 0xc692, -1, TiffDirectoryType.EXIF_DIRECTORY_IFD0); + /** Colorimetric reference tag. */ public static final TagInfoShort EXIF_TAG_COLORIMETRIC_REFERENCE = new TagInfoShort("ColorimetricReference", 0xc6bf, TiffDirectoryType.EXIF_DIRECTORY_IFD0); + /** Colorimetric reference value: scene referred. */ public static final short COLORIMETRIC_REFERENCE_VALUE_SCENE_REFERRED = 0; + /** Colorimetric reference value: output referred. */ public static final short COLORIMETRIC_REFERENCE_VALUE_OUTPUT_REFERRED = 1; + /** Camera calibration signature tag. */ public static final TagInfoAsciiOrByte EXIF_TAG_CAMERA_CALIBRATION_SIGNATURE = new TagInfoAsciiOrByte("CameraCalibrationSignature", 0xc6f3, -1, TiffDirectoryType.EXIF_DIRECTORY_IFD0); + /** Profile calibration signature tag. */ public static final TagInfoAsciiOrByte EXIF_TAG_PROFILE_CALIBRATION_SIGNATURE = new TagInfoAsciiOrByte("ProfileCalibrationSignature", 0xc6f4, -1, TiffDirectoryType.EXIF_DIRECTORY_IFD0); + /** Extra camera profiles tag. */ public static final TagInfoLongs EXIF_TAG_EXTRA_CAMERA_PROFILES = new TagInfoLongs("ExtraCameraProfiles", 0xc6f5, -1, TiffDirectoryType.EXIF_DIRECTORY_IFD0); + /** As-shot profile name tag. */ public static final TagInfoAsciiOrByte EXIF_TAG_AS_SHOT_PROFILE_NAME = new TagInfoAsciiOrByte("AsShotProfileName", 0xc6f6, -1, TiffDirectoryType.EXIF_DIRECTORY_IFD0); + /** Noise reduction applied tag. */ public static final TagInfoRational EXIF_TAG_NOISE_REDUCTION_APPLIED = new TagInfoRational("NoiseReductionApplied", 0xc6f7, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); + /** Profile name tag. */ public static final TagInfoAscii EXIF_TAG_PROFILE_NAME = new TagInfoAscii("ProfileName", 0xc6f8, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); + /** Profile hue saturation map dimensions tag. */ public static final TagInfoLongs EXIF_TAG_PROFILE_HUE_SAT_MAP_DIMS = new TagInfoLongs("ProfileHueSatMapDims", 0xc6f9, 3, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); + /** Profile hue saturation map data 1 tag. */ public static final TagInfoFloats EXIF_TAG_PROFILE_HUE_SAT_MAP_DATA1 = new TagInfoFloats("ProfileHueSatMapData1", 0xc6fa, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); + /** Profile hue saturation map data 2 tag. */ public static final TagInfoFloats EXIF_TAG_PROFILE_HUE_SAT_MAP_DATA2 = new TagInfoFloats("ProfileHueSatMapData2", 0xc6fb, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); + /** Profile tone curve tag. */ public static final TagInfoFloats EXIF_TAG_PROFILE_TONE_CURVE = new TagInfoFloats("ProfileToneCurve", 0xc6fc, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); + /** Profile embed policy tag. */ public static final TagInfoLong EXIF_TAG_PROFILE_EMBED_POLICY = new TagInfoLong("ProfileEmbedPolicy", 0xc6fd, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); + /** Profile embed policy value: allow copying. */ public static final int PROFILE_EMBED_POLICY_VALUE_ALLOW_COPYING = 0; + /** Profile embed policy value: embed if used. */ public static final int PROFILE_EMBED_POLICY_VALUE_EMBED_IF_USED = 1; + /** Profile embed policy value: embed never. */ public static final int PROFILE_EMBED_POLICY_VALUE_EMBED_NEVER = 2; + /** Profile embed policy value: no restrictions. */ public static final int PROFILE_EMBED_POLICY_VALUE_NO_RESTRICTIONS = 3; + /** Profile copyright tag. */ public static final TagInfoAsciiOrByte EXIF_TAG_PROFILE_COPYRIGHT = new TagInfoAsciiOrByte("ProfileCopyright", 0xc6fe, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); + /** Forward matrix 1 tag. */ public static final TagInfoSRationals EXIF_TAG_FORWARD_MATRIX1 = new TagInfoSRationals("ForwardMatrix1", 0xc714, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); + /** Forward matrix 2 tag. */ public static final TagInfoSRationals EXIF_TAG_FORWARD_MATRIX2 = new TagInfoSRationals("ForwardMatrix2", 0xc715, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); + /** Preview application name tag. */ public static final TagInfoAsciiOrByte EXIF_TAG_PREVIEW_APPLICATION_NAME = new TagInfoAsciiOrByte("PreviewApplicationName", 0xc716, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); + /** Preview application version tag. */ public static final TagInfoAsciiOrByte EXIF_TAG_PREVIEW_APPLICATION_VERSION = new TagInfoAsciiOrByte("PreviewApplicationVersion", 0xc717, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); + /** Preview settings name tag. */ public static final TagInfoAsciiOrByte EXIF_TAG_PREVIEW_SETTINGS_NAME = new TagInfoAsciiOrByte("PreviewSettingsName", 0xc718, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); + /** Preview settings digest tag. */ public static final TagInfoBytes EXIF_TAG_PREVIEW_SETTINGS_DIGEST = new TagInfoBytes("PreviewSettingsDigest", 0xc719, 16, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); /** Preview colorspace tag. */ public static final TagInfoLong EXIF_TAG_PREVIEW_COLORSPACE = new TagInfoLong("PreviewColorspace", 0xc71a, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); + /** Preview colorspace value: unknown. */ public static final int PREVIEW_COLORSPACE_VALUE_UNKNOWN = 0; + /** Preview colorspace value: gray gamma 2.2. */ public static final int PREVIEW_COLORSPACE_VALUE_GRAY_GAMMA_2_2 = 1; + /** Preview colorspace value: sRGB. */ public static final int PREVIEW_COLORSPACE_VALUE_sRGB = 2; + /** Preview colorspace value: Adobe RGB. */ public static final int PREVIEW_COLORSPACE_VALUE_ADOBE_RGB = 3; + /** Preview colorspace value: ProPhoto RGB. */ public static final int PREVIEW_COLORSPACE_VALUE_PROPHOTO_RGB = 4; + /** Preview date time tag. */ public static final TagInfoAscii EXIF_TAG_PREVIEW_DATE_TIME = new TagInfoAscii("PreviewDateTime", 0xc71b, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); + /** Raw image digest tag. */ public static final TagInfoBytes EXIF_TAG_RAW_IMAGE_DIGEST = new TagInfoBytes("RawImageDigest", 0xc71c, 16, TiffDirectoryType.EXIF_DIRECTORY_IFD0); + /** Original raw file digest tag. */ public static final TagInfoBytes EXIF_TAG_ORIGINAL_RAW_FILE_DIGEST = new TagInfoBytes("OriginalRawFileDigest", 0xc71d, 16, TiffDirectoryType.EXIF_DIRECTORY_IFD0); + /** Sub-tile block size tag. */ public static final TagInfoShortOrLong EXIF_TAG_SUB_TILE_BLOCK_SIZE = new TagInfoShortOrLong("SubTileBlockSize", 0xc71e, 2, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); + /** Row interleave factor tag. */ public static final TagInfoShortOrLong EXIF_TAG_ROW_INTERLEAVE_FACTOR = new TagInfoShortOrLong("RowInterleaveFactor", 0xc71f, 1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); + /** Profile look table dimensions tag. */ public static final TagInfoLongs EXIF_TAG_PROFILE_LOOK_TABLE_DIMS = new TagInfoLongs("ProfileLookTableDims", 0xc725, 3, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); + /** Profile look table data tag. */ public static final TagInfoFloats EXIF_TAG_PROFILE_LOOK_TABLE_DATA = new TagInfoFloats("ProfileLookTableData", 0xc726, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); + /** Opcode list 1 tag. */ public static final TagInfoUndefineds EXIF_TAG_OPCODE_LIST_1 = new TagInfoUndefineds("OpcodeList1", 0xc740, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); + /** Opcode list 2 tag. */ public static final TagInfoUndefineds EXIF_TAG_OPCODE_LIST_2 = new TagInfoUndefineds("OpcodeList2", 0xc741, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); + /** Opcode list 3 tag. */ public static final TagInfoUndefineds EXIF_TAG_OPCODE_LIST_3 = new TagInfoUndefineds("OpcodeList3", 0xc74E, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); + /** Noise profile tag. */ public static final TagInfoDoubles EXIF_TAG_NOISE_PROFILE = new TagInfoDoubles("NoiseProfile", 0xc761, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); + /** List of all DNG tags. */ public static final List<TagInfo> ALL_DNG_TAGS = Collections.unmodifiableList(Arrays.asList(EXIF_TAG_DNG_VERSION, EXIF_TAG_DNG_BACKWARD_VERSION, EXIF_TAG_UNIQUE_CAMERA_MODEL, EXIF_TAG_LOCALIZED_CAMERA_MODEL, EXIF_TAG_CFAPLANE_COLOR, EXIF_TAG_CFALAYOUT, EXIF_TAG_LINEARIZATION_TABLE, EXIF_TAG_BLACK_LEVEL_REPEAT_DIM, EXIF_TAG_BLACK_LEVEL, EXIF_TAG_BLACK_LEVEL_DELTA_H, EXIF_TAG_BLACK_LEVEL_DELTA_V, EXIF_TAG_WHITE_LEVEL,
