ReactOS 0.4.17-dev-934-g091855f
d3dx9tex.h File Reference
#include <d3dx9.h>
Include dependency graph for d3dx9tex.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  _D3DXIMAGE_INFO
 

Macros

#define D3DX_FILTER_NONE   0x00000001
 
#define D3DX_FILTER_POINT   0x00000002
 
#define D3DX_FILTER_LINEAR   0x00000003
 
#define D3DX_FILTER_TRIANGLE   0x00000004
 
#define D3DX_FILTER_BOX   0x00000005
 
#define D3DX_FILTER_MIRROR_U   0x00010000
 
#define D3DX_FILTER_MIRROR_V   0x00020000
 
#define D3DX_FILTER_MIRROR_W   0x00040000
 
#define D3DX_FILTER_MIRROR   0x00070000
 
#define D3DX_FILTER_DITHER   0x00080000
 
#define D3DX_FILTER_DITHER_DIFFUSION   0x00100000
 
#define D3DX_FILTER_SRGB_IN   0x00200000
 
#define D3DX_FILTER_SRGB_OUT   0x00400000
 
#define D3DX_FILTER_SRGB   0x00600000
 
#define D3DX_SKIP_DDS_MIP_LEVELS_MASK   0x1f
 
#define D3DX_SKIP_DDS_MIP_LEVELS_SHIFT   26
 
#define D3DX_SKIP_DDS_MIP_LEVELS(l, f)
 
#define D3DX_NORMALMAP_MIRROR_U   0x00010000
 
#define D3DX_NORMALMAP_MIRROR_V   0x00020000
 
#define D3DX_NORMALMAP_MIRROR   0x00030000
 
#define D3DX_NORMALMAP_INVERTSIGN   0x00080000
 
#define D3DX_NORMALMAP_COMPUTE_OCCLUSION   0x00100000
 
#define D3DX_CHANNEL_RED   0x00000001
 
#define D3DX_CHANNEL_BLUE   0x00000002
 
#define D3DX_CHANNEL_GREEN   0x00000004
 
#define D3DX_CHANNEL_ALPHA   0x00000008
 
#define D3DX_CHANNEL_LUMINANCE   0x00000010
 
#define D3DXGetImageInfoFromFile   WINELIB_NAME_AW(D3DXGetImageInfoFromFile)
 
#define D3DXGetImageInfoFromResource   WINELIB_NAME_AW(D3DXGetImageInfoFromResource)
 
#define D3DXLoadSurfaceFromFile   WINELIB_NAME_AW(D3DXLoadSurfaceFromFile)
 
#define D3DXLoadSurfaceFromResource   WINELIB_NAME_AW(D3DXLoadSurfaceFromResource)
 
#define D3DXSaveSurfaceToFile   WINELIB_NAME_AW(D3DXSaveSurfaceToFile)
 
#define D3DXLoadVolumeFromFile   WINELIB_NAME_AW(D3DXLoadVolumeFromFile)
 
#define D3DXLoadVolumeFromResource   WINELIB_NAME_AW(D3DXLoadVolumeFromResource)
 
#define D3DXSaveVolumeToFile   WINELIB_NAME_AW(D3DXSaveVolumeToFile)
 
#define D3DXCreateTextureFromFile   WINELIB_NAME_AW(D3DXCreateTextureFromFile)
 
#define D3DXCreateCubeTextureFromFile   WINELIB_NAME_AW(D3DXCreateCubeTextureFromFile)
 
#define D3DXCreateVolumeTextureFromFile   WINELIB_NAME_AW(D3DXCreateVolumeTextureFromFile)
 
#define D3DXCreateTextureFromResource   WINELIB_NAME_AW(D3DXCreateTextureFromResource)
 
#define D3DXCreateCubeTextureFromResource   WINELIB_NAME_AW(D3DXCreateCubeTextureFromResource)
 
#define D3DXCreateVolumeTextureFromResource   WINELIB_NAME_AW(D3DXCreateVolumeTextureFromResource)
 
#define D3DXCreateTextureFromFileEx   WINELIB_NAME_AW(D3DXCreateTextureFromFileEx)
 
#define D3DXCreateCubeTextureFromFileEx   WINELIB_NAME_AW(D3DXCreateCubeTextureFromFileEx)
 
#define D3DXCreateVolumeTextureFromFileEx   WINELIB_NAME_AW(D3DXCreateVolumeTextureFromFileEx)
 
#define D3DXCreateTextureFromResourceEx   WINELIB_NAME_AW(D3DXCreateTextureFromResourceEx)
 
#define D3DXCreateCubeTextureFromResourceEx   WINELIB_NAME_AW(D3DXCreateCubeTextureFromResourceEx)
 
#define D3DXCreateVolumeTextureFromResourceEx   WINELIB_NAME_AW(D3DXCreateVolumeTextureFromResourceEx)
 
#define D3DXSaveTextureToFile   WINELIB_NAME_AW(D3DXSaveTextureToFile)
 
#define D3DXFilterCubeTexture   D3DXFilterTexture
 
#define D3DXFilterVolumeTexture   D3DXFilterTexture
 

Typedefs

typedef enum _D3DXIMAGE_FILEFORMAT D3DXIMAGE_FILEFORMAT
 
typedef struct _D3DXIMAGE_INFO D3DXIMAGE_INFO
 
typedef void(WINAPI * LPD3DXFILL2D) (D3DXVECTOR4 *out, const D3DXVECTOR2 *texcoord, const D3DXVECTOR2 *texelsize, void *data)
 
typedef void(WINAPI * LPD3DXFILL3D) (D3DXVECTOR4 *out, const D3DXVECTOR3 *texcoord, const D3DXVECTOR3 *texelsize, void *data)
 

Enumerations

enum  _D3DXIMAGE_FILEFORMAT {
  D3DXIFF_BMP , D3DXIFF_JPG , D3DXIFF_TGA , D3DXIFF_PNG ,
  D3DXIFF_DDS , D3DXIFF_PPM , D3DXIFF_DIB , D3DXIFF_HDR ,
  D3DXIFF_PFM , D3DXIFF_FORCE_DWORD = 0x7fffffff , D3DXIFF_BMP , D3DXIFF_JPG ,
  D3DXIFF_TGA , D3DXIFF_PNG , D3DXIFF_DDS , D3DXIFF_PPM ,
  D3DXIFF_DIB , D3DXIFF_HDR , D3DXIFF_PFM , D3DXIFF_FORCE_DWORD = 0x7fffffff
}
 

Functions

HRESULT WINAPI D3DXGetImageInfoFromFileA (const char *file, D3DXIMAGE_INFO *info)
 
HRESULT WINAPI D3DXGetImageInfoFromFileW (const WCHAR *file, D3DXIMAGE_INFO *info)
 
HRESULT WINAPI D3DXGetImageInfoFromResourceA (HMODULE module, const char *resource, D3DXIMAGE_INFO *info)
 
HRESULT WINAPI D3DXGetImageInfoFromResourceW (HMODULE module, const WCHAR *resource, D3DXIMAGE_INFO *info)
 
HRESULT WINAPI D3DXGetImageInfoFromFileInMemory (const void *data, UINT data_size, D3DXIMAGE_INFO *info)
 
HRESULT WINAPI D3DXLoadSurfaceFromFileA (struct IDirect3DSurface9 *destsurface, const PALETTEENTRY *destpalette, const RECT *destrect, const char *srcfile, const RECT *srcrect, DWORD filter, D3DCOLOR colorkey, D3DXIMAGE_INFO *srcinfo)
 
HRESULT WINAPI D3DXLoadSurfaceFromFileW (struct IDirect3DSurface9 *destsurface, const PALETTEENTRY *destpalette, const RECT *destrect, const WCHAR *srcfile, const RECT *srcrect, DWORD filter, D3DCOLOR colorkey, D3DXIMAGE_INFO *srcinfo)
 
HRESULT WINAPI D3DXLoadSurfaceFromResourceA (struct IDirect3DSurface9 *destsurface, const PALETTEENTRY *destpalette, const RECT *destrect, HMODULE srcmodule, const char *resource, const RECT *srcrect, DWORD filter, D3DCOLOR colorkey, D3DXIMAGE_INFO *srcinfo)
 
HRESULT WINAPI D3DXLoadSurfaceFromResourceW (struct IDirect3DSurface9 *destsurface, const PALETTEENTRY *destpalette, const RECT *destrect, HMODULE srcmodule, const WCHAR *resource, const RECT *srcrect, DWORD filter, D3DCOLOR colorkey, D3DXIMAGE_INFO *srcinfo)
 
HRESULT WINAPI D3DXLoadSurfaceFromFileInMemory (struct IDirect3DSurface9 *destsurface, const PALETTEENTRY *destpalette, const RECT *destrect, const void *srcdata, UINT srcdatasize, const RECT *srcrect, DWORD filter, D3DCOLOR colorkey, D3DXIMAGE_INFO *srcinfo)
 
HRESULT WINAPI D3DXLoadSurfaceFromSurface (struct IDirect3DSurface9 *destsurface, const PALETTEENTRY *destpalette, const RECT *destrect, struct IDirect3DSurface9 *srcsurface, const PALETTEENTRY *srcpalette, const RECT *srcrect, DWORD filter, D3DCOLOR colorkey)
 
HRESULT WINAPI D3DXLoadSurfaceFromMemory (IDirect3DSurface9 *dst_surface, const PALETTEENTRY *dst_palette, const RECT *dst_rect, const void *src_memory, D3DFORMAT src_format, UINT src_pitch, const PALETTEENTRY *src_palette, const RECT *src_rect, DWORD filter, D3DCOLOR color_key)
 
HRESULT WINAPI D3DXSaveSurfaceToFileInMemory (struct ID3DXBuffer **destbuffer, D3DXIMAGE_FILEFORMAT destformat, struct IDirect3DSurface9 *srcsurface, const PALETTEENTRY *srcpalette, const RECT *srcrect)
 
HRESULT WINAPI D3DXSaveSurfaceToFileA (const char *destfile, D3DXIMAGE_FILEFORMAT destformat, struct IDirect3DSurface9 *srcsurface, const PALETTEENTRY *srcpalette, const RECT *srcrect)
 
HRESULT WINAPI D3DXSaveSurfaceToFileW (const WCHAR *destfile, D3DXIMAGE_FILEFORMAT destformat, struct IDirect3DSurface9 *srcsurface, const PALETTEENTRY *srcpalette, const RECT *srcrect)
 
HRESULT WINAPI D3DXLoadVolumeFromFileA (struct IDirect3DVolume9 *destvolume, const PALETTEENTRY *destpalette, const D3DBOX *destbox, const char *srcfile, const D3DBOX *srcbox, DWORD filter, D3DCOLOR colorkey, D3DXIMAGE_INFO *srcinfo)
 
HRESULT WINAPI D3DXLoadVolumeFromFileW (struct IDirect3DVolume9 *destvolume, const PALETTEENTRY *destpalette, const D3DBOX *destbox, const WCHAR *srcfile, const D3DBOX *srcbox, DWORD filter, D3DCOLOR colorkey, D3DXIMAGE_INFO *srcinfo)
 
HRESULT WINAPI D3DXLoadVolumeFromResourceA (struct IDirect3DVolume9 *destvolume, const PALETTEENTRY *destpalette, const D3DBOX *destbox, HMODULE srcmodule, const char *resource, const D3DBOX *srcbox, DWORD filter, D3DCOLOR colorkey, D3DXIMAGE_INFO *srcinfo)
 
HRESULT WINAPI D3DXLoadVolumeFromResourceW (struct IDirect3DVolume9 *destvolume, const PALETTEENTRY *destpalette, const D3DBOX *destbox, HMODULE srcmodule, const WCHAR *resource, const D3DBOX *srcbox, DWORD filter, D3DCOLOR colorkey, D3DXIMAGE_INFO *srcinfo)
 
HRESULT WINAPI D3DXLoadVolumeFromFileInMemory (struct IDirect3DVolume9 *destvolume, const PALETTEENTRY *destpalette, const D3DBOX *destbox, const void *srcdata, UINT srcdatasize, const D3DBOX *srcbox, DWORD filter, D3DCOLOR colorkey, D3DXIMAGE_INFO *srcinfo)
 
HRESULT WINAPI D3DXLoadVolumeFromVolume (struct IDirect3DVolume9 *destvolume, const PALETTEENTRY *destpalette, const D3DBOX *destbox, struct IDirect3DVolume9 *srcvolume, const PALETTEENTRY *srcpalette, const D3DBOX *srcbox, DWORD filter, D3DCOLOR colorkey)
 
HRESULT WINAPI D3DXLoadVolumeFromMemory (struct IDirect3DVolume9 *destvolume, const PALETTEENTRY *destpalette, const D3DBOX *destbox, const void *srcmemory, D3DFORMAT srcformat, UINT srcrowpitch, UINT srcslicepitch, const PALETTEENTRY *srcpalette, const D3DBOX *srcbox, DWORD filter, D3DCOLOR colorkey)
 
HRESULT WINAPI D3DXSaveVolumeToFileA (const char *destfile, D3DXIMAGE_FILEFORMAT destformat, struct IDirect3DVolume9 *srcvolume, const PALETTEENTRY *srcpalette, const D3DBOX *srcbox)
 
HRESULT WINAPI D3DXSaveVolumeToFileW (const WCHAR *destfile, D3DXIMAGE_FILEFORMAT destformat, struct IDirect3DVolume9 *srcvolume, const PALETTEENTRY *srcpalette, const D3DBOX *srcbox)
 
HRESULT WINAPI D3DXCheckTextureRequirements (struct IDirect3DDevice9 *device, UINT *width, UINT *height, UINT *miplevels, DWORD usage, D3DFORMAT *format, D3DPOOL pool)
 
HRESULT WINAPI D3DXCheckCubeTextureRequirements (struct IDirect3DDevice9 *device, UINT *size, UINT *miplevels, DWORD usage, D3DFORMAT *format, D3DPOOL pool)
 
HRESULT WINAPI D3DXCheckVolumeTextureRequirements (struct IDirect3DDevice9 *device, UINT *width, UINT *height, UINT *depth, UINT *miplevels, DWORD usage, D3DFORMAT *format, D3DPOOL pool)
 
HRESULT WINAPI D3DXCreateTexture (struct IDirect3DDevice9 *device, UINT width, UINT height, UINT miplevels, DWORD usage, D3DFORMAT format, D3DPOOL pool, struct IDirect3DTexture9 **texture)
 
HRESULT WINAPI D3DXCreateCubeTexture (struct IDirect3DDevice9 *device, UINT size, UINT miplevels, DWORD usage, D3DFORMAT format, D3DPOOL pool, struct IDirect3DCubeTexture9 **cube)
 
HRESULT WINAPI D3DXCreateVolumeTexture (struct IDirect3DDevice9 *device, UINT width, UINT height, UINT depth, UINT miplevels, DWORD usage, D3DFORMAT format, D3DPOOL pool, struct IDirect3DVolumeTexture9 **volume)
 
HRESULT WINAPI D3DXCreateTextureFromFileA (struct IDirect3DDevice9 *device, const char *srcfile, struct IDirect3DTexture9 **texture)
 
HRESULT WINAPI D3DXCreateTextureFromFileW (struct IDirect3DDevice9 *device, const WCHAR *srcfile, struct IDirect3DTexture9 **texture)
 
HRESULT WINAPI D3DXCreateCubeTextureFromFileA (struct IDirect3DDevice9 *device, const char *srcfile, struct IDirect3DCubeTexture9 **cube)
 
HRESULT WINAPI D3DXCreateCubeTextureFromFileW (struct IDirect3DDevice9 *device, const WCHAR *srcfile, struct IDirect3DCubeTexture9 **cube)
 
HRESULT WINAPI D3DXCreateVolumeTextureFromFileA (struct IDirect3DDevice9 *device, const char *srcfile, struct IDirect3DVolumeTexture9 **volume)
 
HRESULT WINAPI D3DXCreateVolumeTextureFromFileW (struct IDirect3DDevice9 *device, const WCHAR *srcfile, struct IDirect3DVolumeTexture9 **volume)
 
HRESULT WINAPI D3DXCreateTextureFromResourceA (struct IDirect3DDevice9 *device, HMODULE srcmodule, const char *resource, struct IDirect3DTexture9 **texture)
 
HRESULT WINAPI D3DXCreateTextureFromResourceW (struct IDirect3DDevice9 *device, HMODULE srcmodule, const WCHAR *resource, struct IDirect3DTexture9 **texture)
 
HRESULT WINAPI D3DXCreateCubeTextureFromResourceA (struct IDirect3DDevice9 *device, HMODULE srcmodule, const char *resource, struct IDirect3DCubeTexture9 **cube)
 
HRESULT WINAPI D3DXCreateCubeTextureFromResourceW (struct IDirect3DDevice9 *device, HMODULE srcmodule, const WCHAR *resource, struct IDirect3DCubeTexture9 **cube)
 
HRESULT WINAPI D3DXCreateVolumeTextureFromResourceA (struct IDirect3DDevice9 *device, HMODULE srcmodule, const char *resource, struct IDirect3DVolumeTexture9 **volume)
 
HRESULT WINAPI D3DXCreateVolumeTextureFromResourceW (struct IDirect3DDevice9 *device, HMODULE srcmodule, const WCHAR *resource, struct IDirect3DVolumeTexture9 **volume)
 
HRESULT WINAPI D3DXCreateTextureFromFileExA (struct IDirect3DDevice9 *device, const char *srcfile, UINT width, UINT height, UINT miplevels, DWORD usage, D3DFORMAT format, D3DPOOL pool, DWORD filter, DWORD mipfilter, D3DCOLOR colorkey, D3DXIMAGE_INFO *srcinfo, PALETTEENTRY *palette, struct IDirect3DTexture9 **texture)
 
HRESULT WINAPI D3DXCreateTextureFromFileExW (struct IDirect3DDevice9 *device, const WCHAR *srcfile, UINT width, UINT height, UINT miplevels, DWORD usage, D3DFORMAT format, D3DPOOL pool, DWORD filter, DWORD mipfilter, D3DCOLOR colorkey, D3DXIMAGE_INFO *srcinfo, PALETTEENTRY *palette, struct IDirect3DTexture9 **texture)
 
HRESULT WINAPI D3DXCreateCubeTextureFromFileExA (struct IDirect3DDevice9 *device, const char *srcfile, UINT size, UINT miplevels, DWORD usage, D3DFORMAT format, D3DPOOL pool, DWORD filter, DWORD mipfilter, D3DCOLOR colorkey, D3DXIMAGE_INFO *srcinfo, PALETTEENTRY *palette, struct IDirect3DCubeTexture9 **cube)
 
HRESULT WINAPI D3DXCreateCubeTextureFromFileExW (struct IDirect3DDevice9 *device, const WCHAR *srcfile, UINT size, UINT miplevels, DWORD usage, D3DFORMAT format, D3DPOOL pool, DWORD filter, DWORD mipfilter, D3DCOLOR colorkey, D3DXIMAGE_INFO *srcinfo, PALETTEENTRY *palette, struct IDirect3DCubeTexture9 **cube)
 
HRESULT WINAPI D3DXCreateVolumeTextureFromFileExA (struct IDirect3DDevice9 *device, const char *srcfile, UINT width, UINT height, UINT depth, UINT miplevels, DWORD usage, D3DFORMAT format, D3DPOOL pool, DWORD filter, DWORD mipfilter, D3DCOLOR colorkey, D3DXIMAGE_INFO *srcinfo, PALETTEENTRY *palette, struct IDirect3DVolumeTexture9 **volume)
 
HRESULT WINAPI D3DXCreateVolumeTextureFromFileExW (struct IDirect3DDevice9 *device, const WCHAR *srcfile, UINT width, UINT height, UINT depth, UINT miplevels, DWORD usage, D3DFORMAT format, D3DPOOL pool, DWORD filter, DWORD mipfilter, D3DCOLOR colorkey, D3DXIMAGE_INFO *srcinfo, PALETTEENTRY *palette, struct IDirect3DVolumeTexture9 **volume)
 
HRESULT WINAPI D3DXCreateTextureFromResourceExA (struct IDirect3DDevice9 *device, HMODULE srcmodule, const char *resource, UINT width, UINT height, UINT miplevels, DWORD usage, D3DFORMAT format, D3DPOOL pool, DWORD filter, DWORD mipfilter, D3DCOLOR colorkey, D3DXIMAGE_INFO *srcinfo, PALETTEENTRY *palette, struct IDirect3DTexture9 **texture)
 
HRESULT WINAPI D3DXCreateTextureFromResourceExW (struct IDirect3DDevice9 *device, HMODULE srcmodule, const WCHAR *resource, UINT width, UINT height, UINT miplevels, DWORD usage, D3DFORMAT format, D3DPOOL pool, DWORD filter, DWORD mipfilter, D3DCOLOR colorkey, D3DXIMAGE_INFO *srcinfo, PALETTEENTRY *palette, struct IDirect3DTexture9 **texture)
 
HRESULT WINAPI D3DXCreateCubeTextureFromResourceExA (struct IDirect3DDevice9 *device, HMODULE srcmodule, const char *resource, UINT size, UINT miplevels, DWORD usage, D3DFORMAT format, D3DPOOL pool, DWORD filter, DWORD mipfilter, D3DCOLOR colorkey, D3DXIMAGE_INFO *srcinfo, PALETTEENTRY *palette, struct IDirect3DCubeTexture9 **cube)
 
HRESULT WINAPI D3DXCreateCubeTextureFromResourceExW (struct IDirect3DDevice9 *device, HMODULE srcmodule, const WCHAR *resource, UINT size, UINT miplevels, DWORD usage, D3DFORMAT format, D3DPOOL pool, DWORD filter, DWORD mipfilter, D3DCOLOR colorkey, D3DXIMAGE_INFO *srcinfo, PALETTEENTRY *palette, struct IDirect3DCubeTexture9 **cube)
 
HRESULT WINAPI D3DXCreateVolumeTextureFromResourceExA (struct IDirect3DDevice9 *device, HMODULE srcmodule, const char *resource, UINT width, UINT height, UINT depth, UINT miplevels, DWORD usage, D3DFORMAT format, D3DPOOL pool, DWORD filter, DWORD mipfilter, D3DCOLOR colorkey, D3DXIMAGE_INFO *srcinfo, PALETTEENTRY *palette, struct IDirect3DVolumeTexture9 **volume)
 
