1*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/ 2*fd1fabb7SAndroid Build Coastguard Worker // Copyright 2006-2007 Adobe Systems Incorporated 3*fd1fabb7SAndroid Build Coastguard Worker // All Rights Reserved. 4*fd1fabb7SAndroid Build Coastguard Worker // 5*fd1fabb7SAndroid Build Coastguard Worker // NOTICE: Adobe permits you to use, modify, and distribute this file in 6*fd1fabb7SAndroid Build Coastguard Worker // accordance with the terms of the Adobe license agreement accompanying it. 7*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/ 8*fd1fabb7SAndroid Build Coastguard Worker 9*fd1fabb7SAndroid Build Coastguard Worker /* $Id: //mondo/dng_sdk_1_4/dng_sdk/source/dng_parse_utils.h#1 $ */ 10*fd1fabb7SAndroid Build Coastguard Worker /* $DateTime: 2012/05/30 13:28:51 $ */ 11*fd1fabb7SAndroid Build Coastguard Worker /* $Change: 832332 $ */ 12*fd1fabb7SAndroid Build Coastguard Worker /* $Author: tknoll $ */ 13*fd1fabb7SAndroid Build Coastguard Worker 14*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/ 15*fd1fabb7SAndroid Build Coastguard Worker 16*fd1fabb7SAndroid Build Coastguard Worker #ifndef __dng_parse_utils__ 17*fd1fabb7SAndroid Build Coastguard Worker #define __dng_parse_utils__ 18*fd1fabb7SAndroid Build Coastguard Worker 19*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/ 20*fd1fabb7SAndroid Build Coastguard Worker 21*fd1fabb7SAndroid Build Coastguard Worker #include "dng_classes.h" 22*fd1fabb7SAndroid Build Coastguard Worker #include "dng_flags.h" 23*fd1fabb7SAndroid Build Coastguard Worker #include "dng_types.h" 24*fd1fabb7SAndroid Build Coastguard Worker #include "dng_stream.h" 25*fd1fabb7SAndroid Build Coastguard Worker #include "dng_string.h" 26*fd1fabb7SAndroid Build Coastguard Worker #include "dng_matrix.h" 27*fd1fabb7SAndroid Build Coastguard Worker 28*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/ 29*fd1fabb7SAndroid Build Coastguard Worker 30*fd1fabb7SAndroid Build Coastguard Worker #if qDNGValidate 31*fd1fabb7SAndroid Build Coastguard Worker 32*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/ 33*fd1fabb7SAndroid Build Coastguard Worker 34*fd1fabb7SAndroid Build Coastguard Worker const char * LookupParentCode (uint32 parentCode); 35*fd1fabb7SAndroid Build Coastguard Worker 36*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/ 37*fd1fabb7SAndroid Build Coastguard Worker 38*fd1fabb7SAndroid Build Coastguard Worker const char * LookupTagCode (uint32 parentCode, 39*fd1fabb7SAndroid Build Coastguard Worker uint32 tagCode); 40*fd1fabb7SAndroid Build Coastguard Worker 41*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/ 42*fd1fabb7SAndroid Build Coastguard Worker 43*fd1fabb7SAndroid Build Coastguard Worker const char * LookupTagType (uint32 tagType); 44*fd1fabb7SAndroid Build Coastguard Worker 45*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/ 46*fd1fabb7SAndroid Build Coastguard Worker 47*fd1fabb7SAndroid Build Coastguard Worker const char * LookupNewSubFileType (uint32 key); 48*fd1fabb7SAndroid Build Coastguard Worker 49*fd1fabb7SAndroid Build Coastguard Worker const char * LookupCompression (uint32 key); 50*fd1fabb7SAndroid Build Coastguard Worker 51*fd1fabb7SAndroid Build Coastguard Worker const char * LookupPredictor (uint32 key); 52*fd1fabb7SAndroid Build Coastguard Worker 53*fd1fabb7SAndroid Build Coastguard Worker const char * LookupSampleFormat (uint32 key); 54*fd1fabb7SAndroid Build Coastguard Worker 55*fd1fabb7SAndroid Build Coastguard Worker const char * LookupPhotometricInterpretation (uint32 key); 56*fd1fabb7SAndroid Build Coastguard Worker 57*fd1fabb7SAndroid Build Coastguard Worker const char * LookupOrientation (uint32 key); 58*fd1fabb7SAndroid Build Coastguard Worker 59*fd1fabb7SAndroid Build Coastguard Worker const char * LookupResolutionUnit (uint32 key); 60*fd1fabb7SAndroid Build Coastguard Worker 61*fd1fabb7SAndroid Build Coastguard Worker const char * LookupCFAColor (uint32 key); 62*fd1fabb7SAndroid Build Coastguard Worker 63*fd1fabb7SAndroid Build Coastguard Worker const char * LookupSensingMethod (uint32 key); 64*fd1fabb7SAndroid Build Coastguard Worker 65*fd1fabb7SAndroid Build Coastguard Worker const char * LookupExposureProgram (uint32 key); 66*fd1fabb7SAndroid Build Coastguard Worker 67*fd1fabb7SAndroid Build Coastguard Worker const char * LookupMeteringMode (uint32 key); 68*fd1fabb7SAndroid Build Coastguard Worker 69*fd1fabb7SAndroid Build Coastguard Worker const char * LookupLightSource (uint32 key); 70*fd1fabb7SAndroid Build Coastguard Worker 71*fd1fabb7SAndroid Build Coastguard Worker const char * LookupColorSpace (uint32 key); 72*fd1fabb7SAndroid Build Coastguard Worker 73*fd1fabb7SAndroid Build Coastguard Worker const char * LookupFileSource (uint32 key); 74*fd1fabb7SAndroid Build Coastguard Worker 75*fd1fabb7SAndroid Build Coastguard Worker const char * LookupSceneType (uint32 key); 76*fd1fabb7SAndroid Build Coastguard Worker 77*fd1fabb7SAndroid Build Coastguard Worker const char * LookupCustomRendered (uint32 key); 78*fd1fabb7SAndroid Build Coastguard Worker 79*fd1fabb7SAndroid Build Coastguard Worker const char * LookupExposureMode (uint32 key); 80*fd1fabb7SAndroid Build Coastguard Worker 81*fd1fabb7SAndroid Build Coastguard Worker const char * LookupWhiteBalance (uint32 key); 82*fd1fabb7SAndroid Build Coastguard Worker 83*fd1fabb7SAndroid Build Coastguard Worker const char * LookupSceneCaptureType (uint32 key); 84*fd1fabb7SAndroid Build Coastguard Worker 85*fd1fabb7SAndroid Build Coastguard Worker const char * LookupGainControl (uint32 key); 86*fd1fabb7SAndroid Build Coastguard Worker 87*fd1fabb7SAndroid Build Coastguard Worker const char * LookupContrast (uint32 key); 88*fd1fabb7SAndroid Build Coastguard Worker 89*fd1fabb7SAndroid Build Coastguard Worker const char * LookupSaturation (uint32 key); 90*fd1fabb7SAndroid Build Coastguard Worker 91*fd1fabb7SAndroid Build Coastguard Worker const char * LookupSharpness (uint32 key); 92*fd1fabb7SAndroid Build Coastguard Worker 93*fd1fabb7SAndroid Build Coastguard Worker const char * LookupSubjectDistanceRange (uint32 key); 94*fd1fabb7SAndroid Build Coastguard Worker 95*fd1fabb7SAndroid Build Coastguard Worker const char * LookupComponent (uint32 key); 96*fd1fabb7SAndroid Build Coastguard Worker 97*fd1fabb7SAndroid Build Coastguard Worker const char * LookupCFALayout (uint32 key); 98*fd1fabb7SAndroid Build Coastguard Worker 99*fd1fabb7SAndroid Build Coastguard Worker const char * LookupMakerNoteSafety (uint32 key); 100*fd1fabb7SAndroid Build Coastguard Worker 101*fd1fabb7SAndroid Build Coastguard Worker const char * LookupColorimetricReference (uint32 key); 102*fd1fabb7SAndroid Build Coastguard Worker 103*fd1fabb7SAndroid Build Coastguard Worker const char * LookupPreviewColorSpace (uint32 key); 104*fd1fabb7SAndroid Build Coastguard Worker 105*fd1fabb7SAndroid Build Coastguard Worker const char * LookupJPEGMarker (uint32 key); 106*fd1fabb7SAndroid Build Coastguard Worker 107*fd1fabb7SAndroid Build Coastguard Worker const char * LookupSensitivityType (uint32 key); 108*fd1fabb7SAndroid Build Coastguard Worker 109*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/ 110*fd1fabb7SAndroid Build Coastguard Worker 111*fd1fabb7SAndroid Build Coastguard Worker void DumpHexAscii (dng_stream &stream, 112*fd1fabb7SAndroid Build Coastguard Worker uint32 count); 113*fd1fabb7SAndroid Build Coastguard Worker 114*fd1fabb7SAndroid Build Coastguard Worker void DumpHexAscii (const uint8 *buf, 115*fd1fabb7SAndroid Build Coastguard Worker uint32 count); 116*fd1fabb7SAndroid Build Coastguard Worker 117*fd1fabb7SAndroid Build Coastguard Worker void DumpXMP (dng_stream &stream, 118*fd1fabb7SAndroid Build Coastguard Worker uint32 count); 119*fd1fabb7SAndroid Build Coastguard Worker 120*fd1fabb7SAndroid Build Coastguard Worker void DumpString (const dng_string &s); 121*fd1fabb7SAndroid Build Coastguard Worker 122*fd1fabb7SAndroid Build Coastguard Worker void DumpTagValues (dng_stream &stream, 123*fd1fabb7SAndroid Build Coastguard Worker const char *entry_name, 124*fd1fabb7SAndroid Build Coastguard Worker uint32 parentCode, 125*fd1fabb7SAndroid Build Coastguard Worker uint32 tagCode, 126*fd1fabb7SAndroid Build Coastguard Worker uint32 tagType, 127*fd1fabb7SAndroid Build Coastguard Worker uint32 tagCount, 128*fd1fabb7SAndroid Build Coastguard Worker const char *tag_name = NULL); 129*fd1fabb7SAndroid Build Coastguard Worker 130*fd1fabb7SAndroid Build Coastguard Worker void DumpMatrix (const dng_matrix &m); 131*fd1fabb7SAndroid Build Coastguard Worker 132*fd1fabb7SAndroid Build Coastguard Worker void DumpVector (const dng_vector &v); 133*fd1fabb7SAndroid Build Coastguard Worker 134*fd1fabb7SAndroid Build Coastguard Worker void DumpDateTime (const dng_date_time &dt); 135*fd1fabb7SAndroid Build Coastguard Worker 136*fd1fabb7SAndroid Build Coastguard Worker void DumpExposureTime (real64 x); 137*fd1fabb7SAndroid Build Coastguard Worker 138*fd1fabb7SAndroid Build Coastguard Worker void DumpFingerprint (const dng_fingerprint &p); 139*fd1fabb7SAndroid Build Coastguard Worker 140*fd1fabb7SAndroid Build Coastguard Worker void DumpHueSatMap (dng_stream &stream, 141*fd1fabb7SAndroid Build Coastguard Worker uint32 hues, 142*fd1fabb7SAndroid Build Coastguard Worker uint32 sats, 143*fd1fabb7SAndroid Build Coastguard Worker uint32 vals, 144*fd1fabb7SAndroid Build Coastguard Worker bool skipSat0); 145*fd1fabb7SAndroid Build Coastguard Worker 146*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/ 147*fd1fabb7SAndroid Build Coastguard Worker 148*fd1fabb7SAndroid Build Coastguard Worker #endif 149*fd1fabb7SAndroid Build Coastguard Worker 150*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/ 151*fd1fabb7SAndroid Build Coastguard Worker 152*fd1fabb7SAndroid Build Coastguard Worker bool CheckTagType (uint32 parentCode, 153*fd1fabb7SAndroid Build Coastguard Worker uint32 tagCode, 154*fd1fabb7SAndroid Build Coastguard Worker uint32 tagType, 155*fd1fabb7SAndroid Build Coastguard Worker uint16 validType0, 156*fd1fabb7SAndroid Build Coastguard Worker uint16 validType1 = 0, 157*fd1fabb7SAndroid Build Coastguard Worker uint16 validType2 = 0, 158*fd1fabb7SAndroid Build Coastguard Worker uint16 validType3 = 0); 159*fd1fabb7SAndroid Build Coastguard Worker 160*fd1fabb7SAndroid Build Coastguard Worker bool CheckTagCount (uint32 parentCode, 161*fd1fabb7SAndroid Build Coastguard Worker uint32 tagCode, 162*fd1fabb7SAndroid Build Coastguard Worker uint32 tagCount, 163*fd1fabb7SAndroid Build Coastguard Worker uint32 minCount, 164*fd1fabb7SAndroid Build Coastguard Worker uint32 maxCount = 0); 165*fd1fabb7SAndroid Build Coastguard Worker 166*fd1fabb7SAndroid Build Coastguard Worker bool CheckColorImage (uint32 parentCode, 167*fd1fabb7SAndroid Build Coastguard Worker uint32 tagCode, 168*fd1fabb7SAndroid Build Coastguard Worker uint32 colorPlanes); 169*fd1fabb7SAndroid Build Coastguard Worker 170*fd1fabb7SAndroid Build Coastguard Worker bool CheckMainIFD (uint32 parentCode, 171*fd1fabb7SAndroid Build Coastguard Worker uint32 tagCode, 172*fd1fabb7SAndroid Build Coastguard Worker uint32 newSubFileType); 173*fd1fabb7SAndroid Build Coastguard Worker 174*fd1fabb7SAndroid Build Coastguard Worker bool CheckRawIFD (uint32 parentCode, 175*fd1fabb7SAndroid Build Coastguard Worker uint32 tagCode, 176*fd1fabb7SAndroid Build Coastguard Worker uint32 photometricInterpretation); 177*fd1fabb7SAndroid Build Coastguard Worker 178*fd1fabb7SAndroid Build Coastguard Worker bool CheckCFA (uint32 parentCode, 179*fd1fabb7SAndroid Build Coastguard Worker uint32 tagCode, 180*fd1fabb7SAndroid Build Coastguard Worker uint32 photometricInterpretation); 181*fd1fabb7SAndroid Build Coastguard Worker 182*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/ 183*fd1fabb7SAndroid Build Coastguard Worker 184*fd1fabb7SAndroid Build Coastguard Worker void ParseStringTag (dng_stream &stream, 185*fd1fabb7SAndroid Build Coastguard Worker uint32 parentCode, 186*fd1fabb7SAndroid Build Coastguard Worker uint32 tagCode, 187*fd1fabb7SAndroid Build Coastguard Worker uint32 tagCount, 188*fd1fabb7SAndroid Build Coastguard Worker dng_string &s, 189*fd1fabb7SAndroid Build Coastguard Worker bool trimBlanks = true); 190*fd1fabb7SAndroid Build Coastguard Worker 191*fd1fabb7SAndroid Build Coastguard Worker void ParseDualStringTag (dng_stream &stream, 192*fd1fabb7SAndroid Build Coastguard Worker uint32 parentCode, 193*fd1fabb7SAndroid Build Coastguard Worker uint32 tagCode, 194*fd1fabb7SAndroid Build Coastguard Worker uint32 tagCount, 195*fd1fabb7SAndroid Build Coastguard Worker dng_string &s1, 196*fd1fabb7SAndroid Build Coastguard Worker dng_string &s2); 197*fd1fabb7SAndroid Build Coastguard Worker 198*fd1fabb7SAndroid Build Coastguard Worker void ParseEncodedStringTag (dng_stream &stream, 199*fd1fabb7SAndroid Build Coastguard Worker uint32 parentCode, 200*fd1fabb7SAndroid Build Coastguard Worker uint32 tagCode, 201*fd1fabb7SAndroid Build Coastguard Worker uint32 tagCount, 202*fd1fabb7SAndroid Build Coastguard Worker dng_string &s); 203*fd1fabb7SAndroid Build Coastguard Worker 204*fd1fabb7SAndroid Build Coastguard Worker bool ParseMatrixTag (dng_stream &stream, 205*fd1fabb7SAndroid Build Coastguard Worker uint32 parentCode, 206*fd1fabb7SAndroid Build Coastguard Worker uint32 tagCode, 207*fd1fabb7SAndroid Build Coastguard Worker uint32 tagType, 208*fd1fabb7SAndroid Build Coastguard Worker uint32 tagCount, 209*fd1fabb7SAndroid Build Coastguard Worker uint32 rows, 210*fd1fabb7SAndroid Build Coastguard Worker uint32 cols, 211*fd1fabb7SAndroid Build Coastguard Worker dng_matrix &m); 212*fd1fabb7SAndroid Build Coastguard Worker 213*fd1fabb7SAndroid Build Coastguard Worker bool ParseVectorTag (dng_stream &stream, 214*fd1fabb7SAndroid Build Coastguard Worker uint32 parentCode, 215*fd1fabb7SAndroid Build Coastguard Worker uint32 tagCode, 216*fd1fabb7SAndroid Build Coastguard Worker uint32 tagType, 217*fd1fabb7SAndroid Build Coastguard Worker uint32 tagCount, 218*fd1fabb7SAndroid Build Coastguard Worker uint32 count, 219*fd1fabb7SAndroid Build Coastguard Worker dng_vector &v); 220*fd1fabb7SAndroid Build Coastguard Worker 221*fd1fabb7SAndroid Build Coastguard Worker bool ParseDateTimeTag (dng_stream &stream, 222*fd1fabb7SAndroid Build Coastguard Worker uint32 parentCode, 223*fd1fabb7SAndroid Build Coastguard Worker uint32 tagCode, 224*fd1fabb7SAndroid Build Coastguard Worker uint32 tagType, 225*fd1fabb7SAndroid Build Coastguard Worker uint32 tagCount, 226*fd1fabb7SAndroid Build Coastguard Worker dng_date_time &dt); 227*fd1fabb7SAndroid Build Coastguard Worker 228*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/ 229*fd1fabb7SAndroid Build Coastguard Worker 230*fd1fabb7SAndroid Build Coastguard Worker #endif 231*fd1fabb7SAndroid Build Coastguard Worker 232*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/ 233