VTK
dox/Filters/Core/vtkDataSetEdgeSubdivisionCriterion.h
Go to the documentation of this file.
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