00001 #ifndef FCAM_TIFFTAGS_H
00002 #define FCAM_TIFFTAGS_H
00003
00004 #include "string.h"
00005 #include <string>
00006 #include <vector>
00007 #include <stdint.h>
00008
00009 namespace FCam {
00010
00011
00012 enum TiffType {
00013 TIFF_BYTE = 1,
00014 TIFF_ASCII = 2,
00015 TIFF_SHORT = 3,
00016 TIFF_LONG = 4,
00017 TIFF_RATIONAL = 5,
00018 TIFF_SBYTE = 6,
00019 TIFF_UNDEFINED = 7,
00020 TIFF_SSHORT = 8,
00021 TIFF_SLONG = 9,
00022 TIFF_SRATIONAL = 10,
00023 TIFF_FLOAT = 11,
00024 TIFF_DOUBLE=12,
00025 TIFF_IFD=13
00026 };
00027
00028 struct TiffEntryInfo {
00029 const char *name;
00030 uint16_t tag;
00031 TiffType type;
00032 };
00033
00034 struct TiffRational {
00035 uint32_t numerator;
00036 uint32_t denominator;
00037 };
00038
00039 struct RawTiffIfdEntry {
00040 uint16_t tag;
00041 uint16_t type;
00042 uint32_t count;
00043 uint32_t offset;
00044 };
00045
00046
00047 const uint32_t headerBytes = 8;
00048 const uint16_t littleEndianMarker = 0x4949;
00049 const uint16_t bigEndianMarker = 0x4D4D;
00050 const uint16_t tiffMagicNumber = 42;
00051
00052
00053 extern const TiffEntryInfo tiffEntryTypes[];
00054 const TiffEntryInfo *tiffEntryLookup(uint16_t tag);
00055 const TiffEntryInfo *tiffEntryLookup(const std::string &entryName);
00056
00057
00058 const uint16_t TIFF_TAG_NewSubFileType = 254;
00059 const uint16_t TIFF_TAG_ImageWidth = 256;
00060 const uint16_t TIFF_TAG_ImageLength = 257;
00061 const uint16_t TIFF_TAG_BitsPerSample = 258;
00062 const uint16_t TIFF_TAG_Compression = 259;
00063 const uint16_t TIFF_TAG_PhotometricInterpretation = 262;
00064 const uint16_t TIFF_TAG_Make = 271;
00065 const uint16_t TIFF_TAG_Model = 272;
00066 const uint16_t TIFF_TAG_StripOffsets = 273;
00067 const uint16_t TIFF_TAG_Orientation = 274;
00068 const uint16_t TIFF_TAG_SamplesPerPixel = 277;
00069 const uint16_t TIFF_TAG_RowsPerStrip = 278;
00070 const uint16_t TIFF_TAG_StripByteCounts = 279;
00071 const uint16_t TIFF_TAG_PlanarConfiguration = 284;
00072 const uint16_t TIFF_TAG_ResolutionUnit = 296;
00073 const uint16_t TIFF_TAG_Software = 305;
00074 const uint16_t TIFF_TAG_DateTime = 306;
00075
00076 const uint16_t TIFFEP_TAG_CFARepeatPatternDim = 33421;
00077 const uint16_t TIFFEP_TAG_CFAPattern = 33422;
00078 const uint16_t TIFFEP_TAG_Flash = 37385;
00079 const uint16_t TIFFEP_TAG_TIFFEPStandardID = 37398;
00080
00081
00082 const uint16_t TIFF_TAG_SubIFDs = 330;
00083
00084
00085 const uint16_t DNG_TAG_DNGVersion = 50706;
00086 const uint16_t DNG_TAG_DNGBackwardVersion = 50707;
00087 const uint16_t DNG_TAG_UniqueCameraModel = 50708;
00088 const uint16_t DNG_TAG_LocalizedCameraModel = 50709;
00089 const uint16_t DNG_TAG_CFAPlaneColor = 50710;
00090 const uint16_t DNG_TAG_CFALayout = 50711;
00091 const uint16_t DNG_TAG_BlackLevelRepeatDim = 50713;
00092 const uint16_t DNG_TAG_BlackLevel = 50714;
00093 const uint16_t DNG_TAG_BlackLevelDeltaH = 50715;
00094 const uint16_t DNG_TAG_BlackLevelDeltaV = 50716;
00095 const uint16_t DNG_TAG_WhiteLevel = 50717;
00096 const uint16_t DNG_TAG_DefaultScale = 50718;
00097 const uint16_t DNG_TAG_DefaultCropOrigin = 50719;
00098 const uint16_t DNG_TAG_DefaultCropSize = 50720;
00099 const uint16_t DNG_TAG_ColorMatrix1 = 50721;
00100 const uint16_t DNG_TAG_ColorMatrix2 = 50722;
00101 const uint16_t DNG_TAG_CameraCalibration1 = 50723;
00102 const uint16_t DNG_TAG_CameraCalibration2 = 50724;
00103 const uint16_t DNG_TAG_ReductionMatrix1 = 50725;
00104 const uint16_t DNG_TAG_ReductionMatrix2 = 50726;
00105 const uint16_t DNG_TAG_AnalogBalance = 50727;
00106 const uint16_t DNG_TAG_AsShotNeutral = 50728;
00107 const uint16_t DNG_TAG_AsShotWhiteXY = 50729;
00108 const uint16_t DNG_TAG_BaselineExposure = 50730;
00109 const uint16_t DNG_TAG_BaselineNoise = 50731;
00110 const uint16_t DNG_TAG_BaselineSharpness = 50732;
00111 const uint16_t DNG_TAG_BayerGreenSplit = 50733;
00112 const uint16_t DNG_TAG_LinearResponseLimit = 50734;
00113 const uint16_t DNG_TAG_LensInfo = 50736;
00114 const uint16_t DNG_TAG_ChromaBlurRadius = 50737;
00115 const uint16_t DNG_TAG_AntiAliasStrength = 50738;
00116 const uint16_t DNG_TAG_ShadowScale = 50739;
00117 const uint16_t DNG_TAG_DNGPrivateData = 50740;
00118 const uint16_t DNG_TAG_MakerNoteSafety = 50741;
00119 const uint16_t DNG_TAG_CalibrationIlluminant1 = 50778;
00120 const uint16_t DNG_TAG_CalibrationIlluminant2 = 50779;
00121 const uint16_t DNG_TAG_BestQualityScale = 50780;
00122 const uint16_t DNG_TAG_ActiveArea = 50829;
00123 const uint16_t DNG_TAG_MaskedAreas = 50830;
00124
00125
00126 const uint16_t DNG_TAG_NoiseProfile = 51041;
00127
00128
00129 const uint16_t EXIF_TAG_ExifIfd = 34665;
00130 const uint16_t EXIF_TAG_ExposureTime = 33434;
00131 const uint16_t EXIF_TAG_FNumber = 33437;
00132 const uint16_t EXIF_TAG_FocalLength = 37386;
00133 const uint16_t EXIF_TAG_SubsecTime = 37520;
00134 const uint16_t EXIF_TAG_ISOSpeedRatings = 34855;
00135 const uint16_t EXIF_TAG_SensitivityType = 34864;
00136
00137
00138
00139 const uint32_t TIFF_NewSubfileType_FullRAW = 0;
00140 const uint32_t TIFF_NewSubfileType_MainPreview = 1;
00141 const uint32_t TIFF_NewSubfileType_OtherPreview = 0x10001;
00142 const uint32_t TIFF_NewSubfileType_DEFAULT = 0;
00143
00144 const uint16_t TIFF_PhotometricInterpretation_WhiteIsZero = 0;
00145 const uint16_t TIFF_PhotometricInterpretation_BlackIsZero = 1;
00146 const uint16_t TIFF_PhotometricInterpretation_RGB = 2;
00147 const uint16_t TIFF_PhotometricInterpretation_PaletteRGB = 3;
00148 const uint16_t TIFF_PhotometricInterpretation_TransparencyMask = 4;
00149 const uint16_t TIFF_PhotometricInterpretation_CMYK = 5;
00150 const uint16_t TIFF_PhotometricInterpretation_YCbCr = 6;
00151 const uint16_t TIFF_PhotometricInterpretation_CIELAB = 8;
00152 const uint16_t TIFF_PhotometricInterpretation_ICCLAB = 9;
00153 const uint16_t TIFF_PhotometricInterpretation_ITULAB = 10;
00154 const uint16_t TIFF_PhotometricInterpretation_CFA = 32803;
00155 const uint16_t TIFF_PhotometricInterpretation_LinearRaw = 34892;
00156
00157 const uint16_t TIFF_Compression_Uncompressed = 1;
00158 const uint16_t TIFF_Compression_LZW = 5;
00159 const uint16_t TIFF_Compression_JPEG_old = 6;
00160 const uint16_t TIFF_Compression_JPEG = 7;
00161 const uint16_t TIFF_Compression_DEFAULT = TIFF_Compression_Uncompressed;
00162
00163
00164 const uint16_t TIFF_Orientation_TopLeft = 1;
00165 const uint16_t TIFF_Orientation_TopRight = 2;
00166 const uint16_t TIFF_Orientation_BottomLeft = 3;
00167 const uint16_t TIFF_Orientation_BottomRight = 4;
00168 const uint16_t TIFF_Orientation_LeftTop = 5;
00169 const uint16_t TIFF_Orientation_RightTop = 6;
00170 const uint16_t TIFF_Orientation_LeftBottom = 7;
00171 const uint16_t TIFF_Orientation_RightBottom = 8;
00172
00173 const uint16_t TIFF_SamplesPerPixel_DEFAULT = 1;
00174
00175 const uint32_t TIFF_RowsPerStrip_DEFAULT = 0xFFFFFFFF;
00176
00177 const char TIFFEP_CFAPattern_RGGB[] = {00,01,01,02};
00178 const char TIFFEP_CFAPattern_BGGR[] = {02,01,01,00};
00179 const char TIFFEP_CFAPattern_GRBG[] = {01,00,02,01};
00180 const char TIFFEP_CFAPattern_GBRG[] = {01,02,00,01};
00181
00182
00183 const unsigned int DNG_CalibrationIlluminant_Values = 26;
00184 const unsigned int DNG_CalibrationIlluminant_Temp[] = {
00185 0,
00186
00187
00188 6500,
00189 5000,
00190 3200,
00191 5600,
00192 0,
00193 0,
00194 0,
00195 0,
00196 6500,
00197 6000,
00198 8000,
00199
00200 6430,
00201 6350,
00202 4230,
00203 3450,
00204 0,
00205 2856,
00206 4874,
00207 6774,
00208 5503,
00209 6504,
00210 7504,
00211 5003,
00212
00213 3200,
00214 0
00215 };
00216 const uint16_t DNG_TAG_CalibrationIlluminant_StdA = 17;
00217 const uint16_t DNG_TAG_CalibrationIlluminant_D65 = 21;
00218
00219 const uint16_t EXIF_TAG_SensitivityType_Unknown = 0;
00220 const uint16_t EXIF_TAG_SensitivityType_SOS = 1;
00221 const uint16_t EXIF_TAG_SensitivityType_REI = 2;
00222 const uint16_t EXIF_TAG_SensitivityType_ISO = 3;
00223 const uint16_t EXIF_TAG_SensitivityType_SOS_REI = 4;
00224 const uint16_t EXIF_TAG_SensitivityType_SOS_ISO = 5;
00225 const uint16_t EXIF_TAG_SensitivityType_REI_ISO = 6;
00226 const uint16_t EXIF_TAG_SensitivityType_SOS_REI_ISO = 7;
00227
00228 }
00229
00230 #endif