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

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