ReactOS 0.4.17-dev-966-gf06eace
d3drm_private.h
Go to the documentation of this file.
1/*
2 * Direct3DRM private interfaces (D3DRM.DLL)
3 *
4 * Copyright 2010 Christian Costa
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 */
20
21#ifndef __D3DRM_PRIVATE_INCLUDED__
22#define __D3DRM_PRIVATE_INCLUDED__
23
24#define COBJMACROS
25#include <assert.h>
26#include <math.h>
27#include "dxfile.h"
28#include "d3drmwin.h"
29#include "rmxfguid.h"
30#include "wine/debug.h"
31#include "wine/list.h"
32
34{
35 float _11, _12, _13, _14;
36 float _21, _22, _23, _24;
37 float _31, _32, _33, _34;
38 float _41, _42, _43, _44;
39};
40
42{
43 return (struct d3drm_matrix *)m;
44}
45
47{
51 const char *classname;
52 char *name;
53};
54
56{
58 IDirect3DRMTexture IDirect3DRMTexture_iface;
59 IDirect3DRMTexture2 IDirect3DRMTexture2_iface;
60 IDirect3DRMTexture3 IDirect3DRMTexture3_iface;
61 IDirect3DRM *d3drm;
63 IDirectDrawSurface *surface;
71};
72
74{
76 IDirect3DRMFrame IDirect3DRMFrame_iface;
77 IDirect3DRMFrame2 IDirect3DRMFrame2_iface;
78 IDirect3DRMFrame3 IDirect3DRMFrame3_iface;
79 IDirect3DRM *d3drm;
84 IDirect3DRMFrame3 **children;
87 IDirect3DRMVisual **visuals;
90 IDirect3DRMLight **lights;
94};
95
97{
98 float left;
99 float top;
100 float right;
101 float bottom;
102 float front;
103 float back;
104};
105
107{
110 IDirect3DRMFrame *camera;
111 IDirect3DRMViewport IDirect3DRMViewport_iface;
112 IDirect3DRMViewport2 IDirect3DRMViewport2_iface;
113 IDirect3DViewport *d3d_viewport;
114 IDirect3DMaterial *material;
115 IDirect3DRM *d3drm;
118};
119
121{
123 IDirect3DRMDevice IDirect3DRMDevice_iface;
124 IDirect3DRMDevice2 IDirect3DRMDevice2_iface;
125 IDirect3DRMDevice3 IDirect3DRMDevice3_iface;
126 IDirect3DRMWinDevice IDirect3DRMWinDevice_iface;
127 IDirect3DRM *d3drm;
128 IDirectDraw *ddraw;
129 IDirectDrawSurface *primary_surface, *render_target;
130 IDirectDrawClipper *clipper;
131 IDirect3DDevice *device;
137};
138
140{
142 IDirect3DRMFace IDirect3DRMFace_iface;
143 IDirect3DRMFace2 IDirect3DRMFace2_iface;
146};
147
149{
151 IDirect3DRMMeshBuilder2 IDirect3DRMMeshBuilder2_iface;
152 IDirect3DRMMeshBuilder3 IDirect3DRMMeshBuilder3_iface;
154 IDirect3DRM *d3drm;
167 IDirect3DRMMaterial2 *material;
168 IDirect3DRMTexture3 *texture;
173};
174
176{
177 unsigned nb_vertices;
179 unsigned nb_faces;
182 unsigned* face_data;
184 IDirect3DRMMaterial2* material;
185 IDirect3DRMTexture3* texture;
186};
187
189{
191 IDirect3DRMMesh IDirect3DRMMesh_iface;
193 IDirect3DRM *d3drm;
197};
198
200{
202 IDirect3DRMLight IDirect3DRMLight_iface;
204 IDirect3DRM *d3drm;
213};
214
216{
220};
221
223{
225 IDirect3DRMMaterial2 IDirect3DRMMaterial2_iface;
227 IDirect3DRM *d3drm;
232};
233
235{
237 union
238 {
242 } u;
243};
244
246{
250};
251
253{
255 IDirect3DRMAnimation2 IDirect3DRMAnimation2_iface;
256 IDirect3DRMAnimation IDirect3DRMAnimation_iface;
258 IDirect3DRM *d3drm;
259 IDirect3DRMFrame3 *frame;
264};
265
267{
269 IDirect3DRMWrap IDirect3DRMWrap_iface;
271};
272
273HRESULT d3drm_device_create(struct d3drm_device **device, IDirect3DRM *d3drm);
275 IDirectDrawClipper *clipper, int width, int height, IDirectDrawSurface **surface);
278 IDirectDrawSurface *surface, BOOL create_z_surface);
279
280void d3drm_object_init(struct d3drm_object *object, const char *classname);
285HRESULT d3drm_object_set_name(struct d3drm_object *object, const char *name);
286void d3drm_object_cleanup(IDirect3DRMObject *iface, struct d3drm_object *object);
287
288struct d3drm_frame *unsafe_impl_from_IDirect3DRMFrame(IDirect3DRMFrame *iface);
289struct d3drm_frame *unsafe_impl_from_IDirect3DRMFrame3(IDirect3DRMFrame3 *iface);
290
291struct d3drm_device *unsafe_impl_from_IDirect3DRMDevice3(IDirect3DRMDevice3 *iface);
292
294HRESULT d3drm_frame_create(struct d3drm_frame **frame, IUnknown *parent_frame, IDirect3DRM *d3drm);
296HRESULT d3drm_viewport_create(struct d3drm_viewport **viewport, IDirect3DRM *d3drm);
298HRESULT d3drm_light_create(struct d3drm_light **light, IDirect3DRM *d3drm);
299HRESULT d3drm_material_create(struct d3drm_material **material, IDirect3DRM *d3drm);
300HRESULT d3drm_mesh_create(struct d3drm_mesh **mesh, IDirect3DRM *d3drm);
301HRESULT d3drm_animation_create(struct d3drm_animation **animation, IDirect3DRM *d3drm);
302HRESULT d3drm_wrap_create(struct d3drm_wrap **wrap, IDirect3DRM *d3drm);
303
304HRESULT load_mesh_data(IDirect3DRMMeshBuilder3 *iface, IDirectXFileData *data,
305 D3DRMLOADTEXTURECALLBACK load_texture_proc, void *arg);
306
308{
312};
313
314extern char templates[];
315
316static inline BYTE d3drm_color_component(float c)
317{
318 if (c <= 0.0f)
319 return 0u;
320 if (c >= 1.0f)
321 return 0xffu;
322 return floor(c * 255.0f);
323}
324
325static inline void d3drm_set_color(D3DCOLOR *color, float r, float g, float b, float a)
326{
329}
330
332
333#endif /* __D3DRM_PRIVATE_INCLUDED__ */
Definition: list.h:39
HRESULT d3drm_texture_create(struct d3drm_texture **texture, IDirect3DRM *d3drm)
Definition: texture.c:1460
void d3drm_object_cleanup(IDirect3DRMObject *iface, struct d3drm_object *object)
Definition: d3drm_main.c:155
static void d3drm_set_color(D3DCOLOR *color, float r, float g, float b, float a)
HRESULT load_mesh_data(IDirect3DRMMeshBuilder3 *iface, IDirectXFileData *data, D3DRMLOADTEXTURECALLBACK load_texture_proc, void *arg)
Definition: meshbuilder.c:1022
struct d3drm_device * unsafe_impl_from_IDirect3DRMDevice3(IDirect3DRMDevice3 *iface)
Definition: device.c:1647
HRESULT d3drm_device_init(struct d3drm_device *device, UINT version, IDirectDraw *ddraw, IDirectDrawSurface *surface, BOOL create_z_surface)
Definition: device.c:120
void d3drm_object_init(struct d3drm_object *object, const char *classname)
Definition: d3drm_main.c:41
HRESULT d3drm_frame_create(struct d3drm_frame **frame, IUnknown *parent_frame, IDirect3DRM *d3drm)
Definition: frame.c:3129
HRESULT d3drm_face_create(struct d3drm_face **face)
Definition: face.c:620
HRESULT d3drm_mesh_create(struct d3drm_mesh **mesh, IDirect3DRM *d3drm)
Definition: meshbuilder.c:2836
char templates[]
Definition: meshbuilder.c:39
HRESULT d3drm_mesh_builder_create(struct d3drm_mesh_builder **mesh_builder, IDirect3DRM *d3drm)
Definition: meshbuilder.c:2336
HRESULT d3drm_light_create(struct d3drm_light **light, IDirect3DRM *d3drm)
Definition: light.c:371
HRESULT d3drm_animation_create(struct d3drm_animation **animation, IDirect3DRM *d3drm)
Definition: frame.c:3881
HRESULT d3drm_object_get_name(struct d3drm_object *object, DWORD *size, char *name)
Definition: d3drm_main.c:113
HRESULT d3drm_object_delete_destroy_callback(struct d3drm_object *object, D3DRMOBJECTCALLBACK cb, void *ctx)
Definition: d3drm_main.c:74
HRESULT d3drm_device_create(struct d3drm_device **device, IDirect3DRM *d3drm)
Definition: device.c:1656
HRESULT d3drm_wrap_create(struct d3drm_wrap **wrap, IDirect3DRM *d3drm)
Definition: meshbuilder.c:3022
struct d3drm_frame * unsafe_impl_from_IDirect3DRMFrame(IDirect3DRMFrame *iface)
Definition: frame.c:3120
void d3drm_device_destroy(struct d3drm_device *device)
Definition: device.c:40
HRESULT d3drm_device_create_surfaces_from_clipper(struct d3drm_device *object, IDirectDraw *ddraw, IDirectDrawClipper *clipper, int width, int height, IDirectDrawSurface **surface)
Definition: device.c:69
HRESULT d3drm_object_add_destroy_callback(struct d3drm_object *object, D3DRMOBJECTCALLBACK cb, void *ctx)
Definition: d3drm_main.c:57
HRESULT d3drm_object_set_name(struct d3drm_object *object, const char *name)
Definition: d3drm_main.c:137
static BYTE d3drm_color_component(float c)
struct d3drm_frame * unsafe_impl_from_IDirect3DRMFrame3(IDirect3DRMFrame3 *iface)
Definition: frame.c:3111
BOOL d3drm_array_reserve(void **elements, SIZE_T *capacity, SIZE_T element_count, SIZE_T element_size)
Definition: meshbuilder.c:260
HRESULT d3drm_object_get_class_name(struct d3drm_object *object, DWORD *size, char *name)
Definition: d3drm_main.c:94
HRESULT d3drm_material_create(struct d3drm_material **material, IDirect3DRM *d3drm)
Definition: material.c:279
HRESULT d3drm_viewport_create(struct d3drm_viewport **viewport, IDirect3DRM *d3drm)
Definition: viewport.c:1129
DWORD D3DRMANIMATIONOPTIONS
Definition: d3drmdef.h:322
D3DVALUE D3DRMMATRIX4D[4][4]
Definition: d3drmdef.h:39
enum _D3DRMLIGHTTYPE D3DRMLIGHTTYPE
DWORD D3DRMRENDERQUALITY
Definition: d3drmdef.h:89
enum _D3DRMPROJECTIONTYPE D3DRMPROJECTIONTYPE
void(__cdecl * D3DRMOBJECTCALLBACK)(struct IDirect3DRMObject *obj, void *arg)
Definition: d3drmobj.h:157
HRESULT(__cdecl * D3DRMLOADTEXTURECALLBACK)(char *tex_name, void *arg, struct IDirect3DRMTexture **texture)
Definition: d3drmobj.h:165
float D3DVALUE
Definition: d3dtypes.h:89
size_t const element_size
Definition: debug_heap.cpp:510
static const WCHAR version[]
Definition: asmname.c:66
static MonoProfilerRuntimeShutdownBeginCallback cb
Definition: metahost.c:118
_ACRTIMP double __cdecl floor(double)
Definition: floor.c:18
#define wrap(journal, var)
Definition: recovery.c:207
#define RGBA_MAKE
Definition: dx7todx8.h:6
unsigned short WORD
Definition: ntddk_ex.h:93
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
GLint GLint GLsizei GLsizei height
Definition: gl.h:1546
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
GLdouble GLdouble GLdouble r
Definition: gl.h:2055
GLint GLint GLsizei width
Definition: gl.h:1546
GLuint GLenum GLenum transform
Definition: glext.h:9407
GLenum GLuint texture
Definition: glext.h:6295
GLenum GLenum GLenum GLenum GLenum scale
Definition: glext.h:9032
GLsizeiptr size
Definition: glext.h:5919
GLuint color
Definition: glext.h:6243
const GLubyte * c
Definition: glext.h:8905
GLenum GLuint GLint GLenum face
Definition: glext.h:7025
GLboolean GLboolean GLboolean b
Definition: glext.h:6204
GLboolean GLboolean g
Definition: glext.h:6204
GLboolean GLboolean GLboolean GLboolean a
Definition: glext.h:6204
const GLfloat * m
Definition: glext.h:10848
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
Definition: glfuncs.h:240
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum light
Definition: glfuncs.h:170
unsigned int UINT
Definition: sysinfo.c:13
IDirect3DRMMeshBuilder * mesh_builder
Definition: d3drm.c:3491
static ULONG ** element_count
Definition: exception.c:124
long LONG
Definition: pedump.c:60
WCHAR classname[128]
Definition: startup.c:15
D3DVALUE r
D3DVALUE g
D3DVALUE b
D3DRMQUATERNION rotate
union d3drm_animation_key::@273 u
struct d3drm_animation_key * keys
struct d3drm_animation_keys rotate
D3DRMANIMATIONOPTIONS options
IDirect3DRMAnimation IDirect3DRMAnimation_iface
IDirect3DRMAnimation2 IDirect3DRMAnimation2_iface
IDirect3DRM * d3drm
struct d3drm_animation_keys position
IDirect3DRMFrame3 * frame
float left
Definition: d3drm_private.h:98
float bottom
IDirect3DRMDevice IDirect3DRMDevice_iface
D3DRMRENDERQUALITY quality
IDirectDraw * ddraw
IDirectDrawSurface * render_target
IDirect3DRMWinDevice IDirect3DRMWinDevice_iface
IDirectDrawClipper * clipper
IDirect3DRMDevice2 IDirect3DRMDevice2_iface
IDirect3DRMDevice3 IDirect3DRMDevice3_iface
IDirectDrawSurface * primary_surface
IDirect3DRM * d3drm
IDirect3DDevice * device
IDirect3DRMFace IDirect3DRMFace_iface
IDirect3DRMFace2 IDirect3DRMFace2_iface
D3DCOLOR color
IDirect3DRM * d3drm
Definition: d3drm_private.h:79
IDirect3DRMFrame3 IDirect3DRMFrame3_iface
Definition: d3drm_private.h:78
SIZE_T visuals_size
Definition: d3drm_private.h:86
IDirect3DRMFrame3 ** children
Definition: d3drm_private.h:84
IDirect3DRMFrame IDirect3DRMFrame_iface
Definition: d3drm_private.h:76
SIZE_T lights_size
Definition: d3drm_private.h:89
D3DCOLOR scenebackground
Definition: d3drm_private.h:92
struct d3drm_frame * parent
Definition: d3drm_private.h:81
IDirect3DRMLight ** lights
Definition: d3drm_private.h:90
IDirect3DRMFrame2 IDirect3DRMFrame2_iface
Definition: d3drm_private.h:77
DWORD traversal_options
Definition: d3drm_private.h:93
IDirect3DRMVisual ** visuals
Definition: d3drm_private.h:87
SIZE_T children_size
Definition: d3drm_private.h:83
SIZE_T nb_visuals
Definition: d3drm_private.h:85
SIZE_T nb_lights
Definition: d3drm_private.h:88
SIZE_T nb_children
Definition: d3drm_private.h:82
IDirect3DRM * d3drm
D3DVALUE qattenuation
D3DVALUE lattenuation
IDirect3DRMLight IDirect3DRMLight_iface
D3DRMLIGHTTYPE type
D3DVALUE penumbra
D3DVALUE range
D3DVALUE umbra
D3DVALUE cattenuation
D3DCOLOR color
struct color_rgb specular
struct color_rgb emissive
struct color_rgb ambient
IDirect3DRM * d3drm
IDirect3DRMMaterial2 IDirect3DRMMaterial2_iface
IDirect3DRM * d3drm
D3DVECTOR * vertices
D3DVECTOR * normals
IDirect3DRMTexture3 * texture
struct mesh_material * materials
IDirect3DRMMeshBuilder3 IDirect3DRMMeshBuilder3_iface
IDirect3DRMMeshBuilder2 IDirect3DRMMeshBuilder2_iface
IDirect3DRMMaterial2 * material
D3DRMRENDERQUALITY quality
struct coords_2d * pCoords2d
SIZE_T groups_size
IDirect3DRM * d3drm
struct mesh_group * groups
IDirect3DRMMesh IDirect3DRMMesh_iface
SIZE_T nb_groups
struct list destroy_callbacks
Definition: d3drm_private.h:50
const char * classname
Definition: d3drm_private.h:51
D3DVALUE decal_width
Definition: d3drm_private.h:69
IDirect3DRM * d3drm
Definition: d3drm_private.h:61
IDirectDrawSurface * surface
Definition: d3drm_private.h:63
IDirect3DRMTexture3 IDirect3DRMTexture3_iface
Definition: d3drm_private.h:60
D3DRMIMAGE * image
Definition: d3drm_private.h:62
IDirect3DRMTexture2 IDirect3DRMTexture2_iface
Definition: d3drm_private.h:59
IDirect3DRMTexture IDirect3DRMTexture_iface
Definition: d3drm_private.h:58
D3DVALUE decal_height
Definition: d3drm_private.h:70
struct d3drm_box clip
IDirect3DRMViewport IDirect3DRMViewport_iface
struct d3drm_device * device
IDirect3DRMViewport2 IDirect3DRMViewport2_iface
IDirect3DRMFrame * camera
IDirect3DViewport * d3d_viewport
IDirect3DMaterial * material
IDirect3DRM * d3drm
D3DRMPROJECTIONTYPE projection
IDirect3DRMWrap IDirect3DRMWrap_iface
Definition: d3drm.c:189
Definition: devices.h:37
unsigned nb_vertices
unsigned vertex_per_face
D3DCOLOR color
unsigned nb_faces
IDirect3DRMMaterial2 * material
IDirect3DRMTexture3 * texture
D3DRMVERTEX * vertices
unsigned * face_data
DWORD face_data_size
Definition: mesh.c:189
Definition: name.c:39
ULONG_PTR SIZE_T
Definition: typedefs.h:80
unsigned char BYTE
Definition: xxhash.c:193