HRESULT WINAPI D3DXCreateVolumeTextureFromResourceExW (struct IDirect3DDevice9 *device, HMODULE srcmodule, const WCHAR *resource, UINT width, UINT height, UINT depth, UINT miplevels, DWORD usage, D3DFORMAT format, D3DPOOL pool, DWORD filter, DWORD mipfilter, D3DCOLOR colorkey, D3DXIMAGE_INFO *srcinfo, PALETTEENTRY *palette, struct IDirect3DVolumeTexture9 **volume)
 
HRESULT WINAPI D3DXCreateTextureFromFileInMemory (struct IDirect3DDevice9 *device, const void *srcdata, UINT srcdatasize, struct IDirect3DTexture9 **texture)
 
HRESULT WINAPI D3DXCreateCubeTextureFromFileInMemory (struct IDirect3DDevice9 *device, const void *srcdata, UINT srcdatasize, struct IDirect3DCubeTexture9 **cube)
 
HRESULT WINAPI D3DXCreateVolumeTextureFromFileInMemory (struct IDirect3DDevice9 *device, const void *srcdata, UINT srcdatasize, struct IDirect3DVolumeTexture9 **volume)
 
HRESULT WINAPI D3DXCreateTextureFromFileInMemoryEx (struct IDirect3DDevice9 *device, const void *srcdata, UINT srcdatasize, UINT width, UINT height, UINT miplevels, DWORD usage, D3DFORMAT format, D3DPOOL pool, DWORD filter, DWORD mipfilter, D3DCOLOR colorkey, D3DXIMAGE_INFO *srcinfo, PALETTEENTRY *palette, struct IDirect3DTexture9 **texture)
 
HRESULT WINAPI D3DXCreateCubeTextureFromFileInMemoryEx (struct IDirect3DDevice9 *device, const void *srcdata, UINT srcdatasize, UINT size, UINT miplevels, DWORD usage, D3DFORMAT format, D3DPOOL pool, DWORD filter, DWORD mipfilter, D3DCOLOR colorkey, D3DXIMAGE_INFO *srcinfo, PALETTEENTRY *palette, struct IDirect3DCubeTexture9 **cube)
 
HRESULT WINAPI D3DXCreateVolumeTextureFromFileInMemoryEx (struct IDirect3DDevice9 *device, const void *srcdata, UINT srcdatasize, UINT width, UINT height, UINT depth, UINT miplevels, DWORD usage, D3DFORMAT format, D3DPOOL pool, DWORD filter, DWORD mipfilter, D3DCOLOR colorkey, D3DXIMAGE_INFO *srcinfo, PALETTEENTRY *palette, struct IDirect3DVolumeTexture9 **volume)
 
HRESULT WINAPI D3DXSaveTextureToFileInMemory (struct ID3DXBuffer **destbuffer, D3DXIMAGE_FILEFORMAT destformat, struct IDirect3DBaseTexture9 *srctexture, const PALETTEENTRY *srcpalette)
 
HRESULT WINAPI D3DXSaveTextureToFileA (const char *destfile, D3DXIMAGE_FILEFORMAT destformat, struct IDirect3DBaseTexture9 *srctexture, const PALETTEENTRY *srcpalette)
 
HRESULT WINAPI D3DXSaveTextureToFileW (const WCHAR *destfile, D3DXIMAGE_FILEFORMAT destformat, struct IDirect3DBaseTexture9 *srctexture, const PALETTEENTRY *srcpalette)
 
HRESULT WINAPI D3DXFilterTexture (struct IDirect3DBaseTexture9 *texture, const PALETTEENTRY *palette, UINT srclevel, DWORD filter)
 
HRESULT WINAPI D3DXFillTexture (struct IDirect3DTexture9 *texture, LPD3DXFILL2D function, void *data)
 
HRESULT WINAPI D3DXFillCubeTexture (struct IDirect3DCubeTexture9 *cube, LPD3DXFILL3D function, void *data)
 
HRESULT WINAPI D3DXFillVolumeTexture (struct IDirect3DVolumeTexture9 *volume, LPD3DXFILL3D function, void *data)
 
HRESULT WINAPI D3DXFillTextureTX (struct IDirect3DTexture9 *texture, ID3DXTextureShader *texture_shader)
 
HRESULT WINAPI D3DXFillCubeTextureTX (struct IDirect3DCubeTexture9 *cube, ID3DXTextureShader *texture_shader)
 
HRESULT WINAPI D3DXFillVolumeTextureTX (struct IDirect3DVolumeTexture9 *volume, ID3DXTextureShader *texture_shader)
 
HRESULT WINAPI D3DXComputeNormalMap (IDirect3DTexture9 *texture, IDirect3DTexture9 *srctexture, const PALETTEENTRY *srcpalette, DWORD flags, DWORD channel, float amplitude)
 

Macro Definition Documentation

◆ D3DX_CHANNEL_ALPHA

#define D3DX_CHANNEL_ALPHA   0x00000008

Definition at line 56 of file d3dx9tex.h.

◆ D3DX_CHANNEL_BLUE

#define D3DX_CHANNEL_BLUE   0x00000002

Definition at line 54 of file d3dx9tex.h.

◆ D3DX_CHANNEL_GREEN

#define D3DX_CHANNEL_GREEN   0x00000004

Definition at line 55 of file d3dx9tex.h.

◆ D3DX_CHANNEL_LUMINANCE

#define D3DX_CHANNEL_LUMINANCE   0x00000010

Definition at line 57 of file d3dx9tex.h.

◆ D3DX_CHANNEL_RED

#define D3DX_CHANNEL_RED   0x00000001

Definition at line 53 of file d3dx9tex.h.

◆ D3DX_FILTER_BOX

#define D3DX_FILTER_BOX   0x00000005

Definition at line 31 of file d3dx9tex.h.

◆ D3DX_FILTER_DITHER

#define D3DX_FILTER_DITHER   0x00080000

Definition at line 36 of file d3dx9tex.h.

◆ D3DX_FILTER_DITHER_DIFFUSION

#define D3DX_FILTER_DITHER_DIFFUSION   0x00100000

Definition at line 37 of file d3dx9tex.h.

◆ D3DX_FILTER_LINEAR

#define D3DX_FILTER_LINEAR   0x00000003

Definition at line 29 of file d3dx9tex.h.

◆ D3DX_FILTER_MIRROR

#define D3DX_FILTER_MIRROR   0x00070000

Definition at line 35 of file d3dx9tex.h.

◆ D3DX_FILTER_MIRROR_U

#define D3DX_FILTER_MIRROR_U   0x00010000

Definition at line 32 of file d3dx9tex.h.

◆ D3DX_FILTER_MIRROR_V

#define D3DX_FILTER_MIRROR_V   0x00020000

Definition at line 33 of file d3dx9tex.h.

◆ D3DX_FILTER_MIRROR_W

#define D3DX_FILTER_MIRROR_W   0x00040000

Definition at line 34 of file d3dx9tex.h.

◆ D3DX_FILTER_NONE

#define D3DX_FILTER_NONE   0x00000001

Definition at line 27 of file d3dx9tex.h.

◆ D3DX_FILTER_POINT

#define D3DX_FILTER_POINT   0x00000002

Definition at line 28 of file d3dx9tex.h.

◆ D3DX_FILTER_SRGB

#define D3DX_FILTER_SRGB   0x00600000

Definition at line 40 of file d3dx9tex.h.

◆ D3DX_FILTER_SRGB_IN

#define D3DX_FILTER_SRGB_IN   0x00200000

Definition at line 38 of file d3dx9tex.h.

◆ D3DX_FILTER_SRGB_OUT

#define D3DX_FILTER_SRGB_OUT   0x00400000

Definition at line 39 of file d3dx9tex.h.

◆ D3DX_FILTER_TRIANGLE

#define D3DX_FILTER_TRIANGLE   0x00000004

Definition at line 30 of file d3dx9tex.h.

◆ D3DX_NORMALMAP_COMPUTE_OCCLUSION

#define D3DX_NORMALMAP_COMPUTE_OCCLUSION   0x00100000

Definition at line 51 of file d3dx9tex.h.

◆ D3DX_NORMALMAP_INVERTSIGN

#define D3DX_NORMALMAP_INVERTSIGN   0x00080000

Definition at line 50 of file d3dx9tex.h.

◆ D3DX_NORMALMAP_MIRROR

#define D3DX_NORMALMAP_MIRROR   0x00030000

Definition at line 49 of file d3dx9tex.h.

◆ D3DX_NORMALMAP_MIRROR_U

#define D3DX_NORMALMAP_MIRROR_U   0x00010000

Definition at line 47 of file d3dx9tex.h.

◆ D3DX_NORMALMAP_MIRROR_V

#define D3DX_NORMALMAP_MIRROR_V   0x00020000

Definition at line 48 of file d3dx9tex.h.

◆ D3DX_SKIP_DDS_MIP_LEVELS

#define D3DX_SKIP_DDS_MIP_LEVELS (   l,
  f 
)
Value:
r l[0]
Definition: byte_order.h:168
#define D3DX_DEFAULT
Definition: d3dx9.h:24
#define D3DX_FILTER_BOX
Definition: d3dx9tex.h:31
#define D3DX_SKIP_DDS_MIP_LEVELS_MASK
Definition: d3dx9tex.h:42
#define D3DX_SKIP_DDS_MIP_LEVELS_SHIFT
Definition: d3dx9tex.h:43
GLfloat f
Definition: glext.h:7540
#define f
Definition: ke_i.h:83

Definition at line 44 of file d3dx9tex.h.

◆ D3DX_SKIP_DDS_MIP_LEVELS_MASK

#define D3DX_SKIP_DDS_MIP_LEVELS_MASK   0x1f

Definition at line 42 of file d3dx9tex.h.

◆ D3DX_SKIP_DDS_MIP_LEVELS_SHIFT

#define D3DX_SKIP_DDS_MIP_LEVELS_SHIFT   26

Definition at line 43 of file d3dx9tex.h.

◆ D3DXCreateCubeTextureFromFile

#define D3DXCreateCubeTextureFromFile   WINELIB_NAME_AW(D3DXCreateCubeTextureFromFile)

Definition at line 216 of file d3dx9tex.h.

◆ D3DXCreateCubeTextureFromFileEx

#define D3DXCreateCubeTextureFromFileEx   WINELIB_NAME_AW(D3DXCreateCubeTextureFromFileEx)

Definition at line 260 of file d3dx9tex.h.

◆ D3DXCreateCubeTextureFromResource

#define D3DXCreateCubeTextureFromResource   WINELIB_NAME_AW(D3DXCreateCubeTextureFromResource)

Definition at line 234 of file d3dx9tex.h.

◆ D3DXCreateCubeTextureFromResourceEx

#define D3DXCreateCubeTextureFromResourceEx   WINELIB_NAME_AW(D3DXCreateCubeTextureFromResourceEx)

Definition at line 290 of file d3dx9tex.h.

◆ D3DXCreateTextureFromFile

#define D3DXCreateTextureFromFile   WINELIB_NAME_AW(D3DXCreateTextureFromFile)

Definition at line 210 of file d3dx9tex.h.

◆ D3DXCreateTextureFromFileEx

#define D3DXCreateTextureFromFileEx   WINELIB_NAME_AW(D3DXCreateTextureFromFileEx)

Definition at line 250 of file d3dx9tex.h.

◆ D3DXCreateTextureFromResource

#define D3DXCreateTextureFromResource   WINELIB_NAME_AW(D3DXCreateTextureFromResource)

Definition at line 228 of file d3dx9tex.h.

◆ D3DXCreateTextureFromResourceEx

#define D3DXCreateTextureFromResourceEx   WINELIB_NAME_AW(D3DXCreateTextureFromResourceEx)

Definition at line 280 of file d3dx9tex.h.

◆ D3DXCreateVolumeTextureFromFile

#define D3DXCreateVolumeTextureFromFile   WINELIB_NAME_AW(D3DXCreateVolumeTextureFromFile)

Definition at line 222 of file d3dx9tex.h.

◆ D3DXCreateVolumeTextureFromFileEx

#define D3DXCreateVolumeTextureFromFileEx   WINELIB_NAME_AW(D3DXCreateVolumeTextureFromFileEx)

Definition at line 270 of file d3dx9tex.h.

◆ D3DXCreateVolumeTextureFromResource

#define D3DXCreateVolumeTextureFromResource   WINELIB_NAME_AW(D3DXCreateVolumeTextureFromResource)

Definition at line 240 of file d3dx9tex.h.

◆ D3DXCreateVolumeTextureFromResourceEx

#define D3DXCreateVolumeTextureFromResourceEx   WINELIB_NAME_AW(D3DXCreateVolumeTextureFromResourceEx)

Definition at line 300 of file d3dx9tex.h.

◆ D3DXFilterCubeTexture

#define D3DXFilterCubeTexture   D3DXFilterTexture

Definition at line 333 of file d3dx9tex.h.

◆ D3DXFilterVolumeTexture

#define D3DXFilterVolumeTexture   D3DXFilterTexture

Definition at line 334 of file d3dx9tex.h.

◆ D3DXGetImageInfoFromFile

#define D3DXGetImageInfoFromFile   WINELIB_NAME_AW(D3DXGetImageInfoFromFile)

Definition at line 104 of file d3dx9tex.h.

◆ D3DXGetImageInfoFromResource

#define D3DXGetImageInfoFromResource   WINELIB_NAME_AW(D3DXGetImageInfoFromResource)

Definition at line 108 of file d3dx9tex.h.

◆ D3DXLoadSurfaceFromFile

#define D3DXLoadSurfaceFromFile   WINELIB_NAME_AW(D3DXLoadSurfaceFromFile)

Definition at line 120 of file d3dx9tex.h.

◆ D3DXLoadSurfaceFromResource

#define D3DXLoadSurfaceFromResource   WINELIB_NAME_AW(D3DXLoadSurfaceFromResource)

Definition at line 128 of file d3dx9tex.h.

◆ D3DXLoadVolumeFromFile

#define D3DXLoadVolumeFromFile   WINELIB_NAME_AW(D3DXLoadVolumeFromFile)

Definition at line 161 of file d3dx9tex.h.

◆ D3DXLoadVolumeFromResource

#define D3DXLoadVolumeFromResource   WINELIB_NAME_AW(D3DXLoadVolumeFromResource)

Definition at line 169 of file d3dx9tex.h.

◆ D3DXSaveSurfaceToFile

#define D3DXSaveSurfaceToFile   WINELIB_NAME_AW(D3DXSaveSurfaceToFile)

Definition at line 151 of file d3dx9tex.h.

◆ D3DXSaveTextureToFile

#define D3DXSaveTextureToFile   WINELIB_NAME_AW(D3DXSaveTextureToFile)

Definition at line 328 of file d3dx9tex.h.

◆ D3DXSaveVolumeToFile

#define D3DXSaveVolumeToFile   WINELIB_NAME_AW(D3DXSaveVolumeToFile)

Definition at line 188 of file d3dx9tex.h.

Typedef Documentation

◆ D3DXIMAGE_FILEFORMAT

◆ D3DXIMAGE_INFO

◆ LPD3DXFILL2D

typedef void(WINAPI * LPD3DXFILL2D) (D3DXVECTOR4 *out, const D3DXVECTOR2 *texcoord, const D3DXVECTOR2 *texelsize, void *data)

Definition at line 91 of file d3dx9tex.h.

◆ LPD3DXFILL3D

typedef void(WINAPI * LPD3DXFILL3D) (D3DXVECTOR4 *out, const D3DXVECTOR3 *texcoord, const D3DXVECTOR3 *texelsize, void *data)

Definition at line 93 of file d3dx9tex.h.

Enumeration Type Documentation

◆ _D3DXIMAGE_FILEFORMAT

Enumerator
D3DXIFF_BMP 
D3DXIFF_JPG 
D3DXIFF_TGA 
D3DXIFF_PNG 
D3DXIFF_DDS 
D3DXIFF_PPM 
D3DXIFF_DIB 
D3DXIFF_HDR 
D3DXIFF_PFM 
D3DXIFF_FORCE_DWORD 
D3DXIFF_BMP 
D3DXIFF_JPG 
D3DXIFF_TGA 
D3DXIFF_PNG 
D3DXIFF_DDS 
D3DXIFF_PPM 
D3DXIFF_DIB 
D3DXIFF_HDR 
D3DXIFF_PFM 
D3DXIFF_FORCE_DWORD 

Definition at line 62 of file d3dx9tex.h.

63{
73 D3DXIFF_FORCE_DWORD = 0x7fffffff
enum _D3DXIMAGE_FILEFORMAT D3DXIMAGE_FILEFORMAT
@ D3DXIFF_JPG
Definition: d3dx9tex.h:65
@ D3DXIFF_DDS
Definition: d3dx9tex.h:68
@ D3DXIFF_BMP
Definition: d3dx9tex.h:64
@ D3DXIFF_HDR
Definition: d3dx9tex.h:71
@ D3DXIFF_TGA
Definition: d3dx9tex.h:66
@ D3DXIFF_DIB
Definition: d3dx9tex.h:70
@ D3DXIFF_PFM
Definition: d3dx9tex.h:72
@ D3DXIFF_FORCE_DWORD
Definition: d3dx9tex.h:73
@ D3DXIFF_PPM
Definition: d3dx9tex.h:69
@ D3DXIFF_PNG
Definition: d3dx9tex.h:67

Function Documentation

◆ D3DXCheckCubeTextureRequirements()

HRESULT WINAPI D3DXCheckCubeTextureRequirements ( struct IDirect3DDevice9 *  device,
UINT *  size,
UINT *  miplevels,
DWORD  usage,
D3DFORMAT *  format,
D3DPOOL  pool 
)

Definition at line 420 of file texture.c.

422{
423 D3DCAPS9 caps;
424 UINT s = (size && *size) ? *size : 256;
425 HRESULT hr;
426
427 TRACE("device %p, size %p, miplevels %p, usage %#lx, format %p, pool %#x.\n",
428 device, size, miplevels, usage, format, pool);
429
430 if (s == D3DX_DEFAULT)
431 s = 256;
432
434 return D3DERR_INVALIDCALL;
435
437 return D3DERR_NOTAVAILABLE;
438
440 s = make_pow2(s);
441
443
445 {
446 if(miplevels)
447 *miplevels = 1;
448 }
449
450 if (size)
451 *size = s;
452
453 return hr;
454}
#define D3DERR_INVALIDCALL
Definition: d3d10_private.h:42
@ D3DRTYPE_CUBETEXTURE
Definition: d3d8types.h:814
#define IDirect3DDevice9_GetDeviceCaps(p, a)
Definition: d3d9.h:1342
static uint32_t make_pow2(uint32_t num)
HRESULT hr
Definition: delayimp.cpp:582
static HRESULT check_texture_requirements(struct IDirect3DDevice9 *device, UINT *width, UINT *height, UINT *miplevels, DWORD usage, D3DFORMAT *format, D3DPOOL pool, D3DRESOURCETYPE resource_type)
Definition: texture.c:198
static BOOL is_pow2(UINT num)
Definition: texture.c:28
#define D3DPTEXTURECAPS_CUBEMAP_POW2
Definition: d3d8caps.h:126
#define D3DPTEXTURECAPS_CUBEMAP
Definition: d3d8caps.h:121
#define D3DPTEXTURECAPS_MIPCUBEMAP
Definition: d3d8caps.h:125
GLdouble s
Definition: gl.h:2039
GLsizeiptr size
Definition: glext.h:5919
GLsizeiptr const GLvoid GLenum usage
Definition: glext.h:5919
unsigned int UINT
Definition: sysinfo.c:13
#define FAILED(hr)
Definition: intsafe.h:51
#define D3DERR_NOTAVAILABLE
Definition: d3d8.h:80
#define TRACE(s)
Definition: solgame.cpp:4
DWORD TextureCaps
Definition: d3d9caps.h:279
Definition: devices.h:37

◆ D3DXCheckTextureRequirements()

HRESULT WINAPI D3DXCheckTextureRequirements ( struct IDirect3DDevice9 *  device,
UINT *  width,
UINT *  height,
UINT *  miplevels,
DWORD  usage,
D3DFORMAT *  format,
D3DPOOL  pool 
)

Definition at line 411 of file texture.c.

413{
414 TRACE("device %p, width %p, height %p, miplevels %p, usage %#lx, format %p, pool %#x.\n",
415 device, width, height, miplevels, usage, format, pool);
416
418}
@ D3DRTYPE_TEXTURE
Definition: d3d8types.h:812
GLint GLint GLsizei GLsizei height
Definition: gl.h:1546
GLint GLint GLsizei width
Definition: gl.h:1546

◆ D3DXCheckVolumeTextureRequirements()

HRESULT WINAPI D3DXCheckVolumeTextureRequirements ( struct IDirect3DDevice9 *  device,
UINT *  width,
UINT *  height,
UINT *  depth,
UINT *  miplevels,
DWORD  usage,
D3DFORMAT *  format,
D3DPOOL  pool 
)

Definition at line 456 of file texture.c.

458{
459 D3DCAPS9 caps;
462 UINT d = (depth && *depth) ? *depth : 1;
463 HRESULT hr;
464
465 TRACE("device %p, width %p, height %p, depth %p, miplevels %p, usage %#lx, format %p, pool %#x.\n",
466 device, width, height, depth, miplevels, usage, format, pool);
467
469 return D3DERR_INVALIDCALL;
470
472 return D3DERR_NOTAVAILABLE;
473
475 if (d == D3DX_DEFAULT)
476 d = 1;
477
479 (!is_pow2(w) || !is_pow2(h) || !is_pow2(d)))
480 {
481 w = make_pow2(w);
482 h = make_pow2(h);
483 d = make_pow2(d);
484 }
485
486 if (w > caps.MaxVolumeExtent)
487 w = caps.MaxVolumeExtent;
488 if (h > caps.MaxVolumeExtent)
489 h = caps.MaxVolumeExtent;
490 if (d > caps.MaxVolumeExtent)
491 d = caps.MaxVolumeExtent;
492
493 if (miplevels)
494 {
496 *miplevels = 1;
497 else if ((usage & D3DUSAGE_AUTOGENMIPMAP))
498 {
499 if (*miplevels > 1)
500 *miplevels = 0;
501 }
502 else
503 {
504 UINT max_mipmaps = 1;
505 UINT max_dimen = max(max(w, h), d);
506
507 while (max_dimen > 1)
508 {
509 max_dimen >>= 1;
510 max_mipmaps++;
511 }
512
513 if (*miplevels == 0 || *miplevels > max_mipmaps)
514 *miplevels = max_mipmaps;
515 }
516 }
517
518 if (width)
519 *width = w;
520 if (height)
521 *height = h;
522 if (depth)
523 *depth = d;
524
525 return hr;
526}
@ D3DRTYPE_VOLUMETEXTURE
Definition: d3d8types.h:813
#define D3DUSAGE_AUTOGENMIPMAP
Definition: d3d9types.h:113
#define NULL
Definition: types.h:112
#define D3DPTEXTURECAPS_VOLUMEMAP
Definition: d3d8caps.h:122
#define D3DPTEXTURECAPS_VOLUMEMAP_POW2
Definition: d3d8caps.h:127
#define D3DPTEXTURECAPS_MIPVOLUMEMAP
Definition: d3d8caps.h:124
GLint GLint GLsizei GLsizei GLsizei depth
Definition: gl.h:1546
GLubyte GLubyte GLubyte GLubyte w
Definition: glext.h:6102
GLfloat GLfloat GLfloat GLfloat h
Definition: glext.h:7723
#define d
Definition: ke_i.h:81
DWORD MaxVolumeExtent
Definition: d3d9caps.h:288
#define max(a, b)
Definition: svc.c:63

