From a43dcabcd466b0e1f6a134da53f8ff2627acc7b7 Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Sat, 25 Aug 2007 19:19:49 +0000
Subject: [PATCH] work on new postpro

---
 Post/PViewData.cpp    | 61 ++++++++++++++++++++++++-------------------
 Post/PViewData.h      |  9 +++++--
 Post/PViewOptions.cpp | 26 ++++++++++++++----
 3 files changed, 62 insertions(+), 34 deletions(-)

diff --git a/Post/PViewData.cpp b/Post/PViewData.cpp
index c6e1cd8f1b..8ba616d748 100644
--- a/Post/PViewData.cpp
+++ b/Post/PViewData.cpp
@@ -1,4 +1,4 @@
-// $Id: PViewData.cpp,v 1.3 2007-08-25 10:58:34 geuzaine Exp $
+// $Id: PViewData.cpp,v 1.4 2007-08-25 19:19:49 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -45,7 +45,7 @@ PViewDataList::PViewDataList(bool allocate)
     NbSY2(0), SY2(0), NbVY2(0), VY2(0), NbTY2(0), TY2(0),
     NbT2(0), T2D(0), T2C(0), NbT3(0), T3D(0), T3C(0),
     _lastElement(-1), _lastDimension(-1), _lastNumNodes(-1), 
-    _lastNumComponents(-1), _lastXYZ(0), _lastVal(0)
+    _lastNumComponents(-1), _lastNumEdges(-1), _lastXYZ(0), _lastVal(0)
 {
   for(int i = 0; i < 24; i++) _index[i] = 0;
 
@@ -228,12 +228,13 @@ void PViewDataList::_stat(List_T *list, int nbcomp, int nbelm, int nbnod)
   }
 }
 
