/// 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_FACESDRAWER_H #define X3DTK_MESH_FACESDRAWER_H #include "MESH_FacesDrawerStateVariables.h" #include "X3DOnePassProcessor.h" #include "MESH_SceneGraphTypes.h" #include "DFSGraphTraversal.h" #include "MESH_FacesDrawerCoreVisitor.h" #include "MESH_Mesh.h" #include "MESH_MeshData.h" namespace X3DTK { namespace MESH { /*! \brief Class declared in providing a processor that * draws the faces of the MESH scene graph. * * Faces can be rendered in three ways depending on the rendering mode: * \li In the REAL mode, faces are drawn as they would appear if drawn by a X3DTK::GL::Renderer. * \li In the IFS mode, faces have one color per X3DTK::MESH::IndexedFaceSet. * \li In the CONNCOMS mode, faces have one color per X3DTK::MESH::Vertex, * equivalent to a connected component, if the model is well connected. * * \ingroup MESH */ template class TemplateFacesDrawer : public X3DOnePassProcessor { public: /// Constructor. TemplateFacesDrawer(); /// Destructor. virtual ~TemplateFacesDrawer(); /// Sets the one color per mesh parameter. void changeModel(); /// Draws the faces. void draw(X3DNode *N, bool selection = false); /// Draws the faces. void drawSelected(X3DNode *N); // Get ith Mesh of the scene. inline TemplateMesh *getMesh(int i) const; // Gets stored transformation matrix associated with a given Mesh. inline const SFMatrix34f &getMatrix(int i) const; /// Gets the ith face of the jth Mesh. inline SFTemplateFace *getFaceOfMesh(int i, int j) const; /// Sets the rendering mode. void setRenderingMode(FaceMode mode); /// Sets the selected nodes to draw. If empty, then all the graph is drawn. void setSelectedNodes(const MFNode &selectedNodes); }; /// Default TemplateFacesDrawer. typedef TemplateFacesDrawer FacesDrawer; } } #include "MESH_FacesDrawer.inl" #endif