VTK
dox/Graphics/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 "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