From f618e4824d88f702ccb522bd222fb0749d2adda4 Mon Sep 17 00:00:00 2001 From: Christophe Geuzaine <cgeuzaine@ulg.ac.be> Date: Sun, 23 Jan 2011 16:19:00 +0000 Subject: [PATCH] cleanup --- Mesh/BoundaryLayers.cpp | 68 ++++++++++++++++++----------------------- 1 file changed, 30 insertions(+), 38 deletions(-) diff --git a/Mesh/BoundaryLayers.cpp b/Mesh/BoundaryLayers.cpp index 9320f81680..a9162df4cc 100644 --- a/Mesh/BoundaryLayers.cpp +++ b/Mesh/BoundaryLayers.cpp @@ -56,6 +56,32 @@ static void addExtrudeNormals(std::vector<T*> &elements, int invert, } } +template<class T> +static void addExtrudeNormals(std::set<T*> &entities, std::map<int, bool> &invert, + std::map<int, int> &useView) +{ + for(typename std::set<T*>::iterator it = entities.begin(); it != entities.end(); it++){ + T *ge = *it; + int inv = invert.count(ge->tag()); + OctreePost *octree = 0; +#if defined(HAVE_POST) + if(useView.count(ge->tag())){ + int index = useView[ge->tag()]; + if(index >= 0 && index < PView::list.size()) + octree = new OctreePost(PView::list[index]); + else + Msg::Error("Unknown View[%d]: using normals instead", index); + } +#endif + if(ge->dim() == 1) + addExtrudeNormals(((GEdge*)ge)->lines, inv, octree); + else if(ge->dim() == 2){ + addExtrudeNormals(((GFace*)ge)->triangles, inv, octree); + addExtrudeNormals(((GFace*)ge)->quadrangles, inv, octree); + } + } +} + int Mesh2DWithBoundaryLayers(GModel *m) { std::set<GFace*> sourceFaces, otherFaces; @@ -124,44 +150,10 @@ int Mesh2DWithBoundaryLayers(GModel *m) // compute a normal field for all the source edges or faces if(ExtrudeParams::normals) delete ExtrudeParams::normals; ExtrudeParams::normals = new smooth_data(); - - if(sourceFaces.empty()){ - for(std::set<GEdge*>::iterator it = sourceEdges.begin(); - it != sourceEdges.end(); it++){ - GEdge *ge = *it; - int invert = sourceEdgeInvert.count(ge->tag()); - OctreePost *octree = 0; -#if defined(HAVE_POST) - if(sourceEdgeUseView.count(ge->tag())){ - int index = sourceEdgeUseView[ge->tag()]; - if(index >= 0 && index < PView::list.size()) - octree = new OctreePost(PView::list[index]); - else - Msg::Error("Unknown View[%d]: using normals instead", index); - } -#endif - addExtrudeNormals(ge->lines, invert, octree); - } - } - else{ - for(std::set<GFace*>::iterator it = sourceFaces.begin(); - it != sourceFaces.end(); it++){ - GFace *gf = *it; - int invert = sourceFaceInvert.count(gf->tag()); - OctreePost *octree = 0; -#if defined(HAVE_POST) - if(sourceFaceUseView.count(gf->tag())){ - int index = sourceFaceUseView[gf->tag()]; - if(index >= 0 && index < PView::list.size()) - octree = new OctreePost(PView::list[index]); - else - Msg::Error("Unknown View[%d]: using normals instead", index); - } -#endif - addExtrudeNormals(gf->triangles, invert, octree); - addExtrudeNormals(gf->quadrangles, invert, octree); - } - } + if(sourceFaces.empty()) + addExtrudeNormals(sourceEdges, sourceEdgeInvert, sourceEdgeUseView); + else + addExtrudeNormals(sourceFaces, sourceFaceInvert, sourceFaceUseView); if(sourceEdgeUseView.empty() && sourceFaceUseView.empty()) ExtrudeParams::normals->normalize(); -- GitLab