VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkDataSetEdgeSubdivisionCriterion.h 00005 Language: C++ 00006 00007 Copyright 2003 Sandia Corporation. 00008 Under the terms of Contract DE-AC04-94AL85000, there is a non-exclusive 00009 license for use of this work by or on behalf of the 00010 U.S. Government. Redistribution and use in source and binary forms, with 00011 or without modification, are permitted provided that this Notice and any 00012 statement of authorship are reproduced on all copies. 00013 00014 =========================================================================*/ 00015 #ifndef __vtkDataSetEdgeSubdivisionCriterion_h 00016 #define __vtkDataSetEdgeSubdivisionCriterion_h 00017 00041 #include "vtkFiltersCoreModule.h" // For export macro 00042 #include "vtkEdgeSubdivisionCriterion.h" 00043 00044 class vtkCell; 00045 class vtkDataSet; 00046 00047 class VTKFILTERSCORE_EXPORT vtkDataSetEdgeSubdivisionCriterion : public vtkEdgeSubdivisionCriterion 00048 { 00049 public: 00050 vtkTypeMacro(vtkDataSetEdgeSubdivisionCriterion,vtkEdgeSubdivisionCriterion); 00051 static vtkDataSetEdgeSubdivisionCriterion* New(); 00052 virtual void PrintSelf( ostream& os, vtkIndent indent ); 00053 00054 virtual void SetMesh( vtkDataSet* ); 00055 vtkDataSet* GetMesh(); 00056 //BTX 00057 const vtkDataSet* GetMesh() const; 00058 //ETX 00059 00060 virtual void SetCellId( vtkIdType cell ); 00061 vtkIdType GetCellId() const; 00062 //BTX 00063 vtkIdType& GetCellId(); 00064 //ETX 00065 vtkCell* GetCell(); 00066 //BTX 00067 const vtkCell* GetCell() const; 00068 //ETX 00069 00070 virtual bool EvaluateEdge( const double* p0, double* midpt, const double* p1, int field_start ); 00071 00101 double* EvaluateFields( double* vertex, double* weights, int field_start ); 00102 00104 00107 void EvaluatePointDataField( double* result, double* weights, int field ); 00108 void EvaluateCellDataField( double* result, double* weights, int field ); 00110 00112 00114 vtkSetMacro(ChordError2,double); 00115 vtkGetMacro(ChordError2,double); 00117 00119 00123 virtual void SetFieldError2( int s, double err ); 00124 double GetFieldError2( int s ) const; 00126 00130 virtual void ResetFieldError2(); 00131 00133 00136 vtkGetMacro(ActiveFieldCriteria,int); 00137 int GetActiveFieldCriteria() const { return this->ActiveFieldCriteria; } 00139 00140 protected: 00141 vtkDataSetEdgeSubdivisionCriterion(); 00142 virtual ~vtkDataSetEdgeSubdivisionCriterion(); 00143 00144 vtkDataSet* CurrentMesh; 00145 vtkIdType CurrentCellId; 00146 vtkCell* CurrentCellData; 00147 00148 double ChordError2; 00149 double* FieldError2; 00150 int FieldError2Length; 00151 int FieldError2Capacity; 00152 int ActiveFieldCriteria; 00153 00154 private: 00155 vtkDataSetEdgeSubdivisionCriterion( const vtkDataSetEdgeSubdivisionCriterion& ); // Not implemented. 00156 void operator = ( const vtkDataSetEdgeSubdivisionCriterion& ); // Not implemented. 00157 00158 }; 00159 00160 //BTX 00161 00162 inline vtkIdType& vtkDataSetEdgeSubdivisionCriterion::GetCellId() { return this->CurrentCellId; } 00163 inline vtkIdType vtkDataSetEdgeSubdivisionCriterion::GetCellId() const { return this->CurrentCellId; } 00164 00165 inline vtkDataSet* vtkDataSetEdgeSubdivisionCriterion::GetMesh() { return this->CurrentMesh; } 00166 inline const vtkDataSet* vtkDataSetEdgeSubdivisionCriterion::GetMesh() const { return this->CurrentMesh; } 00167 00168 inline vtkCell* vtkDataSetEdgeSubdivisionCriterion::GetCell() { return this->CurrentCellData; } 00169 inline const vtkCell* vtkDataSetEdgeSubdivisionCriterion::GetCell() const { return this->CurrentCellData; } 00170 00171 //ETX 00172 00173 #endif // __vtkDataSetEdgeSubdivisionCriterion_h