From b468c29de10d29d9b3a7717bbc8b8dc631a4ca83 Mon Sep 17 00:00:00 2001 From: Vincent Povirk Date: Tue, 27 Apr 2010 10:40:40 -0500 Subject: [PATCH] windowscodecs: Implement IWICImagingFactory_CreateDecoderFromFilename. --- dlls/windowscodecs/imgfactory.c | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/dlls/windowscodecs/imgfactory.c b/dlls/windowscodecs/imgfactory.c index a98aeb81295..e3dcca02967 100644 --- a/dlls/windowscodecs/imgfactory.c +++ b/dlls/windowscodecs/imgfactory.c @@ -26,6 +26,7 @@ #include "winbase.h" #include "winreg.h" #include "objbase.h" +#include "shellapi.h" #include "wincodec.h" #include "wincodecs_private.h" @@ -89,9 +90,27 @@ static HRESULT WINAPI ImagingFactory_CreateDecoderFromFilename( DWORD dwDesiredAccess, WICDecodeOptions metadataOptions, IWICBitmapDecoder **ppIDecoder) { - FIXME("(%p,%s,%s,%u,%u,%p): stub\n", iface, debugstr_w(wzFilename), + IWICStream *stream; + HRESULT hr; + + TRACE("(%p,%s,%s,%u,%u,%p)\n", iface, debugstr_w(wzFilename), debugstr_guid(pguidVendor), dwDesiredAccess, metadataOptions, ppIDecoder); - return E_NOTIMPL; + + hr = StreamImpl_Create(&stream); + if (SUCCEEDED(hr)) + { + hr = IWICStream_InitializeFromFilename(stream, wzFilename, dwDesiredAccess); + + if (SUCCEEDED(hr)) + { + hr = IWICImagingFactory_CreateDecoderFromStream(iface, (IStream*)stream, + pguidVendor, metadataOptions, ppIDecoder); + } + + IWICStream_Release(stream); + } + + return hr; } static HRESULT WINAPI ImagingFactory_CreateDecoderFromStream(