VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkEdgeSubdivisionCriterion.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 __vtkEdgeSubdivisionCriterion_h 00016 #define __vtkEdgeSubdivisionCriterion_h 00017 00040 #include "vtkObject.h" 00041 00042 class vtkDataSetAttributes; 00043 class vtkMatrix4x4; 00044 class vtkStreamingTessellator; 00045 00046 class VTK_GRAPHICS_EXPORT vtkEdgeSubdivisionCriterion : public vtkObject 00047 { 00048 public: 00049 vtkTypeMacro(vtkEdgeSubdivisionCriterion,vtkObject); 00050 virtual void PrintSelf( ostream& os, vtkIndent indent ); 00051 00055 virtual bool EvaluateEdge( const double* p0, double* p1, const double* p2, int field_start ) = 0 ; 00056 00063 virtual int PassField( int sourceId, int sourceSize, vtkStreamingTessellator* t ); 00064 00068 virtual void ResetFieldList(); 00069 00073 virtual bool DontPassField( int sourceId, vtkStreamingTessellator* t ); 00074 00078 const int* GetFieldIds() const; 00079 00084 const int* GetFieldOffsets() const; 00085 00088 int GetOutputField( int fieldId ) const; 00089 00093 int GetNumberOfFields() const; 00094 00095 protected: 00096 vtkEdgeSubdivisionCriterion(); 00097 virtual ~vtkEdgeSubdivisionCriterion(); 00098 00099 int* FieldIds; 00100 int* FieldOffsets; 00101 int NumberOfFields; 00102 00122 bool ViewDependentEval( const double* p0, double* p1, double* p1_actual, const double* p2, int field_start, vtkMatrix4x4* viewtrans, const double* pixelSize, double allowableChordErr ) const; 00123 00147 bool FixedFieldErrorEval( const double* p0, double* p1, double* p1_actual, const double* p2, int field_start, int field_criteria, double* allowableFieldErr ) const; 00148 00149 private: 00150 vtkEdgeSubdivisionCriterion( const vtkEdgeSubdivisionCriterion& ); // Not implemented. 00151 void operator = ( const vtkEdgeSubdivisionCriterion& ); // Not implemented. 00152 }; 00153 00154 //BTX 00155 00156 inline const int* vtkEdgeSubdivisionCriterion::GetFieldIds() const { return this->FieldIds; } 00157 inline const int* vtkEdgeSubdivisionCriterion::GetFieldOffsets() const { return this->FieldOffsets; } 00158 inline int vtkEdgeSubdivisionCriterion::GetNumberOfFields() const { return this->NumberOfFields; } 00159 00160 //ETX 00161 00162 #endif // __vtkEdgeSubdivisionCriterion_h