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

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 =========================================================================*/
00035 #ifndef __vtkColorTransferFunction_h
00036 #define __vtkColorTransferFunction_h
00037 
00038 #include "vtkScalarsToColors.h"
00039 
00040 class vtkColorTransferFunctionInternals;
00041 
00042 #define VTK_CTF_RGB           0
00043 #define VTK_CTF_HSV           1
00044 #define VTK_CTF_LAB           2
00045 #define VTK_CTF_DIVERGING     3
00046 
00047 #define VTK_CTF_LINEAR        0
00048 #define VTK_CTF_LOG10         1
00049 
00050 class VTK_FILTERING_EXPORT vtkColorTransferFunction : public vtkScalarsToColors 
00051 {
00052 public:
00053   static vtkColorTransferFunction *New();
00054   vtkTypeRevisionMacro(vtkColorTransferFunction,vtkScalarsToColors);
00055   void DeepCopy( vtkColorTransferFunction *f );
00056   void ShallowCopy( vtkColorTransferFunction *f );
00057 
00059   void PrintSelf(ostream& os, vtkIndent indent);
00060 
00062   int GetSize();
00063   
00065 
00067   int AddRGBPoint( double x, double r, double g, double b );
00068   int AddRGBPoint( double x, double r, double g, double b, 
00069                    double midpoint, double sharpness );
00070   int AddHSVPoint( double x, double h, double s, double v );
00071   int AddHSVPoint( double x, double h, double s, double v,
00072                    double midpoint, double sharpness );
00073   int RemovePoint( double x );
00075 
00077 
00078   void AddRGBSegment( double x1, double r1, double g1, double b1, 
00079                       double x2, double r2, double g2, double b2 );
00080   void AddHSVSegment( double x1, double h1, double s1, double v1, 
00081                       double x2, double h2, double s2, double v2 );
00083   
00085   void RemoveAllPoints();
00086 
00088 
00089   double *GetColor(double x) {
00090     return vtkScalarsToColors::GetColor(x); }
00091   void GetColor(double x, double rgb[3]);
00093 
00095 
00096   double GetRedValue( double x );
00097   double GetGreenValue( double x );
00098   double GetBlueValue( double x );
00100 
00102 
00104   int GetNodeValue( int index, double val[6] );
00105   int SetNodeValue( int index, double val[6] );
00107   
00109   virtual unsigned char *MapValue(double v);
00110 
00112 
00113   vtkGetVector2Macro( Range, double );
00115 
00118   int AdjustRange(double range[2]);
00119 
00121 
00122   void GetTable( double x1, double x2, int n, double* table );
00123   void GetTable( double x1, double x2, int n, float* table );
00124   const unsigned char *GetTable( double x1, double x2, int n);
00126 
00131   void BuildFunctionFromTable( double x1, double x2, int size, double *table);
00132 
00134 
00135   vtkSetClampMacro( Clamping, int, 0, 1 );
00136   vtkGetMacro( Clamping, int );
00137   vtkBooleanMacro( Clamping, int );
00139   
00141 
00148   vtkSetClampMacro( ColorSpace, int, VTK_CTF_RGB, VTK_CTF_DIVERGING );
00149   void SetColorSpaceToRGB(){this->SetColorSpace(VTK_CTF_RGB);};
00150   void SetColorSpaceToHSV(){this->SetColorSpace(VTK_CTF_HSV);};
00151   void SetColorSpaceToLab(){this->SetColorSpace(VTK_CTF_LAB);};
00152   void SetColorSpaceToDiverging(){this->SetColorSpace(VTK_CTF_DIVERGING);}
00153   vtkGetMacro( ColorSpace, int );
00154   vtkSetMacro(HSVWrap, int);
00155   vtkGetMacro(HSVWrap, int);
00156   vtkBooleanMacro(HSVWrap, int);
00158 
00160 
00163   vtkSetMacro(Scale,int);
00164   void SetScaleToLinear() { this->SetScale(VTK_CTF_LINEAR); };
00165   void SetScaleToLog10() { this->SetScale(VTK_CTF_LOG10); };
00166   vtkGetMacro(Scale,int);
00168     
00170 
00172   double *GetDataPointer();
00173   void FillFromDataPointer(int, double*);
00175 
00177 
00178   virtual void MapScalarsThroughTable2(void *input, unsigned char *output,
00179                                      int inputDataType, int numberOfValues,
00180                                      int inputIncrement, int outputIncrement);
00182   
00184 
00186   vtkSetMacro(AllowDuplicateScalars, int);
00187   vtkGetMacro(AllowDuplicateScalars, int);
00188   vtkBooleanMacro(AllowDuplicateScalars, int);
00190 
00191 protected:
00192   vtkColorTransferFunction();
00193   ~vtkColorTransferFunction();
00194 
00195   vtkColorTransferFunctionInternals *Internal;
00196   
00197   // Determines the function value outside of defined points
00198   // Zero = always return 0.0 outside of defined points
00199   // One  = clamp to the lowest value below defined points and
00200   //        highest value above defined points
00201   int Clamping;
00202 
00203   // The color space in which interpolation is performed
00204   int ColorSpace;
00205 
00206   // Specify if HSW is warp or not
00207   int HSVWrap;
00208 
00209   // The color interpolation scale (linear or logarithmic).
00210   int Scale;
00211   
00212   double     *Function;
00213   
00214   // The min and max node locations
00215   double Range[2];
00216   
00217   // An evaluated color (0 to 255 RGBA A=255)
00218   unsigned char UnsignedCharRGBAValue[4];
00219 
00220   int AllowDuplicateScalars;
00221 
00222   vtkTimeStamp BuildTime;
00223   unsigned char *Table;
00224   int TableSize;
00225   
00227 
00229   virtual void SetRange(double, double) {};
00230   void SetRange(double rng[2]) {this->SetRange(rng[0],rng[1]);};
00232 
00233   // Internal method to sort the vector and update the
00234   // Range whenever a node is added or removed
00235   void SortAndUpdateRange();
00236  
00239   void MovePoint(double oldX, double newX);
00240 
00241 private:
00242   vtkColorTransferFunction(const vtkColorTransferFunction&);  // Not implemented.
00243   void operator=(const vtkColorTransferFunction&);  // Not implemented.
00244 };
00245 
00246 #endif
00247 

Generated by  doxygen 1.7.1