ReactOS 0.4.17-dev-966-gf06eace
viewport.c
Go to the documentation of this file.
1/*
2 * Implementation of IDirect3DRMViewport Interface
3 *
4 * Copyright 2012 André Hentschel
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#include "d3drm_private.h"
22
24
25static inline struct d3drm_viewport *impl_from_IDirect3DRMViewport(IDirect3DRMViewport *iface)
26{
28}
29
30static inline struct d3drm_viewport *impl_from_IDirect3DRMViewport2(IDirect3DRMViewport2 *iface)
31{
33}
34
35static inline void d3drm_normalize_d3d_color(D3DCOLORVALUE *color_value, D3DCOLOR color)
36{
37 color_value->r = RGBA_GETRED(color) / 255.0f;
38 color_value->g = RGBA_GETGREEN(color) / 255.0f;
39 color_value->b = RGBA_GETBLUE(color) / 255.0f;
40 color_value->a = RGBA_GETALPHA(color) / 255.0f;
41}
42
44{
45 IDirect3DRMFrame *root_frame;
48 HRESULT hr;
49
50 if (FAILED(hr = IDirect3DRMFrame_GetScene(viewport->camera, &root_frame)))
51 return hr;
53 IDirect3DRMFrame_Release(root_frame);
54
55 memset(&mat, 0, sizeof(mat));
56 mat.dwSize = sizeof(mat);
58
59 return IDirect3DMaterial_SetMaterial(viewport->material, &mat);
60}
61
62static void d3drm_viewport_destroy(struct d3drm_viewport *viewport)
63{
64 TRACE("viewport %p releasing attached interfaces.\n", viewport);
65
66 d3drm_object_cleanup((IDirect3DRMObject *)&viewport->IDirect3DRMViewport_iface, &viewport->obj);
67
68 if (viewport->d3d_viewport)
69 {
73 IDirect3DRM_Release(viewport->d3drm);
74 }
75
76 free(viewport);
77}
78
79static HRESULT WINAPI d3drm_viewport2_QueryInterface(IDirect3DRMViewport2 *iface, REFIID riid, void **out)
80{
81 struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport2(iface);
82
83 TRACE("iface %p, riid %s, out %p.\n", iface, debugstr_guid(riid), out);
84
85 if (IsEqualGUID(riid, &IID_IDirect3DRMViewport)
86 || IsEqualGUID(riid, &IID_IDirect3DRMObject)
88 {
89 *out = &viewport->IDirect3DRMViewport_iface;
90 }
91 else if (IsEqualGUID(riid, &IID_IDirect3DRMViewport2))
92 {
93 *out = &viewport->IDirect3DRMViewport2_iface;
94 }
95 else
96 {
97 *out = NULL;
98 WARN("%s not implemented, returning CLASS_E_CLASSNOTAVAILABLE.\n", debugstr_guid(riid));
100 }
101
102 IUnknown_AddRef((IUnknown *)*out);
103 return S_OK;
104}
105
106static HRESULT WINAPI d3drm_viewport1_QueryInterface(IDirect3DRMViewport *iface, REFIID riid, void **out)
107{
108 struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport(iface);
109
110 TRACE("iface %p, riid %s, out %p.\n", iface, debugstr_guid(riid), out);
111
113}
114
115static ULONG WINAPI d3drm_viewport2_AddRef(IDirect3DRMViewport2 *iface)
116{
117 struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport2(iface);
118 ULONG refcount = InterlockedIncrement(&viewport->obj.ref);
119
120 TRACE("%p increasing refcount to %lu.\n", iface, refcount);
121
122 return refcount;
123}
124
125static ULONG WINAPI d3drm_viewport1_AddRef(IDirect3DRMViewport *iface)
126{
127 struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport(iface);
128
129 TRACE("iface %p.\n", iface);
130
132}
133
134static ULONG WINAPI d3drm_viewport2_Release(IDirect3DRMViewport2 *iface)
135{
136 struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport2(iface);
137 ULONG refcount = InterlockedDecrement(&viewport->obj.ref);
138
139 TRACE("%p decreasing refcount to %lu.\n", iface, refcount);
140
141 if (!refcount)
142 d3drm_viewport_destroy(viewport);
143
144 return refcount;
145}
146
147static ULONG WINAPI d3drm_viewport1_Release(IDirect3DRMViewport *iface)
148{
149 struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport(iface);
150
151 TRACE("iface %p.\n", iface);
152
154}
155
156static HRESULT WINAPI d3drm_viewport2_Clone(IDirect3DRMViewport2 *iface,
157 IUnknown *outer, REFIID iid, void **out)
158{
159 FIXME("iface %p, outer %p, iid %s, out %p stub!\n", iface, outer, debugstr_guid(iid), out);
160
161 return E_NOTIMPL;
162}
163
164static HRESULT WINAPI d3drm_viewport1_Clone(IDirect3DRMViewport *iface,
165 IUnknown *outer, REFIID iid, void **out)
166{
167 FIXME("iface %p, outer %p, iid %s, out %p stub!\n", iface, outer, debugstr_guid(iid), out);
168
169 return E_NOTIMPL;
170}
171
172static HRESULT WINAPI d3drm_viewport2_AddDestroyCallback(IDirect3DRMViewport2 *iface,
174{
175 struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport2(iface);
176
177 TRACE("iface %p, cb %p, ctx %p\n", iface, cb, ctx);
178
179 return d3drm_object_add_destroy_callback(&viewport->obj, cb, ctx);
180}
181
182static HRESULT WINAPI d3drm_viewport1_AddDestroyCallback(IDirect3DRMViewport *iface,
184{
185 struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport(iface);
186
187 TRACE("iface %p, cb %p, ctx %p\n", iface, cb, ctx);
188
190}
191
192static HRESULT WINAPI d3drm_viewport2_DeleteDestroyCallback(IDirect3DRMViewport2 *iface,
194{
195 struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport2(iface);
196
197 TRACE("iface %p, cb %p, ctx %p\n", iface, cb, ctx);
198
199 return d3drm_object_delete_destroy_callback(&viewport->obj, cb, ctx);
200}
201
202static HRESULT WINAPI d3drm_viewport1_DeleteDestroyCallback(IDirect3DRMViewport *iface,
204{
205 struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport(iface);
206
207 TRACE("iface %p, cb %p, ctx %p\n", iface, cb, ctx);
208
210}
211
212static HRESULT WINAPI d3drm_viewport2_SetAppData(IDirect3DRMViewport2 *iface, DWORD data)
213{
214 struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport2(iface);
215
216 TRACE("iface %p, data %#lx\n", iface, data);
217
218 viewport->obj.appdata = data;
219 return S_OK;
220}
221
222static HRESULT WINAPI d3drm_viewport1_SetAppData(IDirect3DRMViewport *iface, DWORD data)
223{
224 struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport(iface);
225
226 TRACE("iface %p, data %#lx\n", iface, data);
227
229}
230
231static DWORD WINAPI d3drm_viewport2_GetAppData(IDirect3DRMViewport2 *iface)
232{
233 struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport2(iface);
234
235 TRACE("iface %p\n", iface);
236
237 return viewport->obj.appdata;
238}
239
240static DWORD WINAPI d3drm_viewport1_GetAppData(IDirect3DRMViewport *iface)
241{
242 struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport(iface);
243
244 TRACE("iface %p.\n", iface);
245
247}
248
249static HRESULT WINAPI d3drm_viewport2_SetName(IDirect3DRMViewport2 *iface, const char *name)
250{
251 struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport2(iface);
252
253 TRACE("iface %p, name %s.\n", iface, debugstr_a(name));
254
255 return d3drm_object_set_name(&viewport->obj, name);
256}
257
258static HRESULT WINAPI d3drm_viewport1_SetName(IDirect3DRMViewport *iface, const char *name)
259{
260 struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport(iface);
261
262 TRACE("iface %p, name %s.\n", iface, debugstr_a(name));
263
265}
266
267static HRESULT WINAPI d3drm_viewport2_GetName(IDirect3DRMViewport2 *iface, DWORD *size, char *name)
268{
269 struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport2(iface);
270
271 TRACE("iface %p, size %p, name %p.\n", iface, size, name);
272
273 return d3drm_object_get_name(&viewport->obj, size, name);
274}
275
276static HRESULT WINAPI d3drm_viewport1_GetName(IDirect3DRMViewport *iface, DWORD *size, char *name)
277{
278 struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport(iface);
279
280 TRACE("iface %p, size %p, name %p.\n", iface, size, name);
281
283}
284
285static HRESULT WINAPI d3drm_viewport2_GetClassName(IDirect3DRMViewport2 *iface, DWORD *size, char *name)
286{
287 struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport2(iface);
288
289 TRACE("iface %p, size %p, name %p.\n", iface, size, name);
290
291 return d3drm_object_get_class_name(&viewport->obj, size, name);
292}
293
294static HRESULT WINAPI d3drm_viewport1_GetClassName(IDirect3DRMViewport *iface, DWORD *size, char *name)
295{
296 struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport(iface);
297
298 TRACE("iface %p, size %p, name %p.\n", iface, size, name);
299
301}
302
303static HRESULT WINAPI d3drm_viewport2_Init(IDirect3DRMViewport2 *iface, IDirect3DRMDevice3 *device,
304 IDirect3DRMFrame3 *camera, DWORD x, DWORD y, DWORD width, DWORD height)
305{
306 struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport2(iface);
308 D3DVIEWPORT vp;
310 IDirect3D *d3d1 = NULL;
311 IDirect3DDevice *d3d_device = NULL;
312 IDirect3DMaterial *material = NULL;
315
316 TRACE("iface %p, device %p, camera %p, x %lu, y %lu, width %lu, height %lu.\n",
317 iface, device, camera, x, y, width, height);
318
319 if (!device_obj || !camera
320 || width > device_obj->width
321 || height > device_obj->height)
322 {
323 return D3DRMERR_BADOBJECT;
324 }
325
326 if (viewport->d3d_viewport)
327 return D3DRMERR_BADOBJECT;
328
329 IDirect3DRM_AddRef(viewport->d3drm);
330
332 goto cleanup;
333
335 goto cleanup;
336
337 if (FAILED(hr = IDirect3D_CreateViewport(d3d1, &viewport->d3d_viewport, NULL)))
338 goto cleanup;
339
341 goto cleanup;
342
343 vp.dwSize = sizeof(vp);
344 vp.dwWidth = width;
345 vp.dwHeight = height;
346 vp.dwX = x;
347 vp.dwY = y;
348 scale = width > height ? (float)width / 2.0f : (float)height / 2.0f;
349 vp.dvScaleX = scale;
350 vp.dvScaleY = scale;
351 vp.dvMaxX = vp.dwWidth / (2.0f * vp.dvScaleX);
352 vp.dvMaxY = vp.dwHeight / (2.0f * vp.dvScaleY);
353 vp.dvMinZ = 0.0f;
354 vp.dvMaxZ = 1.0f;
355
357 goto cleanup;
358
359 if (FAILED(hr = IDirect3DRMFrame3_QueryInterface(camera, &IID_IDirect3DRMFrame, (void **)&viewport->camera)))
360 goto cleanup;
361
362 if (FAILED(hr = IDirect3D_CreateMaterial(d3d1, &material, NULL)))
363 goto cleanup;
364
365 if (FAILED(hr = IDirect3DMaterial_GetHandle(material, d3d_device, &hmat)))
366 goto cleanup;
367
369 viewport->material = material;
370 viewport->device = device_obj;
371
372 viewport->clip.left = -0.5f;
373 viewport->clip.top = 0.5f;
374 viewport->clip.right = 0.5f;
375 viewport->clip.bottom = -0.5f;
376 viewport->clip.front = 1.0f;
377 viewport->clip.back = 100.0f;
378
379cleanup:
380
381 if (FAILED(hr))
382 {
383 if (viewport->d3d_viewport)
384 {
386 viewport->d3d_viewport = NULL;
387 }
388 if (viewport->camera)
390 if (material)
392 IDirect3DRM_Release(viewport->d3drm);
393 }
394 if (d3d_device)
396 if (d3d1)
397 IDirect3D_Release(d3d1);
398
399 return hr;
400}
401
402static HRESULT WINAPI d3drm_viewport1_Init(IDirect3DRMViewport *iface, IDirect3DRMDevice *device,
403 IDirect3DRMFrame *camera, DWORD x, DWORD y, DWORD width, DWORD height)
404{
405 struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport(iface);
406 struct d3drm_frame *frame = unsafe_impl_from_IDirect3DRMFrame(camera);
407 IDirect3DRMDevice3 *device3;
408 HRESULT hr;
409
410 TRACE("iface %p, device %p, camera %p, x %lu, y %lu, width %lu, height %lu.\n",
411 iface, device, camera, x, y, width, height);
412
413 if (!device || !frame)
414 return D3DRMERR_BADOBJECT;
415
416 if (FAILED(hr = IDirect3DRMDevice_QueryInterface(device, &IID_IDirect3DRMDevice3, (void **)&device3)))
417 return hr;
418
420 x, y, width, height);
422
423 return hr;
424}
425
426static HRESULT WINAPI d3drm_viewport2_Clear(IDirect3DRMViewport2 *iface, DWORD flags)
427{
428 struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport2(iface);
429 DDSCAPS caps = { DDSCAPS_ZBUFFER };
430 HRESULT hr;
431 D3DRECT clear_rect;
432 IDirectDrawSurface *ds;
433 DWORD clear_flags = 0;
434
435 TRACE("iface %p, flags %#lx.\n", iface, flags);
436
437 clear_rect.x1 = clear_rect.y1 = 0;
438 clear_rect.x2 = viewport->device->width;
439 clear_rect.y2 = viewport->device->height;
440
442 {
443 clear_flags |= D3DCLEAR_TARGET;
445 }
447 {
448 hr = IDirectDrawSurface_GetAttachedSurface(viewport->device->render_target, &caps, &ds);
449 if (SUCCEEDED(hr))
450 {
451 clear_flags |= D3DCLEAR_ZBUFFER;
452 IDirectDrawSurface_Release(ds);
453 }
454 }
456 FIXME("Flag D3DRMCLEAR_DIRTYRECT not implemented yet.\n");
457
458 if (FAILED(hr = IDirect3DViewport_Clear(viewport->d3d_viewport, 1, &clear_rect, clear_flags)))
459 return hr;
460
461 return D3DRM_OK;
462}
463
464static HRESULT WINAPI d3drm_viewport1_Clear(IDirect3DRMViewport *iface)
465{
466 struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport(iface);
467
468 TRACE("iface %p.\n", iface);
469
471}
472
473static HRESULT WINAPI d3drm_viewport2_Render(IDirect3DRMViewport2 *iface, IDirect3DRMFrame3 *frame)
474{
475 FIXME("iface %p, frame %p stub!\n", iface, frame);
476
477 return D3DRM_OK;
478}
479
480static HRESULT WINAPI d3drm_viewport1_Render(IDirect3DRMViewport *iface, IDirect3DRMFrame *frame)
481{
482 FIXME("iface %p, frame %p stub!\n", iface, frame);
483
484 return D3DRM_OK;
485}
486
487static HRESULT WINAPI d3drm_viewport2_SetFront(IDirect3DRMViewport2 *iface, D3DVALUE front)
488{
489 struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport2(iface);
490
491 TRACE("iface %p, front %.8e.\n", iface, front);
492
493 if (!viewport->d3d_viewport)
494 return D3DRMERR_BADOBJECT;
495
496 if (front <= 0.0f)
497 return D3DRMERR_BADVALUE;
498
499 viewport->clip.front = front;
500
501 return D3DRM_OK;
502}
503
504static HRESULT WINAPI d3drm_viewport1_SetFront(IDirect3DRMViewport *iface, D3DVALUE front)
505{
506 struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport(iface);
507
508 TRACE("iface %p, front %.8e.\n", iface, front);
509
511}
512
513static HRESULT WINAPI d3drm_viewport2_SetBack(IDirect3DRMViewport2 *iface, D3DVALUE back)
514{
515 struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport2(iface);
516
517 TRACE("iface %p, back %.8e.\n", iface, back);
518
519 if (!viewport->d3d_viewport)
520 return D3DRMERR_BADOBJECT;
521
522 if (back <= viewport->clip.front)
523 return D3DRMERR_BADVALUE;
524
525 viewport->clip.back = back;
526
527 return D3DRM_OK;
528}
529
530static HRESULT WINAPI d3drm_viewport1_SetBack(IDirect3DRMViewport *iface, D3DVALUE back)
531{
532 struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport(iface);
533
534 TRACE("iface %p, back %.8e.\n", iface, back);
535
537}
538
539static HRESULT WINAPI d3drm_viewport2_SetField(IDirect3DRMViewport2 *iface, D3DVALUE field)
540{
541 struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport2(iface);
542
543 TRACE("iface %p, field %.8e.\n", iface, field);
544
545 if (!viewport->d3d_viewport)
546 return D3DRMERR_BADOBJECT;
547
548 if (field <= 0.0f)
549 return D3DRMERR_BADVALUE;
550
551 viewport->clip.left = -field;
552 viewport->clip.right = field;
553 viewport->clip.bottom = -field;
554 viewport->clip.top = field;
555
556 return D3DRM_OK;
557}
558
559static HRESULT WINAPI d3drm_viewport1_SetField(IDirect3DRMViewport *iface, D3DVALUE field)
560{
561 struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport(iface);
562
563 TRACE("iface %p, field %.8e.\n", iface, field);
564
566}
567
568static HRESULT WINAPI d3drm_viewport2_SetUniformScaling(IDirect3DRMViewport2 *iface, BOOL b)
569{
570 FIXME("iface %p, b %#x stub!\n", iface, b);
571
572 return E_NOTIMPL;
573}
574
575static HRESULT WINAPI d3drm_viewport1_SetUniformScaling(IDirect3DRMViewport *iface, BOOL b)
576{
577 FIXME("iface %p, b %#x stub!\n", iface, b);
578
579 return E_NOTIMPL;
580}
581
582static HRESULT WINAPI d3drm_viewport2_SetCamera(IDirect3DRMViewport2 *iface, IDirect3DRMFrame3 *camera)
583{
584 struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport2(iface);
585 struct d3drm_frame *frame = unsafe_impl_from_IDirect3DRMFrame3(camera);
586
587 TRACE("iface %p, camera %p.\n", iface, camera);
588
589 if (!camera || !viewport->camera)
590 return D3DRMERR_BADOBJECT;
591
594 viewport->camera = &frame->IDirect3DRMFrame_iface;
595
596 return D3DRM_OK;
597}
598
599static HRESULT WINAPI d3drm_viewport1_SetCamera(IDirect3DRMViewport *iface, IDirect3DRMFrame *camera)
600{
601 struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport(iface);
602 struct d3drm_frame *frame = unsafe_impl_from_IDirect3DRMFrame(camera);
603
604 TRACE("iface %p, camera %p.\n", iface, camera);
605
607 frame ? &frame->IDirect3DRMFrame3_iface : NULL);
608}
609
611{
612 struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport2(iface);
613
614 TRACE("iface %p, type %#x.\n", iface, type);
615
616 if (!viewport->d3d_viewport)
617 return D3DRMERR_BADOBJECT;
618
619 viewport->projection = type;
620
621 return D3DRM_OK;
622}
623
625{
626 struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport(iface);
627
628 TRACE("iface %p, type %#x.\n", iface, type);
629
631}
632
633static HRESULT WINAPI d3drm_viewport2_Transform(IDirect3DRMViewport2 *iface, D3DRMVECTOR4D *d, D3DVECTOR *s)
634{
635 FIXME("iface %p, d %p, s %p stub!\n", iface, d, s);
636
637 return E_NOTIMPL;
638}
639
640static HRESULT WINAPI d3drm_viewport1_Transform(IDirect3DRMViewport *iface, D3DRMVECTOR4D *d, D3DVECTOR *s)
641{
642 FIXME("iface %p, d %p, s %p stub!\n", iface, d, s);
643
644 return E_NOTIMPL;
645}
646
648{
649 FIXME("iface %p, d %p, s %p stub!\n", iface, d, s);
650
651 return E_NOTIMPL;
652}
653
655{
656 FIXME("iface %p, d %p, s %p stub!\n", iface, d, s);
657
658 return E_NOTIMPL;
659}
660
661static HRESULT WINAPI d3drm_viewport2_Configure(IDirect3DRMViewport2 *iface,
663{
664 FIXME("iface %p, x %ld, y %ld, width %lu, height %lu stub!\n", iface, x, y, width, height);
665
666 return E_NOTIMPL;
667}
668
669static HRESULT WINAPI d3drm_viewport1_Configure(IDirect3DRMViewport *iface,
671{
672 FIXME("iface %p, x %ld, y %ld, width %lu, height %lu stub!\n", iface, x, y, width, height);
673
674 return E_NOTIMPL;
675}
676
677static HRESULT WINAPI d3drm_viewport2_ForceUpdate(IDirect3DRMViewport2* iface,
679{
680 FIXME("iface %p, x1 %lu, y1 %lu, x2 %lu, y2 %lu stub!\n", iface, x1, y1, x2, y2);
681
682 return E_NOTIMPL;
683}
684
685static HRESULT WINAPI d3drm_viewport1_ForceUpdate(IDirect3DRMViewport *iface,
687{
688 FIXME("iface %p, x1 %lu, y1 %lu, x2 %lu, y2 %lu stub!\n", iface, x1, y1, x2, y2);
689
690 return E_NOTIMPL;
691}
692
693static HRESULT WINAPI d3drm_viewport2_SetPlane(IDirect3DRMViewport2 *iface,
695{
696 struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport2(iface);
697
698 TRACE("iface %p, left %.8e, right %.8e, bottom %.8e, top %.8e.\n",
699 iface, left, right, bottom, top);
700
701 if (!viewport->d3d_viewport)
702 return D3DRMERR_BADOBJECT;
703
704 viewport->clip.left = left;
705 viewport->clip.right = right;
706 viewport->clip.bottom = bottom;
707 viewport->clip.top = top;
708
709 return D3DRM_OK;
710}
711
712static HRESULT WINAPI d3drm_viewport1_SetPlane(IDirect3DRMViewport *iface,
714{
715 struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport(iface);
716
717 TRACE("iface %p, left %.8e, right %.8e, bottom %.8e, top %.8e.\n",
718 iface, left, right, bottom, top);
719
721}
722
723static HRESULT WINAPI d3drm_viewport2_GetCamera(IDirect3DRMViewport2 *iface, IDirect3DRMFrame3 **camera)
724{
725 struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport2(iface);
726
727 TRACE("iface %p, camera %p.\n", iface, camera);
728
729 if (!camera)
730 return D3DRMERR_BADVALUE;
731
732 if (!viewport->camera)
733 return D3DRMERR_BADOBJECT;
734
735 return IDirect3DRMFrame_QueryInterface(viewport->camera, &IID_IDirect3DRMFrame3, (void **)camera);
736}
737
738static HRESULT WINAPI d3drm_viewport1_GetCamera(IDirect3DRMViewport *iface, IDirect3DRMFrame **camera)
739{
740 struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport(iface);
741 struct d3drm_frame *camera_impl;
742 IDirect3DRMFrame3 *camera3;
743 HRESULT hr;
744
745 TRACE("iface %p, camera %p.\n", iface, camera);
746
747 if (!camera)
748 return D3DRMERR_BADVALUE;
749
751 return hr;
752
753 camera_impl = unsafe_impl_from_IDirect3DRMFrame3(camera3);
754 *camera = &camera_impl->IDirect3DRMFrame_iface;
755
756 return D3DRM_OK;
757}
758
759static HRESULT WINAPI d3drm_viewport2_GetDevice(IDirect3DRMViewport2 *iface, IDirect3DRMDevice3 **device)
760{
761 struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport2(iface);
762
763 TRACE("iface %p, device %p.\n", iface, device);
764
765 if (!device)
766 return D3DRMERR_BADVALUE;
767
768 if (!viewport->device)
769 return D3DRMERR_BADOBJECT;
770
771 *device = &viewport->device->IDirect3DRMDevice3_iface;
773
774 return D3DRM_OK;
775}
776
777static HRESULT WINAPI d3drm_viewport1_GetDevice(IDirect3DRMViewport *iface, IDirect3DRMDevice **device)
778{
779 struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport(iface);
780
781 TRACE("iface %p, device %p.\n\n", iface, device);
782
783 if (!device)
784 return D3DRMERR_BADVALUE;
785
786 if (!viewport->device)
787 return D3DRMERR_BADOBJECT;
788
789 *device = &viewport->device->IDirect3DRMDevice_iface;
791
792 return D3DRM_OK;
793}
794
795static HRESULT WINAPI d3drm_viewport2_GetPlane(IDirect3DRMViewport2 *iface,
797{
798 struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport2(iface);
799
800 TRACE("iface %p, left %p, right %p, bottom %p, top %p.\n",
801 iface, left, right, bottom, top);
802
803 if (!viewport->d3d_viewport)
804 return D3DRMERR_BADOBJECT;
805
806 *left = viewport->clip.left;
807 *right = viewport->clip.right;
808 *bottom = viewport->clip.bottom;
809 *top = viewport->clip.top;
810
811 return D3DRM_OK;
812}
813
814static HRESULT WINAPI d3drm_viewport1_GetPlane(IDirect3DRMViewport *iface,
816{
817 struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport(iface);
818
819 TRACE("iface %p, left %p, right %p, bottom %p, top %p.\n",
820 iface, left, right, bottom, top);
821
823}
824
825static HRESULT WINAPI d3drm_viewport2_Pick(IDirect3DRMViewport2 *iface,
826 LONG x, LONG y, IDirect3DRMPickedArray **visuals)
827{
828 FIXME("iface %p, x %ld, y %ld, visuals %p stub!\n", iface, x, y, visuals);
829
830 return E_NOTIMPL;
831}
832
833static HRESULT WINAPI d3drm_viewport1_Pick(IDirect3DRMViewport *iface,
834 LONG x, LONG y, IDirect3DRMPickedArray **visuals)
835{
836 FIXME("iface %p, x %ld, y %ld, visuals %p stub!\n", iface, x, y, visuals);
837
838 return E_NOTIMPL;
839}
840
841static BOOL WINAPI d3drm_viewport2_GetUniformScaling(IDirect3DRMViewport2 *iface)
842{
843 FIXME("iface %p stub!\n", iface);
844
845 return FALSE;
846}
847
848static BOOL WINAPI d3drm_viewport1_GetUniformScaling(IDirect3DRMViewport *iface)
849{
850 FIXME("iface %p stub!\n", iface);
851
852 return FALSE;
853}
854
855static LONG WINAPI d3drm_viewport2_GetX(IDirect3DRMViewport2 *iface)
856{
857 FIXME("iface %p stub!\n", iface);
858
859 return E_NOTIMPL;
860}
861
862static LONG WINAPI d3drm_viewport1_GetX(IDirect3DRMViewport *iface)
863{
864 FIXME("iface %p stub!\n", iface);
865
866 return E_NOTIMPL;
867}
868
869static LONG WINAPI d3drm_viewport2_GetY(IDirect3DRMViewport2 *iface)
870{
871 FIXME("iface %p stub!\n", iface);
872
873 return E_NOTIMPL;
874}
875
876static LONG WINAPI d3drm_viewport1_GetY(IDirect3DRMViewport *iface)
877{
878 FIXME("iface %p stub!\n", iface);
879
880 return E_NOTIMPL;
881}
882
883static DWORD WINAPI d3drm_viewport2_GetWidth(IDirect3DRMViewport2 *iface)
884{
885 FIXME("iface %p stub!\n", iface);
886
887 return E_NOTIMPL;
888}
889
890static DWORD WINAPI d3drm_viewport1_GetWidth(IDirect3DRMViewport *iface)
891{
892 FIXME("iface %p stub!\n", iface);
893
894 return E_NOTIMPL;
895}
896
897static DWORD WINAPI d3drm_viewport2_GetHeight(IDirect3DRMViewport2 *iface)
898{
899 FIXME("iface %p stub!\n", iface);
900
901 return E_NOTIMPL;
902}
903
904static DWORD WINAPI d3drm_viewport1_GetHeight(IDirect3DRMViewport *iface)
905{
906 FIXME("iface %p stub!\n", iface);
907
908 return E_NOTIMPL;
909}
910
911static D3DVALUE WINAPI d3drm_viewport2_GetField(IDirect3DRMViewport2 *iface)
912{
913 struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport2(iface);
914
915 TRACE("iface %p.\n", iface);
916
917 if (!viewport->d3d_viewport)
918 return -1.0f;
919
920 return (viewport->clip.right - viewport->clip.left
921 + viewport->clip.top - viewport->clip.bottom) / 4.0f;
922}
923
924static D3DVALUE WINAPI d3drm_viewport1_GetField(IDirect3DRMViewport *iface)
925{
926 struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport(iface);
927
928 TRACE("iface %p.\n", iface);
929
931}
932
933static D3DVALUE WINAPI d3drm_viewport2_GetBack(IDirect3DRMViewport2 *iface)
934{
935 struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport2(iface);
936
937 TRACE("iface %p.\n", iface);
938
939 if (!viewport->d3d_viewport)
940 return -1.0f;
941
942 return viewport->clip.back;
943}
944
945static D3DVALUE WINAPI d3drm_viewport1_GetBack(IDirect3DRMViewport *iface)
946{
947 struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport(iface);
948
949 TRACE("iface %p.\n", iface);
950
952}
953
954static D3DVALUE WINAPI d3drm_viewport2_GetFront(IDirect3DRMViewport2 *iface)
955{
956 struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport2(iface);
957
958 TRACE("iface %p.\n", iface);
959
960 if (!viewport->d3d_viewport)
961 return -1.0f;
962
963 return viewport->clip.front;
964}
965
966static D3DVALUE WINAPI d3drm_viewport1_GetFront(IDirect3DRMViewport *iface)
967{
968 struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport(iface);
969
970 TRACE("iface %p.\n", iface);
971
973}
974
976{
977 struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport2(iface);
978
979 TRACE("iface %p.\n", iface);
980
981 if (!viewport->d3d_viewport)
982 return ~0u;
983
984 return viewport->projection;
985}
986
988{
989 struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport(iface);
990
991 TRACE("iface %p.\n", iface);
992
994}
995
996static HRESULT WINAPI d3drm_viewport2_GetDirect3DViewport(IDirect3DRMViewport2 *iface,
997 IDirect3DViewport **viewport)
998{
999 struct d3drm_viewport *viewport_object = impl_from_IDirect3DRMViewport2(iface);
1000
1001 TRACE("iface %p, viewport %p.\n", iface, viewport);
1002
1003 if (!viewport)
1004 return D3DRMERR_BADVALUE;
1005
1006 if (!viewport_object->d3d_viewport)
1007 return D3DRMERR_BADOBJECT;
1008
1009 *viewport = viewport_object->d3d_viewport;
1010 IDirect3DViewport_AddRef(*viewport);
1011
1012 return D3DRM_OK;
1013}
1014
1015static HRESULT WINAPI d3drm_viewport1_GetDirect3DViewport(IDirect3DRMViewport *iface,
1016 IDirect3DViewport **viewport)
1017{
1018 struct d3drm_viewport *viewport_object = impl_from_IDirect3DRMViewport(iface);
1019
1020 TRACE("iface %p, viewport %p.\n", iface, viewport);
1021
1022 return d3drm_viewport2_GetDirect3DViewport(&viewport_object->IDirect3DRMViewport2_iface, viewport);
1023}
1024
1025static HRESULT WINAPI d3drm_viewport2_TransformVectors(IDirect3DRMViewport2 *iface,
1026 DWORD vector_count, D3DRMVECTOR4D *dst, D3DVECTOR *src)
1027{
1028 FIXME("iface %p, vector_count %lu, dst %p, src %p stub!\n", iface, vector_count, dst, src);
1029
1030 return E_NOTIMPL;
1031}
1032
1033static HRESULT WINAPI d3drm_viewport2_InverseTransformVectors(IDirect3DRMViewport2 *iface,
1034 DWORD vector_count, D3DVECTOR *dst, D3DRMVECTOR4D *src)
1035{
1036 FIXME("iface %p, vector_count %lu, dst %p, src %p stub!\n", iface, vector_count, dst, src);
1037
1038 return E_NOTIMPL;
1039}
1040
1041static const struct IDirect3DRMViewport2Vtbl d3drm_viewport2_vtbl =
1042{
1084};
1085
1086static const struct IDirect3DRMViewportVtbl d3drm_viewport1_vtbl =
1087{
1127};
1128
1129HRESULT d3drm_viewport_create(struct d3drm_viewport **viewport, IDirect3DRM *d3drm)
1130{
1131 static const char classname[] = "Viewport";
1132 struct d3drm_viewport *object;
1133
1134 TRACE("viewport %p, d3drm %p.\n", viewport, d3drm);
1135
1136 if (!(object = calloc(1, sizeof(*object))))
1137 return E_OUTOFMEMORY;
1138
1139 object->IDirect3DRMViewport_iface.lpVtbl = &d3drm_viewport1_vtbl;
1140 object->IDirect3DRMViewport2_iface.lpVtbl = &d3drm_viewport2_vtbl;
1141 object->d3drm = d3drm;
1143
1144 *viewport = object;
1145
1146 return S_OK;
1147}
#define InterlockedIncrement
Definition: armddk.h:53
#define InterlockedDecrement
Definition: armddk.h:52
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
Definition: precomp.h:23
#define FIXME(fmt,...)
Definition: precomp.h:53
#define WARN(fmt,...)
Definition: precomp.h:61
const GUID IID_IUnknown
#define D3DCLEAR_ZBUFFER
Definition: d3d8types.h:31
#define D3DCLEAR_TARGET
Definition: d3d8types.h:30
#define IDirect3DViewport_SetViewport(p, a)
Definition: d3d.h:680
#define IDirect3D_CreateViewport(p, a, b)
Definition: d3d.h:239
#define IDirect3DViewport_AddRef(p)
Definition: d3d.h:675
#define IDirect3D_Release(p)
Definition: d3d.h:233
#define IDirect3DMaterial_Release(p)
Definition: d3d.h:464
#define IDirect3DViewport_Release(p)
Definition: d3d.h:676
#define IDirect3DMaterial_GetHandle(p, a, b)
Definition: d3d.h:469
#define IDirect3DViewport_SetBackground(p, a)
Definition: d3d.h:683
#define IDirect3D_CreateMaterial(p, a, b)
Definition: d3d.h:238
#define IDirect3DMaterial_SetMaterial(p, a)
Definition: d3d.h:467
#define IDirect3DDevice_AddViewport(p, a)
Definition: d3d.h:974
#define IDirect3DDevice_GetDirect3D(p, a)
Definition: d3d.h:986
#define IDirect3DViewport_Clear(p, a, b, c)
Definition: d3d.h:687
#define IDirect3DDevice_Release(p)
Definition: d3d.h:966
static HRESULT WINAPI d3drm_viewport2_InverseTransform(IDirect3DRMViewport2 *iface, D3DVECTOR *d, D3DRMVECTOR4D *s)
Definition: viewport.c:647
static HRESULT WINAPI d3drm_viewport1_Clone(IDirect3DRMViewport *iface, IUnknown *outer, REFIID iid, void **out)
Definition: viewport.c:164
static HRESULT WINAPI d3drm_viewport2_Pick(IDirect3DRMViewport2 *iface, LONG x, LONG y, IDirect3DRMPickedArray **visuals)
Definition: viewport.c:825
static HRESULT WINAPI d3drm_viewport1_GetPlane(IDirect3DRMViewport *iface, D3DVALUE *left, D3DVALUE *right, D3DVALUE *bottom, D3DVALUE *top)
Definition: viewport.c:814
static BOOL WINAPI d3drm_viewport2_GetUniformScaling(IDirect3DRMViewport2 *iface)
Definition: viewport.c:841
static HRESULT WINAPI d3drm_viewport2_SetPlane(IDirect3DRMViewport2 *iface, D3DVALUE left, D3DVALUE right, D3DVALUE bottom, D3DVALUE top)
Definition: viewport.c:693
static HRESULT WINAPI d3drm_viewport1_SetFront(IDirect3DRMViewport *iface, D3DVALUE front)
Definition: viewport.c:504
static LONG WINAPI d3drm_viewport1_GetY(IDirect3DRMViewport *iface)
Definition: viewport.c:876
static HRESULT WINAPI d3drm_viewport2_GetCamera(IDirect3DRMViewport2 *iface, IDirect3DRMFrame3 **camera)
Definition: viewport.c:723
static DWORD WINAPI d3drm_viewport1_GetHeight(IDirect3DRMViewport *iface)
Definition: viewport.c:904
static LONG WINAPI d3drm_viewport1_GetX(IDirect3DRMViewport *iface)
Definition: viewport.c:862
static HRESULT d3drm_update_background_material(struct d3drm_viewport *viewport)
Definition: viewport.c:43
static D3DVALUE WINAPI d3drm_viewport1_GetField(IDirect3DRMViewport *iface)
Definition: viewport.c:924
static D3DVALUE WINAPI d3drm_viewport1_GetBack(IDirect3DRMViewport *iface)
Definition: viewport.c:945
static HRESULT WINAPI d3drm_viewport1_Render(IDirect3DRMViewport *iface, IDirect3DRMFrame *frame)
Definition: viewport.c:480
static HRESULT WINAPI d3drm_viewport2_SetCamera(IDirect3DRMViewport2 *iface, IDirect3DRMFrame3 *camera)
Definition: viewport.c:582
static LONG WINAPI d3drm_viewport2_GetY(IDirect3DRMViewport2 *iface)
Definition: viewport.c:869
static D3DVALUE WINAPI d3drm_viewport2_GetFront(IDirect3DRMViewport2 *iface)
Definition: viewport.c:954
static HRESULT WINAPI d3drm_viewport2_SetUniformScaling(IDirect3DRMViewport2 *iface, BOOL b)
Definition: viewport.c:568
static HRESULT WINAPI d3drm_viewport1_GetName(IDirect3DRMViewport *iface, DWORD *size, char *name)
Definition: viewport.c:276
static ULONG WINAPI d3drm_viewport1_Release(IDirect3DRMViewport *iface)
Definition: viewport.c:147
static DWORD WINAPI d3drm_viewport2_GetWidth(IDirect3DRMViewport2 *iface)
Definition: viewport.c:883
static DWORD WINAPI d3drm_viewport1_GetWidth(IDirect3DRMViewport *iface)
Definition: viewport.c:890
static HRESULT WINAPI d3drm_viewport1_SetName(IDirect3DRMViewport *iface, const char *name)
Definition: viewport.c:258
static HRESULT WINAPI d3drm_viewport1_Transform(IDirect3DRMViewport *iface, D3DRMVECTOR4D *d, D3DVECTOR *s)
Definition: viewport.c:640
static HRESULT WINAPI d3drm_viewport2_GetDevice(IDirect3DRMViewport2 *iface, IDirect3DRMDevice3 **device)
Definition: viewport.c:759
static ULONG WINAPI d3drm_viewport1_AddRef(IDirect3DRMViewport *iface)
Definition: viewport.c:125
static HRESULT WINAPI d3drm_viewport1_SetBack(IDirect3DRMViewport *iface, D3DVALUE back)
Definition: viewport.c:530
static HRESULT WINAPI d3drm_viewport1_Configure(IDirect3DRMViewport *iface, LONG x, LONG y, DWORD width, DWORD height)
Definition: viewport.c:669
static HRESULT WINAPI d3drm_viewport2_TransformVectors(IDirect3DRMViewport2 *iface, DWORD vector_count, D3DRMVECTOR4D *dst, D3DVECTOR *src)
Definition: viewport.c:1025
static HRESULT WINAPI d3drm_viewport2_Transform(IDirect3DRMViewport2 *iface, D3DRMVECTOR4D *d, D3DVECTOR *s)
Definition: viewport.c:633
static HRESULT WINAPI d3drm_viewport1_GetDirect3DViewport(IDirect3DRMViewport *iface, IDirect3DViewport **viewport)
Definition: viewport.c:1015
static D3DVALUE WINAPI d3drm_viewport2_GetBack(IDirect3DRMViewport2 *iface)
Definition: viewport.c:933
static HRESULT WINAPI d3drm_viewport1_Pick(IDirect3DRMViewport *iface, LONG x, LONG y, IDirect3DRMPickedArray **visuals)
Definition: viewport.c:833
static HRESULT WINAPI d3drm_viewport2_GetPlane(IDirect3DRMViewport2 *iface, D3DVALUE *left, D3DVALUE *right, D3DVALUE *bottom, D3DVALUE *top)
Definition: viewport.c:795
static BOOL WINAPI d3drm_viewport1_GetUniformScaling(IDirect3DRMViewport *iface)
Definition: viewport.c:848
static HRESULT WINAPI d3drm_viewport2_GetName(IDirect3DRMViewport2 *iface, DWORD *size, char *name)
Definition: viewport.c:267
static HRESULT WINAPI d3drm_viewport1_InverseTransform(IDirect3DRMViewport *iface, D3DVECTOR *d, D3DRMVECTOR4D *s)
Definition: viewport.c:654
static HRESULT WINAPI d3drm_viewport2_Configure(IDirect3DRMViewport2 *iface, LONG x, LONG y, DWORD width, DWORD height)
Definition: viewport.c:661
static ULONG WINAPI d3drm_viewport2_Release(IDirect3DRMViewport2 *iface)
Definition: viewport.c:134
static HRESULT WINAPI d3drm_viewport2_DeleteDestroyCallback(IDirect3DRMViewport2 *iface, D3DRMOBJECTCALLBACK cb, void *ctx)
Definition: viewport.c:192
static void d3drm_normalize_d3d_color(D3DCOLORVALUE *color_value, D3DCOLOR color)
Definition: viewport.c:35
static ULONG WINAPI d3drm_viewport2_AddRef(IDirect3DRMViewport2 *iface)
Definition: viewport.c:115
static HRESULT WINAPI d3drm_viewport1_SetProjection(IDirect3DRMViewport *iface, D3DRMPROJECTIONTYPE type)
Definition: viewport.c:624
static HRESULT WINAPI d3drm_viewport1_Clear(IDirect3DRMViewport *iface)
Definition: viewport.c:464
static D3DRMPROJECTIONTYPE WINAPI d3drm_viewport2_GetProjection(IDirect3DRMViewport2 *iface)
Definition: viewport.c:975
static D3DVALUE WINAPI d3drm_viewport2_GetField(IDirect3DRMViewport2 *iface)
Definition: viewport.c:911
static struct d3drm_viewport * impl_from_IDirect3DRMViewport2(IDirect3DRMViewport2 *iface)
Definition: viewport.c:30
static HRESULT WINAPI d3drm_viewport1_SetUniformScaling(IDirect3DRMViewport *iface, BOOL b)
Definition: viewport.c:575
static HRESULT WINAPI d3drm_viewport1_QueryInterface(IDirect3DRMViewport *iface, REFIID riid, void **out)
Definition: viewport.c:106
static DWORD WINAPI d3drm_viewport2_GetHeight(IDirect3DRMViewport2 *iface)
Definition: viewport.c:897
static void d3drm_viewport_destroy(struct d3drm_viewport *viewport)
Definition: viewport.c:62
static HRESULT WINAPI d3drm_viewport1_SetCamera(IDirect3DRMViewport *iface, IDirect3DRMFrame *camera)
Definition: viewport.c:599
static HRESULT WINAPI d3drm_viewport1_ForceUpdate(IDirect3DRMViewport *iface, DWORD x1, DWORD y1, DWORD x2, DWORD y2)
Definition: viewport.c:685
static HRESULT WINAPI d3drm_viewport1_AddDestroyCallback(IDirect3DRMViewport *iface, D3DRMOBJECTCALLBACK cb, void *ctx)
Definition: viewport.c:182
static HRESULT WINAPI d3drm_viewport1_SetAppData(IDirect3DRMViewport *iface, DWORD data)
Definition: viewport.c:222
static HRESULT WINAPI d3drm_viewport2_AddDestroyCallback(IDirect3DRMViewport2 *iface, D3DRMOBJECTCALLBACK cb, void *ctx)
Definition: viewport.c:172
static HRESULT WINAPI d3drm_viewport2_Clear(IDirect3DRMViewport2 *iface, DWORD flags)
Definition: viewport.c:426
static LONG WINAPI d3drm_viewport2_GetX(IDirect3DRMViewport2 *iface)
Definition: viewport.c:855
static HRESULT WINAPI d3drm_viewport1_SetPlane(IDirect3DRMViewport *iface, D3DVALUE left, D3DVALUE right, D3DVALUE bottom, D3DVALUE top)
Definition: viewport.c:712
static HRESULT WINAPI d3drm_viewport2_ForceUpdate(IDirect3DRMViewport2 *iface, DWORD x1, DWORD y1, DWORD x2, DWORD y2)
Definition: viewport.c:677
static HRESULT WINAPI d3drm_viewport1_SetField(IDirect3DRMViewport *iface, D3DVALUE field)
Definition: viewport.c:559
static D3DRMPROJECTIONTYPE WINAPI d3drm_viewport1_GetProjection(IDirect3DRMViewport *iface)
Definition: viewport.c:987
static HRESULT WINAPI d3drm_viewport2_GetDirect3DViewport(IDirect3DRMViewport2 *iface, IDirect3DViewport **viewport)
Definition: viewport.c:996
static HRESULT WINAPI d3drm_viewport2_SetName(IDirect3DRMViewport2 *iface, const char *name)
Definition: viewport.c:249
static HRESULT WINAPI d3drm_viewport2_SetFront(IDirect3DRMViewport2 *iface, D3DVALUE front)
Definition: viewport.c:487
static HRESULT WINAPI d3drm_viewport2_GetClassName(IDirect3DRMViewport2 *iface, DWORD *size, char *name)
Definition: viewport.c:285
static HRESULT WINAPI d3drm_viewport2_SetAppData(IDirect3DRMViewport2 *iface, DWORD data)
Definition: viewport.c:212
static HRESULT WINAPI d3drm_viewport1_GetClassName(IDirect3DRMViewport *iface, DWORD *size, char *name)
Definition: viewport.c:294
static HRESULT WINAPI d3drm_viewport2_SetField(IDirect3DRMViewport2 *iface, D3DVALUE field)
Definition: viewport.c:539
static const struct IDirect3DRMViewportVtbl d3drm_viewport1_vtbl
Definition: viewport.c:1086
static HRESULT WINAPI d3drm_viewport2_Clone(IDirect3DRMViewport2 *iface, IUnknown *outer, REFIID iid, void **out)
Definition: viewport.c:156
static HRESULT WINAPI d3drm_viewport1_Init(IDirect3DRMViewport *iface, IDirect3DRMDevice *device, IDirect3DRMFrame *camera, DWORD x, DWORD y, DWORD width, DWORD height)
Definition: viewport.c:402
static HRESULT WINAPI d3drm_viewport1_DeleteDestroyCallback(IDirect3DRMViewport *iface, D3DRMOBJECTCALLBACK cb, void *ctx)
Definition: viewport.c:202
static HRESULT WINAPI d3drm_viewport2_SetProjection(IDirect3DRMViewport2 *iface, D3DRMPROJECTIONTYPE type)
Definition: viewport.c:610
static DWORD WINAPI d3drm_viewport2_GetAppData(IDirect3DRMViewport2 *iface)
Definition: viewport.c:231
static struct d3drm_viewport * impl_from_IDirect3DRMViewport(IDirect3DRMViewport *iface)
Definition: viewport.c:25
static HRESULT WINAPI d3drm_viewport2_Render(IDirect3DRMViewport2 *iface, IDirect3DRMFrame3 *frame)
Definition: viewport.c:473
static D3DVALUE WINAPI d3drm_viewport1_GetFront(IDirect3DRMViewport *iface)
Definition: viewport.c:966
static HRESULT WINAPI d3drm_viewport2_QueryInterface(IDirect3DRMViewport2 *iface, REFIID riid, void **out)
Definition: viewport.c:79
static HRESULT WINAPI d3drm_viewport1_GetDevice(IDirect3DRMViewport *iface, IDirect3DRMDevice **device)
Definition: viewport.c:777
static HRESULT WINAPI d3drm_viewport1_GetCamera(IDirect3DRMViewport *iface, IDirect3DRMFrame **camera)
Definition: viewport.c:738
static HRESULT WINAPI d3drm_viewport2_Init(IDirect3DRMViewport2 *iface, IDirect3DRMDevice3 *device, IDirect3DRMFrame3 *camera, DWORD x, DWORD y, DWORD width, DWORD height)
Definition: viewport.c:303
HRESULT d3drm_viewport_create(struct d3drm_viewport **viewport, IDirect3DRM *d3drm)
Definition: viewport.c:1129
static const struct IDirect3DRMViewport2Vtbl d3drm_viewport2_vtbl
Definition: viewport.c:1041
static DWORD WINAPI d3drm_viewport1_GetAppData(IDirect3DRMViewport *iface)
Definition: viewport.c:240
static HRESULT WINAPI d3drm_viewport2_SetBack(IDirect3DRMViewport2 *iface, D3DVALUE back)
Definition: viewport.c:513
static HRESULT WINAPI d3drm_viewport2_InverseTransformVectors(IDirect3DRMViewport2 *iface, DWORD vector_count, D3DVECTOR *dst, D3DRMVECTOR4D *src)
Definition: viewport.c:1033
#define D3DRM_OK
Definition: d3drm.h:486
#define D3DRMERR_BADVALUE
Definition: d3drm.h:496
#define IDirect3DRM_Release(p)
Definition: d3drm.h:111
#define D3DRMERR_BADOBJECT
Definition: d3drm.h:487
#define IDirect3DRM_AddRef(p)
Definition: d3drm.h:110
void d3drm_object_cleanup(IDirect3DRMObject *iface, struct d3drm_object *object)
Definition: d3drm_main.c:155
void d3drm_object_init(struct d3drm_object *object, const char *classname)
Definition: d3drm_main.c:41
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_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
HRESULT d3drm_object_get_class_name(struct d3drm_object *object, DWORD *size, char *name)
Definition: d3drm_main.c:94
struct d3drm_device * unsafe_impl_from_IDirect3DRMDevice3(IDirect3DRMDevice3 *iface)
Definition: device.c:1647
struct d3drm_frame * unsafe_impl_from_IDirect3DRMFrame(IDirect3DRMFrame *iface)
Definition: frame.c:3120
struct d3drm_frame * unsafe_impl_from_IDirect3DRMFrame3(IDirect3DRMFrame3 *iface)
Definition: frame.c:3111
#define D3DRMCLEAR_TARGET
Definition: d3drmdef.h:310
#define D3DRMCLEAR_DIRTYRECTS
Definition: d3drmdef.h:312
#define D3DRMCLEAR_ZBUFFER
Definition: d3drmdef.h:311
enum _D3DRMPROJECTIONTYPE D3DRMPROJECTIONTYPE
#define D3DRMCLEAR_ALL
Definition: d3drmdef.h:313
#define IDirect3DRMFrame_Release(p)
Definition: d3drmobj.h:1168
#define IDirect3DRMFrame3_QueryInterface(p, a, b)
Definition: d3drmobj.h:1706
#define IDirect3DRMFrame_GetSceneBackground(p)
Definition: d3drmobj.h:1210
#define IDirect3DRMDevice3_Release(p)
Definition: d3drmobj.h:693
#define IDirect3DRMDevice_AddRef(p)
Definition: d3drmobj.h:408
#define IDirect3DRMFrame_QueryInterface(p, a, b)
Definition: d3drmobj.h:1166
#define IDirect3DRMDevice3_AddRef(p)
Definition: d3drmobj.h:692
#define IDirect3DRMFrame_GetScene(p, a)
Definition: d3drmobj.h:1194
#define IDirect3DRMDevice_QueryInterface(p, a, b)
Definition: d3drmobj.h:407
#define IDirect3DRMFrame_AddRef(p)
Definition: d3drmobj.h:1167
#define IDirect3DRMDevice3_GetDirect3DDevice(p, a)
Definition: d3drmobj.h:726
void(__cdecl * D3DRMOBJECTCALLBACK)(struct IDirect3DRMObject *obj, void *arg)
Definition: d3drmobj.h:157
float D3DVALUE
Definition: d3dtypes.h:89
#define RGBA_GETRED(rgb)
Definition: d3dtypes.h:58
DWORD D3DMATERIALHANDLE
Definition: d3dtypes.h:154
#define RGBA_GETGREEN(rgb)
Definition: d3dtypes.h:59
#define RGBA_GETALPHA(rgb)
Definition: d3dtypes.h:57
#define RGBA_GETBLUE(rgb)
Definition: d3dtypes.h:60
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define E_NOTIMPL
Definition: ddrawi.h:99
#define free
Definition: debug_ros.c:5
HRESULT hr
Definition: delayimp.cpp:582
#define NULL
Definition: types.h:112
#define FALSE
Definition: types.h:117
static void cleanup(void)
Definition: main.c:1335
static MonoProfilerRuntimeShutdownBeginCallback cb
Definition: metahost.c:118
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
GLint GLint GLsizei GLsizei height
Definition: gl.h:1546
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
GLdouble s
Definition: gl.h:2039
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
GLint GLint GLsizei width
Definition: gl.h:1546
GLenum GLenum GLenum GLenum GLenum scale
Definition: glext.h:9032
GLenum src
Definition: glext.h:6340
GLsizeiptr size
Definition: glext.h:5919
GLuint color
Definition: glext.h:6243
GLdouble GLdouble GLdouble GLdouble top
Definition: glext.h:10859
GLdouble GLdouble right
Definition: glext.h:10859
GLboolean GLboolean GLboolean b
Definition: glext.h:6204
GLint left
Definition: glext.h:7726
GLenum GLenum dst
Definition: glext.h:6340
GLbitfield flags
Definition: glext.h:7161
GLint GLint bottom
Definition: glext.h:7726
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
#define ds
Definition: i386-dis.c:443
REFIID riid
Definition: atlbase.h:39
#define S_OK
Definition: intsafe.h:52
#define SUCCEEDED(hr)
Definition: intsafe.h:50
#define FAILED(hr)
Definition: intsafe.h:51
#define d
Definition: ke_i.h:81
#define debugstr_guid
Definition: kernel32.h:35
#define debugstr_a
Definition: kernel32.h:31
static const MAT2 mat
Definition: font.c:51
static IUnknown * outer
Definition: compobj.c:82
static float(__cdecl *square_half_float)(float x
long LONG
Definition: pedump.c:60
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
#define REFIID
Definition: guiddef.h:118
WCHAR classname[128]
Definition: startup.c:15
#define calloc
Definition: rosglue.h:14
static struct address_cache * front
Definition: rpcb_clnt.c:83
#define DDSCAPS_ZBUFFER
Definition: ddraw.h:269
#define memset(x, y, z)
Definition: compat.h:39
#define TRACE(s)
Definition: solgame.cpp:4
LONG y2
Definition: d3d8types.h:1156
LONG x1
Definition: d3d8types.h:1153
LONG y1
Definition: d3d8types.h:1154
LONG x2
Definition: d3d8types.h:1155
DWORD dwHeight
Definition: d3dtypes.h:367
D3DVALUE dvMaxX
Definition: d3dtypes.h:370
D3DVALUE dvMaxZ
Definition: d3dtypes.h:373
D3DVALUE dvScaleY
Definition: d3dtypes.h:369
DWORD dwSize
Definition: d3dtypes.h:363
DWORD dwWidth
Definition: d3dtypes.h:366
DWORD dwX
Definition: d3dtypes.h:364
D3DVALUE dvMaxY
Definition: d3dtypes.h:371
DWORD dwY
Definition: d3dtypes.h:365
D3DVALUE dvScaleX
Definition: d3dtypes.h:368
D3DVALUE dvMinZ
Definition: d3dtypes.h:372
IDirect3DRMFrame3 IDirect3DRMFrame3_iface
Definition: d3drm_private.h:78
IDirect3DRMFrame IDirect3DRMFrame_iface
Definition: d3drm_private.h:76
struct d3drm_box clip
IDirect3DRMViewport IDirect3DRMViewport_iface
struct d3drm_device * device
struct d3drm_object obj
IDirect3DRMViewport2 IDirect3DRMViewport2_iface
IDirect3DRMFrame * camera
IDirect3DViewport * d3d_viewport
IDirect3DMaterial * material
IDirect3DRM * d3drm
D3DRMPROJECTIONTYPE projection
Definition: d3drm.c:189
Definition: devices.h:37
Definition: parser.c:44
Definition: name.c:39
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260
uint32_t ULONG
Definition: typedefs.h:59
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
Definition: wcsftime.cpp:383
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG x1
Definition: winddi.h:3708
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG _In_ LONG y1
Definition: winddi.h:3709
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG _In_ LONG _In_ LONG _In_ LONG y2
Definition: winddi.h:3711
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG _In_ LONG _In_ LONG x2
Definition: winddi.h:3710
#define WINAPI
Definition: msvc.h:6
#define CLASS_E_CLASSNOTAVAILABLE
Definition: winerror.h:3772