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