X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMDS%2FSMDS_MeshCell.hxx;h=dd7d9d9d9c4a0da402135ee94ed3de05fecb4230;hp=413b1265ab6e3f729e8f6587a16de5e33e88deb1;hb=4e4625e956d1c112e71ed8fa8d8df5a0e9e0a3b3;hpb=dd0d39d752a4d5ba58ed2e417651093764bb8d09 diff --git a/src/SMDS/SMDS_MeshCell.hxx b/src/SMDS/SMDS_MeshCell.hxx index 413b1265a..dd7d9d9d9 100644 --- a/src/SMDS/SMDS_MeshCell.hxx +++ b/src/SMDS/SMDS_MeshCell.hxx @@ -22,23 +22,60 @@ #include "SMDS_MeshElement.hxx" +#include + /*! * \brief Base class for all cells */ class SMDS_EXPORT SMDS_MeshCell: public SMDS_MeshElement { -public: - SMDS_MeshCell(); - virtual ~SMDS_MeshCell(); + protected: + + void init( SMDSAbs_EntityType entityType, int nbNodes, ... ); + + void init( SMDSAbs_EntityType entityType, const std::vector& nodes ); + + void init( SMDSAbs_EntityType entityType, const std::vector& vtkNodeIds ); + + friend class SMDS_Mesh; + + public: + + virtual int NbEdges() const; + virtual int NbFaces() const; + virtual int NbNodes() const; + virtual int NbCornerNodes() const; + virtual bool ChangeNodes(const SMDS_MeshNode* nodes[], const int nbNodes); + virtual int GetNodeIndex( const SMDS_MeshNode* node ) const; + virtual const SMDS_MeshNode* GetNode(const int ind) const; - virtual bool ChangeNodes(const SMDS_MeshNode* nodes[], const int nbNodes)= 0; - virtual bool vtkOrder(const SMDS_MeshNode* nodes[], const int nbNodes) { return true; } + virtual SMDSAbs_ElementType GetType() const; + virtual SMDSAbs_EntityType GetEntityType() const; + virtual SMDSAbs_GeometryType GetGeomType() const; + virtual VTKCellType GetVtkType() const; - static VTKCellType toVtkType (SMDSAbs_EntityType vtkType); - static SMDSAbs_EntityType toSmdsType(VTKCellType vtkType); - static SMDSAbs_ElementType toSmdsType(SMDSAbs_GeometryType geomType); - static SMDSAbs_ElementType toSmdsType(SMDSAbs_EntityType entityType); + virtual bool IsPoly() const; + virtual bool IsQuadratic() const; + + virtual SMDS_ElemIteratorPtr nodesIterator() const; + virtual SMDS_NodeIteratorPtr nodeIterator() const; + virtual SMDS_NodeIteratorPtr interlacedNodesIterator() const; + virtual SMDS_NodeIteratorPtr nodesIteratorToUNV() const; + + + static void InitStaticMembers(); + static VTKCellType toVtkType ( SMDSAbs_EntityType entityType ); + static SMDSAbs_EntityType toSmdsType ( VTKCellType vtkType ); + static SMDSAbs_ElementType ElemType ( SMDSAbs_GeometryType geomType ); + static SMDSAbs_ElementType ElemType ( SMDSAbs_EntityType entityType ); + static SMDSAbs_GeometryType GeomType ( SMDSAbs_EntityType entityType ); + static bool IsPoly ( SMDSAbs_EntityType entityType ); + static bool IsQuadratic ( SMDSAbs_EntityType entityType ); + static int NbCornerNodes( SMDSAbs_EntityType entityType ); + static int NbNodes ( SMDSAbs_EntityType entityType ); + static int NbEdges ( SMDSAbs_EntityType entityType ); + static int NbFaces ( SMDSAbs_EntityType entityType ); static const std::vector& toVtkOrder(VTKCellType vtkType); static const std::vector& toVtkOrder(SMDSAbs_EntityType smdsType); @@ -50,6 +87,7 @@ public: static const std::vector& interlacedSmdsOrder(SMDSAbs_EntityType smdsType, const size_t nbNodes=0); + template< class VECT > // interlacedIDs[i] = smdsIDs[ indices[ i ]] static void applyInterlace( const std::vector& interlace, VECT & data) { @@ -69,15 +107,6 @@ public: data.swap( tmpData ); } - static int nbCells; - -protected: - inline void exchange(const SMDS_MeshNode* nodes[],int a, int b) - { - const SMDS_MeshNode* noda = nodes[a]; - nodes[a] = nodes[b]; - nodes[b] = noda; - } }; #endif