d3d9: Use separate fields for data to check/apply in the stateblock tests.
[wine] / dlls / d3dx9_36 / d3dx9_36_private.h
1 /*
2  * Copyright (C) 2002 Raphael Junqueira
3  * Copyright (C) 2008 David Adam
4  * Copyright (C) 2008 Tony Wasserka
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
22 #ifndef __WINE_D3DX9_36_PRIVATE_H
23 #define __WINE_D3DX9_36_PRIVATE_H
24
25 #include <stdarg.h>
26
27 #define COBJMACROS
28 #include "winbase.h"
29 #include "wingdi.h"
30 #include "winuser.h"
31 #include "d3dx9.h"
32
33 /* for internal use */
34 HRESULT map_view_of_file(LPCWSTR filename, LPVOID *buffer, DWORD *length);
35 HRESULT load_resource_into_memory(HMODULE module, HRSRC resinfo, LPVOID *buffer, DWORD *length);
36
37 extern const ID3DXBufferVtbl D3DXBuffer_Vtbl;
38
39 /* ID3DXBUFFER */
40 typedef struct ID3DXBufferImpl
41 {
42     /* IUnknown fields */
43     const ID3DXBufferVtbl *lpVtbl;
44     LONG           ref;
45
46     /* ID3DXBuffer fields */
47     DWORD         *buffer;
48     DWORD          bufferSize;
49 } ID3DXBufferImpl;
50
51
52 /* ID3DXFont */
53 typedef struct ID3DXFontImpl
54 {
55     /* IUnknown fields */
56     const ID3DXFontVtbl *lpVtbl;
57     LONG ref;
58
59     /* ID3DXFont fields */
60     IDirect3DDevice9 *device;
61     D3DXFONT_DESCW desc;
62
63     HDC hdc;
64     HFONT hfont;
65 } ID3DXFontImpl;
66
67 /* ID3DXMatrixStack */
68 typedef struct ID3DXMatrixStackImpl
69 {
70   /* IUnknown fields */
71   const ID3DXMatrixStackVtbl *lpVtbl;
72   LONG                   ref;
73
74   /* ID3DXMatrixStack fields */
75   unsigned int current;
76   unsigned int stack_size;
77   D3DXMATRIX *stack;
78 } ID3DXMatrixStackImpl;
79
80 /*ID3DXSprite */
81 typedef struct _SPRITE {
82     LPDIRECT3DTEXTURE9 texture;
83     UINT texw, texh;
84     RECT rect;
85     D3DXVECTOR3 center;
86     D3DXVECTOR3 pos;
87     D3DCOLOR color;
88 } SPRITE;
89
90 typedef struct ID3DXSpriteImpl
91 {
92     /* IUnknown fields */
93     const ID3DXSpriteVtbl *lpVtbl;
94     LONG ref;
95
96     /* ID3DXSprite fields */
97     IDirect3DDevice9 *device;
98     IDirect3DVertexDeclaration9 *vdecl;
99     IDirect3DStateBlock9 *stateblock;
100     D3DXMATRIX transform;
101     D3DXMATRIX view;
102     DWORD flags;
103     BOOL ready;
104
105     /* Store the relevant caps to prevent multiple GetDeviceCaps calls */
106     DWORD texfilter_caps;
107     DWORD maxanisotropy;
108     DWORD alphacmp_caps;
109
110     SPRITE *sprites;
111     int sprite_count;      /* number of sprites to be drawn */
112     int allocated_sprites; /* number of (pre-)allocated sprites */
113 } ID3DXSpriteImpl;
114
115
116 #endif /* __WINE_D3DX9_36_PRIVATE_H */