///////////////////////////////////////////////////////////////////////////
 
//
 
//  Copyright (C) Microsoft Corporation.  All Rights Reserved.
 
//
 
//  File:       d3dx9shapes.h
 
//  Content:    D3DX simple shapes
 
//
 
///////////////////////////////////////////////////////////////////////////
 
 
 
#include "d3dx9.h"
 
 
 
#ifndef __D3DX9SHAPES_H__
 
#define __D3DX9SHAPES_H__
 
 
 
///////////////////////////////////////////////////////////////////////////
 
// Functions:
 
///////////////////////////////////////////////////////////////////////////
 
 
 
#ifdef __cplusplus
 
extern "C" {
 
#endif //__cplusplus
 
 
 
 
 
//-------------------------------------------------------------------------
 
// D3DXCreatePolygon: 
 
// ------------------
 
// Creates a mesh containing an n-sided polygon.  The polygon is centered
 
// at the origin.
 
//
 
// Parameters:
 
//
 
//  pDevice     The D3D device with which the mesh is going to be used.
 
//  Length      Length of each side.
 
//  Sides       Number of sides the polygon has.  (Must be >= 3)
 
//  ppMesh      The mesh object which will be created
 
//  ppAdjacency Returns a buffer containing adjacency info.  Can be NULL.
 
//-------------------------------------------------------------------------
 
HRESULT WINAPI 
 
    D3DXCreatePolygon(
 
        LPDIRECT3DDEVICE9   pDevice,
 
        FLOAT               Length, 
 
        UINT                Sides, 
 
        LPD3DXMESH*         ppMesh,
 
        LPD3DXBUFFER*       ppAdjacency);
 
 
 
 
 
//-------------------------------------------------------------------------
 
// D3DXCreateBox: 
 
// --------------
 
// Creates a mesh containing an axis-aligned box.  The box is centered at
 
// the origin.
 
//
 
// Parameters:
 
//
 
//  pDevice     The D3D device with which the mesh is going to be used.
 
//  Width       Width of box (along X-axis)
 
//  Height      Height of box (along Y-axis)
 
//  Depth       Depth of box (along Z-axis)
 
//  ppMesh      The mesh object which will be created
 
//  ppAdjacency Returns a buffer containing adjacency info.  Can be NULL.
 
//-------------------------------------------------------------------------
 
HRESULT WINAPI 
 
    D3DXCreateBox(
 
        LPDIRECT3DDEVICE9   pDevice, 
 
        FLOAT               Width,
 
        FLOAT               Height,
 
        FLOAT               Depth,
 
        LPD3DXMESH*         ppMesh,
 
        LPD3DXBUFFER*       ppAdjacency);
 
 
 
 
 
//-------------------------------------------------------------------------
 
// D3DXCreateCylinder:
 
// -------------------
 
// Creates a mesh containing a cylinder.  The generated cylinder is
 
// centered at the origin, and its axis is aligned with the Z-axis.
 
//
 
// Parameters:
 
//
 
//  pDevice     The D3D device with which the mesh is going to be used.
 
//  Radius1     Radius at -Z end (should be >= 0.0f)
 
//  Radius2     Radius at +Z end (should be >= 0.0f)
 
//  Length      Length of cylinder (along Z-axis)
 
//  Slices      Number of slices about the main axis
 
//  Stacks      Number of stacks along the main axis
 
//  ppMesh      The mesh object which will be created
 
//  ppAdjacency Returns a buffer containing adjacency info.  Can be NULL.
 
//-------------------------------------------------------------------------
 
HRESULT WINAPI 
 
    D3DXCreateCylinder(
 
        LPDIRECT3DDEVICE9   pDevice,
 
        FLOAT               Radius1, 
 
        FLOAT               Radius2, 
 
        FLOAT               Length, 
 
        UINT                Slices, 
 
        UINT                Stacks,   
 
        LPD3DXMESH*         ppMesh,
 
        LPD3DXBUFFER*       ppAdjacency);
 
 
 
 
 
//-------------------------------------------------------------------------
 
// D3DXCreateSphere:
 
// -----------------
 
// Creates a mesh containing a sphere.  The sphere is centered at the
 
// origin.
 
//
 
// Parameters:
 
//
 
//  pDevice     The D3D device with which the mesh is going to be used.
 
//  Radius      Radius of the sphere (should be >= 0.0f)
 
//  Slices      Number of slices about the main axis
 
//  Stacks      Number of stacks along the main axis
 
//  ppMesh      The mesh object which will be created
 
//  ppAdjacency Returns a buffer containing adjacency info.  Can be NULL.
 
//-------------------------------------------------------------------------
 
HRESULT WINAPI
 
    D3DXCreateSphere(
 
        LPDIRECT3DDEVICE9  pDevice, 
 
        FLOAT              Radius, 
 
        UINT               Slices, 
 
        UINT               Stacks,
 
        LPD3DXMESH*        ppMesh,
 
        LPD3DXBUFFER*      ppAdjacency);
 
 
 
 
 
//-------------------------------------------------------------------------
 
// D3DXCreateTorus:
 
// ----------------
 
// Creates a mesh containing a torus.  The generated torus is centered at
 
// the origin, and its axis is aligned with the Z-axis.
 
//
 
// Parameters: 
 
//
 
//  pDevice     The D3D device with which the mesh is going to be used.
 
//  InnerRadius Inner radius of the torus (should be >= 0.0f)
 
//  OuterRadius Outer radius of the torue (should be >= 0.0f)
 
//  Sides       Number of sides in a cross-section (must be >= 3)
 
//  Rings       Number of rings making up the torus (must be >= 3)
 
//  ppMesh      The mesh object which will be created
 
//  ppAdjacency Returns a buffer containing adjacency info.  Can be NULL.
 
//-------------------------------------------------------------------------
 
HRESULT WINAPI
 
    D3DXCreateTorus(
 
        LPDIRECT3DDEVICE9   pDevice,
 
        FLOAT               InnerRadius,
 
        FLOAT               OuterRadius, 
 
        UINT                Sides,
 
        UINT                Rings, 
 
        LPD3DXMESH*         ppMesh,
 
        LPD3DXBUFFER*       ppAdjacency);
 
 
 
 
 
//-------------------------------------------------------------------------
 
// D3DXCreateTeapot: 
 
// -----------------
 
// Creates a mesh containing a teapot.
 
//
 
// Parameters: 
 
//
 
//  pDevice     The D3D device with which the mesh is going to be used.
 
//  ppMesh      The mesh object which will be created
 
//  ppAdjacency Returns a buffer containing adjacency info.  Can be NULL.
 
//-------------------------------------------------------------------------
 
HRESULT WINAPI
 
    D3DXCreateTeapot(
 
        LPDIRECT3DDEVICE9   pDevice,
 
        LPD3DXMESH*         ppMesh,
 
        LPD3DXBUFFER*       ppAdjacency);
 
 
 
 
 
//-------------------------------------------------------------------------
 
// D3DXCreateText: 
 
// --------------- 
 
// Creates a mesh containing the specified text using the font associated
 
// with the device context.
 
//
 
// Parameters:
 
//
 
//  pDevice       The D3D device with which the mesh is going to be used.
 
//  hDC           Device context, with desired font selected
 
//  pText         Text to generate
 
//  Deviation     Maximum chordal deviation from true font outlines
 
//  Extrusion     Amount to extrude text in -Z direction
 
//  ppMesh        The mesh object which will be created
 
//  pGlyphMetrics Address of buffer to receive glyph metric data (or NULL)
 
//-------------------------------------------------------------------------
 
HRESULT WINAPI
 
    D3DXCreateTextA(
 
        LPDIRECT3DDEVICE9   pDevice,
 
        HDC                 hDC,
 
        LPCSTR              pText,
 
        FLOAT               Deviation,
 
        FLOAT               Extrusion,
 
        LPD3DXMESH*         ppMesh,
 
        LPD3DXBUFFER*       ppAdjacency,
 
        LPGLYPHMETRICSFLOAT pGlyphMetrics);
 
 
 
HRESULT WINAPI
 
    D3DXCreateTextW(
 
        LPDIRECT3DDEVICE9   pDevice,
 
        HDC                 hDC,
 
        LPCWSTR             pText,
 
        FLOAT               Deviation,
 
        FLOAT               Extrusion,
 
        LPD3DXMESH*         ppMesh,
 
        LPD3DXBUFFER*       ppAdjacency,
 
        LPGLYPHMETRICSFLOAT pGlyphMetrics);
 
 
 
#ifdef UNICODE
 
#define D3DXCreateText D3DXCreateTextW
 
#else
 
#define D3DXCreateText D3DXCreateTextA
 
#endif
 
 
 
 
 
#ifdef __cplusplus
 
}
 
#endif //__cplusplus    
 
 
 
#endif //__D3DX9SHAPES_H__