-void PViewDataList::_setLast(int ele, int dim, int nbnod, int nbcomp, 
+void PViewDataList::_setLast(int ele, int dim, int nbnod, int nbcomp, int nbedg,
 			     List_T *list, int nblist)
 {
   _lastDimension = dim;
   _lastNumNodes = nbnod;
   _lastNumComponents = nbcomp;
+  _lastNumEdges = nbedg;
   int nb = List_Nbr(list) / nblist;
   _lastXYZ = (double*)List_Pointer_Fast(list, ele * nb);
   _lastVal = (double*)List_Pointer_Fast(list, ele * nb + 3 * _lastNumNodes);
@@ -243,44 +244,44 @@ void PViewDataList::_setLast(int ele)
 {
   _lastElement = ele;
   if(ele < _index[2]){ // points
-    if(ele < _index[0]) _setLast(ele, 0, 1, 1, SP, NbSP);
-    else if(ele < _index[1]) _setLast(ele - _index[0], 0, 1, 3, VP, NbVP);
-    else _setLast(ele - _index[1], 0, 1, 9, TP, NbTP);
+    if(ele < _index[0]) _setLast(ele, 0, 1, 1, 0, SP, NbSP);
+    else if(ele < _index[1]) _setLast(ele - _index[0], 0, 1, 3, 0, VP, NbVP);
+    else _setLast(ele - _index[1], 0, 1, 9, 0, TP, NbTP);
   }
   else if(ele < _index[5]){ // lines
-    if(ele < _index[3]) _setLast(ele - _index[2], 1, 2, 1, SL, NbSL);
-    else if(ele < _index[4]) _setLast(ele - _index[3], 1, 2, 3, VL, NbVL);
-    else _setLast(ele - _index[4], 1, 2, 9, TL, NbTL);
+    if(ele < _index[3]) _setLast(ele - _index[2], 1, 2, 1, 1, SL, NbSL);
+    else if(ele < _index[4]) _setLast(ele - _index[3], 1, 2, 3, 1, VL, NbVL);
+    else _setLast(ele - _index[4], 1, 2, 9, 1, TL, NbTL);
   }
   else if(ele < _index[8]){ // triangles
-    if(ele < _index[6]) _setLast(ele - _index[5], 2, 3, 1, ST, NbST);
-    else if(ele < _index[7]) _setLast(ele - _index[6], 2, 3, 3, VT, NbVT);
-    else _setLast(ele - _index[7], 2, 3, 9, TT, NbTT);
+    if(ele < _index[6]) _setLast(ele - _index[5], 2, 3, 1, 3, ST, NbST);
+    else if(ele < _index[7]) _setLast(ele - _index[6], 2, 3, 3, 3, VT, NbVT);
+    else _setLast(ele - _index[7], 2, 3, 9, 3, TT, NbTT);
   }
   else if(ele < _index[11]){ // quadrangles
-    if(ele < _index[9]) _setLast(ele - _index[8], 2, 4, 1, SQ, NbSQ);
-    else if(ele < _index[10]) _setLast(ele - _index[9], 2, 4, 3, VQ, NbVQ);
-    else _setLast(ele - _index[10], 2, 4, 9, TQ, NbTQ);
+    if(ele < _index[9]) _setLast(ele - _index[8], 2, 4, 1, 4, SQ, NbSQ);
+    else if(ele < _index[10]) _setLast(ele - _index[9], 2, 4, 3, 4, VQ, NbVQ);
+    else _setLast(ele - _index[10], 2, 4, 9, 4, TQ, NbTQ);
   }
   else if(ele < _index[14]){ // tetrahedra
-    if(ele < _index[12]) _setLast(ele - _index[11], 3, 4, 1, SS, NbSS);
-    else if(ele < _index[13]) _setLast(ele - _index[12], 3, 4, 3, VS, NbVS);
-    else _setLast(ele - _index[13], 3, 2, 9, TS, NbTS);
+    if(ele < _index[12]) _setLast(ele - _index[11], 3, 4, 1, 6, SS, NbSS);
+    else if(ele < _index[13]) _setLast(ele - _index[12], 3, 4, 3, 6, VS, NbVS);
+    else _setLast(ele - _index[13], 3, 2, 9, 6, TS, NbTS);
   }
   else if(ele < _index[17]){ // hexahedra
-    if(ele < _index[15]) _setLast(ele - _index[14], 3, 8, 1, SH, NbSH);
-    else if(ele < _index[16]) _setLast(ele - _index[15], 3, 8, 3, VH, NbVH);
-    else _setLast(ele - _index[16], 3, 8, 9, TH, NbTH);
+    if(ele < _index[15]) _setLast(ele - _index[14], 3, 8, 1, 12, SH, NbSH);
+    else if(ele < _index[16]) _setLast(ele - _index[15], 3, 8, 3, 12, VH, NbVH);
+    else _setLast(ele - _index[16], 3, 8, 9, 12, TH, NbTH);
   }
   else if(ele < _index[20]){ // prisms
-    if(ele < _index[18]) _setLast(ele - _index[17], 3, 6, 1, SI, NbSI);
-    else if(ele < _index[19]) _setLast(ele - _index[18], 3, 6, 3, VI, NbVI);
-    else _setLast(ele - _index[19], 3, 6, 9, TI, NbTI);
+    if(ele < _index[18]) _setLast(ele - _index[17], 3, 6, 1, 9, SI, NbSI);
+    else if(ele < _index[19]) _setLast(ele - _index[18], 3, 6, 3, 9, VI, NbVI);
+    else _setLast(ele - _index[19], 3, 6, 9, 9, TI, NbTI);
   }
   else{ // pyramids
-    if(ele < _index[21]) _setLast(ele - _index[20], 3, 5, 1, SY, NbSY);
-    else if(ele < _index[22]) _setLast(ele - _index[21], 3, 5, 3, VY, NbVY);
-    else _setLast(ele - _index[22], 3, 5, 9, TY, NbTY);
+    if(ele < _index[21]) _setLast(ele - _index[20], 3, 5, 1, 15, SY, NbSY);
+    else if(ele < _index[22]) _setLast(ele - _index[21], 3, 5, 3, 15, VY, NbVY);
+    else _setLast(ele - _index[22], 3, 5, 9, 15, TY, NbTY);
   }
 }
 
@@ -317,3 +318,9 @@ void PViewDataList::getValue(int ele, int nod, int comp, int step, double &val)
 		 nod * _lastNumComponents +
 		 comp];
 }
