From 44920c2c54f620eb077257b0b296ecdc188c977d Mon Sep 17 00:00:00 2001 From: Vincent Povirk Date: Tue, 28 Jul 2009 16:58:47 -0500 Subject: [PATCH] windowscodecs: implement IWICBitmapDecoderInfo::MatchesPattern --- dlls/windowscodecs/info.c | 73 +++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 71 insertions(+), 2 deletions(-) diff --git a/dlls/windowscodecs/info.c b/dlls/windowscodecs/info.c index 39b522f..12eb4f0 100644 --- a/dlls/windowscodecs/info.c +++ b/dlls/windowscodecs/info.c @@ -330,8 +330,77 @@ static HRESULT WINAPI BitmapDecoderInfo_GetPatterns(IWICBitmapDecoderInfo *iface static HRESULT WINAPI BitmapDecoderInfo_MatchesPattern(IWICBitmapDecoderInfo *iface, IStream *pIStream, BOOL *pfMatches) { - FIXME("(%p,%p,%p): stub\n", iface, pIStream, pfMatches); - return E_NOTIMPL; + WICBitmapPattern *patterns; + UINT pattern_count=0, patterns_size=0; + HRESULT hr; + int i, pos; + BYTE *data=NULL; + ULONG datasize=0; + ULONG bytesread; + LARGE_INTEGER seekpos; + + TRACE("(%p,%p,%p)\n", iface, pIStream, pfMatches); + + hr = BitmapDecoderInfo_GetPatterns(iface, 0, NULL, &pattern_count, &patterns_size); + if (FAILED(hr)) return hr; + + patterns = HeapAlloc(GetProcessHeap(), 0, patterns_size); + if (!patterns) return E_OUTOFMEMORY; + + hr = BitmapDecoderInfo_GetPatterns(iface, patterns_size, patterns, &pattern_count, &patterns_size); + if (FAILED(hr)) goto end; + + for (i=0; i