• Main Page
  • Related Pages
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

dox/Graphics/vtkThreshold.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    $RCSfile: vtkThreshold.h,v $
00005 
00006   Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
00007   All rights reserved.
00008   See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
00009 
00010      This software is distributed WITHOUT ANY WARRANTY; without even
00011      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
00012      PURPOSE.  See the above copyright notice for more information.
00013 
00014 =========================================================================*/
00039 #ifndef __vtkThreshold_h
00040 #define __vtkThreshold_h
00041 
00042 #include "vtkUnstructuredGridAlgorithm.h"
00043 
00044 #define VTK_ATTRIBUTE_MODE_DEFAULT         0
00045 #define VTK_ATTRIBUTE_MODE_USE_POINT_DATA  1
00046 #define VTK_ATTRIBUTE_MODE_USE_CELL_DATA   2
00047 
00048 // order / values are important because of the SetClampMacro
00049 #define VTK_COMPONENT_MODE_USE_SELECTED    0
00050 #define VTK_COMPONENT_MODE_USE_ALL         1
00051 #define VTK_COMPONENT_MODE_USE_ANY         2
00052 
00053 class vtkDataArray;
00054 
00055 class VTK_GRAPHICS_EXPORT vtkThreshold : public vtkUnstructuredGridAlgorithm
00056 {
00057 public:
00058   static vtkThreshold *New();
00059   vtkTypeRevisionMacro(vtkThreshold,vtkUnstructuredGridAlgorithm);
00060   void PrintSelf(ostream& os, vtkIndent indent);
00061 
00064   void ThresholdByLower(double lower);
00065 
00068   void ThresholdByUpper(double upper);
00069 
00072   void ThresholdBetween(double lower, double upper);
00073 
00075 
00076   vtkGetMacro(UpperThreshold,double);
00077   vtkGetMacro(LowerThreshold,double);
00079 
00081 
00087   vtkSetMacro(AttributeMode,int);
00088   vtkGetMacro(AttributeMode,int);
00089   void SetAttributeModeToDefault() 
00090     {this->SetAttributeMode(VTK_ATTRIBUTE_MODE_DEFAULT);};
00091   void SetAttributeModeToUsePointData() 
00092     {this->SetAttributeMode(VTK_ATTRIBUTE_MODE_USE_POINT_DATA);};
00093   void SetAttributeModeToUseCellData() 
00094     {this->SetAttributeMode(VTK_ATTRIBUTE_MODE_USE_CELL_DATA);};
00095   const char *GetAttributeModeAsString();
00097 
00099 
00105   vtkSetClampMacro(ComponentMode,int,
00106                    VTK_COMPONENT_MODE_USE_SELECTED,
00107                    VTK_COMPONENT_MODE_USE_ANY);
00108   vtkGetMacro(ComponentMode,int);
00109   void SetComponentModeToUseSelected() 
00110     {this->SetComponentMode(VTK_COMPONENT_MODE_USE_SELECTED);};
00111   void SetComponentModeToUseAll() 
00112     {this->SetComponentMode(VTK_COMPONENT_MODE_USE_ALL);};
00113   void SetComponentModeToUseAny() 
00114     {this->SetComponentMode(VTK_COMPONENT_MODE_USE_ANY);};
00115   const char *GetComponentModeAsString();
00117   
00119 
00121   vtkSetClampMacro(SelectedComponent,int,0,VTK_INT_MAX);
00122   vtkGetMacro(SelectedComponent,int);
00124   
00126 
00130   vtkSetMacro(AllScalars,int);
00131   vtkGetMacro(AllScalars,int);
00132   vtkBooleanMacro(AllScalars,int);
00134 
00136 
00138   void SetPointsDataTypeToDouble() { this->SetPointsDataType( VTK_DOUBLE ); }
00139   void SetPointsDataTypeToFloat()  { this->SetPointsDataType( VTK_FLOAT  ); }
00140   vtkSetMacro( PointsDataType, int );
00141   vtkGetMacro( PointsDataType, int );
00143   
00144 protected:
00145   vtkThreshold();
00146   ~vtkThreshold();
00147 
00148   // Usual data generation method
00149   virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
00150 
00151   virtual int FillInputPortInformation(int port, vtkInformation *info);
00152 
00153   int    AllScalars;
00154   double LowerThreshold;
00155   double UpperThreshold;
00156   int    AttributeMode;
00157   int    ComponentMode;
00158   int    SelectedComponent;
00159   int    PointsDataType;
00160   
00161   //BTX
00162   int (vtkThreshold::*ThresholdFunction)(double s);
00163   //ETX
00164 
00165   int Lower(double s) {return ( s <= this->LowerThreshold ? 1 : 0 );};
00166   int Upper(double s) {return ( s >= this->UpperThreshold ? 1 : 0 );};
00167   int Between(double s) {return ( s >= this->LowerThreshold ? 
00168                                ( s <= this->UpperThreshold ? 1 : 0 ) : 0 );};
00169 
00170   int EvaluateComponents( vtkDataArray *scalars, vtkIdType id );
00171   
00172 private:
00173   vtkThreshold(const vtkThreshold&);  // Not implemented.
00174   void operator=(const vtkThreshold&);  // Not implemented.
00175 };
00176 
00177 #endif

Generated by  doxygen 1.7.1