00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 #ifndef  _PO_MESHSIDES_
00025 #define  _PO_MESHSIDES_
00026 
00027 #include <Inventor/fields/SoSFEnum.h>
00028 #include <Inventor/fields/SoSFFloat.h>
00029 
00030 #include <MeshViz/3Ddata/PoMesh2D.h>
00031 
00032 class PbCartesianGrid2D;
00033 class PbParalCartesianGrid2D;
00034 class PbRegularCartesianGrid2D;
00035 class PbPolarGrid2D;
00036 class PbTriangleMesh2D;
00037 class PbQuadrangleMesh2D;
00038 class PbIndexedMesh2D;
00039 
00072 class  PoMeshSides : public PoMesh2D {
00073 
00074   SO_KIT_HEADER(PoMeshSides) ;
00075 
00076   
00077   SO_KIT_CATALOG_ENTRY_HEADER(groupSides) ;
00078 
00079 
00080  public:
00081 
00085   PoMeshSides() ;
00086 
00090   virtual void rebuild() ;
00091 
00095   enum ThresholdType {
00096     THRESHOLD_ZMIN,
00097     THRESHOLD_ZMAX,
00098     THRESHOLD_VALUE
00099   } ;
00100 
00101 
00102 
00115   SoSFEnum   thresholdType;
00116 
00121   SoSFFloat  thresholdValue;
00122 
00123   
00124  private:
00125   static void initClass() ;
00126     static void exitClass() ;
00127 
00128   void regularCartGridSides(PbRegularCartesianGrid2D *mesh);
00129   void paralCartGridSides(PbParalCartesianGrid2D *mesh);
00130   void cartGridSides(PbCartesianGrid2D *mesh);
00131   void polarGridSides(PbPolarGrid2D *mesh);
00132   void triangleSides(PbTriangleMesh2D *mesh);
00133   void quadrangleSides(PbQuadrangleMesh2D *mesh);
00134   void indexedSides(PbIndexedMesh2D *mesh);
00135 
00136  private:
00137   
00138   virtual ~PoMeshSides() ;  
00139   virtual void   setDefaultOnNonWritingFields();
00140   virtual void   addElementsAllCaches() ;
00141   virtual void   preRebuild();
00142   virtual SbBool setUpConnections(SbBool onOff, SbBool doItAlways = FALSE) ;
00143 
00144   
00145  private:
00146 
00147   FieldSensorList m_fieldSensorList ;
00148   
00149 
00150   SoFieldList     m_fieldList ;
00151   
00152 
00153 
00154 
00155   void regularCartGridSidesInhColr(PbRegularCartesianGrid2D *mesh, const float *z=0, float threshold_val=0) ;
00156   void regularCartGridSidesAvergColr(PbRegularCartesianGrid2D *mesh, const float *v, const float *z, float threshold_val=0);
00157   void regularCartGridSidesMapColr(PbRegularCartesianGrid2D *mesh, const float *v, const float *z, float threshold_val=0);
00158   void regularCartGridSidesContColr(PbRegularCartesianGrid2D *mesh, const float *v, const float *z, float threshold_val=0);
00159 
00160   void paralCartGridSidesInhColr(PbParalCartesianGrid2D *mesh, const float *z=0, float threshold_val=0) ;
00161   void paralCartGridSidesAvergColr(PbParalCartesianGrid2D *mesh, const float *v, const float *z, float threshold_val=0);
00162   void paralCartGridSidesMapColr(PbParalCartesianGrid2D *mesh, const float *v, const float *z, float threshold_val=0);
00163   void paralCartGridSidesContColr(PbParalCartesianGrid2D *mesh, const float *v, const float *z, float threshold_val=0);
00164 
00165   void cartGridSidesInhColr  (PbCartesianGrid2D *mesh, const float **z=0, float threshold_val=0) ;
00166   void cartGridSidesMapColr  (PbCartesianGrid2D *mesh, const float **v, const float **z=0, float threshold_val=0) ;
00167   void cartGridSidesAvergColr(PbCartesianGrid2D *mesh, const float **v, const float **z=0, float threshold_val=0) ;
00168   void cartGridSidesContColr (PbCartesianGrid2D *mesh, const float **v, const float **z=0, float threshold_val=0) ;
00169 
00170   void polarGridSidesInhColr  (PbPolarGrid2D *mesh, const float **z=0, float threshold_val=0);
00171   void polarGridSidesMapColr  (PbPolarGrid2D *mesh, const float **v, const float **z=0, float threshold_val=0);
00172   void polarGridSidesAvergColr(PbPolarGrid2D *mesh, const float **v, const float **z=0, float threshold_val=0);
00173   void polarGridSidesContColr (PbPolarGrid2D *mesh, const float **v, const float **z=0, float threshold_val=0);
00174 
00175   void triangleSidesInhColr   (PbTriangleMesh2D *mesh, const float *z=0, float threshold_val=0);
00176   void triangleSidesMapColr   (PbTriangleMesh2D *mesh, const float *v, const float *z, float threshold_val=0);
00177   void triangleSidesAvergColr (PbTriangleMesh2D *mesh, const float *v, const float *z, float threshold_val=0);
00178   void triangleSidesContColr  (PbTriangleMesh2D *mesh, const float *v, const float *z, float threshold_val=0);
00179 
00180   void quadrangleSidesInhColr   (PbQuadrangleMesh2D *mesh, const float *z=0, float threshold_val=0);
00181   void quadrangleSidesMapColr   (PbQuadrangleMesh2D *mesh, const float *v, const float *z, float threshold_val=0);
00182   void quadrangleSidesAvergColr (PbQuadrangleMesh2D *mesh, const float *v, const float *z, float threshold_val=0);
00183   void quadrangleSidesContColr  (PbQuadrangleMesh2D *mesh, const float *v, const float *z, float threshold_val=0);
00184 
00185   void indexedSidesInhColr   (PbIndexedMesh2D *mesh, const float *z=0, float threshold_val=0);
00186   void indexedSidesMapColr   (PbIndexedMesh2D *mesh, const float *v, const float *z, float threshold_val=0);
00187   void indexedSidesAvergColr (PbIndexedMesh2D *mesh, const float *v, const float *z, float threshold_val=0);
00188   void indexedSidesContColr  (PbIndexedMesh2D *mesh, const float *v, const float *z, float threshold_val=0);
00189 } ;
00190 
00191 
00192 
00193 #endif 
00194 
00195