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 TiffIfdEntry {
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_ExposureTime = 33434;
00130 const uint16_t EXIF_TAG_FNumber = 33437;
00131
00132
00133
00134 const uint32_t TIFF_NewSubfileType_FullRAW = 0;
00135 const uint32_t TIFF_NewSubfileType_MainPreview = 1;
00136 const uint32_t TIFF_NewSubfileType_OtherPreview = 0x10001;
00137 const uint32_t TIFF_NewSubfileType_DEFAULT = 0;
00138
00139 const uint16_t TIFF_PhotometricInterpretation_WhiteIsZero = 0;
00140 const uint16_t TIFF_PhotometricInterpretation_BlackIsZero = 1;
00141 const uint16_t TIFF_PhotometricInterpretation_RGB = 2;
00142 const uint16_t TIFF_PhotometricInterpretation_PaletteRGB = 3;
00143 const uint16_t TIFF_PhotometricInterpretation_TransparencyMask = 4;
00144 const uint16_t TIFF_PhotometricInterpretation_CMYK = 5;
00145 const uint16_t TIFF_PhotometricInterpretation_YCbCr = 6;
00146 const uint16_t TIFF_PhotometricInterpretation_CIELAB = 8;
00147 const uint16_t TIFF_PhotometricInterpretation_ICCLAB = 9;
00148 const uint16_t TIFF_PhotometricInterpretation_ITULAB = 10;
00149 const uint16_t TIFF_PhotometricInterpretation_CFA = 32803;
00150 const uint16_t TIFF_PhotometricInterpretation_LinearRaw = 34892;
00151
00152 const uint16_t TIFF_Compression_Uncompressed = 1;
00153 const uint16_t TIFF_Compression_LZW = 5;
00154 const uint16_t TIFF_Compression_JPEG_old = 6;
00155 const uint16_t TIFF_Compression_JPEG = 7;
00156 const uint16_t TIFF_Compression_DEFAULT = TIFF_Compression_Uncompressed;
00157
00158
00159 const uint16_t TIFF_Orientation_TopLeft = 1;
00160 const uint16_t TIFF_Orientation_TopRight = 2;
00161 const uint16_t TIFF_Orientation_BottomLeft = 3;
00162 const uint16_t TIFF_Orientation_BottomRight = 4;
00163 const uint16_t TIFF_Orientation_LeftTop = 5;
00164 const uint16_t TIFF_Orientation_RightTop = 6;
00165 const uint16_t TIFF_Orientation_LeftBottom = 7;
00166 const uint16_t TIFF_Orientation_RightBottom = 8;
00167
00168 const uint16_t TIFF_SamplesPerPixel_DEFAULT = 1;
00169
00170 const uint32_t TIFF_RowsPerStrip_DEFAULT = 0xFFFFFFFF;
00171
00172 const char TIFFEP_CFAPattern_RGGB[] = {00,01,01,02};
00173 const char TIFFEP_CFAPattern_BGGR[] = {02,01,01,00};
00174 const char TIFFEP_CFAPattern_GRBG[] = {01,00,02,01};
00175 const char TIFFEP_CFAPattern_GBRG[] = {01,02,00,01};
00176
00177
00178 const unsigned int DNG_CalibrationIlluminant_Values = 26;
00179 const unsigned int DNG_CalibrationIlluminant_Temp[] = {
00180 0,
00181
00182
00183 6500,
00184 5000,
00185 3200,
00186 5600,
00187 0,
00188 0,
00189 0,
00190 0,
00191 6500,
00192 6000,
00193 8000,
00194
00195 6430,
00196 6350,
00197 4230,
00198 3450,
00199 0,
00200 2856,
00201 4874,
00202 6774,
00203 5503,
00204 6504,
00205 7504,
00206 5003,
00207
00208 3200,
00209 0
00210 };
00211 const uint16_t DNG_TAG_CalibrationIlluminant_StdA = 17;
00212 const uint16_t DNG_TAG_CalibrationIlluminant_D65 = 21;
00213
00214
00215
00216
00217 const float RGBtoXYZ[] = {
00218 0.4124564, 0.3575761, 0.1804375,
00219 0.2126729, 0.7151522, 0.0721750,
00220 0.0193339, 0.1191920, 0.9503041
00221 };
00222 }
00223
00224 #endif