VTK
dox/Filters/Core/vtkEdgeSubdivisionCriterion.h
Go to the documentation of this file.
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 "vtkFiltersCoreModule.h" // For export macro
00041 #include "vtkObject.h"
00042 
00043 class vtkDataSetAttributes;
00044 class vtkMatrix4x4;
00045 class vtkStreamingTessellator;
00046 
00047 class VTKFILTERSCORE_EXPORT vtkEdgeSubdivisionCriterion : public vtkObject
00048 {
00049   public:
00050     vtkTypeMacro(vtkEdgeSubdivisionCriterion,vtkObject);
00051     virtual void PrintSelf( ostream& os, vtkIndent indent );
00052 
00056     virtual bool EvaluateEdge( const double* p0, double* p1, const double* p2, int field_start ) = 0 ;
00057 
00064     virtual int PassField( int sourceId, int sourceSize, vtkStreamingTessellator* t );
00065 
00069     virtual void ResetFieldList();
00070 
00074     virtual bool DontPassField( int sourceId, vtkStreamingTessellator* t );
00075 
00079     const int* GetFieldIds() const;
00080 
00085     const int* GetFieldOffsets() const;
00086 
00089     int GetOutputField( int fieldId ) const;
00090 
00094     int GetNumberOfFields() const;
00095 
00096   protected:
00097     vtkEdgeSubdivisionCriterion();
00098     virtual ~vtkEdgeSubdivisionCriterion();
00099 
00100     int* FieldIds;
00101     int* FieldOffsets;
00102     int  NumberOfFields;
00103 
00123     bool ViewDependentEval( const double* p0, double* p1, double* p1_actual, const double* p2, int field_start, vtkMatrix4x4* viewtrans, const double* pixelSize, double allowableChordErr ) const;
00124 
00148     bool FixedFieldErrorEval( const double* p0, double* p1, double* p1_actual, const double* p2, int field_start, int field_criteria, double* allowableFieldErr ) const;
00149 
00150   private:
00151     vtkEdgeSubdivisionCriterion( const vtkEdgeSubdivisionCriterion& ); // Not implemented.
00152     void operator = ( const vtkEdgeSubdivisionCriterion& ); // Not implemented.
00153 };
00154 
00155 //BTX
00156 
00157 inline const int* vtkEdgeSubdivisionCriterion::GetFieldIds() const { return this->FieldIds; }
00158 inline const int* vtkEdgeSubdivisionCriterion::GetFieldOffsets() const { return this->FieldOffsets; }
00159 inline int vtkEdgeSubdivisionCriterion::GetNumberOfFields() const { return this->NumberOfFields; }
00160 
00161 //ETX
00162 
00163 #endif // __vtkEdgeSubdivisionCriterion_h