2 * Copyright (C) 2008 Tony Wasserka
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.
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.
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
21 #ifndef __WINE_D3DX9TEX_H
22 #define __WINE_D3DX9TEX_H
24 /**********************************************
25 ***************** Definitions ****************
26 **********************************************/
27 #define D3DX_FILTER_NONE 0x00000001
28 #define D3DX_FILTER_POINT 0x00000002
29 #define D3DX_FILTER_LINEAR 0x00000003
30 #define D3DX_FILTER_TRIANGLE 0x00000004
31 #define D3DX_FILTER_BOX 0x00000005
32 #define D3DX_FILTER_MIRROR_U 0x00010000
33 #define D3DX_FILTER_MIRROR_V 0x00020000
34 #define D3DX_FILTER_MIRROR_W 0x00040000
35 #define D3DX_FILTER_MIRROR 0x00070000
36 #define D3DX_FILTER_DITHER 0x00080000
37 #define D3DX_FILTER_DITHER_DIFFUSION 0x00100000
38 #define D3DX_FILTER_SRGB_IN 0x00200000
39 #define D3DX_FILTER_SRGB_OUT 0x00400000
40 #define D3DX_FILTER_SRGB 0x00600000
42 #define D3DX_NORMALMAP_MIRROR_U 0x00010000
43 #define D3DX_NORMALMAP_MIRROR_V 0x00020000
44 #define D3DX_NORMALMAP_MIRROR 0x00030000
45 #define D3DX_NORMALMAP_INVERTSIGN 0x00080000
46 #define D3DX_NORMALMAP_COMPUTE_OCCLUSION 0x00100000
48 #define D3DX_CHANNEL_RED 0x00000001
49 #define D3DX_CHANNEL_BLUE 0x00000002
50 #define D3DX_CHANNEL_GREEN 0x00000004
51 #define D3DX_CHANNEL_ALPHA 0x00000008
52 #define D3DX_CHANNEL_LUMINANCE 0x00000010
54 /**********************************************
55 ****************** Typedefs ******************
56 **********************************************/
57 typedef enum _D3DXIMAGE_FILEFORMAT
68 D3DXIFF_FORCE_DWORD = 0x7fffffff
69 } D3DXIMAGE_FILEFORMAT;
71 typedef struct _D3DXIMAGE_INFO
78 D3DRESOURCETYPE ResourceType;
79 D3DXIMAGE_FILEFORMAT ImageFileFormat;
82 /**********************************************
83 ****************** Functions *****************
84 **********************************************/
85 /* Typedefs for callback functions */
86 typedef VOID (WINAPI *LPD3DXFILL2D)(D3DXVECTOR4 *out, CONST D3DXVECTOR2 *texcoord, CONST D3DXVECTOR2 *texelsize, LPVOID data);
87 typedef VOID (WINAPI *LPD3DXFILL3D)(D3DXVECTOR4 *out, CONST D3DXVECTOR3 *texcoord, CONST D3DXVECTOR3 *texelsize, LPVOID data);
94 /* Image Information */
95 HRESULT WINAPI D3DXGetImageInfoFromFileA(LPCSTR file, D3DXIMAGE_INFO *info);
96 HRESULT WINAPI D3DXGetImageInfoFromFileW(LPCWSTR file, D3DXIMAGE_INFO *info);
97 #define D3DXGetImageInfoFromFile WINELIB_NAME_AW(D3DXGetImageInfoFromFile)
99 HRESULT WINAPI D3DXGetImageInfoFromResourceA(HMODULE module, LPCSTR resource, D3DXIMAGE_INFO *info);
100 HRESULT WINAPI D3DXGetImageInfoFromResourceW(HMODULE module, LPCWSTR resource, D3DXIMAGE_INFO *info);
101 #define D3DXGetImageInfoFromResource WINELIB_NAME_AW(D3DXGetImageInfoFromResource)
103 HRESULT WINAPI D3DXGetImageInfoFromFileInMemory(LPCVOID data, UINT datasize, D3DXIMAGE_INFO *info);
106 /* Surface Loading/Saving */
107 HRESULT WINAPI D3DXLoadSurfaceFromFileA( LPDIRECT3DSURFACE9 destsurface,
108 CONST PALETTEENTRY *destpalette,
109 CONST RECT *destrect,
114 D3DXIMAGE_INFO *srcinfo);
116 HRESULT WINAPI D3DXLoadSurfaceFromFileW( LPDIRECT3DSURFACE9 destsurface,
117 CONST PALETTEENTRY *destpalette,
118 CONST RECT *destrect,
123 D3DXIMAGE_INFO *srcinfo);
124 #define D3DXLoadSurfaceFromFile WINELIB_NAME_AW(D3DXLoadSurfaceFromFile)
126 HRESULT WINAPI D3DXLoadSurfaceFromResourceA( LPDIRECT3DSURFACE9 destsurface,
127 CONST PALETTEENTRY *destpalette,
128 CONST RECT *destrect,
134 D3DXIMAGE_INFO *srcinfo);
136 HRESULT WINAPI D3DXLoadSurfaceFromResourceW( LPDIRECT3DSURFACE9 destsurface,
137 CONST PALETTEENTRY *destpalette,
138 CONST RECT *destrect,
144 D3DXIMAGE_INFO *srcinfo);
145 #define D3DXLoadSurfaceFromResource WINELIB_NAME_AW(D3DXLoadSurfaceFromResource)
147 HRESULT WINAPI D3DXLoadSurfaceFromFileInMemory(LPDIRECT3DSURFACE9 destsurface,
148 CONST PALETTEENTRY *destpalette,
155 D3DXIMAGE_INFO *srcinfo);
157 HRESULT WINAPI D3DXLoadSurfaceFromSurface( LPDIRECT3DSURFACE9 destsurface,
158 CONST PALETTEENTRY *destpalette,
159 CONST RECT *destrect,
160 LPDIRECT3DSURFACE9 srcsurface,
161 CONST PALETTEENTRY *srcpalette,
166 HRESULT WINAPI D3DXLoadSurfaceFromMemory(IDirect3DSurface9 *dst_surface,
167 const PALETTEENTRY *dst_palette, const RECT *dst_rect, const void *src_memory,
168 D3DFORMAT src_format, UINT src_pitch, const PALETTEENTRY *src_palette, const RECT *src_rect,
169 DWORD filter, D3DCOLOR color_key);
171 HRESULT WINAPI D3DXSaveSurfaceToFileInMemory( LPD3DXBUFFER *destbuffer,
172 D3DXIMAGE_FILEFORMAT destformat,
173 LPDIRECT3DSURFACE9 srcsurface,
174 CONST PALETTEENTRY *srcpalette,
175 CONST RECT *srcrect);
177 HRESULT WINAPI D3DXSaveSurfaceToFileA( LPCSTR destfile,
178 D3DXIMAGE_FILEFORMAT destformat,
179 LPDIRECT3DSURFACE9 srcsurface,
180 CONST PALETTEENTRY *srcpalette,
181 CONST RECT *srcrect);
183 HRESULT WINAPI D3DXSaveSurfaceToFileW( LPCWSTR destfile,
184 D3DXIMAGE_FILEFORMAT destformat,
185 LPDIRECT3DSURFACE9 srcsurface,
186 CONST PALETTEENTRY *srcpalette,
187 CONST RECT *srcrect);
188 #define D3DXSaveSurfaceToFile WINELIB_NAME_AW(D3DXSaveSurfaceToFile)
191 /* Volume Loading/Saving */
192 HRESULT WINAPI D3DXLoadVolumeFromFileA( LPDIRECT3DVOLUME9 destvolume,
193 CONST PALETTEENTRY *destpalette,
194 CONST D3DBOX *destbox,
196 CONST D3DBOX *srcbox,
199 D3DXIMAGE_INFO *srcinfo);
201 HRESULT WINAPI D3DXLoadVolumeFromFileW( LPDIRECT3DVOLUME9 destVolume,
202 CONST PALETTEENTRY *destpalette,
203 CONST D3DBOX *destbox,
205 CONST D3DBOX *srcbox,
208 D3DXIMAGE_INFO *srcinfo);
209 #define D3DXLoadVolumeFromFile WINELIB_NAME_AW(D3DXLoadVolumeFromFile)
211 HRESULT WINAPI D3DXLoadVolumeFromResourceA( LPDIRECT3DVOLUME9 destVolume,
212 CONST PALETTEENTRY *destpalette,
213 CONST D3DBOX *destbox,
216 CONST D3DBOX *srcbox,
219 D3DXIMAGE_INFO *srcinfo);
221 HRESULT WINAPI D3DXLoadVolumeFromResourceW( LPDIRECT3DVOLUME9 destVolume,
222 CONST PALETTEENTRY *destpalette,
223 CONST D3DBOX *destbox,
226 CONST D3DBOX *srcbox,
229 D3DXIMAGE_INFO *srcinfo);
230 #define D3DXLoadVolumeFromResource WINELIB_NAME_AW(D3DXLoadVolumeFromResource)
232 HRESULT WINAPI D3DXLoadVolumeFromFileInMemory(LPDIRECT3DVOLUME9 destvolume,
233 CONST PALETTEENTRY *destpalette,
234 CONST D3DBOX *destbox,
237 CONST D3DBOX *srcbox,
240 D3DXIMAGE_INFO *srcinfo);
242 HRESULT WINAPI D3DXLoadVolumeFromVolume( LPDIRECT3DVOLUME9 destvolume,
243 CONST PALETTEENTRY *destpalette,
244 CONST D3DBOX *destbox,
245 LPDIRECT3DVOLUME9 srcvolume,
246 CONST PALETTEENTRY *srcpalette,
247 CONST D3DBOX *srcbox,
251 HRESULT WINAPI D3DXLoadVolumeFromMemory( LPDIRECT3DVOLUME9 destvolume,
252 CONST PALETTEENTRY *destpalette,
253 CONST D3DBOX *destbox,
258 CONST PALETTEENTRY *srcpalette,
259 CONST D3DBOX *srcbox,
263 HRESULT WINAPI D3DXSaveVolumeToFileA( LPCSTR destfile,
264 D3DXIMAGE_FILEFORMAT destformat,
265 LPDIRECT3DVOLUME9 srcvolume,
266 CONST PALETTEENTRY *srcpalette,
267 CONST D3DBOX *srcbox);
269 HRESULT WINAPI D3DXSaveVolumeToFileW( LPCWSTR destfile,
270 D3DXIMAGE_FILEFORMAT destformat,
271 LPDIRECT3DVOLUME9 srcvolume,
272 CONST PALETTEENTRY *srcpalette,
273 CONST D3DBOX *srcbox);
274 #define D3DXSaveVolumeToFile WINELIB_NAME_AW(D3DXSaveVolumeToFile)
277 /* Texture, cube texture and volume texture creation */
278 HRESULT WINAPI D3DXCheckTextureRequirements( LPDIRECT3DDEVICE9 device,
285 HRESULT WINAPI D3DXCheckCubeTextureRequirements( LPDIRECT3DDEVICE9 device,
292 HRESULT WINAPI D3DXCheckVolumeTextureRequirements(LPDIRECT3DDEVICE9 device,
301 HRESULT WINAPI D3DXCreateTexture( LPDIRECT3DDEVICE9 device,
308 LPDIRECT3DTEXTURE9 *texture);
310 HRESULT WINAPI D3DXCreateCubeTexture( LPDIRECT3DDEVICE9 device,
316 LPDIRECT3DCUBETEXTURE9 *cube);
318 HRESULT WINAPI D3DXCreateVolumeTexture(struct IDirect3DDevice9 *device, UINT width, UINT height, UINT depth,
319 UINT miplevels, DWORD usage, D3DFORMAT format, D3DPOOL pool, struct IDirect3DVolumeTexture9 **volume);
321 HRESULT WINAPI D3DXCreateTextureFromFileA( LPDIRECT3DDEVICE9 device,
323 LPDIRECT3DTEXTURE9 *texture);
325 HRESULT WINAPI D3DXCreateTextureFromFileW( LPDIRECT3DDEVICE9 device,
327 LPDIRECT3DTEXTURE9 *texture);
328 #define D3DXCreateTextureFromFile WINELIB_NAME_AW(D3DXCreateTextureFromFile)
330 HRESULT WINAPI D3DXCreateCubeTextureFromFileA( LPDIRECT3DDEVICE9 device,
332 LPDIRECT3DCUBETEXTURE9 *cube);
334 HRESULT WINAPI D3DXCreateCubeTextureFromFileW( LPDIRECT3DDEVICE9 device,
336 LPDIRECT3DCUBETEXTURE9 *cube);
337 #define D3DXCreateCubeTextureFromFile WINELIB_NAME_AW(D3DXCreateCubeTextureFromFile)
339 HRESULT WINAPI D3DXCreateVolumeTextureFromFileA(struct IDirect3DDevice9 *device,
340 const char *srcfile, struct IDirect3DVolumeTexture9 **volume);
341 HRESULT WINAPI D3DXCreateVolumeTextureFromFileW(struct IDirect3DDevice9 *device,
342 const WCHAR *srcfile, struct IDirect3DVolumeTexture9 **volume);
343 #define D3DXCreateVolumeTextureFromFile WINELIB_NAME_AW(D3DXCreateVolumeTextureFromFile)
345 HRESULT WINAPI D3DXCreateTextureFromResourceA( LPDIRECT3DDEVICE9 device,
348 LPDIRECT3DTEXTURE9 *texture);
350 HRESULT WINAPI D3DXCreateTextureFromResourceW( LPDIRECT3DDEVICE9 device,
353 LPDIRECT3DTEXTURE9 *texture);
354 #define D3DXCreateTextureFromResource WINELIB_NAME_AW(D3DXCreateTextureFromResource)
356 HRESULT WINAPI D3DXCreateCubeTextureFromResourceA( LPDIRECT3DDEVICE9 device,
359 LPDIRECT3DCUBETEXTURE9 *cube);
360 HRESULT WINAPI D3DXCreateCubeTextureFromResourceW( LPDIRECT3DDEVICE9 device,
363 LPDIRECT3DCUBETEXTURE9 *cube);
364 #define D3DXCreateCubeTextureFromResource WINELIB_NAME_AW(D3DXCreateCubeTextureFromResource)
366 HRESULT WINAPI D3DXCreateVolumeTextureFromResourceA(struct IDirect3DDevice9 *device,
367 HMODULE srcmodule, const char *resource, struct IDirect3DVolumeTexture9 **volume);
368 HRESULT WINAPI D3DXCreateVolumeTextureFromResourceW(struct IDirect3DDevice9 *device,
369 HMODULE srcmodule, const WCHAR *resource, struct IDirect3DVolumeTexture9 **volume);
370 #define D3DXCreateVolumeTextureFromResource WINELIB_NAME_AW(D3DXCreateVolumeTextureFromResource)
372 HRESULT WINAPI D3DXCreateTextureFromFileExA( LPDIRECT3DDEVICE9 device,
383 D3DXIMAGE_INFO *srcinfo,
384 PALETTEENTRY *palette,
385 LPDIRECT3DTEXTURE9 *texture);
387 HRESULT WINAPI D3DXCreateTextureFromFileExW( LPDIRECT3DDEVICE9 device,
398 D3DXIMAGE_INFO *srcinfo,
399 PALETTEENTRY *palette,
400 LPDIRECT3DTEXTURE9 *texture);
401 #define D3DXCreateTextureFromFileEx WINELIB_NAME_AW(D3DXCreateTextureFromFileEx)
403 HRESULT WINAPI D3DXCreateCubeTextureFromFileExA( LPDIRECT3DDEVICE9 device,
413 D3DXIMAGE_INFO *srcinfo,
414 PALETTEENTRY *palette,
415 LPDIRECT3DCUBETEXTURE9 *cube);
417 HRESULT WINAPI D3DXCreateCubeTextureFromFileExW( LPDIRECT3DDEVICE9 device,
427 D3DXIMAGE_INFO *srcinfo,
428 PALETTEENTRY *palette,
429 LPDIRECT3DCUBETEXTURE9 *cube);
430 #define D3DXCreateCubeTextureFromFileEx WINELIB_NAME_AW(D3DXCreateCubeTextureFromFileEx)
432 HRESULT WINAPI D3DXCreateVolumeTextureFromFileExA(struct IDirect3DDevice9 *device, const char *srcfile,
433 UINT width, UINT height, UINT depth, UINT miplevels, DWORD usage, D3DFORMAT format,
434 D3DPOOL pool, DWORD filter, DWORD mipfilter, D3DCOLOR colorkey, D3DXIMAGE_INFO *srcinfo,
435 PALETTEENTRY *palette, struct IDirect3DVolumeTexture9 **volume);
436 HRESULT WINAPI D3DXCreateVolumeTextureFromFileExW(struct IDirect3DDevice9 *device, const WCHAR *srcfile,
437 UINT width, UINT height, UINT depth, UINT miplevels, DWORD usage, D3DFORMAT format,
438 D3DPOOL pool, DWORD filter, DWORD mipfilter, D3DCOLOR colorkey, D3DXIMAGE_INFO *srcinfo,
439 PALETTEENTRY *palette, struct IDirect3DVolumeTexture9 **volume);
440 #define D3DXCreateVolumeTextureFromFileEx WINELIB_NAME_AW(D3DXCreateVolumeTextureFromFileEx)
442 HRESULT WINAPI D3DXCreateTextureFromResourceExA( LPDIRECT3DDEVICE9 device,
454 D3DXIMAGE_INFO *srcinfo,
455 PALETTEENTRY *palette,
456 LPDIRECT3DTEXTURE9 *texture);
458 HRESULT WINAPI D3DXCreateTextureFromResourceExW( LPDIRECT3DDEVICE9 device,
470 D3DXIMAGE_INFO *srcinfo,
471 PALETTEENTRY *palette,
472 LPDIRECT3DTEXTURE9 *texture);
473 #define D3DXCreateTextureFromResourceEx WINELIB_NAME_AW(D3DXCreateTextureFromResourceEx)
475 HRESULT WINAPI D3DXCreateCubeTextureFromResourceExA( LPDIRECT3DDEVICE9 device,
486 D3DXIMAGE_INFO *srcinfo,
487 PALETTEENTRY *palette,
488 LPDIRECT3DCUBETEXTURE9 *cube);
490 HRESULT WINAPI D3DXCreateCubeTextureFromResourceExW( LPDIRECT3DDEVICE9 device,
501 D3DXIMAGE_INFO *srcinfo,
502 PALETTEENTRY *palette,
503 LPDIRECT3DCUBETEXTURE9 *cube);
504 #define D3DXCreateCubeTextureFromResourceEx WINELIB_NAME_AW(D3DXCreateCubeTextureFromResourceEx)
506 HRESULT WINAPI D3DXCreateVolumeTextureFromResourceExA(struct IDirect3DDevice9 *device, HMODULE srcmodule,
507 const char *resource, UINT width, UINT height, UINT depth, UINT miplevels, DWORD usage, D3DFORMAT format,
508 D3DPOOL pool, DWORD filter, DWORD mipfilter, D3DCOLOR colorkey, D3DXIMAGE_INFO *srcinfo,
509 PALETTEENTRY *palette, struct IDirect3DVolumeTexture9 **volume);
510 HRESULT WINAPI D3DXCreateVolumeTextureFromResourceExW(struct IDirect3DDevice9 *device, HMODULE srcmodule,
511 const WCHAR *resource, UINT width, UINT height, UINT depth, UINT miplevels, DWORD usage, D3DFORMAT format,
512 D3DPOOL pool, DWORD filter, DWORD mipfilter, D3DCOLOR colorkey, D3DXIMAGE_INFO *srcinfo,
513 PALETTEENTRY *palette, struct IDirect3DVolumeTexture9 **volume);
514 #define D3DXCreateVolumeTextureFromResourceEx WINELIB_NAME_AW(D3DXCreateVolumeTextureFromResourceEx)
516 HRESULT WINAPI D3DXCreateTextureFromFileInMemory( LPDIRECT3DDEVICE9 device,
519 LPDIRECT3DTEXTURE9* texture);
521 HRESULT WINAPI D3DXCreateCubeTextureFromFileInMemory( LPDIRECT3DDEVICE9 device,
524 LPDIRECT3DCUBETEXTURE9* cube);
525 HRESULT WINAPI D3DXCreateVolumeTextureFromFileInMemory(struct IDirect3DDevice9 *device,
526 const void *srcdata, UINT srcdatasize, struct IDirect3DVolumeTexture9 **volume);
528 HRESULT WINAPI D3DXCreateTextureFromFileInMemoryEx( LPDIRECT3DDEVICE9 device,
540 D3DXIMAGE_INFO *srcinfo,
541 PALETTEENTRY *palette,
542 LPDIRECT3DTEXTURE9 *texture);
544 HRESULT WINAPI D3DXCreateCubeTextureFromFileInMemoryEx( LPDIRECT3DDEVICE9 device,
555 D3DXIMAGE_INFO *srcinfo,
556 PALETTEENTRY *palette,
557 LPDIRECT3DCUBETEXTURE9 *cube);
558 HRESULT WINAPI D3DXCreateVolumeTextureFromFileInMemoryEx(struct IDirect3DDevice9 *device, const void *srcdata,
559 UINT srcdatasize, UINT width, UINT height, UINT depth, UINT miplevels, DWORD usage, D3DFORMAT format,
560 D3DPOOL pool, DWORD filter, DWORD mipfilter, D3DCOLOR colorkey, D3DXIMAGE_INFO *srcinfo,
561 PALETTEENTRY *palette, struct IDirect3DVolumeTexture9 **volume);
563 HRESULT WINAPI D3DXSaveTextureToFileInMemory(LPD3DXBUFFER *destbuffer,
564 D3DXIMAGE_FILEFORMAT destformat,
565 LPDIRECT3DBASETEXTURE9 srctexture,
566 CONST PALETTEENTRY *srcpalette);
568 HRESULT WINAPI D3DXSaveTextureToFileA(LPCSTR destfile,
569 D3DXIMAGE_FILEFORMAT destformat,
570 LPDIRECT3DBASETEXTURE9 srctexture,
571 CONST PALETTEENTRY *srcpalette);
572 HRESULT WINAPI D3DXSaveTextureToFileW(LPCWSTR destfile,
573 D3DXIMAGE_FILEFORMAT destformat,
574 LPDIRECT3DBASETEXTURE9 srctexture,
575 CONST PALETTEENTRY *srcpalette);
576 #define D3DXSaveTextureToFile WINELIB_NAME_AW(D3DXSaveTextureToFile)
579 /* Other functions */
580 HRESULT WINAPI D3DXFilterTexture( LPDIRECT3DBASETEXTURE9 texture,
581 CONST PALETTEENTRY *palette,
584 #define D3DXFilterCubeTexture D3DXFilterTexture
585 #define D3DXFilterVolumeTexture D3DXFilterTexture
587 HRESULT WINAPI D3DXFillTexture( LPDIRECT3DTEXTURE9 texture,
588 LPD3DXFILL2D function,
591 HRESULT WINAPI D3DXFillCubeTexture( LPDIRECT3DCUBETEXTURE9 cube,
592 LPD3DXFILL3D function,
594 HRESULT WINAPI D3DXFillVolumeTexture(struct IDirect3DVolumeTexture9 *volume, LPD3DXFILL3D function, void *data);
596 HRESULT WINAPI D3DXFillTextureTX( LPDIRECT3DTEXTURE9 texture,
597 CONST DWORD *function,
598 CONST D3DXVECTOR4 *constants,
601 HRESULT WINAPI D3DXFillCubeTextureTX( LPDIRECT3DCUBETEXTURE9 cube,
602 CONST DWORD *function,
603 CONST D3DXVECTOR4 *constants,
605 HRESULT WINAPI D3DXFillVolumeTextureTX(struct IDirect3DVolumeTexture9 *volume, const DWORD *function,
606 const D3DXVECTOR4 *constants, UINT numconstants);
608 HRESULT WINAPI D3DXComputeNormalMap( LPDIRECT3DTEXTURE9 texture,
609 LPDIRECT3DTEXTURE9 srctexture,
610 CONST PALETTEENTRY *srcpalette,
620 #endif /* __WINE_D3DX9TEX_H */