#ifndef _D3DXSHAPES_H
#define _D3DXSHAPES_H

/* D3DX simple shapes */

#include <d3d.h>
#include <limits.h>
#include "d3dxerr.h"

#ifndef __PODXAPI
#if __POCC__ >= 274
#define __PODXAPI  __declspec(dllimport)
#else
#define __PODXAPI
#endif
#endif /* __PODXAPI */

typedef struct ID3DXSimpleShape *LPD3DXSIMPLESHAPE;

DEFINE_GUID(IID_ID3DXSimpleShape,0xcfcd4602,0xeb7b,0x11d2,0xa4,0x40,0x0,0xa0,0xc9,0x6,0x29,0xa8);

DECLARE_INTERFACE_(ID3DXSimpleShape, IUnknown)
{
    STDMETHOD(QueryInterface)(THIS_ REFIID,LPVOID*) PURE;
    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    STDMETHOD_(ULONG,Release)(THIS) PURE;
    STDMETHOD_(LPDIRECT3DVERTEXBUFFER7, GetVB)(THIS) PURE;
    STDMETHOD_(DWORD, GetIndices)(THIS_ LPWORD *) PURE;
    STDMETHOD(Draw)(THIS) PURE;
};

#ifdef __cplusplus
extern "C" {
#endif

__PODXAPI HRESULT WINAPI D3DXCreatePolygon(LPDIRECT3DDEVICE7,float,DWORD,DWORD,LPD3DXSIMPLESHAPE*);
__PODXAPI HRESULT WINAPI D3DXCreateBox(LPDIRECT3DDEVICE7,float,float,float,DWORD,LPD3DXSIMPLESHAPE*);
__PODXAPI HRESULT WINAPI D3DXCreateCylinder(LPDIRECT3DDEVICE7,float,float,float,DWORD,DWORD,DWORD,LPD3DXSIMPLESHAPE*);
__PODXAPI HRESULT WINAPI D3DXCreateTorus(LPDIRECT3DDEVICE7,float,float,DWORD,DWORD,DWORD,LPD3DXSIMPLESHAPE*);
__PODXAPI HRESULT WINAPI D3DXCreateTeapot(LPDIRECT3DDEVICE7,DWORD,LPD3DXSIMPLESHAPE*);
__PODXAPI HRESULT WINAPI D3DXCreateSphere(LPDIRECT3DDEVICE7,float,DWORD,DWORD,DWORD,LPD3DXSIMPLESHAPE*);

#ifdef __cplusplus
}
#endif

#endif /* _D3DXSHAPES_H */
