/// 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_CYLINDER_H
#define X3DTK_X3D_CYLINDER_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 Box
 *  (<a href="../../doc/X3DSpecs/Part01/components/geometry3D.html#Cylinder">
 *  documentation</a>).
 *
 *  \ingroup X3DSceneGraph
 */

class Cylinder : public X3DGeometryNode
{
public:
  /// Constructor.
  Cylinder();
  /// Destructor.
  virtual ~Cylinder();
  
  /// Sets the bottom attribute.
  void setBottom(const SFBool &bottom);
  /// Sets the radius attribute.
  void setRadius(const SFFloat &radius);
  /// Sets the height attribute.
  void setHeight(const SFFloat &height);
  /// Sets the side attribute.
  void setSide(const SFBool &side);
  /// Sets the top attribute.
  void setTop(const SFBool &top);
  
  /// Gets the bottom attribute.
  inline const SFBool &getBottom() const {return _bottom;};
  /// Gets the radius attribute.
  inline const SFFloat &getRadius() const {return _radius;};
  /// Gets the height attribute.
  inline const SFFloat &getHeight() const {return _height;};
  /// Gets the side attribute.
  inline const SFBool &getSide() const {return _side;};
  /// Gets the top attribute.
  inline const SFBool &getTop() const {return _top;};

private:
  /// Bottom attribute.
  SFBool _bottom;
  /// Radius attribute.
  SFFloat _radius;
  /// Height attribute.
  SFFloat _height;
  /// Side attribute.
  SFBool _side;
  /// Top attribute.
  SFBool _top;
};

}
}

#endif
