Salome HOME
PAL10467. Add "Quadrangle Preference" hypothesis for "Quadrangle(Mapping)" algo
[modules/smesh.git] / src / StdMeshers / StdMeshers_Quadrangle_2D.hxx
index afa3882f2cc1b7e0ee123daa3b9086b533742ed6..4d02719b09613ebbc630b44ec26c39c37425fa92 100644 (file)
@@ -34,6 +34,8 @@
 #include "SMESH_Mesh.hxx"
 #include "Utils_SALOME_Exception.hxx"
 
+class SMDS_MeshNode;
+
 typedef struct uvPtStruct
 {
   double param;
@@ -42,7 +44,7 @@ typedef struct uvPtStruct
   double v;
   double x; // 2d parameter, normalized [0,1]
   double y; 
-       const SMDS_MeshNode * node;
+  const SMDS_MeshNode * node;
 } UVPtStruct;
 
 typedef struct faceQuadStruct
@@ -52,6 +54,7 @@ typedef struct faceQuadStruct
   double first[4];
   double last[4];
   bool isEdgeForward[4];
+  bool isEdgeOut[4]; // true, if an edge has more nodes, than the opposite
   UVPtStruct* uv_edges[4];
   UVPtStruct* uv_grid;
 } FaceQuadStruct;
@@ -75,7 +78,7 @@ public:
                                    const TopoDS_Shape& aShape)
     throw (SALOME_Exception);
 
-  void QuadDelete(FaceQuadStruct* quad);
+  static void QuadDelete(FaceQuadStruct* quad);
 
   ostream & SaveTo(ostream & save);
   istream & LoadFrom(istream & load);
@@ -90,13 +93,17 @@ protected:
     throw (SALOME_Exception);
 
   UVPtStruct* LoadEdgePoints(SMESH_Mesh& aMesh,
-                            const TopoDS_Face& F,
-                            const TopoDS_Edge& E,
-                            double first,
-                            double last);
-//                          bool isForward);
+                            const TopoDS_Face& F, const TopoDS_Edge& E,
+                            double first, double last);
+
+  UVPtStruct* MakeEdgePoints(SMESH_Mesh& aMesh,
+                            const TopoDS_Face& F, const TopoDS_Edge& E,
+                            double first, double last, int nb_segm);
 
-//   FaceQuadStruct _quadDesc;
+  // true if QuadranglePreference hypothesis is assigned that forces
+  // construction of quadrangles if the number of nodes on opposite edges
+  // is not the same in the case where the global number of nodes on edges is even
+  bool myQuadranglePreference;
 };
 
 #endif