◆ D3DXComputeNormalMap()

HRESULT WINAPI D3DXComputeNormalMap ( IDirect3DTexture9 *  texture,
IDirect3DTexture9 *  srctexture,
const PALETTEENTRY *  srcpalette,
DWORD  flags,
DWORD  channel,
float  amplitude 
)

Definition at line 1897 of file texture.c.

1899{
1900 FIXME("texture %p, src_texture %p, src_palette %p, flags %#lx, channel %lu, amplitude %.8e stub.\n",
1901 texture, src_texture, src_palette, flags, channel, amplitude);
1902
1903 return D3D_OK;
1904}
#define FIXME(fmt,...)
Definition: precomp.h:53
#define D3D_OK
Definition: d3d.h:106
GLenum GLuint texture
Definition: glext.h:6295
GLbitfield flags
Definition: glext.h:7161

◆ D3DXCreateCubeTexture()

HRESULT WINAPI D3DXCreateCubeTexture ( struct IDirect3DDevice9 *  device,
UINT  size,
UINT  miplevels,
DWORD  usage,
D3DFORMAT  format,
D3DPOOL  pool,
struct IDirect3DCubeTexture9 **  cube 
)

Definition at line 905 of file texture.c.

907{
908 HRESULT hr;
909
910 TRACE("device %p, size %u, miplevels %u, usage %#lx, format %#x, pool %#x, texture %p.\n",
911 device, size, miplevels, usage, format, pool, texture);
912
913 if (!device || !texture)
914 return D3DERR_INVALIDCALL;
915
917
918 if (FAILED(hr))
919 {
920 TRACE("D3DXCheckCubeTextureRequirements failed\n");
921 return hr;
922 }
923
925}
#define IDirect3DDevice9_CreateCubeTexture(p, a, b, c, d, e, f, g)
Definition: d3d9.h:1360
HRESULT WINAPI D3DXCheckCubeTextureRequirements(struct IDirect3DDevice9 *device, UINT *size, UINT *miplevels, DWORD usage, D3DFORMAT *format, D3DPOOL pool)
Definition: texture.c:420

◆ D3DXCreateCubeTextureFromFileA()

HRESULT WINAPI D3DXCreateCubeTextureFromFileA ( struct IDirect3DDevice9 *  device,
const char *  srcfile,
struct IDirect3DCubeTexture9 **  cube 
)

Definition at line 1509 of file texture.c.

1512{
1513 int len;
1514 HRESULT hr;
1515 WCHAR *filename;
1516 void *data;
1517 DWORD data_size;
1518
1519 TRACE("device %p, src_filename %s, cube_texture %p.\n", device, wine_dbgstr_a(src_filename), cube_texture);
1520
1521 if (!src_filename) return D3DERR_INVALIDCALL;
1522
1523 len = MultiByteToWideChar(CP_ACP, 0, src_filename, -1, NULL, 0);
1524 filename = malloc(len * sizeof(WCHAR));
1525 if (!filename) return E_OUTOFMEMORY;
1526 MultiByteToWideChar(CP_ACP, 0, src_filename, -1, filename, len);
1527
1528 hr = map_view_of_file(filename, &data, &data_size);
1529 if (FAILED(hr))
1530 {
1531 free(filename);
1532 return D3DXERR_INVALIDDATA;
1533 }
1534
1537
1539 free(filename);
1540 return hr;
1541}
@ D3DFMT_UNKNOWN
Definition: d3d8types.h:601
@ D3DPOOL_MANAGED
Definition: d3d8types.h:710
#define D3DXERR_INVALIDDATA
Definition: compiler.c:53
HRESULT map_view_of_file(const WCHAR *filename, void **buffer, DWORD *length)
Definition: util.c:211
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define free
Definition: debug_ros.c:5
#define malloc
Definition: debug_ros.c:4
HRESULT WINAPI D3DXCreateCubeTextureFromFileInMemoryEx(IDirect3DDevice9 *device, const void *src_data, UINT src_data_size, UINT size, UINT mip_levels, DWORD usage, D3DFORMAT format, D3DPOOL pool, DWORD filter, DWORD mip_filter, D3DCOLOR color_key, D3DXIMAGE_INFO *src_info, PALETTEENTRY *palette, IDirect3DCubeTexture9 **cube_texture)
Definition: texture.c:1342
#define UnmapViewOfFile
Definition: compat.h:746
#define CP_ACP
Definition: compat.h:109
#define MultiByteToWideChar
Definition: compat.h:110
unsigned long DWORD
Definition: ntddk_ex.h:95
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
GLenum GLsizei len
Definition: glext.h:6722
const char * filename
Definition: ioapi.h:137
short WCHAR
Definition: pedump.c:58
int int static __inline const char * wine_dbgstr_a(const char *s)
Definition: debug.h:160

◆ D3DXCreateCubeTextureFromFileExA()

HRESULT WINAPI D3DXCreateCubeTextureFromFileExA ( struct IDirect3DDevice9 *  device,
const char *  srcfile,
UINT  size,
UINT  miplevels,
DWORD  usage,
D3DFORMAT  format,
D3DPOOL  pool,
DWORD  filter,
DWORD  mipfilter,
D3DCOLOR  colorkey,
D3DXIMAGE_INFO *  srcinfo,
PALETTEENTRY *  palette,
struct IDirect3DCubeTexture9 **  cube 
)

Definition at line 1563 of file texture.c.

1567{
1568 int len;
1569 HRESULT hr;
1570 WCHAR *filename;
1571 void *data;
1572 DWORD data_size;
1573
1574 TRACE("device %p, src_filename %s, size %u, mip_levels %u, usage %#lx, format %#x, pool %#x, "
1575 "filter %#lx, mip_filter %#lx, color_key 0x%08lx, image_info %p, palette %p, cube_texture %p.\n",
1576 device, wine_dbgstr_a(src_filename), size, mip_levels, usage, format, pool,
1577 filter, mip_filter, color_key, image_info, palette, cube_texture);
1578
1579 if (!src_filename) return D3DERR_INVALIDCALL;
1580
1581 len = MultiByteToWideChar(CP_ACP, 0, src_filename, -1, NULL, 0);
1582 filename = malloc(len * sizeof(WCHAR));
1583 if (!filename) return E_OUTOFMEMORY;
1584 MultiByteToWideChar(CP_ACP, 0, src_filename, -1, filename, len);
1585
1586 hr = map_view_of_file(filename, &data, &data_size);
1587 if (FAILED(hr))
1588 {
1589 free(filename);
1590 return D3DXERR_INVALIDDATA;
1591 }
1592
1593 hr = D3DXCreateCubeTextureFromFileInMemoryEx(device, data, data_size, size, mip_levels,
1594 usage, format, pool, filter, mip_filter, color_key, image_info, palette, cube_texture);
1595
1597 free(filename);
1598 return hr;
1599}
static HPALETTE palette
Definition: clipboard.c:1457
Definition: filter.c:165

◆ D3DXCreateCubeTextureFromFileExW()

HRESULT WINAPI D3DXCreateCubeTextureFromFileExW ( struct IDirect3DDevice9 *  device,
const WCHAR *  srcfile,
UINT  size,
UINT  miplevels,
DWORD  usage,
D3DFORMAT  format,
D3DPOOL  pool,
DWORD  filter,
DWORD  mipfilter,
D3DCOLOR  colorkey,
D3DXIMAGE_INFO *  srcinfo,
PALETTEENTRY *  palette,
struct IDirect3DCubeTexture9 **  cube 
)

Definition at line 1601 of file texture.c.

1605{
1606 HRESULT hr;
1607 void *data;
1608 DWORD data_size;
1609
1610 TRACE("device %p, src_filename %s, size %u, mip_levels %u, usage %#lx, format %#x, pool %#x, "
1611 "filter %#lx, mip_filter %#lx, color_key 0x%08lx, image_info %p, palette %p, cube_texture %p.\n",
1612 device, wine_dbgstr_w(src_filename), size, mip_levels, usage, format,
1613 pool, filter, mip_filter, color_key, image_info, palette, cube_texture);
1614
1615 hr = map_view_of_file(src_filename, &data, &data_size);
1616 if (FAILED(hr)) return D3DXERR_INVALIDDATA;
1617
1618 hr = D3DXCreateCubeTextureFromFileInMemoryEx(device, data, data_size, size, mip_levels,
1619 usage, format, pool, filter, mip_filter, color_key, image_info, palette, cube_texture);
1620
1622 return hr;
1623}
#define wine_dbgstr_w
Definition: kernel32.h:34

◆ D3DXCreateCubeTextureFromFileInMemory()

HRESULT WINAPI D3DXCreateCubeTextureFromFileInMemory ( struct IDirect3DDevice9 *  device,
const void *  srcdata,
UINT  srcdatasize,
struct IDirect3DCubeTexture9 **  cube 
)

Definition at line 927 of file texture.c.

929{
930 TRACE("device %p, data %p, datasize %u, texture %p.\n", device, data, datasize, texture);
931
934}
static SIZE_T datasize
Definition: asm.c:30

◆ D3DXCreateCubeTextureFromFileInMemoryEx()

HRESULT WINAPI D3DXCreateCubeTextureFromFileInMemoryEx ( struct IDirect3DDevice9 *  device,
const void *  srcdata,
UINT  srcdatasize,
UINT  size,
UINT  miplevels,
DWORD  usage,
D3DFORMAT  format,
D3DPOOL  pool,
DWORD  filter,
DWORD  mipfilter,
D3DCOLOR  colorkey,
D3DXIMAGE_INFO *  srcinfo,
PALETTEENTRY *  palette,
struct IDirect3DCubeTexture9 **  cube 
)

Definition at line 1342 of file texture.c.

1346{
1347 const struct pixel_format_desc *src_fmt_desc, *dst_fmt_desc;
1348 BOOL dynamic_texture, format_specified = FALSE;
1349 uint32_t loaded_miplevels, skip_levels, i;
1350 IDirect3DCubeTexture9 *tex, *staging_tex;
1351 struct d3dx_image image;
1352 D3DXIMAGE_INFO img_info;
1353 D3DCAPS9 caps;
1354 HRESULT hr;
1355
1356 TRACE("device %p, src_data %p, src_data_size %u, size %u, mip_levels %u, usage %#lx, "
1357 "format %#x, pool %#x, filter %#lx, mip_filter %#lx, color_key 0x%08lx, src_info %p, "
1358 "palette %p, cube_texture %p.\n",
1359 device, src_data, src_data_size, size, mip_levels, usage, format, pool, filter,
1360 mip_filter, color_key, src_info, palette, cube_texture);
1361
1362 if (!device || !cube_texture || !src_data || !src_data_size)
1363 return D3DERR_INVALIDCALL;
1364
1366 return hr;
1367
1368 staging_tex = tex = *cube_texture = NULL;
1369 mip_filter = d3dx9_get_mip_filter_value(mip_filter, &skip_levels);
1370 hr = d3dx_image_init(src_data, src_data_size, &image, skip_levels, 0);
1371 if (FAILED(hr))
1372 {
1373 FIXME("Unrecognized file format, returning failure.\n");
1374 return hr;
1375 }
1376
1378 if (img_info.ResourceType != D3DRTYPE_CUBETEXTURE)
1379 {
1380 hr = E_FAIL;
1381 goto err;
1382 }
1383
1384 /* Handle default values. */
1386 size = max(img_info.Width, img_info.Height);
1387 else if (size == D3DX_DEFAULT)
1388 size = make_pow2(max(img_info.Width, img_info.Height));
1389
1390 format_specified = (format != D3DFMT_UNKNOWN && format != D3DX_DEFAULT);
1392 format = img_info.Format;
1393 mip_levels = (mip_levels == D3DX_FROM_FILE) ? img_info.MipLevels : mip_levels;
1394
1396 if (FAILED(hr))
1397 {
1398 FIXME("Couldn't find suitable texture parameters.\n");
1399 goto err;
1400 }
1401
1402 if (color_key && !format_specified)
1404
1406 if (FAILED(hr))
1407 {
1409 goto err;
1410 }
1411
1412 dynamic_texture = (caps.Caps2 & D3DCAPS2_DYNAMICTEXTURES) && (usage & D3DUSAGE_DYNAMIC);
1413 if (pool == D3DPOOL_DEFAULT && !dynamic_texture)
1414 {
1415 TRACE("Creating staging texture.\n");
1417 tex = staging_tex;
1418 }
1419 else
1420 {
1422 }
1423
1424 if (FAILED(hr))
1425 {
1426 FIXME("Texture creation failed.\n");
1427 goto err;
1428 }
1429
1430 TRACE("Texture created correctly. Now loading the texture data into it.\n");
1431 dst_fmt_desc = get_format_info(format);
1432 src_fmt_desc = get_d3dx_pixel_format_info(image.format);
1433 loaded_miplevels = min(img_info.MipLevels, IDirect3DCubeTexture9_GetLevelCount(tex));
1434 for (i = 0; i < loaded_miplevels; ++i)
1435 {
1436 struct d3dx_pixels src_pixels, dst_pixels;
1437 D3DSURFACE_DESC dst_surface_desc;
1438 D3DLOCKED_RECT dst_locked_rect;
1439 RECT dst_rect;
1440 uint32_t face;
1441
1442 IDirect3DCubeTexture9_GetLevelDesc(tex, i, &dst_surface_desc);
1443 SetRect(&dst_rect, 0, 0, dst_surface_desc.Width, dst_surface_desc.Height);
1445 {
1446 hr = d3dx_image_get_pixels(&image, face, i, &src_pixels);
1447 if (FAILED(hr))
1448 break;
1449
1450 hr = IDirect3DCubeTexture9_LockRect(tex, face, i, &dst_locked_rect, NULL, 0);
1451 if (FAILED(hr))
1452 break;
1453
1454 set_d3dx_pixels(&dst_pixels, dst_locked_rect.pBits, dst_locked_rect.Pitch, 0, palette,
1455 dst_surface_desc.Width, dst_surface_desc.Height, 1, &dst_rect);
1456
1457 hr = d3dx_load_pixels_from_pixels(&dst_pixels, dst_fmt_desc, &src_pixels, src_fmt_desc, filter, color_key);
1459 if (FAILED(hr))
1460 break;
1461 }
1462
1463 if (FAILED(hr))
1464 break;
1465 }
1466
1467 if (FAILED(hr))
1468 {
1469 FIXME("Texture loading failed.\n");
1470 goto err;
1471 }
1472
1473 hr = D3DXFilterTexture((IDirect3DBaseTexture9*) tex, palette, loaded_miplevels - 1, mip_filter);
1474 if (FAILED(hr))
1475 {
1476 FIXME("Texture filtering failed.\n");
1477 goto err;
1478 }
1479
1480 if (staging_tex)
1481 {
1482 hr = D3DXCreateCubeTexture(device, size, mip_levels, usage, format, pool, cube_texture);
1483 if (FAILED(hr))
1484 goto err;
1485
1486 IDirect3DDevice9_UpdateTexture(device, (IDirect3DBaseTexture9 *)staging_tex, (IDirect3DBaseTexture9 *)(*cube_texture));
1487 IDirect3DCubeTexture9_Release(staging_tex);
1488 }
1489 else
1490 {
1491 *cube_texture = tex;
1492 }
1493
1495 if (src_info)
1496 *src_info = img_info;
1497
1498 return hr;
1499
1500err:
1502 if (tex)
1504
1505 return hr;
1506}
#define D3DUSAGE_DYNAMIC
Definition: d3d8types.h:99
@ D3DCUBEMAP_FACE_POSITIVE_X
Definition: d3d8types.h:550
@ D3DCUBEMAP_FACE_NEGATIVE_Z
Definition: d3d8types.h:555
@ D3DPOOL_DEFAULT
Definition: d3d8types.h:709
@ D3DPOOL_SYSTEMMEM
Definition: d3d8types.h:711
#define IDirect3DCubeTexture9_UnlockRect(p, a, b)
Definition: d3d9.h:768
#define IDirect3DCubeTexture9_Release(p)
Definition: d3d9.h:747
#define IDirect3DCubeTexture9_LockRect(p, a, b, c, d, e)
Definition: d3d9.h:767
#define IDirect3DCubeTexture9_GetLevelCount(p)
Definition: d3d9.h:760
#define IDirect3DCubeTexture9_GetLevelDesc(p, a, b)
Definition: d3d9.h:765
#define IDirect3DDevice9_UpdateTexture(p, a, b)
Definition: d3d9.h:1366
const struct pixel_format_desc * get_format_info(D3DFORMAT format)
Definition: util.c:312
HRESULT d3dx_load_pixels_from_pixels(struct d3dx_pixels *dst_pixels, const struct pixel_format_desc *dst_desc, struct d3dx_pixels *src_pixels, const struct pixel_format_desc *src_desc, uint32_t filter_flags, uint32_t color_key)
Definition: surface.c:2498
void d3dx_image_cleanup(struct d3dx_image *image)
Definition: surface.c:1392
const struct pixel_format_desc * get_d3dx_pixel_format_info(enum d3dx_pixel_format_id format)
Definition: util.c:297
static HRESULT d3dx9_handle_load_filter(DWORD *filter)
Definition: d3dx9_private.h:45
static void set_d3dx_pixels(struct d3dx_pixels *pixels, const void *data, uint32_t row_pitch, uint32_t slice_pitch, const PALETTEENTRY *palette, uint32_t width, uint32_t height, uint32_t depth, const RECT *unaligned_rect)
HRESULT d3dx_image_init(const void *src_data, uint32_t src_data_size, struct d3dx_image *image, uint32_t starting_mip_level, uint32_t flags)
Definition: surface.c:1332
HRESULT d3dx_image_get_pixels(struct d3dx_image *image, uint32_t layer, uint32_t mip_level, struct d3dx_pixels *pixels)
Definition: surface.c:1398
void d3dximage_info_from_d3dx_image(D3DXIMAGE_INFO *info, struct d3dx_image *image)
Definition: surface.c:1441
#define E_FAIL
Definition: ddrawi.h:102
#define FALSE
Definition: types.h:117
UINT32 uint32_t
Definition: types.h:75
WORD face[3]
Definition: mesh.c:4854
HRESULT WINAPI D3DXCreateCubeTexture(struct IDirect3DDevice9 *device, UINT size, UINT miplevels, DWORD usage, D3DFORMAT format, D3DPOOL pool, struct IDirect3DCubeTexture9 **texture)
Definition: texture.c:905
static uint32_t d3dx9_get_mip_filter_value(uint32_t mip_filter, uint32_t *skip_levels)
Definition: texture.c:568
static D3DFORMAT get_alpha_replacement_format(D3DFORMAT format)
Definition: texture.c:545
HRESULT WINAPI D3DXFilterTexture(IDirect3DBaseTexture9 *texture, const PALETTEENTRY *palette, UINT srclevel, DWORD filter)
Definition: texture.c:48
#define D3DCAPS2_DYNAMICTEXTURES
Definition: d3d8caps.h:25
#define D3DX_DEFAULT_NONPOW2
Definition: d3dx9.h:25
#define D3DX_FROM_FILE
Definition: d3dx9.h:27
#define D3DFMT_FROM_FILE
Definition: d3dx9.h:28
unsigned int BOOL
Definition: ntddk_ex.h:94
GLenum GLuint GLint GLenum face
Definition: glext.h:7025
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define min(a, b)
Definition: monoChain.cc:55
BOOL WINAPI SetRect(_Out_ LPRECT, _In_ int, _In_ int, _In_ int, _In_ int)
#define err(...)
Definition: dcommon.idl:28
DWORD Caps2
Definition: d3d9caps.h:267
uint32_t mip_levels
Definition: image.c:84

◆ D3DXCreateCubeTextureFromFileW()

HRESULT WINAPI D3DXCreateCubeTextureFromFileW ( struct IDirect3DDevice9 *  device,
const WCHAR *  srcfile,
struct IDirect3DCubeTexture9 **  cube 
)

Definition at line 1543 of file texture.c.

1546{
1547 HRESULT hr;
1548 void *data;
1549 DWORD data_size;
1550
1551 TRACE("device %p, src_filename %s, cube_texture %p.\n", device, wine_dbgstr_w(src_filename), cube_texture);
1552
1553 hr = map_view_of_file(src_filename, &data, &data_size);
1554 if (FAILED(hr)) return D3DXERR_INVALIDDATA;
1555
1558
1560 return hr;
1561}

◆ D3DXCreateCubeTextureFromResourceA()

HRESULT WINAPI D3DXCreateCubeTextureFromResourceA ( struct IDirect3DDevice9 *  device,
HMODULE  srcmodule,
const char *  resource,
struct IDirect3DCubeTexture9 **  cube 
)

◆ D3DXCreateCubeTextureFromResourceExA()

HRESULT WINAPI D3DXCreateCubeTextureFromResourceExA ( struct IDirect3DDevice9 *  device,
HMODULE  srcmodule,
const char *  resource,
UINT  size,
UINT  miplevels,
DWORD  usage,
D3DFORMAT  format,
D3DPOOL  pool,
DWORD  filter,
DWORD  mipfilter,
D3DCOLOR  colorkey,
D3DXIMAGE_INFO *  srcinfo,
PALETTEENTRY *  palette,
struct IDirect3DCubeTexture9 **  cube 
)

