From 3fec2151ef9f5fa0951a407d4de5abc7bd2bc003 Mon Sep 17 00:00:00 2001
From: Biswapriyo Nath <nathbappai@gmail.com>
Date: Sun, 8 Dec 2019 07:00:00 +0530
Subject: [PATCH] include: update thumbcache.idl file

Signed-off-by: Biswapriyo Nath <nathbappai@gmail.com>
---
 include/thumbcache.idl | 153 +++++++++++++++++++++++++++++++++++------
 1 file changed, 131 insertions(+), 22 deletions(-)

diff --git a/include/thumbcache.idl b/include/thumbcache.idl
index f79d879..5cb61b3 100644
--- a/include/thumbcache.idl
+++ b/include/thumbcache.idl
@@ -18,31 +18,140 @@
 
 import "oaidl.idl";
 import "shtypes.idl";
+import "shobjidl.idl";
 
-typedef [v1_enum] enum WTS_FLAGS
-{
-    WTS_NONE                 = 0x00000000,
-    WTS_EXTRACT              = 0x00000000,
-    WTS_INCACHEONLY          = 0x00000001,
-    WTS_FASTEXTRACT          = 0x00000002,
-    WTS_FORCEEXTRACTION      = 0x00000004,
-    WTS_SLOWRECLAIM          = 0x00000008,
-    WTS_EXTRACTDONOTCACHE    = 0x00000020,
+typedef [v1_enum] enum WTS_FLAGS {
+    WTS_NONE = 0x00000000,
+    WTS_EXTRACT = 0x00000000,
+    WTS_INCACHEONLY = 0x00000001,
+    WTS_FASTEXTRACT = 0x00000002,
+    WTS_FORCEEXTRACTION = 0x00000004,
+    WTS_SLOWRECLAIM = 0x00000008,
+    WTS_EXTRACTDONOTCACHE = 0x00000020,
     WTS_SCALETOREQUESTEDSIZE = 0x00000040,
-    WTS_SKIPFASTEXTRACT      = 0x00000080,
-    WTS_EXTRACTINPROC        = 0x00000100,
-    WTS_CROPTOSQUARE         = 0x00000200,
-    WTS_INSTANCESURROGATE    = 0x00000400,
-    WTS_REQUIRESURROGATE     = 0x00000800,
-    WTS_APPSTYLE             = 0x00002000,
-    WTS_WIDETHUMBNAILS       = 0x00004000,
-    WTS_IDEALCACHESIZEONLY   = 0x00008000,
-    WTS_SCALEUP              = 0x00010000,
+    WTS_SKIPFASTEXTRACT = 0x00000080,
+    WTS_EXTRACTINPROC = 0x00000100,
+    WTS_CROPTOSQUARE = 0x00000200,
+    WTS_INSTANCESURROGATE = 0x00000400,
+    WTS_REQUIRESURROGATE = 0x00000800,
+    WTS_APPSTYLE = 0x00002000,
+    WTS_WIDETHUMBNAILS = 0x00004000,
+    WTS_IDEALCACHESIZEONLY = 0x00008000,
+    WTS_SCALEUP = 0x00010000
 } WTS_FLAGS;
 
-typedef [v1_enum] enum WTS_ALPHATYPE
-{
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(WTS_FLAGS)")
+
+typedef [v1_enum] enum WTS_CACHEFLAGS {
+    WTS_DEFAULT = 0x00000000,
+    WTS_LOWQUALITY = 0x00000001,
+    WTS_CACHED = 0x00000002
+} WTS_CACHEFLAGS;
+
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(WTS_CACHEFLAGS)")
+
+typedef [v1_enum] enum WTS_CONTEXTFLAGS {
+    WTSCF_DEFAULT = 0x00000000,
+    WTSCF_APPSTYLE = 0x00000001,
+    WTSCF_SQUARE = 0x00000002,
+    WTSCF_WIDE = 0x00000004,
+    WTSCF_FAST = 0x00000008
+} WTS_CONTEXTFLAGS;
+
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(WTS_CONTEXTFLAGS)")
+
+typedef [v1_enum] enum WTS_ALPHATYPE {
     WTSAT_UNKNOWN = 0,
-    WTSAT_RGB     = 1,
-    WTSAT_ARGB    = 2
+    WTSAT_RGB = 1,
+    WTSAT_ARGB = 2
 } WTS_ALPHATYPE;
+
+typedef struct WTS_THUMBNAILID {
+    BYTE rgbKey[16];
+} WTS_THUMBNAILID;
+
+
+cpp_quote("#define WTS_E_FAILEDEXTRACTION MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0xB200)")
+cpp_quote("#define WTS_E_EXTRACTIONTIMEDOUT MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0xB201)")
+cpp_quote("#define WTS_E_SURROGATEUNAVAILABLE MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0xB202)")
+cpp_quote("#define WTS_E_FASTEXTRACTIONNOTSUPPORTED MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0xB203)")
+cpp_quote("#define WTS_E_DATAFILEUNAVAILABLE MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0xB204)")
+cpp_quote("#define WTS_E_EXTRACTIONPENDING MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0xB205)")
+cpp_quote("#define WTS_E_EXTRACTIONBLOCKED MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0xB206)")
+
+[
+    uuid(091162a4-bc96-411f-aae8-c5122cd03363),
+    pointer_default(unique),
+]
+interface ISharedBitmap : IUnknown {
+    HRESULT GetSharedBitmap([out] HBITMAP *phbm);
+    HRESULT GetSize([out] SIZE *pSize);
+    HRESULT GetFormat([out] WTS_ALPHATYPE *pat);
+    HRESULT InitializeBitmap([in] HBITMAP hbm, [in] WTS_ALPHATYPE wtsAT);
+    HRESULT Detach([out] HBITMAP *phbm);
+}
+
+[
+    object,
+    uuid(F676C15D-596A-4ce2-8234-33996F445DB1),
+]
+interface IThumbnailCache : IUnknown {
+    [local]
+    HRESULT GetThumbnail([in] IShellItem *pShellItem,
+                         [in] UINT cxyRequestedThumbSize,
+                         [in] WTS_FLAGS flags,
+                         [out, unique] ISharedBitmap **ppvThumb,
+                         [out, unique] WTS_CACHEFLAGS *pOutFlags,
+                         [out, unique] WTS_THUMBNAILID *pThumbnailID);
+
+    [call_as(GetThumbnail)]
+    HRESULT RemoteGetThumbnail([in] IShellItem *pShellItem,
+                               [in] UINT cxyRequestedThumbSize,
+                               [in] WTS_FLAGS flags,
+                               [out] ISharedBitmap **ppvThumb,
+                               [out] WTS_CACHEFLAGS *pOutFlags,
+                               [out] WTS_THUMBNAILID *pThumbnailID);
+
+    [local]
+    HRESULT GetThumbnailByID([in] WTS_THUMBNAILID thumbnailID,
+                             [in] UINT cxyRequestedThumbSize,
+                             [out, unique] ISharedBitmap **ppvThumb,
+                             [out, unique] WTS_CACHEFLAGS *pOutFlags);
+
+    [call_as(GetThumbnailByID)]
+    HRESULT RemoteGetThumbnailByID([in] WTS_THUMBNAILID thumbnailID,
+                                   [in] UINT cxyRequestedThumbSize,
+                                   [out] ISharedBitmap **ppvThumb,
+                                   [out] WTS_CACHEFLAGS *pOutFlags);
+}
+
+[
+    uuid(e357fccd-a995-4576-b01f-234630154e96),
+]
+interface IThumbnailProvider : IUnknown {
+    HRESULT GetThumbnail([in] UINT cx, [out] HBITMAP *phbmp, [out] WTS_ALPHATYPE *pdwAlpha);
+}
+
+[
+    uuid(F4376F00-BEF5-4d45-80F3-1E023BBF1209),
+]
+interface IThumbnailSettings : IUnknown {
+    HRESULT SetContext([in] WTS_CONTEXTFLAGS dwContext);
+}
+
+[
+    uuid(0f03f8fe-2b26-46f0-965a-212aa8d66b76),
+    object,
+    pointer_default(unique)
+]
+interface IThumbnailCachePrimer : IUnknown {
+    HRESULT PageInThumbnail([in] IShellItem *psi, [in] WTS_FLAGS wtsFlags, [in] UINT cxyRequestedThumbSize);
+}
+
+[
+    uuid(4c857096-0514-4d4d-abd5-dfaaa3c326d2)
+]
+library ThumbCacheLib {
+    [ uuid(50EF4544-AC9F-4A8E-B21B-8A26180DB13F) ] coclass LocalThumbnailCache { interface IThumbnailCache; }
+    [ uuid(4db26476-6787-4046-b836-e8412a9e8a27) ] coclass SharedBitmap { interface ISharedBitmap; }
+}
-- 
2.24.0

