/* * @(#)BaselineTIFFTagSet.java 1.0 2010-07-24 * * Copyright (c) 2010 Werner Randelshofer, Goldau, Switzerland. * All rights reserved. * * You may not use, copy or modify this file, except in compliance with the * license agreement you entered into with Werner Randelshofer. * For details see accompanying license terms. */ package org.monte.media.exif; import org.monte.media.tiff.TagSet; import org.monte.media.tiff.EnumValueFormatter; import org.monte.media.tiff.*; import static org.monte.media.tiff.TIFFTag.*; /** * Syntethic tags for the entry information Multi-Picture format (MPF) tags * as found in MPO image files generated by Fujifilm Finepix Real 3D W1 * cameras. * <p> * Source: * <p> * Multi-Picture Format * (February 4, 2009). Standard of the Camera & Imaging Products Association. * CIPA DC-007-Translation-2009. * <a href="http://www.cipa.jp/english/hyoujunka/kikaku/pdf/DC-007_E.pdf"> * http://www.cipa.jp/english/hyoujunka/kikaku/pdf/DC-007_E.pdf</a> * * * @author Werner Randelshofer * @version 1.0 2010-07-24 Created. */ public class MPEntryTagSet extends TagSet { public final static int TAG_DependentParentImageFlag = -1; public final static int TAG_DependentChildImageFlag = -2; public final static int TAG_RepresentativeImageFlag = -3; public final static int TAG_ImageDataFormat = -4; public final static int TAG_MPTypeCode = -5; public final static int TAG_IndividualImageSize = -6; public final static int TAG_IndividualImageDataOffset = -7; public final static int TAG_DependentImage1EntryNumber = -8; public final static int TAG_DependentImage2EntryNumber = -9; // /** Individual Image Data Offset * This field specifies the data offset to the beginning (i.e. SOI marker) * of an Individual Image. The field is specified as a LONG value, and the * byte order depends on MP Endian. This offset is specified relative to the * address of the MP Endian field in the MP Header (see ยง5.2), unless the * image is a First Individual Image, in which case the value of the offset * shall be NULL(00000000.H). */ public final static TIFFTag IndividualImageDataOffset = new TIFFTag("IndividualImageDataOffset", TAG_IndividualImageDataOffset, LONG_MASK); /** Individual Image Size * This field specifies the size of the image data between the SOI and EOI * markers of an Individual Image. The field is specified as a LONG value, * and the byte order depends on MP Endian. */ public final static TIFFTag IndividualImageSize = new TIFFTag("IndividualImageSize", TAG_IndividualImageSize, LONG_MASK); // private static MPEntryTagSet instance; private MPEntryTagSet(TIFFTag[] tags) { super("MPEntry", tags); } public static TIFFTag get(int tagNumber) { return getInstance().getTag(tagNumber); } /** Returns a shared instance of a BaselineTIFFTagSet. */ public static MPEntryTagSet getInstance() { if (instance == null) { TIFFTag[] tags = {// new TIFFTag("IndividualImageUniqueIDList", 0xb003, SHORT_MASK), new TIFFTag("TotalNumberOfCapturedFrames", 0xb004, SHORT_MASK), new TIFFTag("MPIndividualImageNumber", 0xb101, LONG_MASK), new TIFFTag("PanOrientation", 0xb201, LONG_MASK), new TIFFTag("PanOverlap_H", 0xb202, RATIONAL_MASK), new TIFFTag("PanOverlap_V", 0xb203, RATIONAL_MASK), new TIFFTag("BaseViewpointNum", 0xb204, LONG_MASK), new TIFFTag("ConvergenceAngle", 0xb205, SRATIONAL_MASK), new TIFFTag("BaselineLength", 0xb206, RATIONAL_MASK), new TIFFTag("VerticalDivergence", 0xb207, SRATIONAL_MASK), new TIFFTag("AxisDistance_X", 0xb208, SRATIONAL_MASK), new TIFFTag("AxisDistance_Y", 0xb209, SRATIONAL_MASK), new TIFFTag("AxisDistance_Z", 0xb20a, SRATIONAL_MASK), new TIFFTag("YawAngle", 0xb20b, SRATIONAL_MASK), new TIFFTag("PitchAngle", 0xb20c, SRATIONAL_MASK), new TIFFTag("RollAngle", 0xb20d, SRATIONAL_MASK), // // // Synthetic tags /** Dependent Parent Image Flag: * this flag shall be set to 1 if the Individual Image is the parent image * of another dependent Individual Image. Otherwise it shall be set to 0. */ new TIFFTag("DependentParentImageFlag", TAG_DependentParentImageFlag, BYTE_MASK, new EnumValueFormatter( "notAParent", 0,// "isParent", 1// )), /** Dependent Child Image Flag: * this flag shall be set to 1 if the * Individual Image is the dependent child image of another * Individual Image. Otherwise it shall be set to 0.* */ new TIFFTag("DependentChildImageFlag", TAG_DependentChildImageFlag, BYTE_MASK, new EnumValueFormatter( "notAChild", 0,// "isChild", 1// )), /** Representative Image Flag: * if the Individual Image is a Representative Image, this flag is set to 1. * Otherwise it is set to 0. There can be only one Individual Image in an MP * File with the Representative Image Flag set to 1.*/ new TIFFTag("RepresentativeImageFlag", TAG_RepresentativeImageFlag, BYTE_MASK, new EnumValueFormatter( "notRepresentative", 0,// "isRepresentative", 1// )), // /** Image Data Format: * this code specifies the image data format of an Individual Image: * 0 : JPEG, * other : (Reserved). */ new TIFFTag("ImageDataFormat", TAG_ImageDataFormat, BYTE_MASK, new EnumValueFormatter( "JPEG", 0// )), // /** MP Type Code: * this code specifies the MP Type of an Individual Image. */ new TIFFTag("MPTypeCode", TAG_MPTypeCode, LONG_MASK, new EnumValueFormatter( "BaselineMPPrimaryImage", 0x30000, // "LargeThumbnailVGA", 0x10001, // "LargeThumbnailFullHD", 0x10002, // "MultiFramePanoramaImage", 0x20001, // "MultiFrameDisparityImage", 0x20002, // "MultiFrameMultiAngleImage", 0x20003, // "Undefined", 0x0 // // )), // IndividualImageSize, IndividualImageDataOffset, /** Dependent Image x Entry Number(s) * An Entry Number specifies the position of an arbitrary MP Entry relative to * the first MP Entry. The field is specified as a SHORT value, and the * byte order depends on MP Endian. * - The Entry Number of the first MP Entry is 1. * - If there are no Dependent Images then both the Dependent Image 1 Entry * Number and the Dependent Image 2 Entry Number fields are set to 0. * - If the Individual Image is a parent image (i.e. the Dependent Parent * Image Flag in the Individual Image Attribute field is set to 1) the * flags in this field are set depending on the number of Dependent * Images: * a.) If there is one dependent child image the Dependent Image 1 Entry * Number is set to the entry number of the dependent child image, * and the Dependent Image 2 Entry Number flag is set to 0. * b.) If there are two Dependent Images, the entry number of each * respective child image is specified in the Dependent Image 1 and * Dependent Image 2 Entry Number fields. * - An Individual Image may have up to two Dependent Images. */ new TIFFTag("DependentImage1EntryNumber", TAG_DependentImage1EntryNumber, SHORT_MASK), // new TIFFTag("DependentImage2EntryNumber", TAG_DependentImage2EntryNumber, SHORT_MASK), // // }; instance = new MPEntryTagSet(tags); } return instance; } }