1 /***********************************************************************\
2 *                               d3dx10tex.d                             *
3 *                                                                       *
4 *                       Windows API header module                       *
5 *                                                                       *
6 *                       Placed into public domain                       *
7 \***********************************************************************/
8 module win32.directx.d3dx10tex;
9 
10 private import win32.windows;
11 private import win32.directx.d3d10;
12 private import win32.directx.d3dx10core;
13 
14 enum D3DX10_FILTER_FLAG {
15 	D3DX10_FILTER_NONE             = 0x000001,
16 	D3DX10_FILTER_POINT            = 0x000002,
17 	D3DX10_FILTER_LINEAR           = 0x000003,
18 	D3DX10_FILTER_TRIANGLE         = 0x000004,
19 	D3DX10_FILTER_BOX              = 0x000005,
20 	D3DX10_FILTER_MIRROR_U         = 0x010000,
21 	D3DX10_FILTER_MIRROR_V         = 0x020000,
22 	D3DX10_FILTER_MIRROR_W         = 0x040000,
23 	D3DX10_FILTER_MIRROR           = 0x070000,
24 	D3DX10_FILTER_DITHER           = 0x080000,
25 	D3DX10_FILTER_DITHER_DIFFUSION = 0x100000,
26 	D3DX10_FILTER_SRGB_IN          = 0x200000,
27 	D3DX10_FILTER_SRGB_OUT         = 0x400000,
28 	D3DX10_FILTER_SRGB             = 0x600000
29 }
30 
31 enum D3DX10_NORMALMAP_FLAG {
32 	D3DX10_NORMALMAP_MIRROR_U          = 0x010000,
33 	D3DX10_NORMALMAP_MIRROR_V          = 0x020000,
34 	D3DX10_NORMALMAP_MIRROR            = 0x030000,
35 	D3DX10_NORMALMAP_INVERTSIGN        = 0x080000,
36 	D3DX10_NORMALMAP_COMPUTE_OCCLUSION = 0x100000
37 }
38 
39 enum D3DX10_CHANNEL_FLAG {
40 	D3DX10_CHANNEL_RED       =  1,
41 	D3DX10_CHANNEL_BLUE      =  2,
42 	D3DX10_CHANNEL_GREEN     =  4,
43 	D3DX10_CHANNEL_ALPHA     =  8,
44 	D3DX10_CHANNEL_LUMINANCE = 16
45 }
46 
47 enum D3DX10_IMAGE_FILE_FORMAT {
48 	D3DX10_IFF_BMP         =  0,
49 	D3DX10_IFF_JPG         =  1,
50 	D3DX10_IFF_PNG         =  3,
51 	D3DX10_IFF_DDS         =  4,
52 	D3DX10_IFF_TIFF        = 10,
53 	D3DX10_IFF_GIF         = 11,
54 	D3DX10_IFF_WMP         = 12,
55 	D3DX10_IFF_FORCE_DWORD = 0x7fffffff
56 }
57 
58 enum D3DX10_SAVE_TEXTURE_FLAG {
59 	D3DX10_STF_USEINPUTBLOB = 1
60 }
61 
62 struct D3DX10_IMAGE_INFO {
63 	UINT        Width;
64 	UINT        Height;
65 	UINT        Depth;
66 	UINT        ArraySize;
67 	UINT        MipLevels;
68 	UINT        MiscFlags;
69 	DXGI_FORMAT Format;
70 	D3D10_RESOURCE_DIMENSION ResourceDimension;
71 	D3DX10_IMAGE_FILE_FORMAT ImageFileFormat;
72 }
73 
74 struct D3DX10_IMAGE_LOAD_INFO {
75 	UINT               Width;
76 	UINT               Height;
77 	UINT               Depth;
78 	UINT               FirstMipLevel;
79 	UINT               MipLevels;
80 	D3D10_USAGE        Usage;
81 	UINT               BindFlags;
82 	UINT               CpuAccessFlags;
83 	UINT               MiscFlags;
84 	DXGI_FORMAT        Format;
85 	UINT               Filter;
86 	UINT               MipFilter;
87 	D3DX10_IMAGE_INFO* pSrcInfo;
88 }
89 
90 HRESULT D3DX10GetImageInfoFromFileA(LPCSTR pSrcFile, ID3DX10ThreadPump pPump,
91   D3DX10_IMAGE_INFO* pSrcInfo, HRESULT* pHResult);
92 HRESULT D3DX10GetImageInfoFromFileW(LPCWSTR pSrcFile, ID3DX10ThreadPump pPump,
93   D3DX10_IMAGE_INFO* pSrcInfo, HRESULT* pHResult);
94 
95 HRESULT D3DX10GetImageInfoFromResourceA(HMODULE hSrcModule,
96   LPCSTR pSrcResource, ID3DX10ThreadPump pPump, D3DX10_IMAGE_INFO* pSrcInfo,
97   HRESULT* pHResult);
98 HRESULT D3DX10GetImageInfoFromResourceW(HMODULE hSrcModule,
99   LPCWSTR pSrcResource, ID3DX10ThreadPump pPump, D3DX10_IMAGE_INFO* pSrcInfo,
100   HRESULT* pHResult);
101 
102 HRESULT D3DX10GetImageInfoFromMemory(LPCVOID pSrcData, SIZE_T SrcDataSize,
103   ID3DX10ThreadPump pPump, D3DX10_IMAGE_INFO* pSrcInfo, HRESULT* pHResult);
104 
105 HRESULT D3DX10CreateShaderResourceViewFromFileA(ID3D10Device pDevice,
106   LPCSTR pSrcFile, D3DX10_IMAGE_LOAD_INFO* pLoadInfo, ID3DX10ThreadPump pPump,
107   ID3D10ShaderResourceView* ppShaderResourceView, HRESULT* pHResult);
108 HRESULT D3DX10CreateShaderResourceViewFromFileW(ID3D10Device pDevice,
109   LPCWSTR pSrcFile, D3DX10_IMAGE_LOAD_INFO* pLoadInfo, ID3DX10ThreadPump pPump,
110   ID3D10ShaderResourceView* ppShaderResourceView, HRESULT* pHResult);
111 
112 HRESULT D3DX10CreateTextureFromFileA(ID3D10Device pDevice, LPCSTR pSrcFile,
113   D3DX10_IMAGE_LOAD_INFO* pLoadInfo, ID3DX10ThreadPump pPump,
114   ID3D10Resource* ppTexture, HRESULT* pHResult);
115 HRESULT D3DX10CreateTextureFromFileW(ID3D10Device pDevice, LPCWSTR pSrcFile,
116   D3DX10_IMAGE_LOAD_INFO* pLoadInfo, ID3DX10ThreadPump pPump,
117   ID3D10Resource* ppTexture, HRESULT* pHResult);
118 
119 HRESULT D3DX10CreateShaderResourceViewFromResourceA(ID3D10Device pDevice,
120   HMODULE hSrcModule, LPCSTR pSrcResource, D3DX10_IMAGE_LOAD_INFO* pLoadInfo,
121   ID3DX10ThreadPump pPump, ID3D10ShaderResourceView* ppShaderResourceView,
122   HRESULT* pHResult);
123 HRESULT D3DX10CreateShaderResourceViewFromResourceW(ID3D10Device pDevice,
124   HMODULE hSrcModule, LPCWSTR pSrcResource, D3DX10_IMAGE_LOAD_INFO* pLoadInfo,
125   ID3DX10ThreadPump pPump, ID3D10ShaderResourceView* ppShaderResourceView,
126   HRESULT* pHResult);
127 
128 HRESULT D3DX10CreateTextureFromResourceA(ID3D10Device pDevice,
129   HMODULE hSrcModule, LPCSTR pSrcResource, D3DX10_IMAGE_LOAD_INFO* pLoadInfo,
130   ID3DX10ThreadPump pPump, ID3D10Resource* ppTexture, HRESULT* pHResult);
131 HRESULT D3DX10CreateTextureFromResourceW(ID3D10Device pDevice,
132   HMODULE hSrcModule, LPCWSTR pSrcResource, D3DX10_IMAGE_LOAD_INFO* pLoadInfo,
133   ID3DX10ThreadPump pPump, ID3D10Resource* ppTexture, HRESULT* pHResult);
134 
135 HRESULT D3DX10CreateShaderResourceViewFromMemory(ID3D10Device pDevice,
136   LPCVOID pSrcData, SIZE_T SrcDataSize, D3DX10_IMAGE_LOAD_INFO* pLoadInfo,
137   ID3DX10ThreadPump pPump, ID3D10ShaderResourceView* ppShaderResourceView,
138   HRESULT* pHResult);
139 
140 HRESULT D3DX10CreateTextureFromMemory(ID3D10Device pDevice, LPCVOID pSrcData,
141   SIZE_T SrcDataSize, D3DX10_IMAGE_LOAD_INFO* pLoadInfo,
142   ID3DX10ThreadPump pPump, ID3D10Resource* ppTexture, HRESULT* pHResult);
143 
144 struct D3DX10_TEXTURE_LOAD_INFO {
145 	D3D10_BOX* pSrcBox;
146 	D3D10_BOX* pDstBox;
147 	UINT       SrcFirstMip;
148 	UINT       DstFirstMip;
149 	UINT       NumMips;
150 	UINT       SrcFirstElement;
151 	UINT       DstFirstElement;
152 	UINT       NumElements;
153 	UINT       Filter;
154 	UINT       MipFilter;
155 }
156 
157 HRESULT D3DX10LoadTextureFromTexture(ID3D10Resource pSrcTexture,
158   D3DX10_TEXTURE_LOAD_INFO* pLoadInfo, ID3D10Resource pDstTexture);
159 
160 HRESULT D3DX10FilterTexture(ID3D10Resource pTexture, UINT SrcLevel, UINT MipFilter);
161 
162 HRESULT D3DX10SaveTextureToFileA(ID3D10Resource pSrcTexture,
163   D3DX10_IMAGE_FILE_FORMAT DestFormat, LPCSTR pDestFile);
164 HRESULT D3DX10SaveTextureToFileW(ID3D10Resource pSrcTexture,
165   D3DX10_IMAGE_FILE_FORMAT DestFormat, LPCWSTR pDestFile);
166 
167 HRESULT D3DX10SaveTextureToMemory(ID3D10Resource pSrcTexture,
168   D3DX10_IMAGE_FILE_FORMAT DestFormat, ID3D10Blob* ppDestBuf, UINT Flags);
169 
170 HRESULT D3DX10ComputeNormalMap(ID3D10Texture2D pSrcTexture, UINT Flags,
171   UINT Channel, FLOAT Amplitude, ID3D10Texture2D pDestTexture);
172 
173 HRESULT D3DX10SHProjectCubeMap(UINT Order, ID3D10Texture2D pCubeMap,
174   FLOAT* pROut, FLOAT* pGOut, FLOAT* pBOut);
175 
176 version(Unicode) {
177 	alias D3DX10GetImageInfoFromFileW D3DX10GetImageInfoFromFile;
178 	alias D3DX10GetImageInfoFromResourceW D3DX10GetImageInfoFromResource;
179 	alias D3DX10CreateShaderResourceViewFromFileW D3DX10CreateShaderResourceViewFromFile;
180 	alias D3DX10CreateTextureFromFileW D3DX10CreateTextureFromFile;
181 	alias D3DX10CreateShaderResourceViewFromResourceW D3DX10CreateShaderResourceViewFromResource;
182 	alias D3DX10CreateTextureFromResourceW D3DX10CreateTextureFromResource;
183 	alias D3DX10SaveTextureToFileW D3DX10SaveTextureToFile;
184 } else {
185 	alias D3DX10GetImageInfoFromFileA D3DX10GetImageInfoFromFile;
186 	alias D3DX10GetImageInfoFromResourceA D3DX10GetImageInfoFromResource;
187 	alias D3DX10CreateShaderResourceViewFromFileA D3DX10CreateShaderResourceViewFromFile;
188 	alias D3DX10CreateTextureFromFileA D3DX10CreateTextureFromFile;
189 	alias D3DX10CreateShaderResourceViewFromResourceA D3DX10CreateShaderResourceViewFromResource;
190 	alias D3DX10CreateTextureFromResourceA D3DX10CreateTextureFromResource;
191 	alias D3DX10SaveTextureToFileA D3DX10SaveTextureToFile;
192 }