◆ D3DXCreateCubeTextureFromResourceExW()

HRESULT WINAPI D3DXCreateCubeTextureFromResourceExW ( struct IDirect3DDevice9 *  device,
HMODULE  srcmodule,
const WCHAR *  resource,
UINT  size,
UINT  miplevels,
DWORD  usage,
D3DFORMAT  format,
D3DPOOL  pool,
DWORD  filter,
DWORD  mipfilter,
D3DCOLOR  colorkey,
D3DXIMAGE_INFO *  srcinfo,
PALETTEENTRY *  palette,
struct IDirect3DCubeTexture9 **  cube 
)

◆ D3DXCreateCubeTextureFromResourceW()

HRESULT WINAPI D3DXCreateCubeTextureFromResourceW ( struct IDirect3DDevice9 *  device,
HMODULE  srcmodule,
const WCHAR *  resource,
struct IDirect3DCubeTexture9 **  cube 
)

◆ D3DXCreateTexture()

HRESULT WINAPI D3DXCreateTexture ( struct IDirect3DDevice9 *  device,
UINT  width,
UINT  height,
UINT  miplevels,
DWORD  usage,
D3DFORMAT  format,
D3DPOOL  pool,
struct IDirect3DTexture9 **  texture 
)

Definition at line 528 of file texture.c.

530{
531 HRESULT hr;
532
533 TRACE("device %p, width %u, height %u, miplevels %u, usage %#lx, format %#x, pool %#x, texture %p.\n",
534 device, width, height, miplevels, usage, format, pool, texture);
535
536 if (!device || !texture)
537 return D3DERR_INVALIDCALL;
538
540 return hr;
541
543}
#define IDirect3DDevice9_CreateTexture(p, a, b, c, d, e, f, g, h)
Definition: d3d9.h:1358
HRESULT WINAPI D3DXCheckTextureRequirements(struct IDirect3DDevice9 *device, UINT *width, UINT *height, UINT *miplevels, DWORD usage, D3DFORMAT *format, D3DPOOL pool)
Definition: texture.c:411

◆ D3DXCreateTextureFromFileA()

HRESULT WINAPI D3DXCreateTextureFromFileA ( struct IDirect3DDevice9 *  device,
const char *  srcfile,
struct IDirect3DTexture9 **  texture 
)

Definition at line 806 of file texture.c.

808{
809 TRACE("device %p, srcfile %s, texture %p.\n", device, debugstr_a(srcfile), texture);
810
813}
HRESULT WINAPI D3DXCreateTextureFromFileExA(struct IDirect3DDevice9 *device, const char *srcfile, UINT width, UINT height, UINT miplevels, DWORD usage, D3DFORMAT format, D3DPOOL pool, DWORD filter, DWORD mipfilter, D3DCOLOR colorkey, D3DXIMAGE_INFO *srcinfo, PALETTEENTRY *palette, struct IDirect3DTexture9 **texture)
Definition: texture.c:777
#define debugstr_a
Definition: kernel32.h:31

◆ D3DXCreateTextureFromFileExA()

HRESULT WINAPI D3DXCreateTextureFromFileExA ( struct IDirect3DDevice9 *  device,
const char *  srcfile,
UINT  width,
UINT  height,
UINT  miplevels,
DWORD  usage,
D3DFORMAT  format,
D3DPOOL  pool,
DWORD  filter,
DWORD  mipfilter,
D3DCOLOR  colorkey,
D3DXIMAGE_INFO *  srcinfo,
PALETTEENTRY *  palette,
struct IDirect3DTexture9 **  texture 
)

Definition at line 777 of file texture.c.

781{
782 WCHAR *widename;
783 HRESULT hr;
784 DWORD len;
785
786 TRACE("device %p, srcfile %s, width %u, height %u, miplevels %u, usage %#lx, format %#x, "
787 "pool %#x, filter %#lx, mipfilter %#lx, colorkey 0x%08lx, srcinfo %p, palette %p, texture %p.\n",
788 device, debugstr_a(srcfile), width, height, miplevels, usage, format,
789 pool, filter, mipfilter, colorkey, srcinfo, palette, texture);
790
791 if (!device || !srcfile || !texture)
792 return D3DERR_INVALIDCALL;
793
794 len = MultiByteToWideChar(CP_ACP, 0, srcfile, -1, NULL, 0);
795 widename = malloc(len * sizeof(*widename));
796 MultiByteToWideChar(CP_ACP, 0, srcfile, -1, widename, len);
797
798 hr = D3DXCreateTextureFromFileExW(device, widename, width, height, miplevels,
799 usage, format, pool, filter, mipfilter,
800 colorkey, srcinfo, palette, texture);
801
802 free(widename);
803 return hr;
804}
HRESULT WINAPI D3DXCreateTextureFromFileExW(struct IDirect3DDevice9 *device, const WCHAR *srcfile, UINT width, UINT height, UINT miplevels, DWORD usage, D3DFORMAT format, D3DPOOL pool, DWORD filter, DWORD mipfilter, D3DCOLOR colorkey, D3DXIMAGE_INFO *srcinfo, PALETTEENTRY *palette, struct IDirect3DTexture9 **texture)
Definition: texture.c:745

◆ D3DXCreateTextureFromFileExW()

HRESULT WINAPI D3DXCreateTextureFromFileExW ( struct IDirect3DDevice9 *  device,
const WCHAR *  srcfile,
UINT  width,
UINT  height,
UINT  miplevels,
DWORD  usage,
D3DFORMAT  format,
D3DPOOL  pool,
DWORD  filter,
DWORD  mipfilter,
D3DCOLOR  colorkey,
D3DXIMAGE_INFO *  srcinfo,
PALETTEENTRY *  palette,
struct IDirect3DTexture9 **  texture 
)

Definition at line 745 of file texture.c.

749{
750 void *buffer;
751 HRESULT hr;
752 DWORD size;
753
754 TRACE("device %p, srcfile %s, width %u, height %u, miplevels %u, usage %#lx, format %#x, "
755 "pool %#x, filter %#lx, mipfilter %#lx, colorkey 0x%08lx, srcinfo %p, palette %p, texture %p.\n",
756 device, debugstr_w(srcfile), width, height, miplevels, usage, format,
757 pool, filter, mipfilter, colorkey, srcinfo, palette, texture);
758
759 if (!srcfile)
760 return D3DERR_INVALIDCALL;
761
762 hr = map_view_of_file(srcfile, &buffer, &size);
763 if (FAILED(hr))
764 {
765 WARN("Failed to open file.\n");
766 return D3DXERR_INVALIDDATA;
767 }
768
770 filter, mipfilter, colorkey, srcinfo, palette, texture);
771
773
774 return hr;
775}
#define WARN(fmt,...)
Definition: precomp.h:61
HRESULT WINAPI D3DXCreateTextureFromFileInMemoryEx(struct IDirect3DDevice9 *device, const void *srcdata, UINT srcdatasize, UINT width, UINT height, UINT miplevels, DWORD usage, D3DFORMAT format, D3DPOOL pool, DWORD filter, DWORD mipfilter, D3DCOLOR colorkey, D3DXIMAGE_INFO *srcinfo, PALETTEENTRY *palette, struct IDirect3DTexture9 **texture)
Definition: texture.c:579
GLuint buffer
Definition: glext.h:5915
#define debugstr_w
Definition: kernel32.h:32

◆ D3DXCreateTextureFromFileInMemory()

HRESULT WINAPI D3DXCreateTextureFromFileInMemory ( struct IDirect3DDevice9 *  device,
const void *  srcdata,
UINT  srcdatasize,
struct IDirect3DTexture9 **  texture 
)

Definition at line 736 of file texture.c.

738{
739 TRACE("device %p, srcdata %p, srcdatasize %u, texture %p.\n", device, srcdata, srcdatasize, texture);
740
743}

◆ D3DXCreateTextureFromFileInMemoryEx()

HRESULT WINAPI D3DXCreateTextureFromFileInMemoryEx ( struct IDirect3DDevice9 *  device,
const void *  srcdata,
UINT  srcdatasize,
UINT  width,
UINT  height,
UINT  miplevels,
DWORD  usage,
D3DFORMAT  format,
D3DPOOL  pool,
DWORD  filter,
DWORD  mipfilter,
D3DCOLOR  colorkey,
D3DXIMAGE_INFO *  srcinfo,
PALETTEENTRY *  palette,
struct IDirect3DTexture9 **  texture 
)

Definition at line 579 of file texture.c.

583{
584 const struct pixel_format_desc *src_fmt_desc, *dst_fmt_desc;
585 BOOL dynamic_texture, format_specified = FALSE;
586 uint32_t loaded_miplevels, skip_levels, i;
587 IDirect3DTexture9 *staging_tex, *tex;
588 struct d3dx_image image;
589 D3DXIMAGE_INFO imginfo;
590 D3DCAPS9 caps;
591 HRESULT hr;
592
593 TRACE("device %p, srcdata %p, srcdatasize %u, width %u, height %u, miplevels %u, "
594 "usage %#lx, format %#x, pool %#x, filter %#lx, mipfilter %#lx, colorkey %#lx, "
595 "srcinfo %p, palette %p, texture %p.\n",
596 device, srcdata, srcdatasize, width, height, miplevels, usage, format, pool,
597 filter, mipfilter, colorkey, srcinfo, palette, texture);
598
599 /* check for invalid parameters */
600 if (!device || !texture || !srcdata || !srcdatasize)
601 return D3DERR_INVALIDCALL;
602
604 return hr;
605
606 staging_tex = tex = *texture = NULL;
607 mipfilter = d3dx9_get_mip_filter_value(mipfilter, &skip_levels);
608 hr = d3dx_image_init(srcdata, srcdatasize, &image, skip_levels, 0);
609 if (FAILED(hr))
610 {
611 FIXME("Unrecognized file format, returning failure.\n");
612 return hr;
613 }
614
616
617 /* handle default values */
619 width = (width == D3DX_DEFAULT) ? make_pow2(imginfo.Width) : imginfo.Width;
621 height = (height == D3DX_DEFAULT) ? make_pow2(imginfo.Height) : imginfo.Height;
622
623 format_specified = (format != D3DFMT_UNKNOWN && format != D3DX_DEFAULT);
625 format = imginfo.Format;
626 miplevels = (miplevels == D3DX_FROM_FILE) ? imginfo.MipLevels : miplevels;
627
628 /* Fix up texture creation parameters. */
630 if (FAILED(hr))
631 {
632 FIXME("Couldn't find suitable texture parameters.\n");
633 goto err;
634 }
635
636 if (colorkey && !format_specified)
638
640 {
642 goto err;
643 }
644
645 /* Create the to-be-filled texture */
646 dynamic_texture = (caps.Caps2 & D3DCAPS2_DYNAMICTEXTURES) && (usage & D3DUSAGE_DYNAMIC);
647 if (pool == D3DPOOL_DEFAULT && !dynamic_texture)
648 {
649 TRACE("Creating staging texture.\n");
650 hr = D3DXCreateTexture(device, width, height, miplevels, 0, format, D3DPOOL_SYSTEMMEM, &staging_tex);
651 tex = staging_tex;
652 }
653 else
654 {
655 hr = D3DXCreateTexture(device, width, height, miplevels, usage, format, pool, &tex);
656 }
657
658 if (FAILED(hr))
659 {
660 FIXME("Texture creation failed.\n");
661 goto err;
662 }
663
664 TRACE("Texture created correctly. Now loading the texture data into it.\n");
665 dst_fmt_desc = get_format_info(format);
666 src_fmt_desc = get_d3dx_pixel_format_info(image.format);
667 loaded_miplevels = min(imginfo.MipLevels, IDirect3DTexture9_GetLevelCount(tex));
668 for (i = 0; i < loaded_miplevels; i++)
669 {
670 struct d3dx_pixels src_pixels, dst_pixels;
671 D3DSURFACE_DESC dst_surface_desc;
672 D3DLOCKED_RECT dst_locked_rect;
673 RECT dst_rect;
674
675 hr = d3dx_image_get_pixels(&image, 0, i, &src_pixels);
676 if (FAILED(hr))
677 break;
678
679 hr = IDirect3DTexture9_LockRect(tex, i, &dst_locked_rect, NULL, 0);
680 if (FAILED(hr))
681 break;
682
683 IDirect3DTexture9_GetLevelDesc(tex, i, &dst_surface_desc);
684 SetRect(&dst_rect, 0, 0, dst_surface_desc.Width, dst_surface_desc.Height);
685 set_d3dx_pixels(&dst_pixels, dst_locked_rect.pBits, dst_locked_rect.Pitch, 0, palette,
686 dst_surface_desc.Width, dst_surface_desc.Height, 1, &dst_rect);
687
688 hr = d3dx_load_pixels_from_pixels(&dst_pixels, dst_fmt_desc, &src_pixels, src_fmt_desc, filter, colorkey);
690 if (FAILED(hr))
691 break;
692 }
693
694 if (FAILED(hr))
695 {
696 FIXME("Texture loading failed.\n");
697 goto err;
698 }
699
700 hr = D3DXFilterTexture((IDirect3DBaseTexture9 *)tex, palette, loaded_miplevels - 1, mipfilter);
701 if (FAILED(hr))
702 {
703 FIXME("Texture filtering failed.\n");
704 goto err;
705 }
706
707 /* Move the data to the actual texture if necessary */
708 if (staging_tex)
709 {
711 if (FAILED(hr))
712 goto err;
713
714 IDirect3DDevice9_UpdateTexture(device, (IDirect3DBaseTexture9 *)staging_tex, (IDirect3DBaseTexture9 *)(*texture));
715 IDirect3DTexture9_Release(staging_tex);
716 }
717 else
718 {
719 *texture = tex;
720 }
721
723 if (srcinfo)
724 *srcinfo = imginfo;
725
726 return hr;
727
728err:
730 if (tex)
732
733 return hr;
734}
#define IDirect3DTexture9_GetLevelDesc(p, a, b)
Definition: d3d9.h:860
#define IDirect3DTexture9_UnlockRect(p, a)
Definition: d3d9.h:863
#define IDirect3DTexture9_GetLevelCount(p)
Definition: d3d9.h:855
#define IDirect3DTexture9_LockRect(p, a, b, c, d)
Definition: d3d9.h:862
#define IDirect3DTexture9_Release(p)
Definition: d3d9.h:842
HRESULT WINAPI D3DXCreateTexture(struct IDirect3DDevice9 *device, UINT width, UINT height, UINT miplevels, DWORD usage, D3DFORMAT format, D3DPOOL pool, struct IDirect3DTexture9 **texture)
Definition: texture.c:528

◆ D3DXCreateTextureFromFileW()

HRESULT WINAPI D3DXCreateTextureFromFileW ( struct IDirect3DDevice9 *  device,
const WCHAR *  srcfile,
struct IDirect3DTexture9 **  texture 
)

Definition at line 815 of file texture.c.

817{
818 TRACE("device %p, srcfile %s, texture %p.\n", device, debugstr_w(srcfile), texture);
819
822}

◆ D3DXCreateTextureFromResourceA()

HRESULT WINAPI D3DXCreateTextureFromResourceA ( struct IDirect3DDevice9 *  device,
HMODULE  srcmodule,
const char *  resource,
struct IDirect3DTexture9 **  texture 
)

Definition at line 825 of file texture.c.

827{
828 TRACE("device %p, srcmodule %p, resource %s, texture %p.\n",
829 device, srcmodule, debugstr_a(resource), texture);
830
833 NULL, texture);
834}
HRESULT WINAPI D3DXCreateTextureFromResourceExA(struct IDirect3DDevice9 *device, HMODULE srcmodule, const char *resource, UINT width, UINT height, UINT miplevels, DWORD usage, D3DFORMAT format, D3DPOOL pool, DWORD filter, DWORD mipfilter, D3DCOLOR colorkey, D3DXIMAGE_INFO *srcinfo, PALETTEENTRY *palette, struct IDirect3DTexture9 **texture)
Definition: texture.c:847

◆ D3DXCreateTextureFromResourceExA()

HRESULT WINAPI D3DXCreateTextureFromResourceExA ( struct IDirect3DDevice9 *  device,
HMODULE  srcmodule,
const char *  resource,
UINT  width,
UINT  height,
UINT  miplevels,
DWORD  usage,
D3DFORMAT  format,
D3DPOOL  pool,
DWORD  filter,
DWORD  mipfilter,
D3DCOLOR  colorkey,
D3DXIMAGE_INFO *  srcinfo,
PALETTEENTRY *  palette,
struct IDirect3DTexture9 **  texture 
)

Definition at line 847 of file texture.c.

851{
852 HRSRC resinfo;
853 void *buffer;
854 DWORD size;
855
856 TRACE("device %p, srcmodule %p, resource %s, width %u, height %u, miplevels %u, usage %#lx, format %#x, "
857 "pool %#x, filter %#lx, mipfilter %#lx, colorkey 0x%08lx, srcinfo %p, palette %p, texture %p.\n",
858 device, srcmodule, debugstr_a(resource), width, height, miplevels, usage, format,
859 pool, filter, mipfilter, colorkey, srcinfo, palette, texture);
860
861 if (!device || !texture)
862 return D3DERR_INVALIDCALL;
863
864 if (!(resinfo = FindResourceA(srcmodule, resource, (const char *)RT_RCDATA))
865 /* Try loading the resource as bitmap data (which is in DIB format D3DXIFF_DIB) */
866 && !(resinfo = FindResourceA(srcmodule, resource, (const char *)RT_BITMAP)))
867 return D3DXERR_INVALIDDATA;
868
869 if (FAILED(load_resource_into_memory(srcmodule, resinfo, &buffer, &size)))
870 return D3DXERR_INVALIDDATA;
871
873 usage, format, pool, filter, mipfilter, colorkey, srcinfo, palette, texture);
874}
HRESULT load_resource_into_memory(HMODULE module, HRSRC resinfo, void **buffer, DWORD *length)
Definition: util.c:261
HRSRC WINAPI FindResourceA(HMODULE hModule, LPCSTR name, LPCSTR type)
Definition: res.c:155
#define RT_BITMAP
Definition: pedump.c:364
#define RT_RCDATA
Definition: pedump.c:372

◆ D3DXCreateTextureFromResourceExW()

HRESULT WINAPI D3DXCreateTextureFromResourceExW ( struct IDirect3DDevice9 *  device,
HMODULE  srcmodule,
const WCHAR *  resource,
UINT  width,
UINT  height,
UINT  miplevels,
DWORD  usage,
D3DFORMAT  format,
D3DPOOL  pool,
DWORD  filter,
DWORD  mipfilter,
D3DCOLOR  colorkey,
D3DXIMAGE_INFO *  srcinfo,
PALETTEENTRY *  palette,
struct IDirect3DTexture9 **  texture 
)

Definition at line 876 of file texture.c.

880{
881 HRSRC resinfo;
882 void *buffer;
883 DWORD size;
884
885 TRACE("device %p, srcmodule %p, resource %s, width %u, height %u, miplevels %u, usage %#lx, format %#x, "
886 "pool %#x, filter %#lx, mipfilter %#lx, colorkey 0x%08lx, srcinfo %p, palette %p, texture %p.\n",
887 device, srcmodule, debugstr_w(resource), width, height, miplevels, usage, format,
888 pool, filter, mipfilter, colorkey, srcinfo, palette, texture);
889
890 if (!device || !texture)
891 return D3DERR_INVALIDCALL;
892
893 if (!(resinfo = FindResourceW(srcmodule, resource, (const WCHAR *)RT_RCDATA))
894 /* Try loading the resource as bitmap data (which is in DIB format D3DXIFF_DIB) */
895 && !(resinfo = FindResourceW(srcmodule, resource, (const WCHAR *)RT_BITMAP)))
896 return D3DXERR_INVALIDDATA;
897
898 if (FAILED(load_resource_into_memory(srcmodule, resinfo, &buffer, &size)))
899 return D3DXERR_INVALIDDATA;
900
902 usage, format, pool, filter, mipfilter, colorkey, srcinfo, palette, texture);
903}
HRSRC WINAPI FindResourceW(HINSTANCE hModule, LPCWSTR name, LPCWSTR type)
Definition: res.c:176

◆ D3DXCreateTextureFromResourceW()

HRESULT WINAPI D3DXCreateTextureFromResourceW ( struct IDirect3DDevice9 *  device,
HMODULE  srcmodule,
const WCHAR *  resource,
struct IDirect3DTexture9 **  texture 
)

Definition at line 836 of file texture.c.

838{
839 TRACE("device %p, srcmodule %p, resource %s, texture %p.\n",
840 device, srcmodule, debugstr_w(resource), texture);
841
844 NULL, texture);
845}
HRESULT WINAPI D3DXCreateTextureFromResourceExW(struct IDirect3DDevice9 *device, HMODULE srcmodule, const WCHAR *resource, UINT width, UINT height, UINT miplevels, DWORD usage, D3DFORMAT format, D3DPOOL pool, DWORD filter, DWORD mipfilter, D3DCOLOR colorkey, D3DXIMAGE_INFO *srcinfo, PALETTEENTRY *palette, struct IDirect3DTexture9 **texture)
Definition: texture.c:876

◆ D3DXCreateVolumeTexture()

HRESULT WINAPI D3DXCreateVolumeTexture ( struct IDirect3DDevice9 *  device,
UINT  width,
UINT  height,
UINT  depth,
UINT  miplevels,
DWORD  usage,
D3DFORMAT  format,
D3DPOOL  pool,
struct IDirect3DVolumeTexture9 **  volume 
)

Definition at line 936 of file texture.c.

938{
939 HRESULT hr;
940
941 TRACE("device %p, width %u, height %u, depth %u, miplevels %u, usage %#lx, format %#x, pool %#x, texture %p.\n",
942 device, width, height, depth, miplevels, usage, format, pool, texture);
943
944 if (!device || !texture)
945 return D3DERR_INVALIDCALL;
946
948 &miplevels, usage, &format, pool);
949
950 if (FAILED(hr))
951 {
952 TRACE("D3DXCheckVolumeTextureRequirements failed\n");
953 return hr;
954 }
955
958}
#define IDirect3DDevice9_CreateVolumeTexture(p, a, b, c, d, e, f, g, h, i)
Definition: d3d9.h:1359
HRESULT WINAPI D3DXCheckVolumeTextureRequirements(struct IDirect3DDevice9 *device, UINT *width, UINT *height, UINT *depth, UINT *miplevels, DWORD usage, D3DFORMAT *format, D3DPOOL pool)
Definition: texture.c:456

