/// 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_MESH_SFDIRECTEDGE_H
#define X3DTK_MESH_SFDIRECTEDGE_H
#include "MESH_SFEdge.h"
namespace X3DTK {
namespace MESH {
/*! \brief Template class declared in
* providing an direct oriented-edge structure for the Mesh class.
*
* \ingroup MeshSceneGraph
*/
template
class SFTemplateDirectEdge : public SFTemplateEdge
{
friend class TemplateMesh;
friend class TemplateVertex;
public:
typedef EntityMFTemplateFace MFFace;
/// Returns the Vertex from.
SFTemplateVertex *getFromVertex() const;
/// Gets the Vertex to.
SFTemplateVertex *getToVertex() const;
/// Gets the left faces.
const MFFace &getLeftFaces() const;
/// Gets the right faces.
const MFFace &getRightFaces() const;
private:
/// Constructor.
SFTemplateDirectEdge(SFTemplateEdgeContent *const edgeContent);
/// Destructor.
~SFTemplateDirectEdge();
/// Adds a left face.
void addLeftFace(SFTemplateFace *face);
/// Adds a right face.
void addRightFace(SFTemplateFace *face);
/// Removes a left face.
void removeLeftFace(SFTemplateFace *face);
/// Removes a right face.
void removeRightFace(SFTemplateFace *face);
};
}
}
#include "MESH_SFDirectEdge.inl"
#endif