+
+int PViewDataList::getNumEdges(int ele)
+{
+  if(ele != _lastElement) _setLast(ele);
+  return _lastNumEdges;
+}
diff --git a/Post/PViewData.h b/Post/PViewData.h
index b29e82371f..88c6d3424c 100644
--- a/Post/PViewData.h
+++ b/Post/PViewData.h
@@ -59,6 +59,7 @@ class PViewData {
   virtual void getNode(int ele, int nod, double &x, double &y, double &z) = 0;
   virtual int getNumComponents(int ele) = 0;
   virtual void getValue(int ele, int node, int comp, int step, double &val) = 0;
+  virtual int getNumEdges(int ele) = 0;
   virtual bool read(std::string filename){}
 };
 
@@ -95,12 +96,14 @@ class PViewDataList : public PViewData {
   std::map<int, int> *DisplayListsOfGrains; // For LMGC90, grains shapes
  private:
   int _index[24];
-  int _lastElement, _lastDimension, _lastNumNodes, _lastNumComponents;
+  int _lastElement, _lastDimension;
+  int _lastNumNodes, _lastNumComponents, _lastNumEdges;
   double *_lastXYZ, *_lastVal;
   void _stat(List_T *D, List_T *C, int nb);
   void _stat(List_T *list, int nbcomp, int nbelm, int nbnod);
   void _setLast(int ele);
-  void _setLast(int ele, int dim, int nbnod, int nbcomp, List_T *list, int nblist);
+  void _setLast(int ele, int dim, int nbnod, int nbcomp, int nbedg,
+		List_T *list, int nblist);
  public:
   PViewDataList(bool allocate=true);
   ~PViewDataList();
@@ -128,6 +131,7 @@ class PViewDataList : public PViewData {
   void getNode(int ele, int nod, double &x, double &y, double &z);
   int getNumComponents(int ele);
   void getValue(int ele, int node, int comp, int step, double &val);
+  int getNumEdges(int ele);
   bool read(std::string filename);
 };
 
@@ -149,6 +153,7 @@ class PViewDataGModel : public PViewData {
   void getNode(int ele, int nod, double &x, double &y, double &z){}
   int getNumComponents(int ele){ return 1; }
   void getValue(int ele, int node, int comp, int step, double &val){}
+  int getNumEdges(int ele){ return 0; }
 };
 
 #endif
diff --git a/Post/PViewOptions.cpp b/Post/PViewOptions.cpp
index 538d5a8b62..ea8220b9e2 100644
--- a/Post/PViewOptions.cpp
+++ b/Post/PViewOptions.cpp
@@ -1,4 +1,4 @@
-// $Id: PViewOptions.cpp,v 1.3 2007-08-25 10:58:34 geuzaine Exp $
+// $Id: PViewOptions.cpp,v 1.4 2007-08-25 19:19:49 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -46,14 +46,16 @@ PViewOptions::PViewOptions()
   Normals = Tangents = 0.;
   Visible = 1;
   IntervalsType = Continuous;
+  //IntervalsType = Discrete;
   NbIso = 15;
   ArrowSizeProportional = 0;
   Light = LightTwoSide = 1;
-  LightLines = SmoothNormals = 0;
-  AngleSmoothNormals = 90;
+  LightLines = 1;
+  SmoothNormals = 0;
+  AngleSmoothNormals = 30;
   SaturateValues = 0;
   FakeTransparency = 0;
-  ShowElement = 0;
+  ShowElement = 1;
   ShowTime = ShowScale = 1;
   ScaleType = Default;
   RangeType = Linear;
@@ -66,12 +68,26 @@ PViewOptions::PViewOptions()
     DrawScalars = DrawVectors = DrawTensors = 1;
   Boundary = 0;
   PointType = LineType = 0;
-  PointSize = LineWidth = 2;
+  PointSize = LineWidth = 1;
   UseStipple = 0;
   ExternalViewIndex = ViewIndexForGenRaise = -1;
   UseGenRaise = 0;
   GenRaiseFactor = 0.;
 
+  color.point = 0;
+  color.line = 0;
+  color.triangle = 0;
+  color.quadrangle = 0;
+  color.tetrahedron = 0;
+  color.hexahedron = 0;
+  color.prism = 0;
+  color.pyramid = 0;
+  color.tangents = 0;
+  color.normals = 0;
+  color.text2d = 0;
+  color.text3d = 0;
+  color.axes = 0;
+
   ColorTable_InitParam(2, &CT);
   ColorTable_Recompute(&CT);
 }
-- 
GitLab