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

Common/vtkLookupTable.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    $RCSfile: vtkLookupTable.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 =========================================================================*/
00034 #ifndef __vtkLookupTable_h
00035 #define __vtkLookupTable_h
00036 
00037 #include "vtkScalarsToColors.h"
00038 
00039 #include "vtkUnsignedCharArray.h" // Needed for inline method
00040 
00041 #define VTK_RAMP_LINEAR 0
00042 #define VTK_RAMP_SCURVE 1
00043 #define VTK_RAMP_SQRT 2
00044 #define VTK_SCALE_LINEAR 0
00045 #define VTK_SCALE_LOG10 1
00046 
00047 class VTK_COMMON_EXPORT vtkLookupTable : public vtkScalarsToColors
00048 {
00049 public:
00052   static vtkLookupTable *New();
00053   
00054   vtkTypeRevisionMacro(vtkLookupTable,vtkScalarsToColors);
00055   void PrintSelf(ostream& os, vtkIndent indent);
00056 
00058   int Allocate(int sz=256, int ext=256);
00059   
00062   virtual void Build();
00063 
00069   virtual void ForceBuild();
00070 
00072 
00079   vtkSetMacro(Ramp,int);
00080   void SetRampToLinear() { this->SetRamp(VTK_RAMP_LINEAR); };
00081   void SetRampToSCurve() { this->SetRamp(VTK_RAMP_SCURVE); };
00082   void SetRampToSQRT() { this->SetRamp(VTK_RAMP_SQRT); };
00083   vtkGetMacro(Ramp,int);
00085 
00087 
00090   void SetScale(int scale);
00091   void SetScaleToLinear() { this->SetScale(VTK_SCALE_LINEAR); };
00092   void SetScaleToLog10() { this->SetScale(VTK_SCALE_LOG10); };
00093   vtkGetMacro(Scale,int);
00095 
00097 
00101   void SetTableRange(double r[2]); 
00102   virtual void SetTableRange(double min, double max);
00103   vtkGetVectorMacro(TableRange,double,2);
00105 
00107 
00109   vtkSetVector2Macro(HueRange,double);
00110   vtkGetVector2Macro(HueRange,double);
00112 
00114 
00116   vtkSetVector2Macro(SaturationRange,double);
00117   vtkGetVector2Macro(SaturationRange,double);
00119 
00121 
00123   vtkSetVector2Macro(ValueRange,double);
00124   vtkGetVector2Macro(ValueRange,double);
00126 
00128 
00130   vtkSetVector2Macro(AlphaRange,double);
00131   vtkGetVector2Macro(AlphaRange,double);
00133 
00135   unsigned char *MapValue(double v);
00136 
00138 
00140   double *GetColor(double x) { return vtkScalarsToColors::GetColor(x); }
00141   void GetColor(double x, double rgb[3]);
00143 
00146   double GetOpacity(double v);
00147 
00149   virtual vtkIdType GetIndex(double v);
00150 
00152 
00153   void SetNumberOfTableValues(vtkIdType number);
00154   vtkIdType GetNumberOfTableValues() { return this->NumberOfColors; };
00156 
00161   void SetTableValue(vtkIdType indx, double rgba[4]);
00162 
00165   void SetTableValue(vtkIdType indx, double r, double g, double b, double a=1.0);
00166 
00169   double *GetTableValue(vtkIdType id);
00170 
00173   void GetTableValue(vtkIdType id, double rgba[4]);
00174 
00176 
00178   unsigned char *GetPointer(const vtkIdType id) {
00179     return this->Table->GetPointer(4*id); };
00181 
00186   unsigned char *WritePointer(const vtkIdType id, const int number);
00187 
00189 
00191   double *GetRange() { return this->GetTableRange(); };
00192   void SetRange(double min, double max) { this->SetTableRange(min, max); };
00193   void SetRange(double rng[2]) { this->SetRange(rng[0], rng[1]); };
00195 
00197 
00201   vtkSetClampMacro(NumberOfColors,vtkIdType,2,VTK_LARGE_ID);
00202   vtkGetMacro(NumberOfColors,vtkIdType);
00204 
00206 
00207   void MapScalarsThroughTable2(void *input, unsigned char *output,
00208                                int inputDataType, int numberOfValues,
00209                                int inputIncrement, int outputIncrement);
00211 
00213   void DeepCopy(vtkLookupTable *lut);
00214 
00215 protected:
00216   vtkLookupTable(int sze=256, int ext=256);
00217   ~vtkLookupTable();
00218 
00219   vtkIdType NumberOfColors;
00220   vtkUnsignedCharArray *Table;
00221   double TableRange[2];
00222   double HueRange[2];
00223   double SaturationRange[2];
00224   double ValueRange[2];
00225   double AlphaRange[2];
00226   int Scale;
00227   int Ramp;
00228   vtkTimeStamp InsertTime;
00229   vtkTimeStamp BuildTime;
00230   double RGBA[4]; //used during conversion process
00231 
00232 private:
00233   vtkLookupTable(const vtkLookupTable&);  // Not implemented.
00234   void operator=(const vtkLookupTable&);  // Not implemented.
00235 };
00236 
00237 inline unsigned char *vtkLookupTable::WritePointer(const vtkIdType id, 
00238                                                    const int number)
00239 {
00240  return this->Table->WritePointer(4*id,4*number);
00241 }
00242 
00243 #endif
00244 
00245 
00246