d3dx9: Implement D3DXLoadVolumeFromVolume.

This commit is contained in:
Józef Kucia 2012-06-29 14:17:00 +02:00 committed by Alexandre Julliard
parent 09519eece1
commit 9e262e1a9b
2 changed files with 44 additions and 1 deletions

View File

@ -195,7 +195,7 @@
@ stdcall D3DXLoadVolumeFromMemory(ptr ptr ptr ptr long long long ptr ptr long long)
@ stub D3DXLoadVolumeFromResourceA(ptr ptr ptr long ptr ptr long long ptr)
@ stub D3DXLoadVolumeFromResourceW(ptr ptr ptr long ptr ptr long long ptr)
@ stub D3DXLoadVolumeFromVolume(ptr ptr ptr ptr ptr ptr long long)
@ stdcall D3DXLoadVolumeFromVolume(ptr ptr ptr ptr ptr ptr long long)
@ stdcall D3DXMatrixAffineTransformation(ptr float ptr ptr ptr)
@ stdcall D3DXMatrixAffineTransformation2D(ptr float ptr float ptr)
@ stdcall D3DXMatrixDecompose(ptr ptr ptr ptr)

View File

@ -141,3 +141,46 @@ HRESULT WINAPI D3DXLoadVolumeFromMemory(IDirect3DVolume9 *dst_volume,
return D3D_OK;
}
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)
{
HRESULT hr;
D3DBOX box;
D3DVOLUME_DESC desc;
D3DLOCKED_BOX locked_box;
TRACE("(%p, %p, %p, %p, %p, %p, %#x, %#x)\n",
dst_volume, dst_palette, dst_box, src_volume, src_palette, src_box,
filter, color_key);
if (!dst_volume || !src_volume) return D3DERR_INVALIDCALL;
IDirect3DVolume9_GetDesc(src_volume, &desc);
if (!src_box)
{
box.Left = box.Top = 0;
box.Right = desc.Width;
box.Bottom = desc.Height;
box.Front = 0;
box.Back = desc.Depth;
}
else box = *src_box;
hr = IDirect3DVolume9_LockBox(src_volume, &locked_box, &box, D3DLOCK_READONLY);
if (FAILED(hr)) return hr;
hr = D3DXLoadVolumeFromMemory(dst_volume, dst_palette, dst_box,
locked_box.pBits, desc.Format, locked_box.RowPitch, locked_box.SlicePitch,
src_palette, &box, filter, color_key);
IDirect3DVolume9_UnlockBox(src_volume);
return hr;
}