◆ D3DXCreateVolumeTextureFromFileA()

HRESULT WINAPI D3DXCreateVolumeTextureFromFileA ( struct IDirect3DDevice9 *  device,
const char *  srcfile,
struct IDirect3DVolumeTexture9 **  volume 
)

Definition at line 960 of file texture.c.

963{
964 int len;
965 HRESULT hr;
966 void *data;
967 DWORD data_size;
969
970 TRACE("device %p, filename %s, volume_texture %p.\n", device, debugstr_a(filename), volume_texture);
971
972 if (!filename) return D3DERR_INVALIDCALL;
973
975 filenameW = malloc(len * sizeof(WCHAR));
976 if (!filenameW) return E_OUTOFMEMORY;
978
979 hr = map_view_of_file(filenameW, &data, &data_size);
981 if (FAILED(hr)) return D3DXERR_INVALIDDATA;
982
985
987 return hr;
988}
HRESULT WINAPI D3DXCreateVolumeTextureFromFileInMemoryEx(IDirect3DDevice9 *device, const void *data, UINT data_size, UINT width, UINT height, UINT depth, UINT mip_levels, DWORD usage, D3DFORMAT format, D3DPOOL pool, DWORD filter, DWORD mip_filter, D3DCOLOR color_key, D3DXIMAGE_INFO *info, PALETTEENTRY *palette, IDirect3DVolumeTexture9 **volume_texture)
Definition: texture.c:1110
static const WCHAR filenameW[]
Definition: resource.c:27

◆ D3DXCreateVolumeTextureFromFileExA()

HRESULT WINAPI D3DXCreateVolumeTextureFromFileExA ( struct IDirect3DDevice9 *  device,
const char *  srcfile,
UINT  width,
UINT  height,
UINT  depth,
UINT  miplevels,
DWORD  usage,
D3DFORMAT  format,
D3DPOOL  pool,
DWORD  filter,
DWORD  mipfilter,
D3DCOLOR  colorkey,
D3DXIMAGE_INFO *  srcinfo,
PALETTEENTRY *  palette,
struct IDirect3DVolumeTexture9 **  volume 
)

Definition at line 1012 of file texture.c.

1027{
1028 int len;
1029 HRESULT hr;
1031 void *data;
1032 DWORD data_size;
1033
1034 TRACE("device %p, filename %s, width %u, height %u, depth %u, mip_levels %u, usage %#lx, "
1035 "format %#x, pool %#x, filter %#lx, mip_filter %#lx, color_key 0x%08lx, src_info %p, "
1036 "palette %p, volume_texture %p.\n",
1037 device, debugstr_a(filename), width, height, depth, mip_levels, usage,
1038 format, pool, filter, mip_filter, color_key, src_info, palette, volume_texture);
1039
1040 if (!filename) return D3DERR_INVALIDCALL;
1041
1043 filenameW = malloc(len * sizeof(WCHAR));
1044 if (!filenameW) return E_OUTOFMEMORY;
1046
1047 hr = map_view_of_file(filenameW, &data, &data_size);
1048 free(filenameW);
1049 if (FAILED(hr)) return D3DXERR_INVALIDDATA;
1050
1052 mip_levels, usage, format, pool, filter, mip_filter, color_key, src_info, palette,
1053 volume_texture);
1054
1056 return hr;
1057}

◆ D3DXCreateVolumeTextureFromFileExW()

HRESULT WINAPI D3DXCreateVolumeTextureFromFileExW ( struct IDirect3DDevice9 *  device,
const WCHAR *  srcfile,
UINT  width,
UINT  height,
UINT  depth,
UINT  miplevels,
DWORD  usage,
D3DFORMAT  format,
D3DPOOL  pool,
DWORD  filter,
DWORD  mipfilter,
D3DCOLOR  colorkey,
D3DXIMAGE_INFO *  srcinfo,
PALETTEENTRY *  palette,
struct IDirect3DVolumeTexture9 **  volume 
)

Definition at line 1059 of file texture.c.

1074{
1075 HRESULT hr;
1076 void *data;
1077 DWORD data_size;
1078
1079 TRACE("device %p, filename %s, width %u, height %u, depth %u, mip_levels %u, usage %#lx, "
1080 "format %#x, pool %#x, filter %#lx, mip_filter %#lx, color_key 0x%08lx, src_info %p, "
1081 "palette %p, volume_texture %p.\n",
1082 device, debugstr_w(filename), width, height, depth, mip_levels, usage,
1083 format, pool, filter, mip_filter, color_key, src_info, palette, volume_texture);
1084
1085 if (!filename) return D3DERR_INVALIDCALL;
1086
1087 hr = map_view_of_file(filename, &data, &data_size);
1088 if (FAILED(hr)) return D3DXERR_INVALIDDATA;
1089
1091 mip_levels, usage, format, pool, filter, mip_filter, color_key, src_info, palette,
1092 volume_texture);
1093
1095 return hr;
1096}

◆ D3DXCreateVolumeTextureFromFileInMemory()

HRESULT WINAPI D3DXCreateVolumeTextureFromFileInMemory ( struct IDirect3DDevice9 *  device,
const void *  srcdata,
UINT  srcdatasize,
struct IDirect3DVolumeTexture9 **  volume 
)

Definition at line 1098 of file texture.c.

1102{
1103 TRACE("device %p, data %p, data_size %u, volume_texture %p.\n", device, data, data_size, volume_texture);
1104
1107 0, NULL, NULL, volume_texture);
1108}

◆ D3DXCreateVolumeTextureFromFileInMemoryEx()

HRESULT WINAPI D3DXCreateVolumeTextureFromFileInMemoryEx ( struct IDirect3DDevice9 *  device,
const void *  srcdata,
UINT  srcdatasize,
UINT  width,
UINT  height,
UINT  depth,
UINT  miplevels,
DWORD  usage,
D3DFORMAT  format,
D3DPOOL  pool,
DWORD  filter,
DWORD  mipfilter,
D3DCOLOR  colorkey,
D3DXIMAGE_INFO *  srcinfo,
PALETTEENTRY *  palette,
struct IDirect3DVolumeTexture9 **  volume 
)

Definition at line 1110 of file texture.c.

1114{
1115 HRESULT hr;
1116 D3DCAPS9 caps;
1117 struct d3dx_image image;
1118 D3DXIMAGE_INFO image_info;
1119 uint32_t loaded_miplevels, skip_levels, i;
1120 IDirect3DVolumeTexture9 *tex, *staging_tex;
1121 BOOL dynamic_texture, format_specified = FALSE;
1122 const struct pixel_format_desc *src_fmt_desc, *dst_fmt_desc;
1123
1124 TRACE("device %p, data %p, data_size %u, width %u, height %u, depth %u, mip_levels %u, "
1125 "usage %#lx, format %#x, pool %#x, filter %#lx, mip_filter %#lx, color_key 0x%08lx, "
1126 "info %p, palette %p, volume_texture %p.\n",
1127 device, data, data_size, width, height, depth, mip_levels, usage, format, pool,
1128 filter, mip_filter, color_key, info, palette, volume_texture);
1129
1130 if (!device || !data || !data_size || !volume_texture)
1131 return D3DERR_INVALIDCALL;
1132
1134 return hr;
1135
1136 staging_tex = tex = *volume_texture = NULL;
1137 mip_filter = d3dx9_get_mip_filter_value(mip_filter, &skip_levels);
1138 hr = d3dx_image_init(data, data_size, &image, skip_levels, 0);
1139 if (FAILED(hr))
1140 {
1141 FIXME("Unrecognized file format, returning failure.\n");
1142 return hr;
1143 }
1144
1146
1147 /* Handle default values. */
1149 width = (width == D3DX_DEFAULT) ? make_pow2(image_info.Width) : image_info.Width;
1151 height = (height == D3DX_DEFAULT) ? make_pow2(image_info.Height) : image_info.Height;
1153 depth = (depth == D3DX_DEFAULT) ? make_pow2(image_info.Depth) : image_info.Depth;
1154
1155 format_specified = (format != D3DFMT_UNKNOWN && format != D3DX_DEFAULT);
1157 format = image_info.Format;
1158 mip_levels = (mip_levels == D3DX_FROM_FILE) ? image_info.MipLevels : mip_levels;
1159
1161 if (FAILED(hr))
1162 {
1163 FIXME("Couldn't find suitable texture parameters.\n");
1164 goto err;
1165 }
1166
1167 if (color_key && !format_specified)
1169
1171 if (FAILED(hr))
1172 {
1174 goto err;
1175 }
1176
1177 dynamic_texture = (caps.Caps2 & D3DCAPS2_DYNAMICTEXTURES) && (usage & D3DUSAGE_DYNAMIC);
1178 if (pool == D3DPOOL_DEFAULT && !dynamic_texture)
1179 {
1180 TRACE("Creating staging texture.\n");
1181 hr = D3DXCreateVolumeTexture(device, width, height, depth, mip_levels, 0, format, D3DPOOL_SYSTEMMEM, &staging_tex);
1182 tex = staging_tex;
1183 }
1184 else
1185 {
1186 hr = D3DXCreateVolumeTexture(device, width, height, depth, mip_levels, usage, format, pool, &tex);
1187 }
1188
1189 if (FAILED(hr))
1190 {
1191 FIXME("Texture creation failed.\n");
1192 goto err;
1193 }
1194
1195 TRACE("Texture created correctly. Now loading the texture data into it.\n");
1196 dst_fmt_desc = get_format_info(format);
1197 src_fmt_desc = get_d3dx_pixel_format_info(image.format);
1198 loaded_miplevels = min(image_info.MipLevels, IDirect3DVolumeTexture9_GetLevelCount(tex));
1199 for (i = 0; i < loaded_miplevels; i++)
1200 {
1201 struct d3dx_pixels src_pixels, dst_pixels;
1202 D3DVOLUME_DESC dst_volume_desc;
1203 D3DLOCKED_BOX dst_locked_box;
1204 RECT dst_rect;
1205
1206 hr = d3dx_image_get_pixels(&image, 0, i, &src_pixels);
1207 if (FAILED(hr))
1208 break;
1209
1210 hr = IDirect3DVolumeTexture9_LockBox(tex, i, &dst_locked_box, NULL, 0);
1211 if (FAILED(hr))
1212 break;
1213
1214 IDirect3DVolumeTexture9_GetLevelDesc(tex, i, &dst_volume_desc);
1215 SetRect(&dst_rect, 0, 0, dst_volume_desc.Width, dst_volume_desc.Height);
1216 set_d3dx_pixels(&dst_pixels, dst_locked_box.pBits, dst_locked_box.RowPitch, dst_locked_box.SlicePitch, palette,
1217 dst_volume_desc.Width, dst_volume_desc.Height, dst_volume_desc.Depth, &dst_rect);
1218
1219 hr = d3dx_load_pixels_from_pixels(&dst_pixels, dst_fmt_desc, &src_pixels, src_fmt_desc, filter, color_key);
1221 if (FAILED(hr))
1222 break;
1223 }
1224
1225 if (FAILED(hr))
1226 {
1227 FIXME("Texture loading failed.\n");
1228 goto err;
1229 }
1230
1231 hr = D3DXFilterTexture((IDirect3DBaseTexture9 *)tex, palette, loaded_miplevels - 1, mip_filter);
1232 if (FAILED(hr))
1233 {
1234 FIXME("Texture filtering failed.\n");
1235 goto err;
1236 }
1237
1238 /* Move the data to the actual texture if necessary. */
1239 if (staging_tex)
1240 {
1241 hr = D3DXCreateVolumeTexture(device, width, height, depth, mip_levels, usage, format, pool, volume_texture);
1242 if (FAILED(hr))
1243 goto err;
1244
1245 IDirect3DDevice9_UpdateTexture(device, (IDirect3DBaseTexture9 *)staging_tex, (IDirect3DBaseTexture9 *)(*volume_texture));
1247 }
1248 else
1249 {
1250 *volume_texture = tex;
1251 }
1252
1254 if (info)
1255 *info = image_info;
1256
1257 return hr;
1258
1259err:
1261 if (tex)
1263
1264 return hr;
1265}
#define IDirect3DVolumeTexture9_GetLevelDesc(p, a, b)
Definition: d3d9.h:955
#define IDirect3DVolumeTexture9_Release(p)
Definition: d3d9.h:937
#define IDirect3DVolumeTexture9_GetLevelCount(p)
Definition: d3d9.h:950
#define IDirect3DVolumeTexture9_LockBox(p, a, b, c, d)
Definition: d3d9.h:957
#define IDirect3DVolumeTexture9_UnlockBox(p, a)
Definition: d3d9.h:958
HRESULT WINAPI D3DXCreateVolumeTexture(struct IDirect3DDevice9 *device, UINT width, UINT height, UINT depth, UINT miplevels, DWORD usage, D3DFORMAT format, D3DPOOL pool, struct IDirect3DVolumeTexture9 **texture)
Definition: texture.c:936

◆ D3DXCreateVolumeTextureFromFileW()

HRESULT WINAPI D3DXCreateVolumeTextureFromFileW ( struct IDirect3DDevice9 *  device,
const WCHAR *  srcfile,
struct IDirect3DVolumeTexture9 **  volume 
)

Definition at line 990 of file texture.c.

993{
994 HRESULT hr;
995 void *data;
996 DWORD data_size;
997
998 TRACE("device %p, filename %s, volume_texture %p.\n", device, debugstr_w(filename), volume_texture);
999
1000 if (!filename) return D3DERR_INVALIDCALL;
1001
1002 hr = map_view_of_file(filename, &data, &data_size);
1003 if (FAILED(hr)) return D3DXERR_INVALIDDATA;
1004
1007
1009 return hr;
1010}

◆ D3DXCreateVolumeTextureFromResourceA()

HRESULT WINAPI D3DXCreateVolumeTextureFromResourceA ( struct IDirect3DDevice9 *  device,
HMODULE  srcmodule,
const char *  resource,
struct IDirect3DVolumeTexture9 **  volume 
)

◆ D3DXCreateVolumeTextureFromResourceExA()

HRESULT WINAPI D3DXCreateVolumeTextureFromResourceExA ( struct IDirect3DDevice9 *  device,
HMODULE  srcmodule,
const char *  resource,
UINT  width,
UINT  height,
UINT  depth,
UINT  miplevels,
DWORD  usage,
D3DFORMAT  format,
D3DPOOL  pool,
DWORD  filter,
DWORD  mipfilter,
D3DCOLOR  colorkey,
D3DXIMAGE_INFO *  srcinfo,
PALETTEENTRY *  palette,
struct IDirect3DVolumeTexture9 **  volume 
)

◆ D3DXCreateVolumeTextureFromResourceExW()

HRESULT WINAPI D3DXCreateVolumeTextureFromResourceExW ( struct IDirect3DDevice9 *  device,
HMODULE  srcmodule,
const WCHAR *  resource,
UINT  width,
UINT  height,
UINT  depth,
UINT  miplevels,
DWORD  usage,
D3DFORMAT  format,
D3DPOOL  pool,
DWORD  filter,
DWORD  mipfilter,
D3DCOLOR  colorkey,
D3DXIMAGE_INFO *  srcinfo,
PALETTEENTRY *  palette,
struct IDirect3DVolumeTexture9 **  volume 
)

◆ D3DXCreateVolumeTextureFromResourceW()

HRESULT WINAPI D3DXCreateVolumeTextureFromResourceW ( struct IDirect3DDevice9 *  device,
HMODULE  srcmodule,
const WCHAR *  resource,
struct IDirect3DVolumeTexture9 **  volume 
)

◆ D3DXFillCubeTexture()

HRESULT WINAPI D3DXFillCubeTexture ( struct IDirect3DCubeTexture9 *  cube,
LPD3DXFILL3D  function,
void *  data 
)

Definition at line 1657 of file texture.c.

1658{
1659 DWORD miplevels;
1660 DWORD m, x, y, f;
1662 D3DLOCKED_RECT lock_rect;
1665 const struct pixel_format_desc *format;
1666 BYTE *data;
1667 static const enum cube_coord coordmap[6][3] =
1668 {
1670 {ZERO, YCOORDINV, XCOORD},
1671 {XCOORD, ONE, YCOORD},
1672 {XCOORD, ZERO, YCOORDINV},
1673 {XCOORD, YCOORDINV, ONE},
1675 };
1676
1677 TRACE("texture %p, function %p, funcdata %p.\n", texture, function, funcdata);
1678
1679 if (texture == NULL || function == NULL)
1680 return D3DERR_INVALIDCALL;
1681
1683
1684 for (m = 0; m < miplevels; m++)
1685 {
1687 return D3DERR_INVALIDCALL;
1688
1689 format = get_format_info(desc.Format);
1691 {
1692 FIXME("Unsupported texture format %#x\n", desc.Format);
1693 return D3DERR_INVALIDCALL;
1694 }
1695
1696 for (f = 0; f < 6; f++)
1697 {
1699 return D3DERR_INVALIDCALL;
1700
1701 size.x = (f == 0) || (f == 1) ? 0.0f : 2.0f / desc.Width;
1702 size.y = (f == 2) || (f == 3) ? 0.0f : 2.0f / desc.Width;
1703 size.z = (f == 4) || (f == 5) ? 0.0f : 2.0f / desc.Width;
1704
1705 data = lock_rect.pBits;
1706
1707 for (y = 0; y < desc.Height; y++)
1708 {
1709 for (x = 0; x < desc.Width; x++)
1710 {
1711 BYTE *dst = data + y * lock_rect.Pitch + x * format->bytes_per_pixel;
1712 struct d3dx_color color;
1713
1714 coord.x = get_cube_coord(coordmap[f][0], x, y, desc.Width) / desc.Width * 2.0f - 1.0f;
1715 coord.y = get_cube_coord(coordmap[f][1], x, y, desc.Width) / desc.Width * 2.0f - 1.0f;
1716 coord.z = get_cube_coord(coordmap[f][2], x, y, desc.Width) / desc.Width * 2.0f - 1.0f;
1717
1718 function(&value, &coord, &size, funcdata);
1719
1720 set_d3dx_color(&color, (const struct vec4 *)&value, RANGE_FULL, RANGE_FULL);
1722 }
1723 }
1725 }
1726 }
1727
1728 return D3D_OK;
1729}
#define D3DLOCK_DISCARD
Definition: d3d8types.h:72
void format_from_d3dx_color(const struct pixel_format_desc *format, const struct d3dx_color *src, BYTE *dst)
Definition: surface.c:2051
static BOOL is_index_format(const struct pixel_format_desc *format)
static BOOL is_unknown_format(const struct pixel_format_desc *format)
@ RANGE_FULL
Definition: d3dx9_private.h:59
static void set_d3dx_color(struct d3dx_color *color, const struct vec4 *value, enum range rgb_range, enum range a_range)
Definition: d3dx9_private.h:71
static BOOL is_compressed_format(const struct pixel_format_desc *format)
static float get_cube_coord(enum cube_coord coord, unsigned int x, unsigned int y, unsigned int size)
Definition: texture.c:1635
cube_coord
Definition: texture.c:1626
@ XCOORDINV
Definition: texture.c:1628
@ ONE
Definition: texture.c:1632
@ YCOORDINV
Definition: texture.c:1630
@ XCOORD
Definition: texture.c:1627
@ ZERO
Definition: texture.c:1631
@ YCOORD
Definition: texture.c:1629
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
GLuint color
Definition: glext.h:6243
GLuint coord
Definition: glext.h:9511
GLenum GLenum dst
Definition: glext.h:6340
const GLfloat * m
Definition: glext.h:10848
D3D11_SHADER_VARIABLE_DESC desc
Definition: reflection.c:1683
enum d3dx_pixel_format_id format
Definition: pdh_main.c:64
unsigned char BYTE
Definition: xxhash.c:193

◆ D3DXFillCubeTextureTX()

HRESULT WINAPI D3DXFillCubeTextureTX ( struct IDirect3DCubeTexture9 *  cube,
ID3DXTextureShader *  texture_shader 
)

Definition at line 2749 of file shader.c.

2750{
2752
2753 TRACE("cube %p, texture_shader %p.\n", cube, texture_shader);
2754
2756}
void WINAPI texture_shader_fill_3d(D3DXVECTOR4 *out, const D3DXVECTOR3 *texcoord, const D3DXVECTOR3 *texelsize, void *data)
Definition: shader.c:2716
static struct d3dx9_texture_shader * unsafe_impl_from_ID3DXTextureShader(ID3DXTextureShader *iface)
Definition: shader.c:2635
HRESULT WINAPI D3DXFillCubeTexture(struct IDirect3DCubeTexture9 *texture, LPD3DXFILL3D function, void *funcdata)
Definition: texture.c:1657
GLuint shader
Definition: glext.h:6030

◆ D3DXFillTexture()

HRESULT WINAPI D3DXFillTexture ( struct IDirect3DTexture9 *  texture,
LPD3DXFILL2D  function,
void *  data 
)

Definition at line 1267 of file texture.c.

