Parser for APP2 FlashPix marker
| 3234 | |
| 3235 | // Parser for APP2 FlashPix marker |
| 3236 | unsigned CjfifDecode::DecodeApp2Flashpix() |
| 3237 | { |
| 3238 | |
| 3239 | CString strTmp; |
| 3240 | |
| 3241 | unsigned nFpxVer; |
| 3242 | unsigned nFpxSegType; |
| 3243 | unsigned nFpxInteropCnt; |
| 3244 | unsigned nFpxEntitySz; |
| 3245 | unsigned nFpxDefault; |
| 3246 | |
| 3247 | bool bFpxStorage; |
| 3248 | CString strFpxStorageClsStr; |
| 3249 | unsigned nFpxStIndexCont; |
| 3250 | unsigned nFpxStOffset; |
| 3251 | |
| 3252 | unsigned nFpxStWByteOrder; |
| 3253 | unsigned nFpxStWFormat; |
| 3254 | CString strFpxStClsidStr; |
| 3255 | unsigned nFpxStDwOsVer; |
| 3256 | unsigned nFpxStRsvd; |
| 3257 | |
| 3258 | CString streamStr; |
| 3259 | |
| 3260 | nFpxVer = Buf(m_nPos++); |
| 3261 | nFpxSegType = Buf(m_nPos++); |
| 3262 | |
| 3263 | // FlashPix segments: Contents List or Stream Data |
| 3264 | |
| 3265 | if (nFpxSegType == 1) { |
| 3266 | // Contents List |
| 3267 | strTmp.Format(_T(" Segment: CONTENTS LIST")); |
| 3268 | m_pLog->AddLine(strTmp); |
| 3269 | |
| 3270 | nFpxInteropCnt = (Buf(m_nPos++)<<8) + Buf(m_nPos++); |
| 3271 | strTmp.Format(_T(" Interoperability Count = %u"),nFpxInteropCnt); |
| 3272 | m_pLog->AddLine(strTmp); |
| 3273 | |
| 3274 | for (unsigned ind=0;ind<nFpxInteropCnt;ind++) { |
| 3275 | strTmp.Format(_T(" Entity Index #%u"),ind); |
| 3276 | m_pLog->AddLine(strTmp); |
| 3277 | nFpxEntitySz = (Buf(m_nPos++)<<24) + (Buf(m_nPos++)<<16) + (Buf(m_nPos++)<<8) + Buf(m_nPos++); |
| 3278 | |
| 3279 | // If the "entity size" field is 0xFFFFFFFF, then it should be treated as |
| 3280 | // a "storage". It looks like we should probably be using this to determine |
| 3281 | // that we have a "storage" |
| 3282 | bFpxStorage = false; |
| 3283 | if (nFpxEntitySz == 0xFFFFFFFF) { |
| 3284 | bFpxStorage = true; |
| 3285 | } |
| 3286 | |
| 3287 | if (!bFpxStorage) { |
| 3288 | strTmp.Format(_T(" Entity Size = %u"),nFpxEntitySz); |
| 3289 | m_pLog->AddLine(strTmp); |
| 3290 | } else { |
| 3291 | strTmp.Format(_T(" Entity is Storage")); |
| 3292 | m_pLog->AddLine(strTmp); |
| 3293 | } |
nothing calls this directly
no test coverage detected