00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00034 #ifndef __vtkScalarsToColors_h
00035 #define __vtkScalarsToColors_h
00036 
00037 #include "vtkObject.h"
00038 
00039 class vtkDataArray;
00040 class vtkUnsignedCharArray;
00041 
00042 class VTK_COMMON_EXPORT vtkScalarsToColors : public vtkObject
00043 {
00044 public:
00045   vtkTypeMacro(vtkScalarsToColors,vtkObject);
00046   void PrintSelf(ostream& os, vtkIndent indent);
00047   
00050   virtual int IsOpaque();
00051   
00053   virtual void Build() {};
00054   
00056 
00057   virtual double *GetRange() = 0;
00058   virtual void SetRange(double min, double max) = 0;
00059   void SetRange(double rng[2]) 
00060     {this->SetRange(rng[0],rng[1]);}
00062   
00065   virtual unsigned char *MapValue(double v) = 0;
00066 
00069   virtual void GetColor(double v, double rgb[3]) = 0;
00070 
00072 
00074   double *GetColor(double v)
00075     {this->GetColor(v,this->RGB); return this->RGB;}
00077  
00079 
00081   virtual double GetOpacity(double vtkNotUsed(v)) 
00082     {return 1.0;}
00084 
00086 
00089   double GetLuminance(double x) 
00090     {double rgb[3]; this->GetColor(x,rgb);
00091     return static_cast<double>(rgb[0]*0.30 + rgb[1]*0.59 + rgb[2]*0.11);}
00093 
00095 
00099   virtual void SetAlpha(double alpha);
00100   vtkGetMacro(Alpha,double);
00102 
00104 
00113   virtual vtkUnsignedCharArray *MapScalars(vtkDataArray *scalars, int colorMode,
00114                                    int component);
00116 
00118 
00119   vtkSetMacro(VectorMode, int);
00120   vtkGetMacro(VectorMode, int);
00121   void SetVectorModeToMagnitude();
00122   void SetVectorModeToComponent();
00124 
00125 
00126   enum VectorModes {
00127     MAGNITUDE=0,
00128     COMPONENT=1
00129   };
00130 
00131 
00132 
00134 
00136   vtkSetMacro(VectorComponent, int);
00137   vtkGetMacro(VectorComponent, int);
00139   
00141 
00146   void MapScalarsThroughTable(vtkDataArray *scalars, 
00147                               unsigned char *output,
00148                               int outputFormat);
00149   void MapScalarsThroughTable(vtkDataArray *scalars, 
00150                               unsigned char *output) 
00151     {this->MapScalarsThroughTable(scalars,output,VTK_RGBA);}
00153 
00154 
00156 
00157   virtual void MapScalarsThroughTable2(void *input, unsigned char *output,
00158                                        int inputDataType, int numberOfValues,
00159                                        int inputIncrement, 
00160                                        int outputFormat) = 0;
00162 
00164 
00167   virtual vtkUnsignedCharArray *ConvertUnsignedCharToRGBA(
00168     vtkUnsignedCharArray *colors, int numComp, int numTuples);
00170 
00172 
00174   virtual int UsingLogScale()
00175     { return 0; }
00177 
00179   virtual vtkIdType GetNumberOfAvailableColors() = 0;
00180 
00181 protected:
00182   vtkScalarsToColors();
00183   ~vtkScalarsToColors() {}
00184 
00185   double Alpha;
00186 
00187   
00188   int VectorMode;
00189   
00190   
00191   
00192   int UseMagnitude;
00193   int VectorComponent;
00194 
00195 private:
00196   double RGB[3];
00197 
00198   vtkScalarsToColors(const vtkScalarsToColors&);  
00199   void operator=(const vtkScalarsToColors&);  
00200 };
00201 
00202 #endif
00203 
00204 
00205