d3d10: Add the ID3D10EffectVariable interface.
[wine] / include / d3d10effect.h
1 /*
2  * Copyright 2009 Henri Verbeet for CodeWeavers
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17  *
18  */
19
20 #ifndef __WINE_D3D10EFFECT_H
21 #define __WINE_D3D10EFFECT_H
22
23 #include "d3d10.h"
24
25 #define D3D10_EFFECT_VARIABLE_POOLED                0x1
26 #define D3D10_EFFECT_VARIABLE_ANNOTATION            0x2
27 #define D3D10_EFFECT_VARIABLE_EXPLICIT_BIND_POINT   0x4
28
29 typedef struct _D3D10_EFFECT_TYPE_DESC
30 {
31     LPCSTR TypeName;
32     D3D10_SHADER_VARIABLE_CLASS Class;
33     D3D10_SHADER_VARIABLE_TYPE Type;
34     UINT Elements;
35     UINT Members;
36     UINT Rows;
37     UINT Columns;
38     UINT PackedSize;
39     UINT UnpackedSize;
40     UINT Stride;
41 } D3D10_EFFECT_TYPE_DESC;
42
43 typedef struct _D3D10_EFFECT_VARIABLE_DESC
44 {
45     LPCSTR Name;
46     LPCSTR Semantic;
47     UINT Flags;
48     UINT Annotations;
49     UINT BufferOffset;
50     UINT ExplicitBindPoint;
51 } D3D10_EFFECT_VARIABLE_DESC;
52
53 DEFINE_GUID(IID_ID3D10EffectType, 0x4e9e1ddc, 0xcd9d, 0x4772, 0xa8, 0x37, 0x00, 0x18, 0x0b, 0x9b, 0x88, 0xfd);
54
55 #define INTERFACE ID3D10EffectType
56 DECLARE_INTERFACE(ID3D10EffectType)
57 {
58     STDMETHOD_(BOOL, IsValid)(THIS) PURE;
59     STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_TYPE_DESC *desc) PURE;
60     STDMETHOD_(struct ID3D10EffectType *, GetMemberTypeByIndex)(THIS_ UINT index) PURE;
61     STDMETHOD_(struct ID3D10EffectType *, GetMemberTypeByName)(THIS_ LPCSTR name) PURE;
62     STDMETHOD_(struct ID3D10EffectType *, GetMemberTypeBySemantic)(THIS_ LPCSTR semantic) PURE;
63     STDMETHOD_(LPCSTR, GetMemberName)(THIS_ UINT index) PURE;
64     STDMETHOD_(LPCSTR, GetMemberSemantic)(THIS_ UINT index) PURE;
65 };
66 #undef INTERFACE
67
68 DEFINE_GUID(IID_ID3D10EffectVariable, 0xae897105, 0x00e6, 0x45bf, 0xbb, 0x8e, 0x28, 0x1d, 0xd6, 0xdb, 0x8e, 0x1b);
69
70 #define INTERFACE ID3D10EffectVariable
71 DECLARE_INTERFACE(ID3D10EffectVariable)
72 {
73     STDMETHOD_(BOOL, IsValid)(THIS) PURE;
74     STDMETHOD_(struct ID3D10EffectType *, GetType)(THIS) PURE;
75     STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *desc) PURE;
76     STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByIndex)(THIS_ UINT index) PURE;
77     STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByName)(THIS_ LPCSTR name) PURE;
78     STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByIndex)(THIS_ UINT index) PURE;
79     STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByName)(THIS_ LPCSTR name) PURE;
80     STDMETHOD_(struct ID3D10EffectVariable *, GetMemberBySemantic)(THIS_ LPCSTR semantic) PURE;
81     STDMETHOD_(struct ID3D10EffectVariable *, GetElement)(THIS_ UINT index) PURE;
82     STDMETHOD_(struct ID3D10EffectConstantBuffer *, GetParentConstantBuffer)(THIS) PURE;
83     STDMETHOD_(struct ID3D10EffectScalarVariable *, AsScalar)(THIS) PURE;
84     STDMETHOD_(struct ID3D10EffectVectorVariable *, AsVector)(THIS) PURE;
85     STDMETHOD_(struct ID3D10EffectMatrixVariable *, AsMatrix)(THIS) PURE;
86     STDMETHOD_(struct ID3D10EffectStringVariable *, AsString)(THIS) PURE;
87     STDMETHOD_(struct ID3D10EffectShaderResourceVariable *, AsShaderResource)(THIS) PURE;
88     STDMETHOD_(struct ID3D10EffectRenderTargetViewVariable *, AsRenderTargetView)(THIS) PURE;
89     STDMETHOD_(struct ID3D10EffectDepthStencilViewVariable *, AsDepthStencilView)(THIS) PURE;
90     STDMETHOD_(struct ID3D10EffectConstantBuffer *, AsConstantBuffer)(THIS) PURE;
91     STDMETHOD_(struct ID3D10EffectShaderVariable *, AsShader)(THIS) PURE;
92     STDMETHOD_(struct ID3D10EffectBlendVariable *, AsBlend)(THIS) PURE;
93     STDMETHOD_(struct ID3D10EffectDepthStencilVariable *, AsDepthStencil)(THIS) PURE;
94     STDMETHOD_(struct ID3D10EffectRasterizerVariable *, AsRasterizer)(THIS) PURE;
95     STDMETHOD_(struct ID3D10EffectSamplerVariable *, AsSampler)(THIS) PURE;
96     STDMETHOD(SetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
97     STDMETHOD(GetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
98 };
99 #undef INTERFACE
100
101 #endif /* __WINE_D3D10EFFECT_H */