📄 dxtrans.idl
字号:
HRESULT SetThreadPoolSize( [in]ULONG ulNumThreads );
HRESULT GetThreadPoolSize( [out]ULONG* pulNumThreads );
HRESULT SetConcurrencyLimit( [in]ULONG ulNumThreads );
HRESULT GetConcurrencyLimit( [out]ULONG* pulNumThreads );
HRESULT ScheduleTasks( [in]DXTMTASKINFO TaskInfo[],
[in]HANDLE Events[],
[out]DWORD TaskIDs[],
[in]ULONG ulNumTasks, [in]ULONG ulWaitPeriod );
HRESULT TerminateTasks( [in]DWORD TaskIDs[], [in]ULONG ulCount,
[in]ULONG ulTimeOut );
HRESULT TerminateRequest( [in]REFIID RequestID, [in]ULONG ulTimeOut );
};
//+-----------------------------------------------------------------------------
//
// Sample structures (C++)
//
// Overview:
// We want an operator so that we can cast from a DXSAMPLE to a DWORD, so
// for C++ we will define the structure a special way.
//
//------------------------------------------------------------------------------
cpp_quote("#ifdef __cplusplus")
cpp_quote("/////////////////////////////////////////////////////")
cpp_quote("")
cpp_quote("class DXBASESAMPLE;")
cpp_quote("class DXSAMPLE;")
cpp_quote("class DXPMSAMPLE;")
cpp_quote("")
cpp_quote("/////////////////////////////////////////////////////")
cpp_quote("")
cpp_quote("class DXBASESAMPLE")
cpp_quote("{")
cpp_quote("public:")
cpp_quote(" BYTE Blue;")
cpp_quote(" BYTE Green;")
cpp_quote(" BYTE Red;")
cpp_quote(" BYTE Alpha;")
cpp_quote(" DXBASESAMPLE() {}")
cpp_quote(" DXBASESAMPLE(const BYTE alpha, const BYTE red, const BYTE green, const BYTE blue) :")
cpp_quote(" Alpha(alpha),")
cpp_quote(" Red(red),")
cpp_quote(" Green(green),")
cpp_quote(" Blue(blue) {}")
cpp_quote(" DXBASESAMPLE(const DWORD val) { *this = (*(DXBASESAMPLE *)&val); }")
cpp_quote(" operator DWORD () const {return *((DWORD *)this); }")
cpp_quote(" DWORD operator=(const DWORD val) { return *this = *((DXBASESAMPLE *)&val); }")
cpp_quote("}; // DXBASESAMPLE")
cpp_quote("")
cpp_quote("/////////////////////////////////////////////////////")
cpp_quote("")
cpp_quote("class DXSAMPLE : public DXBASESAMPLE")
cpp_quote("{")
cpp_quote("public:")
cpp_quote(" DXSAMPLE() {}")
cpp_quote(" DXSAMPLE(const BYTE alpha, const BYTE red, const BYTE green, const BYTE blue) :")
cpp_quote(" DXBASESAMPLE(alpha, red, green, blue) {}")
cpp_quote(" DXSAMPLE(const DWORD val) { *this = (*(DXSAMPLE *)&val); }")
cpp_quote(" operator DWORD () const {return *((DWORD *)this); }")
cpp_quote(" DWORD operator=(const DWORD val) { return *this = *((DXSAMPLE *)&val); }")
cpp_quote(" operator DXPMSAMPLE() const;")
cpp_quote("}; // DXSAMPLE")
cpp_quote("")
cpp_quote("/////////////////////////////////////////////////////")
cpp_quote("")
cpp_quote("class DXPMSAMPLE : public DXBASESAMPLE")
cpp_quote("{")
cpp_quote("public:")
cpp_quote(" DXPMSAMPLE() {}")
cpp_quote(" DXPMSAMPLE(const BYTE alpha, const BYTE red, const BYTE green, const BYTE blue) :")
cpp_quote(" DXBASESAMPLE(alpha, red, green, blue) {}")
cpp_quote(" DXPMSAMPLE(const DWORD val) { *this = (*(DXPMSAMPLE *)&val); }")
cpp_quote(" operator DWORD () const {return *((DWORD *)this); }")
cpp_quote(" DWORD operator=(const DWORD val) { return *this = *((DXPMSAMPLE *)&val); }")
cpp_quote(" operator DXSAMPLE() const;")
cpp_quote("}; // DXPMSAMPLE")
cpp_quote("")
cpp_quote("//")
cpp_quote("// The following cast operators are to prevent a direct assignment of a DXSAMPLE to a DXPMSAMPLE")
cpp_quote("//")
cpp_quote("inline DXSAMPLE::operator DXPMSAMPLE() const { return *((DXPMSAMPLE *)this); }")
cpp_quote("inline DXPMSAMPLE::operator DXSAMPLE() const { return *((DXSAMPLE *)this); }")
//+-----------------------------------------------------------------------------
//
// Sample structures (IDL, C)
//
//------------------------------------------------------------------------------
cpp_quote("#else // !__cplusplus")
typedef struct DXBASESAMPLE
{
BYTE Blue;
BYTE Green;
BYTE Red;
BYTE Alpha;
} DXBASESAMPLE;
typedef struct DXSAMPLE
{
BYTE Blue;
BYTE Green;
BYTE Red;
BYTE Alpha;
} DXSAMPLE;
typedef struct DXPMSAMPLE
{
BYTE Blue;
BYTE Green;
BYTE Red;
BYTE Alpha;
} DXPMSAMPLE;
cpp_quote("#endif // !__cplusplus")
//+-----------------------------------------------------------------------------
//
// DXRUNINFO structures.
//
//------------------------------------------------------------------------------
typedef enum DXRUNTYPE
{
DXRUNTYPE_CLEAR = 0, // The run is zero Alpha
DXRUNTYPE_OPAQUE = 1, // The run is full Alpha (i.e. 255)
DXRUNTYPE_TRANS = 2, // The run is non-zero Alpha
DXRUNTYPE_UNKNOWN= 3 // The run type is unknown. Caller must inspect.
} DXRUNTYPE;
const ULONG DX_MAX_RUN_INFO_COUNT = 128; // Defines the maximum number of RUNINFOs in a single row
cpp_quote("// Ignore the definition used by MIDL for TLB generation")
cpp_quote("#if 0")
typedef struct DXRUNINFO
{
ULONG Bitfields;
} DXRUNINFO;
cpp_quote("#endif // 0")
// Emit the C definition to the H file directly, as bit fields are not
// supported by MIDL.
cpp_quote("typedef struct DXRUNINFO")
cpp_quote("{")
cpp_quote(" ULONG Type : 2; // Type")
cpp_quote(" ULONG Count : 30; // Number of samples in run")
cpp_quote("} DXRUNINFO;")
typedef enum DXSFCREATE
{
DXSF_FORMAT_IS_CLSID = ( 1L << 0 ),
DXSF_NO_LAZY_DDRAW_LOCK = ( 1L << 1 )
} DXSFCREATE;
typedef enum DXBLTOPTIONS
{
DXBOF_DO_OVER = (1L << 0),
DXBOF_DITHER = (1L << 1)
} DXBLTOPTIONS;
//+-----------------------------------------------------------------------------
//
// IDXSurfaceModifier
//
//------------------------------------------------------------------------------
[
object,
uuid(144946F5-C4D4-11d1-81D1-0000F87557DB),
helpstring("IDXSurfaceFactory Interface"),
pointer_default(unique),
local
]
interface IDXSurfaceFactory : IUnknown
{
HRESULT CreateSurface([in] IUnknown *pDirectDraw,
[in] const DDSURFACEDESC * pDDSurfaceDesc,
[in] const GUID * pFormatID,
[in] const DXBNDS *pBounds,
[in] DWORD dwFlags,
[in] IUnknown *punkOuter,
[in] REFIID riid,
[out, iid_is( riid )] void ** ppDXSurface);
HRESULT CreateFromDDSurface([in] IUnknown *pDDrawSurface,
[in] const GUID *pFormatID,
[in] DWORD dwFlags,
[in] IUnknown *punkOuter,
[in] REFIID riid,
[out, iid_is( riid )] void ** ppDXSurface);
HRESULT LoadImage(
[in] const LPWSTR pszFileName,
[in] IUnknown *pDirectDraw,
[in] const DDSURFACEDESC * pDDSurfaceDesc,
[in] const GUID *pFormatID,
[in] REFIID riid,
[out, iid_is( riid )] void ** ppDXSurface);
HRESULT LoadImageFromStream([in] IStream *pStream,
[in] IUnknown *pDirectDraw,
[in] const DDSURFACEDESC * pDDSurfaceDesc,
[in] const GUID *pFormatID,
[in] REFIID riid,
[out, iid_is( riid )] void ** ppDXSurface);
HRESULT CopySurfaceToNewFormat( [in]IDXSurface* pSrc,
[in] IUnknown *pDirectDraw,
[in] const DDSURFACEDESC * pDDSurfaceDesc,
[in] const GUID *pDestFormatID,
[out] IDXSurface** ppNewSurface );
HRESULT CreateD3DRMTexture([in] IDXSurface *pSrc,
[in] IUnknown *pDirectDraw,
[in] IUnknown *pD3DRM3,
[in] REFIID riid,
[out, iid_is(riid)] void **ppTexture3);
HRESULT BitBlt([in] IDXSurface *pDest,
[in] const DXVEC *pPlacement,
[in] IDXSurface *pSrc,
[in] const DXBNDS *pClipBounds,
[in] DWORD dwFlags);
};
//+-----------------------------------------------------------------------------
//
// IDXSurfaceModifier
//
//------------------------------------------------------------------------------
typedef enum DXSURFMODCOMPOP
{
DXSURFMOD_COMP_OVER = 0,
DXSURFMOD_COMP_ALPHA_MASK = 1,
DXSURFMOD_COMP_MAX_VALID = 1
} DXSURFMODCOMPOP;
[
object,
uuid(9EA3B637-C37D-11d1-905E-00C04FD9189D),
helpstring("IDXSurfaceModifier Interface"),
pointer_default(unique),
local
]
interface IDXSurfaceModifier : IUnknown
{
HRESULT SetFillColor([in] DXSAMPLE Color);
HRESULT GetFillColor([out] DXSAMPLE *pColor);
HRESULT SetBounds([in] const DXBNDS *pBounds ); // Get supported though IDXSurface interface
HRESULT SetBackground([in] IDXSurface *pSurface);
HRESULT GetBackground([out] IDXSurface **ppSurface);
HRESULT SetCompositeOperation([in] DXSURFMODCOMPOP CompOp);
HRESULT GetCompositeOperation([out] DXSURFMODCOMPOP *pCompOp);
//
// The following methods only apply to the FOREGROUND surface
//
HRESULT SetForeground([in] IDXSurface *pSurface, [in] BOOL bTile, [in] const POINT * pOrigin);
HRESULT GetForeground([out] IDXSurface **ppSurface, [out] BOOL *pbTile, [out] POINT * pOrigin);
HRESULT SetOpacity([in] float Opacity);
HRESULT GetOpacity([out] float *pOpacity);
HRESULT SetLookup( [in]IDXLookupTable * pLookupTable );
HRESULT GetLookup( [out]IDXLookupTable ** ppLookupTable );
};
//+-----------------------------------------------------------------------------
//
// IDXSurface
//
//------------------------------------------------------------------------------
typedef enum DXSAMPLEFORMATENUM
{
DXPF_FLAGSMASK = (0xFFFF0000), // Top word is flags, low word is enum
DXPF_NONPREMULT = (0x00010000), // Flags to be OR'd with pixel formats
DXPF_TRANSPARENCY = (0x00020000), // Color key or one-bit alpha (alpha only 0 or 0xFF)
DXPF_TRANSLUCENCY = (0x00040000), // Alpha can be any value from 0->0xFF
//
// This 3-bit field is used to determine what type of dithering to be used
//
DXPF_2BITERROR = (0x00200000), // 2 bits of error term
DXPF_3BITERROR = (0x00300000), // 3 bits of error term for color (16-bit color)
DXPF_4BITERROR = (0x00400000), // 4 bits of error term (ARGB 4444)
DXPF_5BITERROR = (0x00500000), // 5 bits of error term for color (8-bit color)
DXPF_ERRORMASK = (0x00700000), // Mask of bits used for dithering
DXPF_NONSTANDARD = (0), // To be used for any surface that is not one of the following formats
// This can be combined with DXPFNONPREMULT if the surface can work
// better in non-premultiplied space.
DXPF_PMARGB32 = (1 | DXPF_TRANSPARENCY | DXPF_TRANSLUCENCY),
DXPF_ARGB32 = (2 | DXPF_NONPREMULT | DXPF_TRANSPARENCY | DXPF_TRANSLUCENCY),
DXPF_ARGB4444 = (3 | DXPF_NONPREMULT | DXPF_TRANSPARENCY | DXPF_TRANSLUCENCY | DXPF_4BITERROR),
DXPF_A8 = (4 | DXPF_TRANSPARENCY | DXPF_TRANSLUCENCY),
DXPF_RGB32 = (5),
DXPF_RGB24 = (6),
DXPF_RGB565 = (7 | DXPF_3BITERROR),
DXPF_RGB555 = (8 | DXPF_3BITERROR),
DXPF_RGB8 = (9 | DXPF_5BITERROR),
DXPF_ARGB1555 = (10 | DXPF_TRANSPARENCY | DXPF_3BITERROR),
DXPF_RGB32_CK = (DXPF_RGB32 | DXPF_TRANSPARENCY),
DXPF_RGB24_CK = (DXPF_RGB24 | DXPF_TRANSPARENCY),
DXPF_RGB555_CK = (DXPF_RGB555 | DXPF_TRANSPARENCY),
DXPF_RGB565_CK = (DXPF_RGB565 | DXPF_TRANSPARENCY),
DXPF_RGB8_CK = (DXPF_RGB8 | DXPF_TRANSPARENCY)
} DXSAMPLEFORMATENUM;
typedef enum DXLOCKSURF
{
DXLOCKF_READ = 0,
DXLOCKF_READWRITE = (1 << 0),
DXLOCKF_EXISTINGINFOONLY = (1 << 1), // If used in conjunction with WANTRUNINFO will prevent creation of a runmap if one does not exist
DXLOCKF_WANTRUNINFO = (1 << 2),
//
// The flags in the high word should be specific to the type of pointer that
// is requested. These flags define ARGB flags. These flags are advisory and
// are not required to be set for ARGB locks.
//
DXLOCKF_NONPREMULT = (1 << 16), // Caller will request non-premultiplied data
DXLOCKF_VALIDFLAGS = (DXLOCKF_READWRITE | DXLOCKF_EXISTINGINFOONLY | DXLOCKF_WANTRUNINFO | DXLOCKF_NONPREMULT)
} DXLOCKSURF;
typedef enum DXSURFSTATUS
{
DXSURF_TRANSIENT = (1 << 0), // Data in this surface changes often.
DXSURF_READONLY = (1 << 1), // Surface is read-only
DXSURF_VALIDFLAGS = (DXSURF_TRANSIENT | DXSURF_READONLY)
} DXSURFSTATUS;
[
object,
uuid(B39FD73F-E139-11d1-9065-00C04FD9189D),
helpstring("IDXSurface Interface"),
pointer_default(unique),
local
]
interface IDXSurface : IDXBaseObject
{
HRESULT GetPixelFormat([out] GUID * pFormatID, [out] DXSAMPLEFORMATENUM *pSampleFormatEnum);
HRESULT GetBounds( [out]DXBNDS *pBounds );
HRESULT GetStatusFlags([out] DWORD * pdwStatusFlags);
HRESULT SetStatusFlags([in] DWORD dwStatusFlags);
HRESULT LockSurface( [in]const DXBNDS *pBounds, [in]ULONG ulTimeOut, [in]DWORD dwFlags,
[in]REFIID riid, [out, iid_is(riid)] void **ppPointer,
[out]ULONG* pulGenerationId );
HRESULT GetDirectDrawSurface( [in] REFIID riid,
[out, iid_is(riid)] void ** ppSurface);
HRESULT GetColorKey(DXSAMPLE * pColorKey); // Can return E_NOTIMPL
HRESULT SetColorKey(DXSAMPLE ColorKey); // Set color of 0 to get rid of color key, can return E_NOTIMPL
HRESULT LockSurfaceDC( [in] const DXBNDS *pBounds, [in]ULONG ulTimeOut, [in] DWORD dwFlags,
[out] IDXDCLock **ppDCLock);
HRESULT SetAppData(DWORD_PTR dwAppData);
HRESULT GetAppData(DWORD_PTR *pdwAppData);
};
//+-----------------------------------------------------------------------------
//
// IDXSurfaceInit
//
//------------------------------------------------------------------------------
[
object,
uuid(9EA3B639-C37D-11d1-905E-00C04FD9189D),
helpstring("IDXSurfaceInit Interface"),
pointer_default(unique),
local
]
interface IDXSurfaceInit : IUnknown
{
HRESULT InitSurface([in] IUnknown *pDirectDraw,
[in] const DDSURFACEDESC *pDDSurfaceDesc,
[in] const GUID * pFormatID,
[in] const DXBNDS *pBounds,
[in] DWORD dwFlags);
};
//+-----------------------------------------------------------------------------
//
// IDXARGBSurfaceInit
//
//------------------------------------------------------------------------------
[
object,
uuid(9EA3B63A-C37D-11d1-905E-00C04FD9189D),
helpstring("IDXARGBSurfaceInit Interface"),
pointer_default(unique),
local
]
interface IDXARGBSurfaceInit : IDXSurfaceInit
{
HRESULT InitFromDDSurface( [in] IUnknown *pDDrawSurface,
[in] const GUID * pFormatID,
[in] DWORD dwFlags);
HRESULT InitFromRawSurface([in] IDXRawSurface *pRawSurface);
};
//+-----------------------------------------------------------------------------
//
// IDXARGBReadPtr
//
//------------------------------------------------------------------------------
typedef struct tagDXNATIVETYPEINFO
{
BYTE * pCurrentData;
BYTE * pFirstByte;
long lPitch;
DWORD dwColorKey;
} DXNATIVETYPEINFO;
typedef struct tagDXPACKEDRECTDESC
{
DXBASESAMPLE *pSamples;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -