VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkSampleFunction.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 =========================================================================*/ 00032 #ifndef __vtkSampleFunction_h 00033 #define __vtkSampleFunction_h 00034 00035 #include "vtkImageAlgorithm.h" 00036 00037 class vtkImplicitFunction; 00038 class vtkDataArray; 00039 00040 class VTK_IMAGING_EXPORT vtkSampleFunction : public vtkImageAlgorithm 00041 { 00042 public: 00043 vtkTypeRevisionMacro(vtkSampleFunction,vtkImageAlgorithm); 00044 void PrintSelf(ostream& os, vtkIndent indent); 00045 00049 static vtkSampleFunction *New(); 00050 00052 00053 virtual void SetImplicitFunction(vtkImplicitFunction*); 00054 vtkGetObjectMacro(ImplicitFunction,vtkImplicitFunction); 00056 00058 00059 vtkSetMacro(OutputScalarType,int); 00060 vtkGetMacro(OutputScalarType,int); 00061 void SetOutputScalarTypeToDouble() 00062 {this->SetOutputScalarType(VTK_DOUBLE);} 00063 void SetOutputScalarTypeToFloat() 00064 {this->SetOutputScalarType(VTK_FLOAT);} 00065 void SetOutputScalarTypeToLong() 00066 {this->SetOutputScalarType(VTK_LONG);} 00067 void SetOutputScalarTypeToUnsignedLong() 00068 {this->SetOutputScalarType(VTK_UNSIGNED_LONG);}; 00069 void SetOutputScalarTypeToInt() 00070 {this->SetOutputScalarType(VTK_INT);} 00071 void SetOutputScalarTypeToUnsignedInt() 00072 {this->SetOutputScalarType(VTK_UNSIGNED_INT);} 00073 void SetOutputScalarTypeToShort() 00074 {this->SetOutputScalarType(VTK_SHORT);} 00075 void SetOutputScalarTypeToUnsignedShort() 00076 {this->SetOutputScalarType(VTK_UNSIGNED_SHORT);} 00077 void SetOutputScalarTypeToChar() 00078 {this->SetOutputScalarType(VTK_CHAR);} 00079 void SetOutputScalarTypeToUnsignedChar() 00080 {this->SetOutputScalarType(VTK_UNSIGNED_CHAR);} 00082 00086 virtual void SetScalars(vtkDataArray *da); 00087 00089 void SetSampleDimensions(int i, int j, int k); 00090 00092 00093 void SetSampleDimensions(int dim[3]); 00094 vtkGetVectorMacro(SampleDimensions,int,3); 00096 00098 00100 vtkSetVector6Macro(ModelBounds,double); 00101 vtkGetVectorMacro(ModelBounds,double,6); 00103 00105 00108 vtkSetMacro(Capping,int); 00109 vtkGetMacro(Capping,int); 00110 vtkBooleanMacro(Capping,int); 00112 00114 00115 vtkSetMacro(CapValue,double); 00116 vtkGetMacro(CapValue,double); 00118 00120 00121 vtkSetMacro(ComputeNormals,int); 00122 vtkGetMacro(ComputeNormals,int); 00123 vtkBooleanMacro(ComputeNormals,int); 00125 00127 00129 vtkSetStringMacro(ScalarArrayName); 00130 vtkGetStringMacro(ScalarArrayName); 00132 00134 00136 vtkSetStringMacro(NormalArrayName); 00137 vtkGetStringMacro(NormalArrayName); 00139 00141 unsigned long GetMTime(); 00142 00143 protected: 00149 vtkSampleFunction(); 00150 00151 ~vtkSampleFunction(); 00152 00153 virtual void ReportReferences(vtkGarbageCollector*); 00154 00155 void ExecuteData(vtkDataObject *); 00156 virtual int RequestInformation (vtkInformation *, 00157 vtkInformationVector **, 00158 vtkInformationVector *); 00159 void Cap(vtkDataArray *s); 00160 00161 int OutputScalarType; 00162 int SampleDimensions[3]; 00163 double ModelBounds[6]; 00164 int Capping; 00165 double CapValue; 00166 vtkImplicitFunction *ImplicitFunction; 00167 int ComputeNormals; 00168 char *ScalarArrayName; 00169 char *NormalArrayName; 00170 00171 private: 00172 vtkSampleFunction(const vtkSampleFunction&); // Not implemented. 00173 void operator=(const vtkSampleFunction&); // Not implemented. 00174 }; 00175 00176 #endif 00177 00178