1268{
1269 IDirect3DSurface9 *surface, *temp_surface;
1270 DWORD miplevels;
1271 DWORD m, x, y;
1273 D3DLOCKED_RECT lock_rect;
1276 const struct pixel_format_desc *format;
1277 BYTE *data;
1278 HRESULT hr;
1279
1280 TRACE("texture %p, function %p, funcdata %p.\n", texture, function, funcdata);
1281
1282 if (!texture || !function)
1283 return D3DERR_INVALIDCALL;
1284
1286
1287 for (m = 0; m < miplevels; m++)
1288 {
1290 return hr;
1291
1292 format = get_format_info(desc.Format);
1294 {
1295 FIXME("Unsupported texture format %#x.\n", desc.Format);
1296 return D3DERR_INVALIDCALL;
1297 }
1298
1300 return hr;
1301 if (FAILED(hr = lock_surface(surface, NULL, &lock_rect, &temp_surface, TRUE)))
1302 {
1304 return hr;
1305 }
1306
1307 size.x = 1.0f / desc.Width;
1308 size.y = 1.0f / desc.Height;
1309
1310 data = lock_rect.pBits;
1311
1312 for (y = 0; y < desc.Height; y++)
1313 {
1314 /* The callback function expects the coordinates of the center
1315 of the texel */
1316 coord.y = (y + 0.5f) / desc.Height;
1317
1318 for (x = 0; x < desc.Width; x++)
1319 {
1320 BYTE *dst = data + y * lock_rect.Pitch + x * format->bytes_per_pixel;
1321 struct d3dx_color color;
1322
1323 coord.x = (x + 0.5f) / desc.Width;
1324
1325 function(&value, &coord, &size, funcdata);
1326
1327 set_d3dx_color(&color, (const struct vec4 *)&value, RANGE_FULL, RANGE_FULL);
1329 }
1330 }
1331 if (FAILED(hr = unlock_surface(surface, NULL, temp_surface, TRUE)))
1332 {
1334 return hr;
1335 }
1337 }
1338
1339 return D3D_OK;
1340}
#define IDirect3DTexture9_GetSurfaceLevel(p, a, b)
Definition: d3d9.h:861
#define IDirect3DSurface9_Release(p)
Definition: d3d9.h:450
HRESULT unlock_surface(IDirect3DSurface9 *surface, const RECT *surface_rect, IDirect3DSurface9 *temp_surface, BOOL update)
Definition: surface.c:214
HRESULT lock_surface(IDirect3DSurface9 *surface, const RECT *surface_rect, D3DLOCKED_RECT *lock, IDirect3DSurface9 **temp_surface, BOOL write)
Definition: surface.c:156
#define TRUE
Definition: types.h:120
DWORD IDirect3DSurface9
Definition: dxva2api.idl:23
for(i=0;i< sizeof(testsuite)/sizeof(testsuite[0]);++i) ok(call_test(testsuite[i].func)

◆ D3DXFillTextureTX()

HRESULT WINAPI D3DXFillTextureTX ( struct IDirect3DTexture9 *  texture,
ID3DXTextureShader *  texture_shader 
)

Definition at line 2740 of file shader.c.

2741{
2743
2744 TRACE("texture %p, texture_shader %p.\n", texture, texture_shader);
2745
2747}
void WINAPI texture_shader_fill_2d(D3DXVECTOR4 *out, const D3DXVECTOR2 *texcoord, const D3DXVECTOR2 *texelsize, void *data)
Definition: shader.c:2692
HRESULT WINAPI D3DXFillTexture(struct IDirect3DTexture9 *texture, LPD3DXFILL2D function, void *funcdata)
Definition: texture.c:1267

◆ D3DXFillVolumeTexture()

HRESULT WINAPI D3DXFillVolumeTexture ( struct IDirect3DVolumeTexture9 *  volume,
LPD3DXFILL3D  function,
void *  data 
)

Definition at line 1731 of file texture.c.

1732{
1733 DWORD miplevels;
1734 DWORD m, x, y, z;
1736 D3DLOCKED_BOX lock_box;
1739 const struct pixel_format_desc *format;
1740 BYTE *data;
1741
1742 TRACE("texture %p, function %p, funcdata %p.\n", texture, function, funcdata);
1743
1744 if (texture == NULL || function == NULL)
1745 return D3DERR_INVALIDCALL;
1746
1748
1749 for (m = 0; m < miplevels; m++)
1750 {
1752 return D3DERR_INVALIDCALL;
1753
1754 format = get_format_info(desc.Format);
1756 {
1757 FIXME("Unsupported texture format %#x\n", desc.Format);
1758 return D3DERR_INVALIDCALL;
1759 }
1760
1762 return D3DERR_INVALIDCALL;
1763
1764 size.x = 1.0f / desc.Width;
1765 size.y = 1.0f / desc.Height;
1766 size.z = 1.0f / desc.Depth;
1767
1768 data = lock_box.pBits;
1769
1770 for (z = 0; z < desc.Depth; z++)
1771 {
1772 /* The callback function expects the coordinates of the center
1773 of the texel */
1774 coord.z = (z + 0.5f) / desc.Depth;
1775
1776 for (y = 0; y < desc.Height; y++)
1777 {
1778 coord.y = (y + 0.5f) / desc.Height;
1779
1780 for (x = 0; x < desc.Width; x++)
1781 {
1782 BYTE *dst = data + z * lock_box.SlicePitch + y * lock_box.RowPitch + x * format->bytes_per_pixel;
1783 struct d3dx_color color;
1784
1785 coord.x = (x + 0.5f) / desc.Width;
1786
1787 function(&value, &coord, &size, funcdata);
1788
1789 set_d3dx_color(&color, (const struct vec4 *)&value, RANGE_FULL, RANGE_FULL);
1791 }
1792 }
1793 }
1795 }
1796
1797 return D3D_OK;
1798}
GLdouble GLdouble z
Definition: glext.h:5874

◆ D3DXFillVolumeTextureTX()

HRESULT WINAPI D3DXFillVolumeTextureTX ( struct IDirect3DVolumeTexture9 *  volume,
ID3DXTextureShader *  texture_shader 
)

Definition at line 1800 of file texture.c.

1801{
1802 FIXME("texture %p, texture_shader %p stub.\n", texture, texture_shader);
1803 return E_NOTIMPL;
1804}
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ D3DXFilterTexture()

HRESULT WINAPI D3DXFilterTexture ( struct IDirect3DBaseTexture9 *  texture,
const PALETTEENTRY *  palette,
UINT  srclevel,
DWORD  filter 
)

Definition at line 48 of file texture.c.

52{
53 UINT level;
54 HRESULT hr;
56
57 TRACE("texture %p, palette %p, srclevel %u, filter %#lx.\n", texture, palette, srclevel, filter);
58
59 if (!texture)
60 return D3DERR_INVALIDCALL;
61
63 return hr;
64
65 if (srclevel == D3DX_DEFAULT)
66 srclevel = 0;
67 else if (srclevel >= IDirect3DBaseTexture9_GetLevelCount(texture))
68 return D3DERR_INVALIDCALL;
69
71 {
74 {
75 IDirect3DSurface9 *topsurf, *mipsurf;
77 int i, numfaces;
78
80 {
81 numfaces = 1;
82 IDirect3DTexture9_GetLevelDesc((IDirect3DTexture9*) texture, srclevel, &desc);
83 }
84 else
85 {
86 numfaces = 6;
87 IDirect3DCubeTexture9_GetLevelDesc((IDirect3DCubeTexture9 *)texture, srclevel, &desc);
88 }
89
90 if (filter == D3DX_DEFAULT)
91 {
92 if (is_pow2(desc.Width) && is_pow2(desc.Height))
94 else
96 }
97
98 for (i = 0; i < numfaces; i++)
99 {
100 level = srclevel + 1;
101 hr = get_surface(type, texture, i, srclevel, &topsurf);
102
103 if (FAILED(hr))
104 return D3DERR_INVALIDCALL;
105
106 while (get_surface(type, texture, i, level, &mipsurf) == D3D_OK)
107 {
108 hr = D3DXLoadSurfaceFromSurface(mipsurf, palette, NULL, topsurf, palette, NULL, filter, 0);
110 topsurf = mipsurf;
111
112 if (FAILED(hr))
113 break;
114
115 level++;
116 }
117
119 if (FAILED(hr))
120 return hr;
121 }
122
123 return D3D_OK;
124 }
125
127 {
129 int level, level_count;
130 IDirect3DVolume9 *top_volume, *mip_volume;
131 IDirect3DVolumeTexture9 *volume_texture = (IDirect3DVolumeTexture9*) texture;
132
133 IDirect3DVolumeTexture9_GetLevelDesc(volume_texture, srclevel, &desc);
134
135 if (filter == D3DX_DEFAULT)
136 {
137 if (is_pow2(desc.Width) && is_pow2(desc.Height) && is_pow2(desc.Depth))
139 else
141 }
142
143 hr = IDirect3DVolumeTexture9_GetVolumeLevel(volume_texture, srclevel, &top_volume);
144 if (FAILED(hr))
145 return hr;
146
147 level_count = IDirect3DVolumeTexture9_GetLevelCount(volume_texture);
148 for (level = srclevel + 1; level < level_count; level++)
149 {
150 IDirect3DVolumeTexture9_GetVolumeLevel(volume_texture, level, &mip_volume);
151 hr = D3DXLoadVolumeFromVolume(mip_volume, palette, NULL, top_volume, palette, NULL, filter, 0);
152 IDirect3DVolume9_Release(top_volume);
153 top_volume = mip_volume;
154
155 if (FAILED(hr))
156 break;
157 }
158
159 IDirect3DVolume9_Release(top_volume);
160 if (FAILED(hr))
161 return hr;
162
163 return D3D_OK;
164 }
165
166 default:
167 return D3DERR_INVALIDCALL;
168 }
169}
enum _D3DRESOURCETYPE D3DRESOURCETYPE
#define IDirect3DVolume9_Release(p)
Definition: d3d9.h:277
#define IDirect3DBaseTexture9_GetLevelCount(p)
Definition: d3d9.h:676
#define IDirect3DVolumeTexture9_GetVolumeLevel(p, a, b)
Definition: d3d9.h:956
#define IDirect3DBaseTexture9_GetType(p)
Definition: d3d9.h:672
static HRESULT d3dx9_validate_filter(uint32_t filter)
Definition: d3dx9_private.h:37
HRESULT WINAPI D3DXLoadSurfaceFromSurface(IDirect3DSurface9 *dst_surface, const PALETTEENTRY *dst_palette, const RECT *dst_rect, IDirect3DSurface9 *src_surface, const PALETTEENTRY *src_palette, const RECT *src_rect, DWORD filter, D3DCOLOR color_key)
Definition: surface.c:2765
static HRESULT get_surface(D3DRESOURCETYPE type, struct IDirect3DBaseTexture9 *tex, int face, UINT level, struct IDirect3DSurface9 **surf)
Definition: texture.c:33
HRESULT WINAPI D3DXLoadVolumeFromVolume(IDirect3DVolume9 *dst_volume, const PALETTEENTRY *dst_palette, const D3DBOX *dst_box, IDirect3DVolume9 *src_volume, const PALETTEENTRY *src_palette, const D3DBOX *src_box, DWORD filter, D3DCOLOR color_key)
Definition: volume.c:242
#define D3DX_FILTER_DITHER
Definition: d3dx9tex.h:36
GLint level
Definition: gl.h:1546
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545

◆ D3DXGetImageInfoFromFileA()

HRESULT WINAPI D3DXGetImageInfoFromFileA ( const char *  file,
D3DXIMAGE_INFO *  info 
)

Definition at line 1523 of file surface.c.

1524{
1525 WCHAR *widename;
1526 HRESULT hr;
1527 int strlength;
1528
1529 TRACE("file %s, info %p.\n", debugstr_a(file), info);
1530
1531 if( !file ) return D3DERR_INVALIDCALL;
1532
1533 strlength = MultiByteToWideChar(CP_ACP, 0, file, -1, NULL, 0);
1534 widename = malloc(strlength * sizeof(*widename));
1535 MultiByteToWideChar(CP_ACP, 0, file, -1, widename, strlength);
1536
1537 hr = D3DXGetImageInfoFromFileW(widename, info);
1538 free(widename);
1539
1540 return hr;
1541}
HRESULT WINAPI D3DXGetImageInfoFromFileW(const WCHAR *file, D3DXIMAGE_INFO *info)
Definition: surface.c:1543
Definition: fci.c:123

◆ D3DXGetImageInfoFromFileInMemory()

HRESULT WINAPI D3DXGetImageInfoFromFileInMemory ( const void *  data,
UINT  data_size,
D3DXIMAGE_INFO *  info 
)

Definition at line 1489 of file surface.c.

1490{
1491 struct d3dx_image image;
1492 HRESULT hr;
1493
1494 TRACE("(%p, %d, %p)\n", data, datasize, info);
1495
1496 if (!data || !datasize)
1497 return D3DERR_INVALIDCALL;
1498
1499 if (!info)
1500 return D3D_OK;
1501
1503 if (FAILED(hr)) {
1504 TRACE("Invalid or unsupported image file\n");
1505 return D3DXERR_INVALIDDATA;
1506 }
1507
1509 return D3D_OK;
1510}
#define D3DX_IMAGE_INFO_ONLY
HRESULT d3dx_image_init(const void *src_data, uint32_t src_data_size, struct d3dx_image *image, uint32_t starting_mip_level, uint32_t flags)
Definition: surface.c:1332
void d3dximage_info_from_d3dx_image(D3DXIMAGE_INFO *info, struct d3dx_image *image)
Definition: surface.c:1441

◆ D3DXGetImageInfoFromFileW()

HRESULT WINAPI D3DXGetImageInfoFromFileW ( const WCHAR *  file,
D3DXIMAGE_INFO *  info 
)

Definition at line 1543 of file surface.c.

1544{
1545 void *buffer;
1546 HRESULT hr;
1547 DWORD size;
1548
1549 TRACE("file %s, info %p.\n", debugstr_w(file), info);
1550
1551 if (!file)
1552 return D3DERR_INVALIDCALL;
1553
1555 return D3DXERR_INVALIDDATA;
1556
1559
1560 return hr;
1561}
HRESULT WINAPI D3DXGetImageInfoFromFileInMemory(const void *data, UINT datasize, D3DXIMAGE_INFO *info)
Definition: surface.c:1489

◆ D3DXGetImageInfoFromResourceA()

HRESULT WINAPI D3DXGetImageInfoFromResourceA ( HMODULE  module,
const char *  resource,
D3DXIMAGE_INFO *  info 
)

Definition at line 1572 of file surface.c.

1573{
1574 HRSRC resinfo;
1575 void *buffer;
1576 DWORD size;
1577
1578 TRACE("module %p, resource %s, info %p.\n", module, debugstr_a(resource), info);
1579
1580 if (!(resinfo = FindResourceA(module, resource, (const char *)RT_RCDATA))
1581 /* Try loading the resource as bitmap data (which is in DIB format D3DXIFF_DIB) */
1582 && !(resinfo = FindResourceA(module, resource, (const char *)RT_BITMAP)))
1583 return D3DXERR_INVALIDDATA;
1584
1586 return D3DXERR_INVALIDDATA;
1587
1589}

◆ D3DXGetImageInfoFromResourceW()

HRESULT WINAPI D3DXGetImageInfoFromResourceW ( HMODULE  module,
const WCHAR *  resource,
D3DXIMAGE_INFO *  info 
)

Definition at line 1591 of file surface.c.

1592{
1593 HRSRC resinfo;
1594 void *buffer;
1595 DWORD size;
1596
1597 TRACE("module %p, resource %s, info %p.\n", module, debugstr_w(resource), info);
1598
1599 if (!(resinfo = FindResourceW(module, resource, (const WCHAR *)RT_RCDATA))
1600 /* Try loading the resource as bitmap data (which is in DIB format D3DXIFF_DIB) */
1601 && !(resinfo = FindResourceW(module, resource, (const WCHAR *)RT_BITMAP)))
1602 return D3DXERR_INVALIDDATA;
1603
1605 return D3DXERR_INVALIDDATA;
1606
1608}

◆ D3DXLoadSurfaceFromFileA()

HRESULT WINAPI D3DXLoadSurfaceFromFileA ( struct IDirect3DSurface9 *  destsurface,
const PALETTEENTRY *  destpalette,
const RECT *  destrect,
const char *  srcfile,
const RECT *  srcrect,
DWORD  filter,
D3DCOLOR  colorkey,
D3DXIMAGE_INFO *  srcinfo 
)

Definition at line 1745 of file surface.c.

1748{
1749 WCHAR *src_file_w;
1750 HRESULT hr;
1751 int strlength;
1752
1753 TRACE("dst_surface %p, dst_palette %p, dst_rect %s, src_file %s, "
1754 "src_rect %s, filter %#lx, color_key 0x%08lx, src_info %p.\n",
1755 dst_surface, dst_palette, wine_dbgstr_rect(dst_rect), debugstr_a(src_file),
1756 wine_dbgstr_rect(src_rect), filter, color_key, src_info);
1757
1758 if (!src_file || !dst_surface)
1759 return D3DERR_INVALIDCALL;
1760
1761 strlength = MultiByteToWideChar(CP_ACP, 0, src_file, -1, NULL, 0);
1762 src_file_w = malloc(strlength * sizeof(*src_file_w));
1763 MultiByteToWideChar(CP_ACP, 0, src_file, -1, src_file_w, strlength);
1764
1765 hr = D3DXLoadSurfaceFromFileW(dst_surface, dst_palette, dst_rect,
1766 src_file_w, src_rect, filter, color_key, src_info);
1767 free(src_file_w);
1768
1769 return hr;
1770}
static const char * wine_dbgstr_rect(const RECT *prc)
Definition: atltest.h:160
HRESULT WINAPI D3DXLoadSurfaceFromFileW(IDirect3DSurface9 *dst_surface, const PALETTEENTRY *dst_palette, const RECT *dst_rect, const WCHAR *src_file, const RECT *src_rect, DWORD filter, D3DCOLOR color_key, D3DXIMAGE_INFO *src_info)
Definition: surface.c:1772

◆ D3DXLoadSurfaceFromFileInMemory()

HRESULT WINAPI D3DXLoadSurfaceFromFileInMemory ( struct IDirect3DSurface9 *  destsurface,
const PALETTEENTRY *  destpalette,
const RECT *  destrect,
const void *  srcdata,
UINT  srcdatasize,
const RECT *  srcrect,
DWORD  filter,
D3DCOLOR  colorkey,
D3DXIMAGE_INFO *  srcinfo 
)

Definition at line 1700 of file surface.c.

1703{
1704 struct d3dx_pixels pixels = { 0 };
1705 struct d3dx_image image;
1706 D3DXIMAGE_INFO img_info;
1707 RECT src_rect;
1708 HRESULT hr;
1709
1710 TRACE("dst_surface %p, dst_palette %p, dst_rect %s, src_data %p, src_data_size %u, "
1711 "src_rect %s, filter %#lx, color_key 0x%08lx, src_info %p.\n",
1712 pDestSurface, pDestPalette, wine_dbgstr_rect(pDestRect), pSrcData, SrcDataSize,
1713 wine_dbgstr_rect(pSrcRect), dwFilter, Colorkey, pSrcInfo);
1714
1715 if (!pDestSurface || !pSrcData || !SrcDataSize)
1716 return D3DERR_INVALIDCALL;
1717
1718 if (FAILED(hr = d3dx9_handle_load_filter(&dwFilter)))
1719 return hr;
1720
1721 hr = d3dx_image_init(pSrcData, SrcDataSize, &image, 0, 0);
1722 if (FAILED(hr))
1723 return D3DXERR_INVALIDDATA;
1724
1726 if (pSrcRect)
1727 src_rect = *pSrcRect;
1728 else
1729 SetRect(&src_rect, 0, 0, img_info.Width, img_info.Height);
1730
1732 if (FAILED(hr))
1733 goto exit;
1734
1735 hr = d3dx_load_surface_from_memory(pDestSurface, pDestPalette, pDestRect, pixels.data, image.format, pixels.row_pitch,
1736 pixels.palette, &src_rect, dwFilter, Colorkey);
1737 if (SUCCEEDED(hr) && pSrcInfo)
1738 *pSrcInfo = img_info;
1739
1740exit:
1742 return FAILED(hr) ? D3DXERR_INVALIDDATA : D3D_OK;
1743}
void d3dx_image_cleanup(struct d3dx_image *image)
Definition: surface.c:1392
static HRESULT d3dx_load_surface_from_memory(IDirect3DSurface9 *dst_surface, const PALETTEENTRY *dst_palette, const RECT *dst_rect, const void *src_memory, enum d3dx_pixel_format_id src_format, uint32_t src_pitch, const PALETTEENTRY *src_palette, const RECT *src_rect, DWORD filter, D3DCOLOR color_key)
Definition: surface.c:1610
HRESULT d3dx_image_get_pixels(struct d3dx_image *image, uint32_t layer, uint32_t mip_level, struct d3dx_pixels *pixels)
Definition: surface.c:1398
GLint GLint GLsizei GLsizei GLsizei GLint GLenum GLenum const GLvoid * pixels
Definition: gl.h:1546
#define SUCCEEDED(hr)
Definition: intsafe.h:50
#define exit(n)
Definition: config.h:202

◆ D3DXLoadSurfaceFromFileW()

HRESULT WINAPI D3DXLoadSurfaceFromFileW ( struct IDirect3DSurface9 *  destsurface,
const PALETTEENTRY *  destpalette,
const RECT *  destrect,
const WCHAR *  srcfile,
const RECT *  srcrect,
DWORD  filter,
D3DCOLOR  colorkey,
D3DXIMAGE_INFO *  srcinfo 
)

Definition at line 1772 of file surface.c.

1775{
1776 DWORD data_size;
1777 void *data;
1778 HRESULT hr;
1779
1780 TRACE("dst_surface %p, dst_palette %p, dst_rect %s, src_file %s, "
1781 "src_rect %s, filter %#lx, color_key 0x%08lx, src_info %p.\n",
1782 dst_surface, dst_palette, wine_dbgstr_rect(dst_rect), debugstr_w(src_file),
1783 wine_dbgstr_rect(src_rect), filter, color_key, src_info);
1784
1785 if (!src_file || !dst_surface)
1786 return D3DERR_INVALIDCALL;
1787
1788 if (FAILED(map_view_of_file(src_file, &data, &data_size)))
1789 return D3DXERR_INVALIDDATA;
1790
1791 hr = D3DXLoadSurfaceFromFileInMemory(dst_surface, dst_palette, dst_rect,
1792 data, data_size, src_rect, filter, color_key, src_info);
1794
1795 return hr;
1796}
HRESULT WINAPI D3DXLoadSurfaceFromFileInMemory(IDirect3DSurface9 *pDestSurface, const PALETTEENTRY *pDestPalette, const RECT *pDestRect, const void *pSrcData, UINT SrcDataSize, const RECT *pSrcRect, DWORD dwFilter, D3DCOLOR Colorkey, D3DXIMAGE_INFO *pSrcInfo)
Definition: surface.c:1700

◆ D3DXLoadSurfaceFromMemory()

HRESULT WINAPI D3DXLoadSurfaceFromMemory ( IDirect3DSurface9 *  dst_surface,
const PALETTEENTRY *  dst_palette,
const RECT *  dst_rect,
const void *  src_memory,
D3DFORMAT  src_format,
UINT  src_pitch,
const PALETTEENTRY *  src_palette,
const RECT *  src_rect,
DWORD  filter,
D3DCOLOR  color_key 
)

Definition at line 2702 of file surface.c.

2706{
2707 const struct pixel_format_desc *src_desc;
2708 HRESULT hr;
2709
2710 TRACE("dst_surface %p, dst_palette %p, dst_rect %s, src_memory %p, src_format %#x, "
2711 "src_pitch %u, src_palette %p, src_rect %s, filter %#lx, color_key 0x%08lx.\n",
2712 dst_surface, dst_palette, wine_dbgstr_rect(dst_rect), src_memory, src_format,
2713 src_pitch, src_palette, wine_dbgstr_rect(src_rect), filter, color_key);
2714
2715 if (!dst_surface || !src_memory || !src_rect)
2716 {
2717 WARN("Invalid argument specified.\n");
2718 return D3DERR_INVALIDCALL;
2719 }
2720
2722 return hr;
2723
2724 if (src_format == D3DFMT_UNKNOWN
2725 || src_rect->left >= src_rect->right
2726 || src_rect->top >= src_rect->bottom)
2727 {
2728 WARN("Invalid src_format or src_rect.\n");
2729 return E_FAIL;
2730 }
2731
2732 src_desc = get_format_info(src_format);
2733 if (is_unknown_format(src_desc))
2734 {
2735 FIXME("Unsupported format %#x.\n", src_format);
2736 return E_NOTIMPL;
2737 }
2738
2739 return d3dx_load_surface_from_memory(dst_surface, dst_palette, dst_rect, src_memory, src_desc->format, src_pitch,
2740 src_palette, src_rect, filter, color_key);
2741}
long bottom
Definition: dcommon.idl:29
long right
Definition: dcommon.idl:29
long left
Definition: dcommon.idl:29
long top
Definition: dcommon.idl:29

◆ D3DXLoadSurfaceFromResourceA()

HRESULT WINAPI D3DXLoadSurfaceFromResourceA ( struct IDirect3DSurface9 *  destsurface,
const PALETTEENTRY *  destpalette,
const RECT *  destrect,
HMODULE  srcmodule,
const char *  resource,
const RECT *  srcrect,
DWORD  filter,
D3DCOLOR  colorkey,
D3DXIMAGE_INFO *  srcinfo 
)

Definition at line 1798 of file surface.c.

1801{
1802 DWORD data_size;
1803 HRSRC resinfo;
1804 void *data;
1805
1806 TRACE("dst_surface %p, dst_palette %p, dst_rect %s, src_module %p, resource %s, "
1807 "src_rect %s, filter %#lx, color_key 0x%08lx, src_info %p.\n",
1808 dst_surface, dst_palette, wine_dbgstr_rect(dst_rect), src_module, debugstr_a(resource),
1809 wine_dbgstr_rect(src_rect), filter, color_key, src_info);
1810
1811 if (!dst_surface)
1812 return D3DERR_INVALIDCALL;
1813
1814 if (!(resinfo = FindResourceA(src_module, resource, (const char *)RT_RCDATA))
1815 /* Try loading the resource as bitmap data (which is in DIB format D3DXIFF_DIB) */
1816 && !(resinfo = FindResourceA(src_module, resource, (const char *)RT_BITMAP)))
1817 return D3DXERR_INVALIDDATA;
1818
1819 if (FAILED(load_resource_into_memory(src_module, resinfo, &data, &data_size)))
1820 return D3DXERR_INVALIDDATA;
1821
1822 return D3DXLoadSurfaceFromFileInMemory(dst_surface, dst_palette, dst_rect,
1823 data, data_size, src_rect, filter, color_key, src_info);
1824}

◆ D3DXLoadSurfaceFromResourceW()

HRESULT WINAPI D3DXLoadSurfaceFromResourceW ( struct IDirect3DSurface9 *  destsurface,
const PALETTEENTRY *  destpalette,
const RECT *  destrect,
HMODULE  srcmodule,
const WCHAR *  resource,
const RECT *  srcrect,
DWORD  filter,
D3DCOLOR  colorkey,
D3DXIMAGE_INFO *  srcinfo 
)

Definition at line 1826 of file surface.c.

1829{
1830 DWORD data_size;
1831 HRSRC resinfo;
1832 void *data;
1833
1834 TRACE("dst_surface %p, dst_palette %p, dst_rect %s, src_module %p, resource %s, "
1835 "src_rect %s, filter %#lx, color_key 0x%08lx, src_info %p.\n",
1836 dst_surface, dst_palette, wine_dbgstr_rect(dst_rect), src_module, debugstr_w(resource),
1837 wine_dbgstr_rect(src_rect), filter, color_key, src_info);
1838
1839 if (!dst_surface)
1840 return D3DERR_INVALIDCALL;
1841
1842 if (!(resinfo = FindResourceW(src_module, resource, (const WCHAR *)RT_RCDATA))
1843 /* Try loading the resource as bitmap data (which is in DIB format D3DXIFF_DIB) */
1844 && !(resinfo = FindResourceW(src_module, resource, (const WCHAR *)RT_BITMAP)))
1845 return D3DXERR_INVALIDDATA;
1846
1847 if (FAILED(load_resource_into_memory(src_module, resinfo, &data, &data_size)))
1848 return D3DXERR_INVALIDDATA;
1849
1850 return D3DXLoadSurfaceFromFileInMemory(dst_surface, dst_palette, dst_rect,
1851 data, data_size, src_rect, filter, color_key, src_info);
1852}

◆ D3DXLoadSurfaceFromSurface()

HRESULT WINAPI D3DXLoadSurfaceFromSurface ( struct IDirect3DSurface9 *  destsurface,
const PALETTEENTRY *  destpalette,
const RECT *  destrect,
struct IDirect3DSurface9 *  srcsurface,
const PALETTEENTRY *  srcpalette,
const RECT *  srcrect,
DWORD  filter,
D3DCOLOR  colorkey 
)

Definition at line 2765 of file surface.c.

2768{
2769 const struct pixel_format_desc *src_format_desc, *dst_format_desc;
2770 D3DSURFACE_DESC src_desc, dst_desc;
2771 struct volume src_size, dst_size;
2772 IDirect3DSurface9 *temp_surface;
2773 D3DTEXTUREFILTERTYPE d3d_filter;
2776 RECT dst_rect_temp;
2777 HRESULT hr;
2778 RECT s;
2779
2780 TRACE("dst_surface %p, dst_palette %p, dst_rect %s, src_surface %p, "
2781 "src_palette %p, src_rect %s, filter %#lx, color_key 0x%08lx.\n",
2782 dst_surface, dst_palette, wine_dbgstr_rect(dst_rect), src_surface,
2783 src_palette, wine_dbgstr_rect(src_rect), filter, color_key);
2784
2785 if (!dst_surface || !src_surface)
2786 return D3DERR_INVALIDCALL;
2787
2789 return hr;
2790
2791 IDirect3DSurface9_GetDesc(src_surface, &src_desc);
2792 src_format_desc = get_format_info(src_desc.Format);
2793 if (!src_rect)
2794 {
2795 SetRect(&s, 0, 0, src_desc.Width, src_desc.Height);
2796 src_rect = &s;
2797 }
2798 else if (src_rect->left == src_rect->right || src_rect->top == src_rect->bottom)
2799 {
2800 WARN("Empty src_rect specified.\n");
2801 return filter == D3DX_FILTER_NONE ? D3D_OK : E_FAIL;
2802 }
2803 else if (src_rect->left > src_rect->right || src_rect->right > src_desc.Width
2804 || src_rect->left < 0 || src_rect->left > src_desc.Width
2805 || src_rect->top > src_rect->bottom || src_rect->bottom > src_desc.Height
2806 || src_rect->top < 0 || src_rect->top > src_desc.Height)
2807 {
2808 WARN("Invalid src_rect specified.\n");
2809 return D3DERR_INVALIDCALL;
2810 }
2811
2812 src_size.width = src_rect->right - src_rect->left;
2813 src_size.height = src_rect->bottom - src_rect->top;
2814 src_size.depth = 1;
2815
2816 IDirect3DSurface9_GetDesc(dst_surface, &dst_desc);
2817 dst_format_desc = get_format_info(dst_desc.Format);
2818 if (!dst_rect)
2819 {
2820 SetRect(&dst_rect_temp, 0, 0, dst_desc.Width, dst_desc.Height);
2821 dst_rect = &dst_rect_temp;
2822 }
2823 else if (dst_rect->left == dst_rect->right || dst_rect->top == dst_rect->bottom)
2824 {
2825 WARN("Empty dst_rect specified.\n");
2826 return filter == D3DX_FILTER_NONE ? D3D_OK : E_FAIL;
2827 }
2828 else if (dst_rect->left > dst_rect->right || dst_rect->right > dst_desc.Width
2829 || dst_rect->left < 0 || dst_rect->left > dst_desc.Width
2830 || dst_rect->top > dst_rect->bottom || dst_rect->bottom > dst_desc.Height
2831 || dst_rect->top < 0 || dst_rect->top > dst_desc.Height)
2832 {
2833 WARN("Invalid dst_rect specified.\n");
2834 return D3DERR_INVALIDCALL;
2835 }
2836
2837 dst_size.width = dst_rect->right - dst_rect->left;
2838 dst_size.height = dst_rect->bottom - dst_rect->top;
2839 dst_size.depth = 1;
2840
2841 if (!dst_palette && !src_palette && !color_key)
2842 {
2843 if (src_desc.Format == dst_desc.Format
2844 && dst_size.width == src_size.width
2845 && dst_size.height == src_size.height
2846 && color_key == 0
2847 && !(src_rect->left & (src_format_desc->block_width - 1))
2848 && !(src_rect->top & (src_format_desc->block_height - 1))
2849 && !(dst_rect->left & (dst_format_desc->block_width - 1))
2850 && !(dst_rect->top & (dst_format_desc->block_height - 1)))
2851 {
2852 d3d_filter = D3DTEXF_NONE;
2853 }
2854 else
2855 {
2856 switch (filter)
2857 {
2858 case D3DX_FILTER_NONE:
2859 d3d_filter = D3DTEXF_NONE;
2860 break;
2861
2862 case D3DX_FILTER_POINT:
2863 d3d_filter = D3DTEXF_POINT;
2864 break;
2865
2866 case D3DX_FILTER_LINEAR:
2867 d3d_filter = D3DTEXF_LINEAR;
2868 break;
2869
2870 default:
2871 d3d_filter = D3DTEXF_FORCE_DWORD;
2872 break;
2873 }
2874 }
2875
2876 if (d3d_filter != D3DTEXF_FORCE_DWORD)
2877 {
2878 IDirect3DSurface9_GetDevice(src_surface, &device);
2879 hr = IDirect3DDevice9_StretchRect(device, src_surface, src_rect, dst_surface, dst_rect, d3d_filter);
2881 if (SUCCEEDED(hr))
2882 return D3D_OK;
2883 }
2884 }
2885
2886 if (FAILED(lock_surface(src_surface, NULL, &lock, &temp_surface, FALSE)))
2887 return D3DXERR_INVALIDDATA;
2888
2889 hr = D3DXLoadSurfaceFromMemory(dst_surface, dst_palette, dst_rect, lock.pBits,
2890 src_desc.Format, lock.Pitch, src_palette, src_rect, filter, color_key);
2891
2892 if (FAILED(unlock_surface(src_surface, NULL, temp_surface, FALSE)))
2893 return D3DXERR_INVALIDDATA;
2894
2895 return hr;
2896}
@ D3DTEXF_POINT
Definition: d3d8types.h:871
@ D3DTEXF_NONE
Definition: d3d8types.h:870
@ D3DTEXF_LINEAR
Definition: d3d8types.h:872
@ D3DTEXF_FORCE_DWORD
Definition: d3d8types.h:877
enum _D3DTEXTUREFILTERTYPE D3DTEXTUREFILTERTYPE
#define IDirect3DSurface9_GetDevice(p, a)
Definition: d3d9.h:452
#define IDirect3DDevice9_StretchRect(p, a, b, c, d, e)
Definition: d3d9.h:1369
#define IDirect3DSurface9_GetDesc(p, a)
Definition: d3d9.h:462
#define IDirect3DDevice9_Release(p)
Definition: d3d9.h:1336
HRESULT WINAPI D3DXLoadSurfaceFromMemory(IDirect3DSurface9 *dst_surface, const PALETTEENTRY *dst_palette, const RECT *dst_rect, const void *src_memory, D3DFORMAT src_format, UINT src_pitch, const PALETTEENTRY *src_palette, const RECT *src_rect, DWORD filter, D3DCOLOR color_key)
Definition: surface.c:2702
HRESULT unlock_surface(IDirect3DSurface9 *surface, const RECT *surface_rect, IDirect3DSurface9 *temp_surface, BOOL update)
Definition: surface.c:214
HRESULT lock_surface(IDirect3DSurface9 *surface, const RECT *surface_rect, D3DLOCKED_RECT *lock, IDirect3DSurface9 **temp_surface, BOOL write)
Definition: surface.c:156
#define D3DX_FILTER_LINEAR
Definition: d3dx9tex.h:29
#define D3DX_FILTER_POINT
Definition: d3dx9tex.h:28
#define D3DX_FILTER_NONE
Definition: d3dx9tex.h:27
DWORD IDirect3DDevice9
Definition: dxva2api.idl:22
D3DFORMAT Format
Definition: d3d8types.h:1170
rwlock_t lock
Definition: tcpcore.h:0

◆ D3DXLoadVolumeFromFileA()

HRESULT WINAPI D3DXLoadVolumeFromFileA ( struct IDirect3DVolume9 *  destvolume,
const PALETTEENTRY *  destpalette,
const D3DBOX *  destbox,
const char *  srcfile,
const D3DBOX *  srcbox,
DWORD  filter,
D3DCOLOR  colorkey,
D3DXIMAGE_INFO *  srcinfo 
)

Definition at line 24 of file volume.c.

27{
28 HRESULT hr;
29 int length;
31
32 TRACE("dst_volume %p, dst_palette %p, dst_box %p, filename %s, src_box %p, filter %#lx, "
33 "color_key 0x%08lx, info %p.\n",
34 dst_volume, dst_palette, dst_box, debugstr_a(filename), src_box, filter, color_key, info);
35
36 if (!dst_volume || !filename) return D3DERR_INVALIDCALL;
37
39 filenameW = malloc(length * sizeof(*filenameW));
40 if (!filenameW) return E_OUTOFMEMORY;
42
43 hr = D3DXLoadVolumeFromFileW(dst_volume, dst_palette, dst_box, filenameW,
44 src_box, filter, color_key, info);
46
47 return hr;
48}
HRESULT WINAPI D3DXLoadVolumeFromFileW(IDirect3DVolume9 *dst_volume, const PALETTEENTRY *dst_palette, const D3DBOX *dst_box, const WCHAR *filename, const D3DBOX *src_box, DWORD filter, D3DCOLOR color_key, D3DXIMAGE_INFO *info)
Definition: volume.c:50
GLuint GLsizei GLsizei * length
Definition: glext.h:6040

◆ D3DXLoadVolumeFromFileInMemory()

HRESULT WINAPI D3DXLoadVolumeFromFileInMemory ( struct IDirect3DVolume9 *  destvolume,
const PALETTEENTRY *  destpalette,
const D3DBOX *  destbox,
const void *  srcdata,
UINT  srcdatasize,
const D3DBOX *  srcbox,
DWORD  filter,
D3DCOLOR  colorkey,
D3DXIMAGE_INFO *  srcinfo 
)

Definition at line 179 of file volume.c.

182{
183 HRESULT hr;
184 D3DBOX box;
185 struct d3dx_image image;
186 struct d3dx_pixels pixels;
187 D3DXIMAGE_INFO image_info;
188
189 TRACE("dst_volume %p, dst_palette %p, dst_box %p, src_data %p, src_data_size %u, src_box %p, "
190 "filter %#lx, color_key 0x%08lx, src_info %p.\n",
191 dst_volume, dst_palette, dst_box, src_data, src_data_size, src_box,
192 filter, color_key, src_info);
193
194 if (!dst_volume || !src_data || !src_data_size)
195 return D3DERR_INVALIDCALL;
196
198 return hr;
199
200 hr = d3dx_image_init(src_data, src_data_size, &image, 0, 0);
201 if (FAILED(hr))
202 return D3DXERR_INVALIDDATA;
203
205 if (src_box)
206 {
207 if (src_box->Right > image_info.Width
208 || src_box->Bottom > image_info.Height
209 || src_box->Back > image_info.Depth)
210 {
212 goto exit;
213 }
214 if (src_box->Left >= src_box->Right || src_box->Top >= src_box->Bottom
215 || src_box->Front >= src_box->Back)
216 {
217 hr = E_FAIL;
218 goto exit;
219 }
220
221 box = *src_box;
222 }
223 else
224 {
225 set_d3dbox(&box, 0, 0, image_info.Width, image_info.Height, 0, image_info.Depth);
226 }
227
229 if (FAILED(hr))
230 goto exit;
231
232 hr = d3dx_load_volume_from_memory(dst_volume, dst_palette, dst_box, pixels.data, image.format,
233 pixels.row_pitch, pixels.slice_pitch, pixels.palette, &box, filter, color_key);
234 if (SUCCEEDED(hr) && src_info)
235 *src_info = image_info;
236
237exit:
239 return FAILED(hr) ? hr : D3D_OK;
240}
static HRESULT d3dx_load_volume_from_memory(IDirect3DVolume9 *dst_volume, const PALETTEENTRY *dst_palette, const D3DBOX *dst_box, const void *src_memory, enum d3dx_pixel_format_id src_format, uint32_t src_row_pitch, uint32_t src_slice_pitch, const PALETTEENTRY *src_palette, const D3DBOX *src_box, DWORD filter, D3DCOLOR color_key)
Definition: volume.c:85
static void set_d3dbox(D3DBOX *box, uint32_t left, uint32_t top, uint32_t right, uint32_t bottom, uint32_t front, uint32_t back)
Definition: volume.c:74
Definition: palette.c:466

◆ D3DXLoadVolumeFromFileW()

HRESULT WINAPI D3DXLoadVolumeFromFileW ( struct IDirect3DVolume9 *  destvolume,
const PALETTEENTRY *  destpalette,
const D3DBOX *  destbox,
const WCHAR *  srcfile,
const D3DBOX *  srcbox,
DWORD  filter,
D3DCOLOR  colorkey,
D3DXIMAGE_INFO *  srcinfo 
)

Definition at line 50 of file volume.c.

53{
54 DWORD data_size;
55 HRESULT hr;
56 void *data;
57
58 TRACE("dst_volume %p, dst_palette %p, dst_box %p, filename %s, src_box %p, filter %#lx, "
59 "color_key 0x%08lx, info %p.\n",
60 dst_volume, dst_palette, dst_box, debugstr_w(filename), src_box, filter, color_key, info);
61
62 if (!dst_volume || !filename) return D3DERR_INVALIDCALL;
63
64 if (FAILED(map_view_of_file(filename, &data, &data_size)))
66
67 hr = D3DXLoadVolumeFromFileInMemory(dst_volume, dst_palette, dst_box,
68 data, data_size, src_box, filter, color_key, info);
70
71 return hr;
72}
HRESULT WINAPI D3DXLoadVolumeFromFileInMemory(IDirect3DVolume9 *dst_volume, const PALETTEENTRY *dst_palette, const D3DBOX *dst_box, const void *src_data, UINT src_data_size, const D3DBOX *src_box, DWORD filter, D3DCOLOR color_key, D3DXIMAGE_INFO *src_info)
Definition: volume.c:179

◆ D3DXLoadVolumeFromMemory()

HRESULT WINAPI D3DXLoadVolumeFromMemory ( struct IDirect3DVolume9 *  destvolume,
const PALETTEENTRY *  destpalette,
const D3DBOX *  destbox,
const void *  srcmemory,
D3DFORMAT  srcformat,
UINT  srcrowpitch,
UINT  srcslicepitch,
const PALETTEENTRY *  srcpalette,
const D3DBOX *  srcbox,
DWORD  filter,
D3DCOLOR  colorkey 
)

Definition at line 146 of file volume.c.

150{
151 const struct pixel_format_desc *src_format_desc;
152 HRESULT hr;
153
154 TRACE("dst_volume %p, dst_palette %p, dst_box %p, src_memory %p, src_format %#x, "
155 "src_row_pitch %u, src_slice_pitch %u, src_palette %p, src_box %p, filter %#lx, color_key 0x%08lx.\n",
156 dst_volume, dst_palette, dst_box, src_memory, src_format, src_row_pitch, src_slice_pitch,
157 src_palette, src_box, filter, color_key);
158
159 if (!dst_volume || !src_memory || !src_box)
160 return D3DERR_INVALIDCALL;
161
162 if (src_format == D3DFMT_UNKNOWN
163 || src_box->Left >= src_box->Right
164 || src_box->Top >= src_box->Bottom
165 || src_box->Front >= src_box->Back)
166 return E_FAIL;
167
169 return hr;
170
171 src_format_desc = get_format_info(src_format);
172 if (is_unknown_format(src_format_desc))
173 return E_NOTIMPL;
174
175 return d3dx_load_volume_from_memory(dst_volume, dst_palette, dst_box, src_memory, src_format_desc->format,
176 src_row_pitch, src_slice_pitch, src_palette, src_box, filter, color_key);
177}

◆ D3DXLoadVolumeFromResourceA()

HRESULT WINAPI D3DXLoadVolumeFromResourceA ( struct IDirect3DVolume9 *  destvolume,
const PALETTEENTRY *  destpalette,
const D3DBOX *  destbox,
HMODULE  srcmodule,
const char *  resource,
const D3DBOX *  srcbox,
DWORD  filter,
D3DCOLOR  colorkey,
D3DXIMAGE_INFO *  srcinfo 
)

◆ D3DXLoadVolumeFromResourceW()

HRESULT WINAPI D3DXLoadVolumeFromResourceW ( struct IDirect3DVolume9 *  destvolume,
const PALETTEENTRY *  destpalette,
const D3DBOX *  destbox,
HMODULE  srcmodule,
const WCHAR *  resource,
const D3DBOX *  srcbox,
DWORD  filter,
D3DCOLOR  colorkey,
D3DXIMAGE_INFO *  srcinfo 
)

◆ D3DXLoadVolumeFromVolume()

HRESULT WINAPI D3DXLoadVolumeFromVolume ( struct IDirect3DVolume9 *  destvolume,
const PALETTEENTRY *  destpalette,
const D3DBOX *  destbox,
struct IDirect3DVolume9 *  srcvolume,
const PALETTEENTRY *  srcpalette,
const D3DBOX *  srcbox,
DWORD  filter,
D3DCOLOR  colorkey 
)

Definition at line 242 of file volume.c.

245{
246 HRESULT hr;
247 D3DBOX box;
249 D3DLOCKED_BOX locked_box;
250
251 TRACE("dst_volume %p, dst_palette %p, dst_box %p, src_volume %p, src_palette %p, src_box %p, "
252 "filter %#lx, color_key 0x%08lx.\n",
253 dst_volume, dst_palette, dst_box, src_volume, src_palette, src_box, filter, color_key);
254
255 if (!dst_volume || !src_volume) return D3DERR_INVALIDCALL;
256
258 return hr;
259
260 IDirect3DVolume9_GetDesc(src_volume, &desc);
261
262 if (!src_box)
263 {
264 box.Left = box.Top = 0;
265 box.Right = desc.Width;
266 box.Bottom = desc.Height;
267 box.Front = 0;
268 box.Back = desc.Depth;
269 }
270 else box = *src_box;
271
272 hr = IDirect3DVolume9_LockBox(src_volume, &locked_box, NULL, D3DLOCK_READONLY);
273 if (FAILED(hr)) return hr;
274
275 hr = D3DXLoadVolumeFromMemory(dst_volume, dst_palette, dst_box,
276 locked_box.pBits, desc.Format, locked_box.RowPitch, locked_box.SlicePitch,
277 src_palette, &box, filter, color_key);
278
279 IDirect3DVolume9_UnlockBox(src_volume);
280 return hr;
281}
#define D3DLOCK_READONLY
Definition: d3d8types.h:69
#define IDirect3DVolume9_UnlockBox(p)
Definition: d3d9.h:286
#define IDirect3DVolume9_LockBox(p, a, b, c)
Definition: d3d9.h:285
#define IDirect3DVolume9_GetDesc(p, a)
Definition: d3d9.h:284
HRESULT WINAPI D3DXLoadVolumeFromMemory(IDirect3DVolume9 *dst_volume, const PALETTEENTRY *dst_palette, const D3DBOX *dst_box, const void *src_memory, D3DFORMAT src_format, UINT src_row_pitch, UINT src_slice_pitch, const PALETTEENTRY *src_palette, const D3DBOX *src_box, DWORD filter, D3DCOLOR color_key)
Definition: volume.c:146

◆ D3DXSaveSurfaceToFileA()

HRESULT WINAPI D3DXSaveSurfaceToFileA ( const char *  destfile,
D3DXIMAGE_FILEFORMAT  destformat,
struct IDirect3DSurface9 *  srcsurface,
const PALETTEENTRY *  srcpalette,
const RECT *  srcrect 
)

Definition at line 2899 of file surface.c.

2901{
2902 int len;
2903 WCHAR *filename;
2904 HRESULT hr;
2906
2907 TRACE("(%s, %#x, %p, %p, %s): relay\n",
2908 wine_dbgstr_a(dst_filename), file_format, src_surface, src_palette, wine_dbgstr_rect(src_rect));
2909
2910 if (!dst_filename) return D3DERR_INVALIDCALL;
2911
2912 len = MultiByteToWideChar(CP_ACP, 0, dst_filename, -1, NULL, 0);
2913 filename = malloc(len * sizeof(WCHAR));
2914 if (!filename) return E_OUTOFMEMORY;
2915 MultiByteToWideChar(CP_ACP, 0, dst_filename, -1, filename, len);
2916
2917 hr = D3DXSaveSurfaceToFileInMemory(&buffer, file_format, src_surface, src_palette, src_rect);
2918 if (SUCCEEDED(hr))
2919 {
2922 }
2923
2924 free(filename);
2925 return hr;
2926}
struct ID3DXBuffer ID3DXBuffer
Definition: d3dx8core.h:51
HRESULT write_buffer_to_file(const WCHAR *filename, ID3DXBuffer *buffer)
Definition: util.c:277
HRESULT WINAPI D3DXSaveSurfaceToFileInMemory(ID3DXBuffer **dst_buffer, D3DXIMAGE_FILEFORMAT file_format, IDirect3DSurface9 *src_surface, const PALETTEENTRY *src_palette, const RECT *src_rect)
Definition: surface.c:2949
#define ID3DXBuffer_Release(p)
Definition: d3dx9core.h:83

◆ D3DXSaveSurfaceToFileInMemory()

HRESULT WINAPI D3DXSaveSurfaceToFileInMemory ( struct ID3DXBuffer **  destbuffer,
D3DXIMAGE_FILEFORMAT  destformat,
struct IDirect3DSurface9 *  srcsurface,
const PALETTEENTRY *  srcpalette,
const RECT *  srcrect 
)

Definition at line 2949 of file surface.c.

2951{
2953 IWICBitmapFrameEncode *frame = NULL;
2954 IPropertyBag2 *encoder_options = NULL;
2955 IStream *stream = NULL;
2956 HRESULT hr;
2957 const GUID *container_format;
2958 const GUID *pixel_format_guid;
2959 WICPixelFormatGUID wic_pixel_format;
2961 D3DFORMAT d3d_pixel_format;
2962 D3DSURFACE_DESC src_surface_desc;
2963 IDirect3DSurface9 *temp_surface;
2964 D3DLOCKED_RECT locked_rect;
2965 int width, height;
2966 STATSTG stream_stats;
2967 HGLOBAL stream_hglobal;
2969 DWORD size;
2970
2971 TRACE("dst_buffer %p, file_format %#x, src_surface %p, src_palette %p, src_rect %s.\n",
2972 dst_buffer, file_format, src_surface, src_palette, wine_dbgstr_rect(src_rect));
2973
2974 if (!dst_buffer || !src_surface) return D3DERR_INVALIDCALL;
2975
2976 IDirect3DSurface9_GetDesc(src_surface, &src_surface_desc);
2977 if (file_format != D3DXIFF_DDS && (src_palette || is_index_format(get_format_info(src_surface_desc.Format))))
2978 {
2979 FIXME("Saving surfaces with palettized pixel formats to non-DDS files is not implemented yet.\n");
2980 return D3DERR_INVALIDCALL;
2981 }
2982
2983 switch (file_format)
2984 {
2985 case D3DXIFF_BMP:
2986 case D3DXIFF_DIB:
2987 container_format = &GUID_ContainerFormatBmp;
2988 break;
2989 case D3DXIFF_PNG:
2990 container_format = &GUID_ContainerFormatPng;
2991 break;
2992 case D3DXIFF_JPG:
2993 container_format = &GUID_ContainerFormatJpeg;
2994 break;
2995 case D3DXIFF_DDS:
2996 return save_dds_surface_to_memory(dst_buffer, src_surface, src_palette, src_rect);
2997 case D3DXIFF_HDR:
2998 case D3DXIFF_PFM:
2999 case D3DXIFF_TGA:
3000 case D3DXIFF_PPM:
3001 FIXME("File format %#x is not supported yet\n", file_format);
3002 return E_NOTIMPL;
3003 default:
3004 return D3DERR_INVALIDCALL;
3005 }
3006
3007 if (src_rect)
3008 {
3009 if (src_rect->left == src_rect->right || src_rect->top == src_rect->bottom)
3010 {
3011 WARN("Invalid rectangle with 0 area\n");
3012 return D3DXCreateBuffer(64, dst_buffer);
3013 }
3014 if (src_rect->left < 0 || src_rect->top < 0)
3015 return D3DERR_INVALIDCALL;
3016 if (src_rect->left > src_rect->right || src_rect->top > src_rect->bottom)
3017 return D3DERR_INVALIDCALL;
3018 if (src_rect->right > src_surface_desc.Width || src_rect->bottom > src_surface_desc.Height)
3019 return D3DERR_INVALIDCALL;
3020
3021 width = src_rect->right - src_rect->left;
3022 height = src_rect->bottom - src_rect->top;
3023 }
3024 else
3025 {
3026 width = src_surface_desc.Width;
3027 height = src_surface_desc.Height;
3028 }
3029
3030 hr = WICCreateImagingFactory_Proxy(WINCODEC_SDK_VERSION, &factory);
3031 if (FAILED(hr)) goto cleanup_err;
3032
3033 hr = IWICImagingFactory_CreateEncoder(factory, container_format, NULL, &encoder);
3034 IWICImagingFactory_Release(factory);
3035 if (FAILED(hr)) goto cleanup_err;
3036
3038 if (FAILED(hr)) goto cleanup_err;
3039
3040 hr = IWICBitmapEncoder_Initialize(encoder, stream, WICBitmapEncoderNoCache);
3041 if (FAILED(hr)) goto cleanup_err;
3042
3043 hr = IWICBitmapEncoder_CreateNewFrame(encoder, &frame, &encoder_options);
3044 if (FAILED(hr)) goto cleanup_err;
3045
3046 hr = IWICBitmapFrameEncode_Initialize(frame, encoder_options);
3047 if (FAILED(hr)) goto cleanup_err;
3048
3049 hr = IWICBitmapFrameEncode_SetSize(frame, width, height);
3050 if (FAILED(hr)) goto cleanup_err;
3051
3052 pixel_format_guid = wic_guid_from_d3dformat(src_surface_desc.Format);
3053 if (!pixel_format_guid)
3054 {
3055 FIXME("Pixel format %#x is not supported yet\n", src_surface_desc.Format);
3056 hr = E_NOTIMPL;
3057 goto cleanup;
3058 }
3059
3060 memcpy(&wic_pixel_format, pixel_format_guid, sizeof(GUID));
3061 hr = IWICBitmapFrameEncode_SetPixelFormat(frame, &wic_pixel_format);
3063 if (SUCCEEDED(hr) && d3d_pixel_format != D3DFMT_UNKNOWN)
3064 {
3065 TRACE("Using pixel format %s %#x\n", debugstr_guid(&wic_pixel_format), d3d_pixel_format);
3066 if (src_surface_desc.Format == d3d_pixel_format) /* Simple copy */
3067 {
3068 if (FAILED(hr = lock_surface(src_surface, src_rect, &locked_rect, &temp_surface, FALSE)))
3069 goto cleanup;
3070
3071 IWICBitmapFrameEncode_WritePixels(frame, height,
3072 locked_rect.Pitch, height * locked_rect.Pitch, locked_rect.pBits);
3073 unlock_surface(src_surface, src_rect, temp_surface, FALSE);
3074 }
3075 else /* Pixel format conversion */
3076 {
3077 const struct pixel_format_desc *src_format_desc, *dst_format_desc;
3078 struct volume size;
3079 DWORD dst_pitch;
3080 void *dst_data;
3081
3082 src_format_desc = get_format_info(src_surface_desc.Format);
3083 dst_format_desc = get_format_info(d3d_pixel_format);
3084 if (!is_conversion_from_supported(src_format_desc)
3085 || !is_conversion_to_supported(dst_format_desc))
3086 {
3087 FIXME("Unsupported format conversion %#x -> %#x.\n",
3088 src_surface_desc.Format, d3d_pixel_format);
3089 hr = E_NOTIMPL;
3090 goto cleanup;
3091 }
3092
3093 size.width = width;
3094 size.height = height;
3095 size.depth = 1;
3096 dst_pitch = width * dst_format_desc->bytes_per_pixel;
3097 dst_data = malloc(dst_pitch * height);
3098 if (!dst_data)
3099 {
3100 hr = E_OUTOFMEMORY;
3101 goto cleanup;
3102 }
3103 if (FAILED(hr = lock_surface(src_surface, src_rect, &locked_rect, &temp_surface, FALSE)))
3104 {
3105 free(dst_data);
3106 goto cleanup;
3107 }
3108 convert_argb_pixels(locked_rect.pBits, locked_rect.Pitch, 0, &size, src_format_desc,
3109 dst_data, dst_pitch, 0, &size, dst_format_desc, 0, NULL);
3110 unlock_surface(src_surface, src_rect, temp_surface, FALSE);
3111
3112 IWICBitmapFrameEncode_WritePixels(frame, height, dst_pitch, dst_pitch * height, dst_data);
3113 free(dst_data);
3114 }
3115
3116 hr = IWICBitmapFrameEncode_Commit(frame);
3117 if (SUCCEEDED(hr)) hr = IWICBitmapEncoder_Commit(encoder);
3118 }
3119 else WARN("Unsupported pixel format %#x\n", src_surface_desc.Format);
3120
3121 /* copy data from stream to ID3DXBuffer */
3122 hr = IStream_Stat(stream, &stream_stats, STATFLAG_NONAME);
3123 if (FAILED(hr)) goto cleanup_err;
3124
3125 if (stream_stats.cbSize.u.HighPart != 0)
3126 {
3128 goto cleanup;
3129 }
3130 size = stream_stats.cbSize.u.LowPart;
3131
3132 /* Remove BMP header for DIB */
3133 if (file_format == D3DXIFF_DIB)
3134 size -= sizeof(BITMAPFILEHEADER);
3135
3137 if (FAILED(hr)) goto cleanup;
3138
3139 hr = GetHGlobalFromStream(stream, &stream_hglobal);
3140 if (SUCCEEDED(hr))
3141 {
3142 void *buffer_pointer = ID3DXBuffer_GetBufferPointer(buffer);
3143 void *stream_data = GlobalLock(stream_hglobal);
3144 /* Remove BMP header for DIB */
3145 if (file_format == D3DXIFF_DIB)
3146 stream_data = (void*)((BYTE*)stream_data + sizeof(BITMAPFILEHEADER));
3147 memcpy(buffer_pointer, stream_data, size);
3148 GlobalUnlock(stream_hglobal);
3149 *dst_buffer = buffer;
3150 }
3152
3153cleanup_err:
3154 if (FAILED(hr) && hr != E_OUTOFMEMORY)
3156
3157cleanup:
3158 if (stream) IStream_Release(stream);
3159
3160 if (frame) IWICBitmapFrameEncode_Release(frame);
3161 if (encoder_options) IPropertyBag2_Release(encoder_options);
3162
3163 if (encoder) IWICBitmapEncoder_Release(encoder);
3164
3165 return hr;
3166}
enum _D3DFORMAT D3DFORMAT
static BOOL is_conversion_to_supported(const struct pixel_format_desc *format)
static BOOL is_conversion_from_supported(const struct pixel_format_desc *format)
D3DFORMAT d3dformat_from_d3dx_pixel_format_id(enum d3dx_pixel_format_id format)
Definition: util.c:83
HRESULT WINAPI D3DXCreateBuffer(DWORD size, ID3DXBuffer **buffer)
Definition: core.c:127
static const GUID * wic_guid_from_d3dformat(D3DFORMAT format)
Definition: surface.c:68
void convert_argb_pixels(const BYTE *src, UINT src_row_pitch, UINT src_slice_pitch, const struct volume *src_size, const struct pixel_format_desc *src_format, BYTE *dst, UINT dst_row_pitch, UINT dst_slice_pitch, const struct volume *dst_size, const struct pixel_format_desc *dst_format, D3DCOLOR color_key, const PALETTEENTRY *palette)
Definition: surface.c:2180
static HRESULT save_dds_surface_to_memory(ID3DXBuffer **dst_buffer, IDirect3DSurface9 *src_surface, const PALETTEENTRY *src_palette, const RECT *src_rect)
Definition: surface.c:562
static enum d3dx_pixel_format_id d3dx_pixel_format_id_from_wic_pixel_format(const GUID *guid)
Definition: surface.c:54
HRESULT WINAPI WICCreateImagingFactory_Proxy(UINT, IWICImagingFactory **)
Definition: proxy.c:649
HRESULT WINAPI GetHGlobalFromStream(IStream *stream, HGLOBAL *phglobal)
HRESULT WINAPI CreateStreamOnHGlobal(HGLOBAL hGlobal, BOOL delete_on_release, IStream **stream)
static void cleanup(void)
Definition: main.c:1335
@ D3DXIFF_JPG
Definition: dx8vb.idl:63
@ D3DXIFF_DDS
Definition: dx8vb.idl:66
@ D3DXIFF_BMP
Definition: dx8vb.idl:62
@ D3DXIFF_TGA
Definition: dx8vb.idl:64
@ D3DXIFF_DIB
Definition: dx8vb.idl:68
@ D3DXIFF_PPM
Definition: dx8vb.idl:67
@ D3DXIFF_PNG
Definition: dx8vb.idl:65
#define ID3DXBuffer_GetBufferPointer(p)
Definition: d3dx9core.h:85
BOOL NTAPI GlobalUnlock(HGLOBAL hMem)
Definition: heapmem.c:1190
static ERESOURCE GlobalLock
Definition: sys_arch.c:8
#define debugstr_guid
Definition: kernel32.h:35
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
static const char stream_data[]
Definition: mlang.c:2412
Definition: main.c:439
Definition: parse.h:23
@ WICBitmapEncoderNoCache
Definition: wincodec.idl:73
struct tagBITMAPFILEHEADER BITMAPFILEHEADER

◆ D3DXSaveSurfaceToFileW()

HRESULT WINAPI D3DXSaveSurfaceToFileW ( const WCHAR *  destfile,
D3DXIMAGE_FILEFORMAT  destformat,
struct IDirect3DSurface9 *  srcsurface,
const PALETTEENTRY *  srcpalette,
const RECT *  srcrect 
)

Definition at line 2928 of file surface.c.

2930{
2931 HRESULT hr;
2933
2934 TRACE("(%s, %#x, %p, %p, %s): relay\n",
2935 wine_dbgstr_w(dst_filename), file_format, src_surface, src_palette, wine_dbgstr_rect(src_rect));
2936
2937 if (!dst_filename) return D3DERR_INVALIDCALL;
2938
2939 hr = D3DXSaveSurfaceToFileInMemory(&buffer, file_format, src_surface, src_palette, src_rect);
2940 if (SUCCEEDED(hr))
2941 {
2942 hr = write_buffer_to_file(dst_filename, buffer);
2944 }
2945
2946 return hr;
2947}

◆ D3DXSaveTextureToFileA()

HRESULT WINAPI D3DXSaveTextureToFileA ( const char *  destfile,
D3DXIMAGE_FILEFORMAT  destformat,
struct IDirect3DBaseTexture9 *  srctexture,
const PALETTEENTRY *  srcpalette 
)

Definition at line 1806 of file texture.c.

1808{
1809 int len;
1810 WCHAR *filename;
1811 HRESULT hr;
1813
1814 TRACE("dst_filename %s, file_format %u, src_texture %p, src_palette %p.\n",
1815 wine_dbgstr_a(dst_filename), file_format, src_texture, src_palette);
1816
1817 if (!dst_filename) return D3DERR_INVALIDCALL;
1818
1819 len = MultiByteToWideChar(CP_ACP, 0, dst_filename, -1, NULL, 0);
1820 filename = malloc(len * sizeof(WCHAR));
1821 if (!filename) return E_OUTOFMEMORY;
1822 MultiByteToWideChar(CP_ACP, 0, dst_filename, -1, filename, len);
1823
1824 hr = D3DXSaveTextureToFileInMemory(&buffer, file_format, src_texture, src_palette);
1825 if (SUCCEEDED(hr))
1826 {
1829 }
1830
1831 free(filename);
1832 return hr;
1833}
HRESULT WINAPI D3DXSaveTextureToFileInMemory(ID3DXBuffer **dst_buffer, D3DXIMAGE_FILEFORMAT file_format, IDirect3DBaseTexture9 *src_texture, const PALETTEENTRY *src_palette)
Definition: texture.c:1856

◆ D3DXSaveTextureToFileInMemory()

HRESULT WINAPI D3DXSaveTextureToFileInMemory ( struct ID3DXBuffer **  destbuffer,
D3DXIMAGE_FILEFORMAT  destformat,
struct IDirect3DBaseTexture9 *  srctexture,
const PALETTEENTRY *  srcpalette 
)

Definition at line 1856 of file texture.c.

1858{
1859 HRESULT hr;
1861 IDirect3DSurface9 *surface;
1862
1863 TRACE("dst_buffer %p, file_format %u, src_texture %p, src_palette %p.\n",
1864 dst_buffer, file_format, src_texture, src_palette);
1865
1866 if (!dst_buffer || !src_texture) return D3DERR_INVALIDCALL;
1867
1868 if (file_format == D3DXIFF_DDS)
1869 {
1870 FIXME("DDS file format isn't supported yet\n");
1871 return E_NOTIMPL;
1872 }
1873
1874 type = IDirect3DBaseTexture9_GetType(src_texture);
1875 switch (type)
1876 {
1877 case D3DRTYPE_TEXTURE:
1879 hr = get_surface(type, src_texture, D3DCUBEMAP_FACE_POSITIVE_X, 0, &surface);
1880 break;
1882 FIXME("Volume textures aren't supported yet\n");
1883 return E_NOTIMPL;
1884 default:
1885 return D3DERR_INVALIDCALL;
1886 }
1887
1888 if (SUCCEEDED(hr))
1889 {
1890 hr = D3DXSaveSurfaceToFileInMemory(dst_buffer, file_format, surface, src_palette, NULL);
1892 }
1893
1894 return hr;
1895}

◆ D3DXSaveTextureToFileW()

HRESULT WINAPI D3DXSaveTextureToFileW ( const WCHAR *  destfile,
D3DXIMAGE_FILEFORMAT  destformat,
struct IDirect3DBaseTexture9 *  srctexture,
const PALETTEENTRY *  srcpalette 
)

Definition at line 1835 of file texture.c.

1837{
1838 HRESULT hr;
1840
1841 TRACE("dst_filename %s, file_format %u, src_texture %p, src_palette %p.\n",
1842 wine_dbgstr_w(dst_filename), file_format, src_texture, src_palette);
1843
1844 if (!dst_filename) return D3DERR_INVALIDCALL;
1845
1846 hr = D3DXSaveTextureToFileInMemory(&buffer, file_format, src_texture, src_palette);
1847 if (SUCCEEDED(hr))
1848 {
1849 hr = write_buffer_to_file(dst_filename, buffer);
1851 }
1852
1853 return hr;
1854}

◆ D3DXSaveVolumeToFileA()

HRESULT WINAPI D3DXSaveVolumeToFileA ( const char *  destfile,
D3DXIMAGE_FILEFORMAT  destformat,
struct IDirect3DVolume9 *  srcvolume,
const PALETTEENTRY *  srcpalette,
const D3DBOX *  srcbox 
)

◆ D3DXSaveVolumeToFileW()

HRESULT WINAPI D3DXSaveVolumeToFileW ( const WCHAR *  destfile,
D3DXIMAGE_FILEFORMAT  destformat,
struct IDirect3DVolume9 *  srcvolume,
const PALETTEENTRY *  srcpalette,
const D3DBOX *  srcbox 
)