Module: wine Branch: master Commit: 3f4999cc6a3fc54dffae69e31e2dd18953a0586e URL: http://source.winehq.org/git/wine.git/?a=commit;h=3f4999cc6a3fc54dffae69e31e...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Sun Feb 5 22:25:09 2017 +0300
shell32: Added a stub for IShellImageDataFactory.
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/shell32/shell32_classes.idl | 6 +++ dlls/shell32/shell32_main.h | 2 + dlls/shell32/shellole.c | 91 ++++++++++++++++++++++++++++++++++++++++ dlls/uuid/uuid.c | 3 ++ 4 files changed, 102 insertions(+)
diff --git a/dlls/shell32/shell32_classes.idl b/dlls/shell32/shell32_classes.idl index 68ce2b5..cc57b2b 100644 --- a/dlls/shell32/shell32_classes.idl +++ b/dlls/shell32/shell32_classes.idl @@ -154,3 +154,9 @@ coclass KnownFolderManager { interface IKnownFolderManager; } threading(apartment), uuid(77f10cf0-3db5-4966-b520-b7c54fd35ed6) ] coclass DestinationList { interface ICustomDestinationList; } + +[ + helpstring("Shell Image Data Factory"), + threading(apartment), + uuid(66e4e4fb-f385-4dd0-8d74-a2efd1bc6178) +] coclass ShellImageDataFactory { interface IShellImageDataFactory; } diff --git a/dlls/shell32/shell32_main.h b/dlls/shell32/shell32_main.h index 642fab7..10cd3a4 100644 --- a/dlls/shell32/shell32_main.h +++ b/dlls/shell32/shell32_main.h @@ -44,6 +44,8 @@ extern HMODULE huser32 DECLSPEC_HIDDEN; extern HINSTANCE shell32_hInstance DECLSPEC_HIDDEN;
+extern CLSID CLSID_ShellImageDataFactory; + /* Iconcache */ #define INVALID_INDEX -1 void SIC_Destroy(void) DECLSPEC_HIDDEN; diff --git a/dlls/shell32/shellole.c b/dlls/shell32/shellole.c index dd54900..a68e73d 100644 --- a/dlls/shell32/shellole.c +++ b/dlls/shell32/shellole.c @@ -36,6 +36,7 @@ #include "shlobj.h" #include "shlguid.h" #include "shldisp.h" +#include "shimgdata.h" #include "winreg.h" #include "winerror.h"
@@ -50,6 +51,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(shell);
extern INT WINAPI SHStringFromGUIDW(REFGUID guid, LPWSTR lpszDest, INT cchMax); /* shlwapi.24 */ +static HRESULT WINAPI ShellImageDataFactory_Constructor(IUnknown *outer, REFIID riid, void **obj);
/************************************************************************** * Default ClassFactory types @@ -84,6 +86,7 @@ static const struct { {&CLSID_KnownFolderManager, KnownFolderManager_Constructor}, {&CLSID_Shell, IShellDispatch_Constructor}, {&CLSID_DestinationList, CustomDestinationList_Constructor}, + {&CLSID_ShellImageDataFactory, ShellImageDataFactory_Constructor}, {NULL, NULL} };
@@ -807,3 +810,91 @@ HRESULT WINAPI SHCreateQueryCancelAutoPlayMoniker(IMoniker **moniker) if (!moniker) return E_INVALIDARG; return CreateClassMoniker(&CLSID_QueryCancelAutoPlay, moniker); } + +/* IShellImageDataFactory */ +static HRESULT WINAPI ShellImageDataFactory_QueryInterface(IShellImageDataFactory *iface, REFIID riid, void **obj) +{ + TRACE("(%p, %s, %p)\n", iface, debugstr_guid(riid), obj); + + if (IsEqualIID(&IID_IShellImageDataFactory, riid) || IsEqualIID(&IID_IUnknown, riid)) + { + *obj = iface; + } + else + { + FIXME("not implemented for %s\n", debugstr_guid(riid)); + *obj = NULL; + return E_NOINTERFACE; + } + + IUnknown_AddRef((IUnknown*)*obj); + return S_OK; +} + +static ULONG WINAPI ShellImageDataFactory_AddRef(IShellImageDataFactory *iface) +{ + TRACE("(%p)\n", iface); + + return 2; +} + +static ULONG WINAPI ShellImageDataFactory_Release(IShellImageDataFactory *iface) +{ + TRACE("(%p)\n", iface); + + return 1; +} + +static HRESULT WINAPI ShellImageDataFactory_CreateIShellImageData(IShellImageDataFactory *iface, IShellImageData **data) +{ + FIXME("%p, %p: stub\n", iface, data); + + return E_NOTIMPL; +} + +static HRESULT WINAPI ShellImageDataFactory_CreateImageFromFile(IShellImageDataFactory *iface, const WCHAR *path, + IShellImageData **data) +{ + FIXME("%p, %s, %p: stub\n", iface, debugstr_w(path), data); + + return E_NOTIMPL; +} + +static HRESULT WINAPI ShellImageDataFactory_CreateImageFromStream(IShellImageDataFactory *iface, IStream *stream, + IShellImageData **data) +{ + FIXME("%p, %p, %p: stub\n", iface, stream, data); + + return E_NOTIMPL; +} + +static HRESULT WINAPI ShellImageDataFactory_GetDataFormatFromPath(IShellImageDataFactory *iface, const WCHAR *path, + GUID *format) +{ + FIXME("%p, %s, %p: stub\n", iface, debugstr_w(path), format); + + return E_NOTIMPL; +} + +static const IShellImageDataFactoryVtbl ShellImageDataFactoryVtbl = +{ + ShellImageDataFactory_QueryInterface, + ShellImageDataFactory_AddRef, + ShellImageDataFactory_Release, + ShellImageDataFactory_CreateIShellImageData, + ShellImageDataFactory_CreateImageFromFile, + ShellImageDataFactory_CreateImageFromStream, + ShellImageDataFactory_GetDataFormatFromPath, +}; + +static IShellImageDataFactory ShellImageDataFactory = { &ShellImageDataFactoryVtbl }; + +HRESULT WINAPI ShellImageDataFactory_Constructor(IUnknown *outer, REFIID riid, void **obj) +{ + TRACE("%p %s %p\n", outer, debugstr_guid(riid), obj); + + if (outer) + return CLASS_E_NOAGGREGATION; + + return IShellImageDataFactory_QueryInterface(&ShellImageDataFactory, riid, obj); +} diff --git a/dlls/uuid/uuid.c b/dlls/uuid/uuid.c index af96221..4834dee 100644 --- a/dlls/uuid/uuid.c +++ b/dlls/uuid/uuid.c @@ -87,6 +87,7 @@ DEFINE_GUID(GUID_NULL,0,0,0,0,0,0,0,0,0,0,0); #include "tlogstg.h" #include "msdasc.h" #include "netcfgx.h" +#include "shimgdata.h"
/* FIXME: cguids declares GUIDs but does not define their values */
@@ -141,5 +142,7 @@ DEFINE_GUID(GUID_COMPARTMENT_PERSISTMENUENABLED, 0x575f3783,0x70c8,0x47c8,0xa DEFINE_GUID(GUID_COMPARTMENT_EMPTYCONTEXT, 0xd7487dbf,0x804e,0x41c5,0x89,0x4d,0xad,0x96,0xfd,0x4e,0xea,0x13); DEFINE_GUID(GUID_COMPARTMENT_TIPUISTATUS, 0x148ca3ec,0x0366,0x401c,0x8d,0x75,0xed,0x97,0x8d,0x85,0xfb,0xc9);
+DEFINE_GUID(CLSID_ShellImageDataFactory, 0x66e4e4fb,0xf385,0x4dd0,0x8d,0x74,0xa2,0xef,0xd1,0xbc,0x61,0x78); + /* service identifiers not declared in headers */ DEFINE_GUID(SID_SContainerDispatch,0xb722be00,0x4e68,0x101b,0xa2,0xbc,0x00,0xaa,0x00,0x40,0x47,0x70);