Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

dox/Filtering/vtkColorTransferFunction.h

Go to the documentation of this file.
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkColorTransferFunction.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 __vtkColorTransferFunction_h 00033 #define __vtkColorTransferFunction_h 00034 00035 #include "vtkScalarsToColors.h" 00036 00037 class vtkPiecewiseFunction; 00038 00039 #define VTK_CTF_RGB 0 00040 #define VTK_CTF_HSV 1 00041 00042 class VTK_FILTERING_EXPORT vtkColorTransferFunction : public vtkScalarsToColors 00043 { 00044 public: 00045 static vtkColorTransferFunction *New(); 00046 vtkTypeRevisionMacro(vtkColorTransferFunction,vtkScalarsToColors); 00047 void DeepCopy( vtkColorTransferFunction *f ); 00048 00050 void PrintSelf(ostream& os, vtkIndent indent); 00051 00053 int GetSize() {return this->NumberOfPoints;}; 00054 00056 00058 int AddRGBPoint( double x, double r, double g, double b ); 00059 int AddHSVPoint( double x, double h, double s, double v ); 00060 int RemovePoint( double x ); 00062 00064 00065 void AddRGBSegment( double x1, double r1, double g1, double b1, 00066 double x2, double r2, double g2, double b2 ); 00067 void AddHSVSegment( double x1, double h1, double s1, double v1, 00068 double x2, double h2, double s2, double v2 ); 00070 00072 void RemoveAllPoints(); 00073 00075 00077 double *GetColor(double x) { 00078 return vtkScalarsToColors::GetColor(x); } 00079 void GetColor(double x, double rgb[3]); 00081 00083 00084 double GetRedValue( double x ); 00085 double GetGreenValue( double x ); 00086 double GetBlueValue( double x ); 00088 00090 virtual unsigned char *MapValue(double v); 00091 00093 00094 vtkGetVector2Macro( Range, double ); 00096 00098 00099 void GetTable( double x1, double x2, int n, double* table ); 00100 void GetTable( double x1, double x2, int n, float* table ); 00101 const unsigned char *GetTable( double x1, double x2, int n); 00103 00108 void BuildFunctionFromTable( double x1, double x2, int size, double *table); 00109 00111 00112 vtkSetClampMacro( Clamping, int, 0, 1 ); 00113 vtkGetMacro( Clamping, int ); 00114 vtkBooleanMacro( Clamping, int ); 00116 00118 00119 vtkSetClampMacro( ColorSpace, int, VTK_CTF_RGB, VTK_CTF_HSV ); 00120 void SetColorSpaceToRGB(){this->SetColorSpace(VTK_CTF_RGB);}; 00121 void SetColorSpaceToHSV(){this->SetColorSpace(VTK_CTF_HSV);}; 00122 vtkGetMacro( ColorSpace, int ); 00124 00126 00128 double *GetDataPointer() {return this->Function;}; 00129 void FillFromDataPointer(int, double*); 00131 00133 00134 virtual void MapScalarsThroughTable2(void *input, unsigned char *output, 00135 int inputDataType, int numberOfValues, 00136 int inputIncrement, int outputIncrement); 00138 00139 protected: 00140 vtkColorTransferFunction(); 00141 ~vtkColorTransferFunction(); 00142 00143 // Determines the function value outside of defined points 00144 // Zero = always return 0.0 outside of defined points 00145 // One = clamp to the lowest value below defined points and 00146 // highest value above defined points 00147 int Clamping; 00148 00149 // The color space in which interpolation is performed 00150 int ColorSpace; 00151 00152 // The color function 00153 double *Function; 00154 int FunctionSize; 00155 int NumberOfPoints; 00156 00157 // An evaluated color (0 to 255 RGBA A=255) 00158 unsigned char UnsignedCharRGBAValue[4]; 00159 00160 // The min and max point locations for all three transfer functions 00161 double Range[2]; 00162 00163 // Transfer functions for each color component 00164 // Remove after corresponding depricated methods are removed 00165 vtkPiecewiseFunction *Red; 00166 vtkPiecewiseFunction *Green; 00167 vtkPiecewiseFunction *Blue; 00168 vtkTimeStamp BuildTime; 00169 unsigned char *Table; 00170 int TableSize; 00171 00173 00175 virtual void SetRange(double, double) {}; 00176 void SetRange(double rng[2]) {this->SetRange(rng[0],rng[1]);}; 00178 00179 00180 private: 00181 vtkColorTransferFunction(const vtkColorTransferFunction&); // Not implemented. 00182 void operator=(const vtkColorTransferFunction&); // Not implemented. 00183 }; 00184 00185 #endif 00186 00187