Alien-FreeImage
view release on metacpan or search on metacpan
src/Source/LibJXR/jxrgluelib/JXRGlueJxr.c view on Meta::CPAN
// Descriptive Metadata
case WMP_tagImageDescription:
CallIgnoreError(errTmp, ReadPropvar(pWS, uType, uCount, uValue,
&pID->WMP.sDescMetadata.pvarImageDescription));
assert(DPKVT_LPSTR == pID->WMP.sDescMetadata.pvarImageDescription.vt);
break;
case WMP_tagCameraMake:
CallIgnoreError(errTmp, ReadPropvar(pWS, uType, uCount, uValue,
&pID->WMP.sDescMetadata.pvarCameraMake));
assert(DPKVT_LPSTR == pID->WMP.sDescMetadata.pvarCameraMake.vt);
break;
case WMP_tagCameraModel:
CallIgnoreError(errTmp, ReadPropvar(pWS, uType, uCount, uValue,
&pID->WMP.sDescMetadata.pvarCameraModel));
assert(DPKVT_LPSTR == pID->WMP.sDescMetadata.pvarCameraModel.vt);
break;
case WMP_tagSoftware:
CallIgnoreError(errTmp, ReadPropvar(pWS, uType, uCount, uValue,
&pID->WMP.sDescMetadata.pvarSoftware));
assert(DPKVT_LPSTR == pID->WMP.sDescMetadata.pvarSoftware.vt);
break;
case WMP_tagDateTime:
CallIgnoreError(errTmp, ReadPropvar(pWS, uType, uCount, uValue,
&pID->WMP.sDescMetadata.pvarDateTime));
assert(DPKVT_LPSTR == pID->WMP.sDescMetadata.pvarDateTime.vt);
break;
case WMP_tagArtist:
CallIgnoreError(errTmp, ReadPropvar(pWS, uType, uCount, uValue,
&pID->WMP.sDescMetadata.pvarArtist));
assert(DPKVT_LPSTR == pID->WMP.sDescMetadata.pvarArtist.vt);
break;
case WMP_tagCopyright:
CallIgnoreError(errTmp, ReadPropvar(pWS, uType, uCount, uValue,
&pID->WMP.sDescMetadata.pvarCopyright));
assert(DPKVT_LPSTR == pID->WMP.sDescMetadata.pvarCopyright.vt);
break;
case WMP_tagRatingStars:
CallIgnoreError(errTmp, ReadPropvar(pWS, uType, uCount, uValue,
&pID->WMP.sDescMetadata.pvarRatingStars));
assert(DPKVT_UI2 == pID->WMP.sDescMetadata.pvarRatingStars.vt);
break;
case WMP_tagRatingValue:
CallIgnoreError(errTmp, ReadPropvar(pWS, uType, uCount, uValue,
&pID->WMP.sDescMetadata.pvarRatingValue));
assert(DPKVT_UI2 == pID->WMP.sDescMetadata.pvarRatingValue.vt);
break;
case WMP_tagCaption:
CallIgnoreError(errTmp, ReadPropvar(pWS, uType, uCount, uValue,
&pID->WMP.sDescMetadata.pvarCaption));
assert((DPKVT_BYREF | DPKVT_UI1) == pID->WMP.sDescMetadata.pvarCaption.vt);
// Change type from C-style byte array to LPWSTR
assert((U8*)pID->WMP.sDescMetadata.pvarCaption.VT.pwszVal ==
pID->WMP.sDescMetadata.pvarCaption.VT.pbVal);
assert(0 == pID->WMP.sDescMetadata.pvarCaption.VT.pwszVal[uCount/sizeof(U16) - 1]); // Confirm null-term
// make sure null term (ReadPropvar allocated enough space for this)
pID->WMP.sDescMetadata.pvarCaption.VT.pwszVal[uCount/sizeof(U16)] = 0;
pID->WMP.sDescMetadata.pvarCaption.vt = DPKVT_LPWSTR;
break;
case WMP_tagDocumentName:
CallIgnoreError(errTmp, ReadPropvar(pWS, uType, uCount, uValue,
&pID->WMP.sDescMetadata.pvarDocumentName));
assert(DPKVT_LPSTR == pID->WMP.sDescMetadata.pvarDocumentName.vt);
break;
case WMP_tagPageName:
CallIgnoreError(errTmp, ReadPropvar(pWS, uType, uCount, uValue,
&pID->WMP.sDescMetadata.pvarPageName));
assert(DPKVT_LPSTR == pID->WMP.sDescMetadata.pvarPageName.vt);
break;
case WMP_tagPageNumber:
CallIgnoreError(errTmp, ReadPropvar(pWS, uType, uCount, uValue,
&pID->WMP.sDescMetadata.pvarPageNumber));
assert(DPKVT_UI4 == pID->WMP.sDescMetadata.pvarPageNumber.vt);
break;
case WMP_tagHostComputer:
CallIgnoreError(errTmp, ReadPropvar(pWS, uType, uCount, uValue,
&pID->WMP.sDescMetadata.pvarHostComputer));
assert(DPKVT_LPSTR == pID->WMP.sDescMetadata.pvarHostComputer.vt);
break;
default:
fprintf(stderr, "Unrecognized WMPTag: %d(%#x), %d, %d, %#x" CRLF,
(int)uTag, (int)uTag, (int)uType, (int)uCount, (int)uValue);
break;
}
Cleanup:
return err;
}
ERR ParsePFD(
PKImageDecode* pID,
size_t offPos,
U16 cEntry)
{
ERR err = WMP_errSuccess;
struct WMPStream* pWS = pID->pStream;
U16 i = 0;
for (i = 0; i < cEntry; ++i)
{
U16 uTag = 0;
U16 uType = 0;
U32 uCount = 0;
U32 uValue = 0;
Call(GetUShort(pWS, offPos, &uTag)); offPos += 2;
Call(GetUShort(pWS, offPos, &uType)); offPos += 2;
( run in 0.619 second using v1.01-cache-2.11-cpan-39bf76dae61 )