dx9d3dx-0.1.1: DirectX9/D3D/X/Raw.hs
{-# LANGUAGE ForeignFunctionInterface #-}
module DirectX9.D3D.X.Raw
where
import Foreign ( Storable, peek, poke, peekByteOff, Ptr, plusPtr
, alignment, sizeOf )
import DirectX9.D3D
data D3DXMESHDATA = D3DXMESHDATA_MESH LPD3DXMESH | D3DXMESHDATA_PMESH LPD3DXPMESH | D3DXMESHDATA_PATCHMESH LPD3DXPATCHMESH
deriving (Show, Eq, Ord)
type LPD3DXMESHDATA = Ptr D3DXMESHDATA
instance Storable D3DXMESHDATA where
sizeOf _ = 8
alignment _ = 4
poke buf m = case m of
D3DXMESHDATA_MESH p -> pokeHelp d3DXMESHTYPE_MESH buf >>= pokeHelp p >> return ()
D3DXMESHDATA_PMESH p -> pokeHelp d3DXMESHTYPE_PMESH buf >>= pokeHelp p >> return ()
D3DXMESHDATA_PATCHMESH p-> pokeHelp d3DXMESHTYPE_PATCHMESH buf >>= pokeHelp p >> return ()
peek b = do
t <- peekByteOff b 0
if t==d3DXMESHTYPE_MESH
then peekByteOff b 4 >>= return.D3DXMESHDATA_MESH
else if t==d3DXMESHTYPE_MESH
then peekByteOff b 4 >>= return.D3DXMESHDATA_PMESH
else peekByteOff b 4 >>= return.D3DXMESHDATA_PATCHMESH
type D3DXMATRIX = D3DMATRIX
type LPD3DXMATRIX = Ptr D3DXMATRIX
type D3DXHANDLE = LPCSTR
type D3DXEVENTHANDLE = DWORD
type LPD3DXFileSaveData = Ptr ID3DXFileSaveData
-- Guesswork types, might not be correct, just to remove compile-errors
-- These are used with #define-constants, so DWORD is pretty normal...
type D3DXF_FILELOADOPTIONS = DWORD
type D3DXF_FILESAVEOPTIONS = DWORD
type D3DXF_FILEFORMAT = DWORD
-- Workarounds for missing stuff, these are nowhere right
type IStream = ()
type TEXTMETRIC = ()
type LPD3DXEVENT_DESC = Ptr ()
type D3DXPARAMETER_DESC = ()
type LPD3DXEFFECTPOOL = Ptr ()
type LpD3DDeviceXPMESH = Ptr ()
type LPD3DXSHPRTSIMCB = Ptr ()
#include "d3dx_h.h"