/* * Copyright 2019 Alistair Leslie-Hughes * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ 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, 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_FLAGS; 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 } 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; } }