packages feed

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"