]> git.cworth.org Git - apitrace/blob - retrace/d3dretrace.hpp
d3d10/d3d11: Complete union support.
[apitrace] / retrace / d3dretrace.hpp
1 /**************************************************************************
2  *
3  * Copyright 2012 Jose Fonseca
4  * All Rights Reserved.
5  *
6  * Permission is hereby granted, free of charge, to any person obtaining a copy
7  * of this software and associated documentation files (the "Software"), to deal
8  * in the Software without restriction, including without limitation the rights
9  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10  * copies of the Software, and to permit persons to whom the Software is
11  * furnished to do so, subject to the following conditions:
12  *
13  * The above copyright notice and this permission notice shall be included in
14  * all copies or substantial portions of the Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22  * THE SOFTWARE.
23  *
24  **************************************************************************/
25
26 #ifndef _D3DRETRACE_HPP_
27 #define _D3DRETRACE_HPP_
28
29
30 #include <windows.h>
31
32 #include "retrace.hpp"
33 #include "d3dstate.hpp"
34
35
36 namespace d3dretrace {
37
38
39 extern const retrace::Entry d3d9_callbacks[];
40 extern const retrace::Entry d3d10_callbacks[];
41
42
43 template< class Device >
44 class D3DDumper : public retrace::Dumper {
45 public:
46     Device *pLastDevice;
47
48     D3DDumper() :
49         pLastDevice(NULL)
50     {}
51
52     image::Image *
53     getSnapshot(void) {
54         if (!pLastDevice) {
55             return NULL;
56         }
57         return d3dstate::getRenderTargetImage(pLastDevice);
58     }
59
60     bool
61     dumpState(std::ostream &os) {
62         if (!pLastDevice) {
63             return false;
64         }
65         d3dstate::dumpDevice(os, pLastDevice);
66         return true;
67     }
68
69     inline void
70     bindDevice(Device *pDevice) {
71         pLastDevice = pDevice;
72         retrace::dumper = this;
73     }
74     
75     inline void
76     unbindDevice(Device *pDevice) {
77         if (pLastDevice == pDevice) {
78             pLastDevice = NULL;
79         }
80     }
81 };
82
83
84 HWND
85 createWindow(int width, int height);
86
87 void
88 resizeWindow(HWND hWnd, int width, int height);
89
90 bool
91 processEvents(void);
92
93
94 } /* namespace d3dretrace */
95
96
97 #endif /* _D3DRETRACE_HPP_ */