xpmgr/BuildTools/Include/thumbcache.idl

120 lines
4.1 KiB
Plaintext

import "oaidl.idl";
import "shtypes.idl";
import "shobjidl.idl";
typedef [v1_enum] enum WTS_FLAGS
{
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_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_ALPHATYPE
{
WTSAT_UNKNOWN = 0,
WTSAT_RGB = 1,
WTSAT_ARGB = 2,
} WTS_ALPHATYPE;
typedef struct WTS_THUMBNAILID
{
BYTE rgbKey[16];
} WTS_THUMBNAILID;
// Custom error code
cpp_quote("#define WTS_E_FAILEDEXTRACTION MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0xB200)")
// This interface is used as a thin wrapper around HBITMAP objects. It allows an
// HBITMAP to be ref-counted and protected from having its underlying data be changed
[
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);
};
// Interface for the system thumbnail cache. GetThumbnail is used to extract and return
// thumbnails for IShellItems. The cache behavior can be specified using one or more of
// the WTS_FLAGS. GetThumbnailID allows the caller to retrieve an image known to be in
// the cache via its ID (which was returned by GetThumbnail).
[
object,
uuid(F676C15D-596A-4ce2-8234-33996F445DB1),
]
interface IThumbnailCache : IUnknown
{
[local]
HRESULT GetThumbnail([in] IShellItem *pShellItem,
[in] UINT cxyRequestedThumbSize,
[in] WTS_FLAGS flags,
[out] ISharedBitmap **ppvThumb,
[out, unique, annotation("__out_opt")] WTS_CACHEFLAGS *pOutFlags,
[out, unique, annotation("__out_opt")] 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] ISharedBitmap **ppvThumb,
[out, unique, annotation("__out_opt")] 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(4c857096-0514-4d4d-abd5-dfaaa3c326d2)
]
library ThumbCacheLib
{
// Local Thumbnail Cache
[ uuid(50EF4544-AC9F-4A8E-B21B-8A26180DB13F) ] coclass LocalThumbnailCache { interface IThumbnailCache; }
// Shared Bitmap Object
[ uuid(4db26476-6787-4046-b836-e8412a9e8a27) ] coclass SharedBitmap { interface ISharedBitmap; }
};