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
19 #include <_mingw_dxhelper.h>
22 #ifndef __WINE_D3DX9TEX_H
23 #define __WINE_D3DX9TEX_H
25 /**********************************************
26 ***************** Definitions ****************
27 **********************************************/
28 #define D3DX_FILTER_NONE 0x00000001
29 #define D3DX_FILTER_POINT 0x00000002
30 #define D3DX_FILTER_LINEAR 0x00000003
31 #define D3DX_FILTER_TRIANGLE 0x00000004
32 #define D3DX_FILTER_BOX 0x00000005
33 #define D3DX_FILTER_MIRROR_U 0x00010000
34 #define D3DX_FILTER_MIRROR_V 0x00020000
35 #define D3DX_FILTER_MIRROR_W 0x00040000
36 #define D3DX_FILTER_MIRROR 0x00070000
37 #define D3DX_FILTER_DITHER 0x00080000
38 #define D3DX_FILTER_DITHER_DIFFUSION 0x00100000
39 #define D3DX_FILTER_SRGB_IN 0x00200000
40 #define D3DX_FILTER_SRGB_OUT 0x00400000
41 #define D3DX_FILTER_SRGB 0x00600000
43 #define D3DX_NORMALMAP_MIRROR_U 0x00010000
44 #define D3DX_NORMALMAP_MIRROR_V 0x00020000
45 #define D3DX_NORMALMAP_MIRROR 0x00030000
46 #define D3DX_NORMALMAP_INVERTSIGN 0x00080000
47 #define D3DX_NORMALMAP_COMPUTE_OCCLUSION 0x00100000
49 #define D3DX_CHANNEL_RED 0x00000001
50 #define D3DX_CHANNEL_BLUE 0x00000002
51 #define D3DX_CHANNEL_GREEN 0x00000004
52 #define D3DX_CHANNEL_ALPHA 0x00000008
53 #define D3DX_CHANNEL_LUMINANCE 0x00000010
55 /**********************************************
56 **************** Typedefs ****************
57 **********************************************/
58 typedef enum _D3DXIMAGE_FILEFORMAT
67 D3DXIFF_FORCE_DWORD = 0x7fffffff
68 } D3DXIMAGE_FILEFORMAT;
70 typedef struct _D3DXIMAGE_INFO
77 D3DRESOURCETYPE ResourceType;
78 D3DXIMAGE_FILEFORMAT ImageFileFormat;
81 /**********************************************
82 ****************** Functions *****************
83 **********************************************/
84 /* Typedefs for callback functions */
85 typedef VOID (WINAPI *LPD3DXFILL2D)(D3DXVECTOR4 *out, CONST D3DXVECTOR2 *texcoord, CONST D3DXVECTOR2 *texelsize, LPVOID data);
86 typedef VOID (WINAPI *LPD3DXFILL3D)(D3DXVECTOR4 *out, CONST D3DXVECTOR3 *texcoord, CONST D3DXVECTOR3 *texelsize, LPVOID data);
93 /* Image Information */
94 HRESULT WINAPI D3DXGetImageInfoFromFileA(LPCSTR file, D3DXIMAGE_INFO *info);
95 HRESULT WINAPI D3DXGetImageInfoFromFileW(LPCWSTR file, D3DXIMAGE_INFO *info);
96 #define D3DXGetImageInfoFromFile WINELIB_NAME_AW(D3DXGetImageInfoFromFile)
98 HRESULT WINAPI D3DXGetImageInfoFromResourceA(HMODULE module, LPCSTR resource, D3DXIMAGE_INFO *info);
99 HRESULT WINAPI D3DXGetImageInfoFromResourceW(HMODULE module, LPCWSTR resource, D3DXIMAGE_INFO *info);
100 #define D3DXGetImageInfoFromResource WINELIB_NAME_AW(D3DXGetImageInfoFromResource)
102 HRESULT WINAPI D3DXGetImageInfoFromFileInMemory(LPCVOID data, UINT datasize, D3DXIMAGE_INFO *info);
105 /* Surface Loading/Saving */
106 HRESULT WINAPI D3DXLoadSurfaceFromFileA( LPDIRECT3DSURFACE9 destsurface,
107 CONST PALETTEENTRY *destpalette,
108 CONST RECT *destrect,
113 D3DXIMAGE_INFO *srcinfo);
115 HRESULT WINAPI D3DXLoadSurfaceFromFileW( LPDIRECT3DSURFACE9 destsurface,
116 CONST PALETTEENTRY *destpalette,
117 CONST RECT *destrect,
122 D3DXIMAGE_INFO *srcinfo);
123 #define D3DXLoadSurfaceFromFile WINELIB_NAME_AW(D3DXLoadSurfaceFromFile)
125 HRESULT WINAPI D3DXLoadSurfaceFromResourceA( LPDIRECT3DSURFACE9 destsurface,
126 CONST PALETTEENTRY *destpalette,
127 CONST RECT *destrect,
133 D3DXIMAGE_INFO *srcinfo);
135 HRESULT WINAPI D3DXLoadSurfaceFromResourceW( LPDIRECT3DSURFACE9 destsurface,
136 CONST PALETTEENTRY *destpalette,
137 CONST RECT *destrect,
143 D3DXIMAGE_INFO *srcinfo);
144 #define D3DXLoadSurfaceFromResource WINELIB_NAME_AW(D3DXLoadSurfaceFromResource)
146 HRESULT WINAPI D3DXLoadSurfaceFromFileInMemory(LPDIRECT3DSURFACE9 destsurface,
147 CONST PALETTEENTRY *destpalette,
154 D3DXIMAGE_INFO *srcinfo);
156 HRESULT WINAPI D3DXLoadSurfaceFromSurface( LPDIRECT3DSURFACE9 destsurface,
157 CONST PALETTEENTRY *destpalette,
158 CONST RECT *destrect,
159 LPDIRECT3DSURFACE9 srcsurface,
160 CONST PALETTEENTRY *srcpalette,
165 HRESULT WINAPI D3DXLoadSurfaceFromMemory( LPDIRECT3DSURFACE9 destsurface,
166 CONST PALETTEENTRY *destpalette,
167 CONST RECT *destrect,
171 CONST PALETTEENTRY *srcpalette,
176 HRESULT WINAPI D3DXSaveSurfaceToFileA( LPCSTR destfile,
177 D3DXIMAGE_FILEFORMAT destformat,
178 LPDIRECT3DSURFACE9 srcsurface,
179 CONST PALETTEENTRY *srcpalette,
180 CONST RECT *srcrect);
182 HRESULT WINAPI D3DXSaveSurfaceToFileW( LPCWSTR destfile,
183 D3DXIMAGE_FILEFORMAT destformat,
184 LPDIRECT3DSURFACE9 srcsurface,
185 CONST PALETTEENTRY *srcpalette,
186 CONST RECT *srcrect);
187 #define D3DXSaveSurfaceToFile WINELIB_NAME_AW(D3DXSaveSurfaceToFile)
190 /* Volume Loading/Saving */
191 HRESULT WINAPI D3DXLoadVolumeFromFileA( LPDIRECT3DVOLUME9 destvolume,
192 CONST PALETTEENTRY *destpalette,
193 CONST D3DBOX *destbox,
195 CONST D3DBOX *srcbox,
198 D3DXIMAGE_INFO *srcinfo);
200 HRESULT WINAPI D3DXLoadVolumeFromFileW( LPDIRECT3DVOLUME9 destVolume,
201 CONST PALETTEENTRY *destpalette,
202 CONST D3DBOX *destbox,
204 CONST D3DBOX *srcbox,
207 D3DXIMAGE_INFO *srcinfo);
208 #define D3DXLoadVolumeFromFile WINELIB_NAME_AW(D3DXLoadVolumeFromFile)
210 HRESULT WINAPI D3DXLoadVolumeFromResourceA( LPDIRECT3DVOLUME9 destVolume,
211 CONST PALETTEENTRY *destpalette,
212 CONST D3DBOX *destbox,
215 CONST D3DBOX *srcbox,
218 D3DXIMAGE_INFO *srcinfo);
220 HRESULT WINAPI D3DXLoadVolumeFromResourceW( LPDIRECT3DVOLUME9 destVolume,
221 CONST PALETTEENTRY *destpalette,
222 CONST D3DBOX *destbox,
225 CONST D3DBOX *srcbox,
228 D3DXIMAGE_INFO *srcinfo);
229 #define D3DXLoadVolumeFromResource WINELIB_NAME_AW(D3DXLoadVolumeFromResource)
231 HRESULT WINAPI D3DXLoadVolumeFromFileInMemory(LPDIRECT3DVOLUME9 destvolume,
232 CONST PALETTEENTRY *destpalette,
233 CONST D3DBOX *destbox,
236 CONST D3DBOX *srcbox,
239 D3DXIMAGE_INFO *srcinfo);
241 HRESULT WINAPI D3DXLoadVolumeFromVolume( LPDIRECT3DVOLUME9 destvolume,
242 CONST PALETTEENTRY *destpalette,
243 CONST D3DBOX *destbox,
244 LPDIRECT3DVOLUME9 srcvolume,
245 CONST PALETTEENTRY *srcpalette,
246 CONST D3DBOX *srcbox,
250 HRESULT WINAPI D3DXLoadVolumeFromMemory( LPDIRECT3DVOLUME9 destvolume,
251 CONST PALETTEENTRY *destpalette,
252 CONST D3DBOX *destbox,
257 CONST PALETTEENTRY *srcpalette,
258 CONST D3DBOX *srcbox,
262 HRESULT WINAPI D3DXSaveVolumeToFileA( LPCSTR destfile,
263 D3DXIMAGE_FILEFORMAT destformat,
264 LPDIRECT3DVOLUME9 srcvolume,
265 CONST PALETTEENTRY *srcpalette,
266 CONST D3DBOX *srcbox);
268 HRESULT WINAPI D3DXSaveVolumeToFileW( LPCWSTR destfile,
269 D3DXIMAGE_FILEFORMAT destformat,
270 LPDIRECT3DVOLUME9 srcvolume,
271 CONST PALETTEENTRY *srcpalette,
272 CONST D3DBOX *srcbox);
273 #define D3DXSaveVolumeToFile WINELIB_NAME_AW(D3DXSaveVolumeToFile)
276 /* Texture, cube texture and volume texture creation */
277 HRESULT WINAPI D3DXCheckTextureRequirements( LPDIRECT3DDEVICE9 device,
284 HRESULT WINAPI D3DXCheckCubeTextureRequirements( LPDIRECT3DDEVICE9 device,
291 HRESULT WINAPI D3DXCheckVolumeTextureRequirements(LPDIRECT3DDEVICE9 device,
300 HRESULT WINAPI D3DXCreateTexture( LPDIRECT3DDEVICE9 device,
307 LPDIRECT3DTEXTURE9 *texture);
309 HRESULT WINAPI D3DXCreateCubeTexture( LPDIRECT3DDEVICE9 device,
315 LPDIRECT3DCUBETEXTURE9 *cube);
317 HRESULT WINAPI D3DXCreateVolumeTexture(LPDIRECT3DDEVICE9 device,
325 LPDIRECT3DVOLUMETEXTURE9 *volume);
327 HRESULT WINAPI D3DXCreateTextureFromFileA( LPDIRECT3DDEVICE9 device,
329 LPDIRECT3DTEXTURE9 *texture);
331 HRESULT WINAPI D3DXCreateTextureFromFileW( LPDIRECT3DDEVICE9 device,
333 LPDIRECT3DTEXTURE9 *texture);
334 #define D3DXCreateTextureFromFile WINELIB_NAME_AW(D3DXCreateTextureFromFile)
336 HRESULT WINAPI D3DXCreateCubeTextureFromFileA( LPDIRECT3DDEVICE9 device,
338 LPDIRECT3DCUBETEXTURE9 *cube);
340 HRESULT WINAPI D3DXCreateCubeTextureFromFileW( LPDIRECT3DDEVICE9 device,
342 LPDIRECT3DCUBETEXTURE9 *cube);
343 #define D3DXCreateCubeTextureFromFile WINELIB_NAME_AW(D3DXCreateCubeTextureFromFile)
345 HRESULT WINAPI D3DXCreateVolumeTextureFromFileA(LPDIRECT3DDEVICE9 device,
347 LPDIRECT3DVOLUMETEXTURE9 *volume);
349 HRESULT WINAPI D3DXCreateVolumeTextureFromFileW(LPDIRECT3DDEVICE9 device,
351 LPDIRECT3DVOLUMETEXTURE9 *volume);
352 #define D3DXCreateVolumeTextureFromFile WINELIB_NAME_AW(D3DXCreateVolumeTextureFromFile)
354 HRESULT WINAPI D3DXCreateTextureFromResourceA( LPDIRECT3DDEVICE9 device,
357 LPDIRECT3DTEXTURE9 *texture);
359 HRESULT WINAPI D3DXCreateTextureFromResourceW( LPDIRECT3DDEVICE9 device,
362 LPDIRECT3DTEXTURE9 *texture);
363 #define D3DXCreateTextureFromResource WINELIB_NAME_AW(D3DXCreateTextureFromResource)
365 HRESULT WINAPI D3DXCreateCubeTextureFromResourceA( LPDIRECT3DDEVICE9 device,
368 LPDIRECT3DCUBETEXTURE9 *cube);
369 HRESULT WINAPI D3DXCreateCubeTextureFromResourceW( LPDIRECT3DDEVICE9 device,
372 LPDIRECT3DCUBETEXTURE9 *cube);
373 #define D3DXCreateCubeTextureFromResource WINELIB_NAME_AW(D3DXCreateCubeTextureFromResource)
375 HRESULT WINAPI D3DXCreateVolumeTextureFromResourceA(LPDIRECT3DDEVICE9 device,
378 LPDIRECT3DVOLUMETEXTURE9 *volume);
379 HRESULT WINAPI D3DXCreateVolumeTextureFromResourceW(LPDIRECT3DDEVICE9 device,
382 LPDIRECT3DVOLUMETEXTURE9 *volume);
383 #define D3DXCreateVolumeTextureFromResource WINELIB_NAME_AW(D3DXCreateVolumeTextureFromResource)
385 HRESULT WINAPI D3DXCreateTextureFromFileExA( LPDIRECT3DDEVICE9 device,
396 D3DXIMAGE_INFO *srcinfo,
397 PALETTEENTRY *palette,
398 LPDIRECT3DTEXTURE9 *texture);
400 HRESULT WINAPI D3DXCreateTextureFromFileExW( LPDIRECT3DDEVICE9 device,
411 D3DXIMAGE_INFO *srcinfo,
412 PALETTEENTRY *palette,
413 LPDIRECT3DTEXTURE9 *texture);
414 #define D3DXCreateTextureFromFileEx WINELIB_NAME_AW(D3DXCreateTextureFromFileEx)
416 HRESULT WINAPI D3DXCreateCubeTextureFromFileExA( LPDIRECT3DDEVICE9 device,
426 D3DXIMAGE_INFO *srcinfo,
427 PALETTEENTRY *palette,
428 LPDIRECT3DCUBETEXTURE9 *cube);
430 HRESULT WINAPI D3DXCreateCubeTextureFromFileExW( LPDIRECT3DDEVICE9 device,
440 D3DXIMAGE_INFO *srcinfo,
441 PALETTEENTRY *palette,
442 LPDIRECT3DCUBETEXTURE9 *cube);
443 #define D3DXCreateCubeTextureFromFileEx WINELIB_NAME_AW(D3DXCreateCubeTextureFromFileEx)
445 HRESULT WINAPI D3DXCreateVolumeTextureFromFileExA(LPDIRECT3DDEVICE9 device,
457 D3DXIMAGE_INFO *srcinfo,
458 PALETTEENTRY *palette,
459 LPDIRECT3DVOLUMETEXTURE9 *volume);
461 HRESULT WINAPI D3DXCreateVolumeTextureFromFileExW(LPDIRECT3DDEVICE9 device,
473 D3DXIMAGE_INFO *srcinfo,
474 PALETTEENTRY *palette,
475 LPDIRECT3DVOLUMETEXTURE9 *volume);
476 #define D3DXCreateVolumeTextureFromFileEx WINELIB_NAME_AW(D3DXCreateVolumeTextureFromFileEx)
478 HRESULT WINAPI D3DXCreateTextureFromResourceExA( LPDIRECT3DDEVICE9 device,
490 D3DXIMAGE_INFO *srcinfo,
491 PALETTEENTRY *palette,
492 LPDIRECT3DTEXTURE9 *texture);
494 HRESULT WINAPI D3DXCreateTextureFromResourceExW( LPDIRECT3DDEVICE9 device,
506 D3DXIMAGE_INFO *srcinfo,
507 PALETTEENTRY *palette,
508 LPDIRECT3DTEXTURE9 *texture);
509 #define D3DXCreateTextureFromResourceEx WINELIB_NAME_AW(D3DXCreateTextureFromResourceEx)
511 HRESULT WINAPI D3DXCreateCubeTextureFromResourceExA( LPDIRECT3DDEVICE9 device,
522 D3DXIMAGE_INFO *srcinfo,
523 PALETTEENTRY *palette,
524 LPDIRECT3DCUBETEXTURE9 *cube);
526 HRESULT WINAPI D3DXCreateCubeTextureFromResourceExW( LPDIRECT3DDEVICE9 device,
537 D3DXIMAGE_INFO *srcinfo,
538 PALETTEENTRY *palette,
539 LPDIRECT3DCUBETEXTURE9 *cube);
540 #define D3DXCreateCubeTextureFromResourceEx WINELIB_NAME_AW(D3DXCreateCubeTextureFromResourceEx)
542 HRESULT WINAPI D3DXCreateVolumeTextureFromResourceExA(LPDIRECT3DDEVICE9 device,
555 D3DXIMAGE_INFO *srcinfo,
556 PALETTEENTRY *palette,
557 LPDIRECT3DVOLUMETEXTURE9 *volume);
559 HRESULT WINAPI D3DXCreateVolumeTextureFromResourceExW(LPDIRECT3DDEVICE9 device,
572 D3DXIMAGE_INFO *srcinfo,
573 PALETTEENTRY *palette,
574 LPDIRECT3DVOLUMETEXTURE9 *volume);
575 #define D3DXCreateVolumeTextureFromResourceEx WINELIB_NAME_AW(D3DXCreateVolumeTextureFromResourceEx)
577 HRESULT WINAPI D3DXCreateTextureFromFileInMemory( LPDIRECT3DDEVICE9 device,
580 LPDIRECT3DTEXTURE9* texture);
582 HRESULT WINAPI D3DXCreateCubeTextureFromFileInMemory( LPDIRECT3DDEVICE9 device,
585 LPDIRECT3DCUBETEXTURE9* cube);
587 HRESULT WINAPI D3DXCreateVolumeTextureFromFileInMemory(LPDIRECT3DDEVICE9 device,
590 LPDIRECT3DVOLUMETEXTURE9 *volume);
592 HRESULT WINAPI D3DXCreateTextureFromFileInMemoryEx( LPDIRECT3DDEVICE9 device,
604 D3DXIMAGE_INFO *srcinfo,
605 PALETTEENTRY *palette,
606 LPDIRECT3DTEXTURE9 *texture);
608 HRESULT WINAPI D3DXCreateCubeTextureFromFileInMemoryEx( LPDIRECT3DDEVICE9 device,
619 D3DXIMAGE_INFO *srcinfo,
620 PALETTEENTRY *palette,
621 LPDIRECT3DCUBETEXTURE9 *cube);
623 HRESULT WINAPI D3DXCreateVolumeTextureFromFileInMemoryEx(LPDIRECT3DDEVICE9 device,
636 D3DXIMAGE_INFO *srcinfo,
637 PALETTEENTRY *palette,
638 LPDIRECT3DVOLUMETEXTURE9 *volume);
640 HRESULT WINAPI D3DXSaveTextureToFileA(LPCSTR destfile,
641 D3DXIMAGE_FILEFORMAT destformat,
642 LPDIRECT3DBASETEXTURE9 srctexture,
643 CONST PALETTEENTRY *srcpalette);
644 HRESULT WINAPI D3DXSaveTextureToFileW(LPCWSTR destfile,
645 D3DXIMAGE_FILEFORMAT destformat,
646 LPDIRECT3DBASETEXTURE9 srctexture,
647 CONST PALETTEENTRY *srcpalette);
648 #define D3DXSaveTextureToFile WINELIB_NAME_AW(D3DXSaveTextureToFile)
651 /* Other functions */
652 HRESULT WINAPI D3DXFilterTexture( LPDIRECT3DBASETEXTURE9 texture,
653 CONST PALETTEENTRY *palette,
656 #define D3DXFilterCubeTexture D3DXFilterTexture
657 #define D3DXFilterVolumeTexture D3DXFilterTexture
659 HRESULT WINAPI D3DXFillTexture( LPDIRECT3DTEXTURE9 texture,
660 LPD3DXFILL2D function,
663 HRESULT WINAPI D3DXFillCubeTexture( LPDIRECT3DCUBETEXTURE9 cube,
664 LPD3DXFILL3D function,
667 HRESULT WINAPI D3DXFillVolumeTexture( LPDIRECT3DVOLUMETEXTURE9 volume,
668 LPD3DXFILL3D function,
671 HRESULT WINAPI D3DXFillTextureTX( LPDIRECT3DTEXTURE9 texture,
672 CONST DWORD *function,
673 CONST D3DXVECTOR4 *constants,
676 HRESULT WINAPI D3DXFillCubeTextureTX( LPDIRECT3DCUBETEXTURE9 cube,
677 CONST DWORD *function,
678 CONST D3DXVECTOR4 *constants,
681 HRESULT WINAPI D3DXFillVolumeTextureTX(LPDIRECT3DVOLUMETEXTURE9 volume,
682 CONST DWORD *function,
683 CONST D3DXVECTOR4 *constants,
686 HRESULT WINAPI D3DXComputeNormalMap( LPDIRECT3DTEXTURE9 texture,
687 LPDIRECT3DTEXTURE9 srctexture,
688 CONST PALETTEENTRY *srcpalette,
698 #endif /* __WINE_D3DX9TEX_H */