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

Rendering/vtkMapper.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    $RCSfile: vtkMapper.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 =========================================================================*/
00073 #ifndef __vtkMapper_h
00074 #define __vtkMapper_h
00075 
00076 #include "vtkAbstractMapper3D.h"
00077 #include "vtkScalarsToColors.h" // For VTK_COLOR_MODE_DEFAULT and _MAP_SCALARS
00078 
00079 #define VTK_RESOLVE_OFF 0
00080 #define VTK_RESOLVE_POLYGON_OFFSET 1
00081 #define VTK_RESOLVE_SHIFT_ZBUFFER 2
00082 
00083 #define VTK_GET_ARRAY_BY_ID 0
00084 #define VTK_GET_ARRAY_BY_NAME 1
00085 
00086 class vtkWindow;
00087 class vtkRenderer;
00088 class vtkActor;
00089 class vtkDataSet;
00090 
00091 class VTK_RENDERING_EXPORT vtkMapper : public vtkAbstractMapper3D
00092 {
00093 public:
00094   vtkTypeRevisionMacro(vtkMapper,vtkAbstractMapper3D);
00095   void PrintSelf(ostream& os, vtkIndent indent);
00096 
00098   void ShallowCopy(vtkAbstractMapper *m);
00099 
00102   unsigned long GetMTime();
00103 
00106   virtual void Render(vtkRenderer *ren, vtkActor *a) = 0;
00107 
00111   virtual void ReleaseGraphicsResources(vtkWindow *) {};
00112 
00114 
00115   void SetLookupTable(vtkScalarsToColors *lut);
00116   vtkScalarsToColors *GetLookupTable();
00118 
00121   virtual void CreateDefaultLookupTable();
00122 
00124 
00126   vtkSetMacro(ScalarVisibility,int);
00127   vtkGetMacro(ScalarVisibility,int);
00128   vtkBooleanMacro(ScalarVisibility,int);
00130 
00132 
00139   vtkSetMacro(ColorMode,int);
00140   vtkGetMacro(ColorMode,int);
00141   void SetColorModeToDefault() 
00142     {this->SetColorMode(VTK_COLOR_MODE_DEFAULT);};
00143   void SetColorModeToMapScalars() 
00144     {this->SetColorMode(VTK_COLOR_MODE_MAP_SCALARS);};
00146 
00148   const char *GetColorModeAsString();
00149 
00151 
00157   vtkSetMacro(UseLookupTableScalarRange,int);
00158   vtkGetMacro(UseLookupTableScalarRange,int);
00159   vtkBooleanMacro(UseLookupTableScalarRange,int);
00161 
00163 
00166   vtkSetVector2Macro(ScalarRange,float);
00167   vtkGetVectorMacro(ScalarRange,float,2);
00169 
00171 
00176   vtkSetMacro(ImmediateModeRendering,int);
00177   vtkGetMacro(ImmediateModeRendering,int);
00178   vtkBooleanMacro(ImmediateModeRendering,int);
00180 
00182 
00187   static void SetGlobalImmediateModeRendering(int val);
00188   static void GlobalImmediateModeRenderingOn() 
00189     {vtkMapper::SetGlobalImmediateModeRendering(1);};
00190   static void GlobalImmediateModeRenderingOff() 
00191     {vtkMapper::SetGlobalImmediateModeRendering(0);};
00192   static int  GetGlobalImmediateModeRendering();
00194 
00196 
00206   vtkSetMacro(ScalarMode,int);
00207   vtkGetMacro(ScalarMode,int);
00208   void SetScalarModeToDefault() {
00209     this->SetScalarMode(VTK_SCALAR_MODE_DEFAULT);};
00210   void SetScalarModeToUsePointData() {
00211     this->SetScalarMode(VTK_SCALAR_MODE_USE_POINT_DATA);};
00212   void SetScalarModeToUseCellData() {
00213     this->SetScalarMode(VTK_SCALAR_MODE_USE_CELL_DATA);};
00214   void SetScalarModeToUsePointFieldData() {
00215     this->SetScalarMode(VTK_SCALAR_MODE_USE_POINT_FIELD_DATA);};
00216   void SetScalarModeToUseCellFieldData() {
00217     this->SetScalarMode(VTK_SCALAR_MODE_USE_CELL_FIELD_DATA);};
00219   
00221 
00224   void SelectColorArray(int arrayNum); 
00225   void SelectColorArray(const char* arrayName); 
00227 
00229 
00231   void ColorByArrayComponent(int arrayNum, int component);
00232   void ColorByArrayComponent(const char* arrayName, int component);
00234   
00236 
00237   char* GetArrayName() { return this->ArrayName; }
00238   int GetArrayId() { return this->ArrayId; }
00239   int GetArrayAccessMode() { return this->ArrayAccessMode; }
00240   int GetArrayComponent() { return this->ArrayComponent; }
00242 
00244   const char *GetScalarModeAsString();
00245 
00247 
00257   static void SetResolveCoincidentTopology(int val);
00258   static int  GetResolveCoincidentTopology();
00259   static void SetResolveCoincidentTopologyToDefault();
00260   static void SetResolveCoincidentTopologyToOff() 
00261     {SetResolveCoincidentTopology(VTK_RESOLVE_OFF);}
00262   static void SetResolveCoincidentTopologyToPolygonOffset() 
00263     {SetResolveCoincidentTopology(VTK_RESOLVE_POLYGON_OFFSET);}
00264   static void SetResolveCoincidentTopologyToShiftZBuffer() 
00265     {SetResolveCoincidentTopology(VTK_RESOLVE_SHIFT_ZBUFFER);}
00267 
00269 
00272   static void SetResolveCoincidentTopologyPolygonOffsetParameters(float factor,
00273                                                                   float units);
00274   static void GetResolveCoincidentTopologyPolygonOffsetParameters(float& factor,
00275                                                                   float& units);
00277 
00279 
00281   static void SetResolveCoincidentTopologyZShift(double val);
00282   static double GetResolveCoincidentTopologyZShift();
00284 
00286 
00288   virtual float *GetBounds();
00289   virtual void GetBounds(float bounds[6]) 
00290     {this->vtkAbstractMapper3D::GetBounds(bounds);};
00292 
00294 
00297   void SetRenderTime(float time) {this->RenderTime = time;}
00298   vtkGetMacro(RenderTime, float);
00300 
00301   //BTX
00303   /*! Get the input as a vtkDataSet.  This method is overridden in the
00304       specialized mapper classes to return more specific data types. */
00305   vtkDataSet *GetInput();
00306   //ETX
00308 
00310   /*! Get the input to this mapper as a vtkDataSet, instead of as a more
00311       specialized data type that the subclass may return from GetInput(). 
00312       This method is provided for use in the wrapper languages, C++
00313       programmers should use GetInput() instead. */
00314   vtkDataSet *GetInputAsDataSet() 
00315     {return this->GetInput();}
00317 
00323   vtkUnsignedCharArray *MapScalars(float alpha);
00324   
00326   virtual void Update();
00327 
00328 protected:
00329   vtkMapper();
00330   ~vtkMapper();
00331 
00332   vtkUnsignedCharArray *Colors;
00333 
00334   vtkScalarsToColors *LookupTable;
00335   int ScalarVisibility;
00336   vtkTimeStamp BuildTime;
00337   float ScalarRange[2];
00338   int UseLookupTableScalarRange;
00339   int ImmediateModeRendering;
00340   int ColorMode;
00341   int ScalarMode;
00342 
00343   float RenderTime;
00344 
00345   // for coloring by a component of a field data array
00346   int ArrayId;
00347   char ArrayName[256];
00348   int ArrayComponent;
00349   int ArrayAccessMode;
00350 private:
00351   vtkMapper(const vtkMapper&);  // Not implemented.
00352   void operator=(const vtkMapper&);  // Not implemented.
00353 };
00354 
00355 #endif