1/*==========================================================================;
2 *
3 *  Copyright (C) 1995-1996 Microsoft Corporation.  All Rights Reserved.
4 *
5 *  File:       d3drm.h
6 *  Content:    Direct3DRM include file
7 *
8 ***************************************************************************/
9
10#ifndef __D3DRM_H__
11#define __D3DRM_H__
12
13#include "d3drmobj.h"
14
15#ifdef __cplusplus
16extern "C" {
17struct IDirect3DRM;
18#endif
19
20
21typedef void (*D3DRMDEVICEPALETTECALLBACK)
22    (LPDIRECT3DRMDEVICE lpDirect3DRMDev, LPVOID lpArg, DWORD dwIndex, LONG red, LONG green, LONG blue);
23
24DEFINE_GUID(IID_IDirect3DRM,    0x2bc49361, 0x8327, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
25WIN_TYPES(IDirect3DRM, DIRECT3DRM);
26
27
28/* Create a Direct3DRM API */
29STDAPI Direct3DRMCreate(LPDIRECT3DRM FAR *lplpDirect3DRM);
30
31#undef INTERFACE
32#define INTERFACE IDirect3DRM
33
34DECLARE_INTERFACE_(IDirect3DRM, IUnknown)
35{
36    IUNKNOWN_METHODS(PURE);
37
38    STDMETHOD(CreateObject)
39        (THIS_ REFCLSID rclsid, LPUNKNOWN pUnkOuter, REFIID riid, LPVOID FAR* ppv) PURE;
40    STDMETHOD(CreateFrame)      (THIS_ LPDIRECT3DRMFRAME, LPDIRECT3DRMFRAME *) PURE;
41    STDMETHOD(CreateMesh)       (THIS_ LPDIRECT3DRMMESH *) PURE;
42    STDMETHOD(CreateMeshBuilder)(THIS_ LPDIRECT3DRMMESHBUILDER *) PURE;
43    STDMETHOD(CreateFace)       (THIS_ LPDIRECT3DRMFACE *) PURE;
44    STDMETHOD(CreateAnimation)  (THIS_ LPDIRECT3DRMANIMATION *) PURE;
45    STDMETHOD(CreateAnimationSet)(THIS_ LPDIRECT3DRMANIMATIONSET *) PURE;
46    STDMETHOD(CreateTexture)    (THIS_ LPD3DRMIMAGE, LPDIRECT3DRMTEXTURE *) PURE;
47    STDMETHOD(CreateLight)      (THIS_ D3DRMLIGHTTYPE, D3DCOLOR, LPDIRECT3DRMLIGHT *) PURE;
48    STDMETHOD(CreateLightRGB)
49        (THIS_ D3DRMLIGHTTYPE, D3DVALUE, D3DVALUE, D3DVALUE, LPDIRECT3DRMLIGHT *) PURE;
50    STDMETHOD(CreateMaterial)   (THIS_ D3DVALUE, LPDIRECT3DRMMATERIAL *) PURE;
51    STDMETHOD(CreateDevice)     (THIS_ DWORD, DWORD, LPDIRECT3DRMDEVICE *) PURE;
52
53    /* Create a Windows Device using DirectDraw surfaces */
54    STDMETHOD(CreateDeviceFromSurface)
55    (   THIS_ LPGUID lpGUID, LPDIRECTDRAW lpDD,
56        LPDIRECTDRAWSURFACE lpDDSBack, LPDIRECT3DRMDEVICE *
57    ) PURE;
58
59    /* Create a Windows Device using D3D objects */
60    STDMETHOD(CreateDeviceFromD3D)
61    (   THIS_ LPDIRECT3D lpD3D, LPDIRECT3DDEVICE lpD3DDev,
62        LPDIRECT3DRMDEVICE *
63    ) PURE;
64
65    STDMETHOD(CreateDeviceFromClipper)
66    (   THIS_ LPDIRECTDRAWCLIPPER lpDDClipper, LPGUID lpGUID,
67        int width, int height, LPDIRECT3DRMDEVICE *) PURE;
68
69    STDMETHOD(CreateTextureFromSurface)(THIS_ LPDIRECTDRAWSURFACE lpDDS, LPDIRECT3DRMTEXTURE *) PURE;
70
71    STDMETHOD(CreateShadow)
72    (   THIS_ LPDIRECT3DRMVISUAL, LPDIRECT3DRMLIGHT,
73        D3DVALUE px, D3DVALUE py, D3DVALUE pz,
74        D3DVALUE nx, D3DVALUE ny, D3DVALUE nz,
75        LPDIRECT3DRMVISUAL *
76    ) PURE;
77    STDMETHOD(CreateViewport)
78    (   THIS_ LPDIRECT3DRMDEVICE, LPDIRECT3DRMFRAME, DWORD, DWORD,
79        DWORD, DWORD, LPDIRECT3DRMVIEWPORT *
80    ) PURE;
81    STDMETHOD(CreateWrap)
82    (   THIS_ D3DRMWRAPTYPE, LPDIRECT3DRMFRAME,
83        D3DVALUE ox, D3DVALUE oy, D3DVALUE oz,
84        D3DVALUE dx, D3DVALUE dy, D3DVALUE dz,
85        D3DVALUE ux, D3DVALUE uy, D3DVALUE uz,
86        D3DVALUE ou, D3DVALUE ov,
87        D3DVALUE su, D3DVALUE sv,
88        LPDIRECT3DRMWRAP *
89    ) PURE;
90    STDMETHOD(CreateUserVisual) (THIS_ D3DRMUSERVISUALCALLBACK, LPVOID lPArg, LPDIRECT3DRMUSERVISUAL *) PURE;
91    STDMETHOD(LoadTexture)      (THIS_ const char *, LPDIRECT3DRMTEXTURE *) PURE;
92    STDMETHOD(LoadTextureFromResource)  (THIS_ HRSRC rs, LPDIRECT3DRMTEXTURE *) PURE;
93
94    STDMETHOD(SetSearchPath)    (THIS_ LPCSTR) PURE;
95    STDMETHOD(AddSearchPath)    (THIS_ LPCSTR) PURE;
96    STDMETHOD(GetSearchPath)    (THIS_ DWORD *size_return, LPSTR path_return);
97    //STDMETHOD(GetSearchPath)  (THIS_ int *return_count, char ***return_path) PURE;
98    STDMETHOD(SetDefaultTextureColors)(THIS_ DWORD) PURE;
99    STDMETHOD(SetDefaultTextureShades)(THIS_ DWORD) PURE;
100
101    STDMETHOD(GetDevices)       (THIS_ LPDIRECT3DRMDEVICEARRAY *) PURE;
102    STDMETHOD(GetNamedObject)   (THIS_ const char *, LPDIRECT3DRMOBJECT *) PURE;
103
104    STDMETHOD(EnumerateObjects) (THIS_ D3DRMOBJECTCALLBACK, LPVOID) PURE;
105
106    STDMETHOD(Load)
107    (   THIS_ LPVOID, LPVOID, LPIID *, DWORD, D3DRMLOADOPTIONS,
108        D3DRMLOADCALLBACK, LPVOID, D3DRMLOADTEXTURECALLBACK, LPVOID,
109        LPDIRECT3DRMFRAME
110    ) PURE;
111    STDMETHOD(Tick)             (THIS_ D3DVALUE) PURE;
112};
113
114#define D3DRM_OK                        DD_OK
115#define D3DRMERR_BADOBJECT              MAKE_DDHRESULT(781)
116#define D3DRMERR_BADTYPE                MAKE_DDHRESULT(782)
117#define D3DRMERR_BADALLOC               MAKE_DDHRESULT(783)
118#define D3DRMERR_FACEUSED               MAKE_DDHRESULT(784)
119#define D3DRMERR_NOTFOUND               MAKE_DDHRESULT(785)
120#define D3DRMERR_NOTDONEYET             MAKE_DDHRESULT(786)
121#define D3DRMERR_FILENOTFOUND           MAKE_DDHRESULT(787)
122#define D3DRMERR_BADFILE                MAKE_DDHRESULT(788)
123#define D3DRMERR_BADDEVICE              MAKE_DDHRESULT(789)
124#define D3DRMERR_BADVALUE               MAKE_DDHRESULT(790)
125#define D3DRMERR_BADMAJORVERSION        MAKE_DDHRESULT(791)
126#define D3DRMERR_BADMINORVERSION        MAKE_DDHRESULT(792)
127#define D3DRMERR_UNABLETOEXECUTE        MAKE_DDHRESULT(793)
128
129#ifdef __cplusplus
130};
131#endif
132
133#endif /* _D3DRMAPI_H_ */
134
135