diff --git a/include/thumbcache.idl b/include/thumbcache.idl index f79d879ab07..38cf23da175 100644 --- a/include/thumbcache.idl +++ b/include/thumbcache.idl @@ -18,6 +18,7 @@ import "oaidl.idl"; import "shtypes.idl"; +import "shobjidl.idl"; typedef [v1_enum] enum WTS_FLAGS { @@ -40,9 +41,145 @@ typedef [v1_enum] enum WTS_FLAGS 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; + } +}