Main Page Class Hierarchy Alphabetical List Compound List File List Compound 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   Language:  C++
    00006
    00007   Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen
    00008   All rights reserved.
    00009   See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
    00010
    00011      This software is distributed WITHOUT ANY WARRANTY; without even
    00012      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
    00013      PURPOSE.  See the above copyright notice for more information.
    00014
    00015 =========================================================================*/
    00048 #ifndef __vtkColorTransferFunction_h
    00049 #define __vtkColorTransferFunction_h
    00050
    00051 #include "vtkScalarsToColors.h"
    00052
    00053 class vtkPiecewiseFunction;
    00054
    00055 #define VTK_CTF_RGB   0
    00056 #define VTK_CTF_HSV   1
    00057
    00058 class VTK_FILTERING_EXPORT vtkColorTransferFunction : public vtkScalarsToColors
    00059 {
    00060 public:
    00061   static vtkColorTransferFunction *New();
    00062   vtkTypeRevisionMacro(vtkColorTransferFunction,vtkScalarsToColors);
    00063   void DeepCopy( vtkColorTransferFunction *f );
    00064
    00066   void PrintSelf(ostream& os, vtkIndent indent);
    00067
    00069   int GetSize() {return this->NumberOfPoints;};
    00070
    00072
    00073   void AddRGBPoint( float x, float r, float g, float b );
    00074   void AddHSVPoint( float x, float h, float s, float v );
    00076
    00078
    00079   void AddRGBSegment( float x1, float r1, float g1, float b1,
    00080                       float x2, float r2, float g2, float b2 );
    00081   void AddHSVSegment( float x1, float h1, float s1, float v1,
    00082                       float x2, float h2, float s2, float v2 );
    00084
    00086
    00087   void RemovePoint( float x );
    00088   void RemoveAllPoints();
    00090
    00092
    00094   float *GetColor(float x) {
    00095     return vtkScalarsToColors::GetColor(x); }
    00096   void GetColor(float x, float rgb[3]);
    00098
    00100
    00101   float GetRedValue( float x );
    00102   float GetGreenValue( float x );
    00103   float GetBlueValue( float x );
    00105
    00107   virtual unsigned char *MapValue(float v);
    00108
    00110
    00111   vtkGetVector2Macro( Range, float );
    00113
    00115
    00116   void GetTable( float x1, float x2, int n, float* table );
    00117   const unsigned char *GetTable( float x1, float x2, int n);
    00119
    00124   void BuildFunctionFromTable( float x1, float x2, int size, float *table);
    00125
    00127
    00128   vtkSetClampMacro( Clamping, int, 0, 1 );
    00129   vtkGetMacro( Clamping, int );
    00130   vtkBooleanMacro( Clamping, int );
    00132
    00134
    00135   vtkSetClampMacro( ColorSpace, int, VTK_CTF_RGB, VTK_CTF_HSV );
    00136   void SetColorSpaceToRGB(){this->SetColorSpace(VTK_CTF_RGB);};
    00137   void SetColorSpaceToHSV(){this->SetColorSpace(VTK_CTF_HSV);};
    00138   vtkGetMacro( ColorSpace, int );
    00140
    00142
    00144   float *GetDataPointer() {return this->Function;};
    00145   void FillFromDataPointer(int, float*);
    00147
    00149
    00150   virtual void MapScalarsThroughTable2(void *input, unsigned char *output,
    00151                                      int inputDataType, int numberOfValues,
    00152                                      int inputIncrement, int outputIncrement);
    00154
    00155 protected:
    00156   vtkColorTransferFunction();
    00157   ~vtkColorTransferFunction();
    00158
    00159   // Determines the function value outside of defined points
    00160   // Zero = always return 0.0 outside of defined points
    00161   // One  = clamp to the lowest value below defined points and
    00162   //        highest value above defined points
    00163   int Clamping;
    00164
    00165   // The color space in which interpolation is performed
    00166   int ColorSpace;
    00167
    00168   // The color function
    00169   float       *Function;
    00170   int         FunctionSize;
    00171   int         NumberOfPoints;
    00172
    00173   // conversion methods
    00174   void RGBToHSV( float r, float g, float b, float &h, float &s, float &v );
    00175   void HSVToRGB( float h, float s, float v, float &r, float &g, float &b );
    00176
    00177   // An evaluated color (0 to 255 RGBA A=255)
    00178   unsigned char UnsignedCharRGBAValue[4];
    00179
    00180   // The min and max point locations for all three transfer functions
    00181   float Range[2];
    00182
    00183   // Transfer functions for each color component
    00184   // Remove after corresponding depricated methods are removed
    00185   vtkPiecewiseFunction  *Red;
    00186   vtkPiecewiseFunction  *Green;
    00187   vtkPiecewiseFunction  *Blue;
    00188   vtkTimeStamp BuildTime;
    00189   unsigned char *Table;
    00190   int TableSize;
    00191
    00193
    00195   virtual void SetRange(float, float) {};
    00196   void SetRange(float rng[2]) {this->SetRange(rng[0],rng[1]);};
    00198
    00199
    00200 private:
    00201   vtkColorTransferFunction(const vtkColorTransferFunction&);  // Not implemented.
    00202   void operator=(const vtkColorTransferFunction&);  // Not implemented.
    00203 };
    00204
    00205 #endif
    00206
    00207