/// This file is part of the X3DToolKit library
/// Copyright (C) 2002-2004  Yannick Le Goc (legoc@imag.fr)

/// http://artis.imag.fr/Members/Yannick.Legoc/X3D/

/// This library is free software; you can redistribute it and/or
/// modify it under the terms of the GNU Lesser General Public
/// License as published by the Free Software Foundation; either
/// version 2.1 of the License, or (at your option) any later version.

/// This library is distributed in the hope that it will be useful,
/// but WITHOUT ANY WARRANTY; without even the implied warranty of
/// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
/// Lesser General Public License for more details.

/// You should have received a copy of the GNU Lesser General Public
/// License along with this library; if not, write to the Free Software
/// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
#ifndef X3DTK_X3D_CONE_H
#define X3DTK_X3D_CONE_H

#include "X3DTypes.h"
#include "X3D_X3DGeometryNode.h"

namespace X3DTK {
namespace X3D {

/*! \brief Class declared in <b><X3DTK/X3D/scenegraph.h></b>, part of the <a href="../../doc/X3DSpecs/Part01/components/geometry3D.html">
 *  Geometry3D component</a> defining a Cone
 *  (<a href="../../doc/X3DSpecs/Part01/components/geometry3D.html#Cone">
 *  documentation</a>).
 *
 *  \ingroup X3DSceneGraph
 */

class Cone : public X3DGeometryNode
{
public:
  /// Constructor.
  Cone();
  /// Destructor.
  virtual ~Cone();
  
  /// Sets the BottomRadius attribute.
  void setBottomRadius(const SFFloat &bottomRadius);
  /// Sets the Height attribute.
  void setHeight(const SFFloat &height);
  /// Sets the Side attribute.
  void setSide(const SFBool &side);
  /// Sets the Bottom attribute.
  void setBottom(const SFBool &bottom);
  
  /// Gets the BottomRadius attribute.
  inline const SFFloat &getBottomRadius() const {return _bottomRadius;};
  /// Gets the Height attribute.
  inline const SFFloat &getHeight() const {return _height;};
  /// Gets the Side attribute.
  inline const SFBool &getSide() const {return _side;};
  /// Gets the Bottom attribute.
  inline const SFBool &getBottom() const {return _bottom;};

private:  
  /// Bottom radius attribute.
  SFFloat _bottomRadius;
  /// Height attribute.
  SFFloat _height;
  /// Side attribute.
  SFBool _side;
  /// Bottom attribute.
  SFBool _bottom;
};

}
}

#endif
