//////////////////////////////////////////////////////////////////////////////// // MESH_SFTemplateEdgeContent.inl // //////////////////////////////////////////////////////////////////////////////// namespace X3DTK { namespace MESH { template SFTemplateVertex *SFTemplateEdgeContent::getFromVertex() const { return _from; } template SFTemplateVertex *SFTemplateEdgeContent::getToVertex() const { return _to; } template const typename SFTemplateEdgeContent::MFFace &SFTemplateEdgeContent::get1Faces() const { return _r1Faces; } template const typename SFTemplateEdgeContent::MFFace &SFTemplateEdgeContent::get2Faces() const { return _r2Faces; } template bool SFTemplateEdgeContent::isBoundary() const { return (_r2Faces.size() == 0) || (_r1Faces.size() == 0); } template bool SFTemplateEdgeContent::isNonManifold() const { return (_r2Faces.size() > 1) || (_r1Faces.size() > 1); } template EData &SFTemplateEdgeContent::data() { return _data; } template const EData &SFTemplateEdgeContent::data() const { return _data; } template SFTemplateEdgeContent::SFTemplateEdgeContent(SFTemplateVertex * from, SFTemplateVertex *const to) : _from(from), _to(to) { } template SFTemplateEdgeContent::~SFTemplateEdgeContent() { } template void SFTemplateEdgeContent::add1Face(SFTemplateFace *face) { _r1Faces.push_back(face); } template void SFTemplateEdgeContent::add2Face(SFTemplateFace *face) { _r2Faces.push_back(face); } template void SFTemplateEdgeContent::remove1Face(SFTemplateFace *face) { typename MFFace::iterator it = std::find(_r1Faces.begin(), _r1Faces.end(), face); if (it != _r1Faces.end()) _r1Faces.erase(it); } template void SFTemplateEdgeContent::remove2Face(SFTemplateFace *face) { typename MFFace::iterator it = std::find(_r2Faces.begin(), _r2Faces.end(), face); if (it != _r2Faces.end()) _r2Faces.erase(it); } template void SFTemplateEdgeContent::reverse(SFTemplateFace *face) { // std::cout << "r1 size before = " << _r1Faces.size() << std::endl; // std::cout << "r2 size before = " << _r2Faces.size() << std::endl; typename SFTemplateEdgeContent::MFFace::iterator it = std::find(_r1Faces.begin(), _r1Faces.end(), face); if (it == _r1Faces.end()) { it = std::find(_r2Faces.begin(), _r2Faces.end(), face); if (it != _r2Faces.end()) { _r2Faces.erase(it); _r1Faces.push_back(face); } } else { _r1Faces.erase(it); _r2Faces.push_back(face); } // std::cout << "r1 size after = " << _r1Faces.size() << std::endl; // std::cout << "r2 size after = " << _r2Faces.size() << std::endl; } } }