VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkLegendBoxActor.h 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 =========================================================================*/ 00040 #ifndef __vtkLegendBoxActor_h 00041 #define __vtkLegendBoxActor_h 00042 00043 #include "vtkActor2D.h" 00044 00045 class vtkActor; 00046 class vtkDoubleArray; 00047 class vtkImageData; 00048 class vtkPolyData; 00049 class vtkPolyDataMapper2D; 00050 class vtkPolyDataMapper; 00051 class vtkPlaneSource; 00052 class vtkTextMapper; 00053 class vtkTextProperty; 00054 class vtkTexturedActor2D; 00055 class vtkTransform; 00056 class vtkTransformPolyDataFilter; 00057 class vtkProperty2D; 00058 00059 class VTK_HYBRID_EXPORT vtkLegendBoxActor : public vtkActor2D 00060 { 00061 public: 00062 vtkTypeMacro(vtkLegendBoxActor,vtkActor2D); 00063 void PrintSelf(ostream& os, vtkIndent indent); 00064 00067 static vtkLegendBoxActor *New(); 00068 00070 00071 void SetNumberOfEntries(int num); 00072 int GetNumberOfEntries() 00073 {return this->NumberOfEntries;} 00075 00077 00085 void SetEntry(int i, vtkPolyData *symbol, const char* string, double color[3]); 00086 void SetEntry(int i, vtkImageData *symbol, const char* string, double color[3]); 00087 void SetEntry(int i, vtkPolyData *symbol, vtkImageData *icon, 00088 const char* string, double color[3]); 00090 00091 void SetEntrySymbol (int i, vtkPolyData *symbol); 00092 void SetEntryIcon (int i, vtkImageData *icon); 00093 void SetEntryString (int i, const char* string); 00094 void SetEntryColor (int i, double color[3]); 00095 void SetEntryColor (int i, double r, double g, double b); 00096 00097 vtkPolyData* GetEntrySymbol(int i); 00098 vtkImageData* GetEntryIcon(int i); 00099 const char* GetEntryString(int i); 00100 double* GetEntryColor(int i); 00101 00103 00104 virtual void SetEntryTextProperty(vtkTextProperty *p); 00105 vtkGetObjectMacro(EntryTextProperty,vtkTextProperty); 00107 00109 00111 vtkSetMacro(Border, int); 00112 vtkGetMacro(Border, int); 00113 vtkBooleanMacro(Border, int); 00115 00117 00123 vtkSetMacro(LockBorder, int); 00124 vtkGetMacro(LockBorder, int); 00125 vtkBooleanMacro(LockBorder, int); 00127 00129 00131 vtkSetMacro(Box, int); 00132 vtkGetMacro(Box, int); 00133 vtkBooleanMacro(Box, int); 00135 00137 vtkProperty2D* GetBoxProperty() { return this->BoxActor->GetProperty(); }; 00138 00140 00142 vtkSetClampMacro(Padding, int, 0, 50); 00143 vtkGetMacro(Padding, int); 00145 00147 00150 vtkSetMacro(ScalarVisibility,int); 00151 vtkGetMacro(ScalarVisibility,int); 00152 vtkBooleanMacro(ScalarVisibility,int); 00154 00156 00157 vtkSetMacro(UseBackground, int); 00158 vtkGetMacro(UseBackground, int); 00159 vtkBooleanMacro(UseBackground, int); 00161 00163 00164 vtkSetVector3Macro(BackgroundColor, double); 00165 vtkGetVector3Macro(BackgroundColor, double); 00167 00169 00170 vtkSetClampMacro(BackgroundOpacity, double, 0.0, 1.0); 00171 vtkGetMacro(BackgroundOpacity, double); 00173 00176 void ShallowCopy(vtkProp *prop); 00177 00178 //BTX 00183 virtual void ReleaseGraphicsResources(vtkWindow *); 00184 00186 00189 int RenderOpaqueGeometry(vtkViewport* viewport); 00190 virtual int RenderTranslucentPolygonalGeometry(vtkViewport* ) {return 0;}; 00191 int RenderOverlay(vtkViewport* viewport); 00193 00195 00196 virtual int HasTranslucentPolygonalGeometry(); 00197 //ETX 00199 00200 protected: 00201 vtkLegendBoxActor(); 00202 ~vtkLegendBoxActor(); 00203 00204 void InitializeEntries(); 00205 00206 vtkPolyData createTexturedPlane(); 00207 00208 int Border; 00209 int Box; 00210 int Padding; 00211 int LockBorder; 00212 int ScalarVisibility; 00213 double BoxOpacity; 00214 00215 // Internal actors, mappers, data to represent the legend 00216 int NumberOfEntries; 00217 int Size; //allocation size 00218 vtkDoubleArray *Colors; 00219 vtkTextMapper **TextMapper; 00220 vtkActor2D **TextActor; 00221 00222 vtkPolyData **Symbol; 00223 vtkTransform **Transform; 00224 vtkTransformPolyDataFilter **SymbolTransform; 00225 vtkPolyDataMapper2D **SymbolMapper; 00226 vtkActor2D **SymbolActor; 00227 00228 vtkPlaneSource **Icon; 00229 vtkTransform **IconTransform; 00230 vtkTransformPolyDataFilter **IconTransformFilter; 00231 vtkPolyDataMapper2D **IconMapper; 00232 vtkTexturedActor2D **IconActor; 00233 vtkImageData **IconImage; 00234 00235 vtkPolyData *BorderPolyData; 00236 vtkPolyDataMapper2D *BorderMapper; 00237 vtkActor2D *BorderActor; 00238 vtkPolyData *BoxPolyData; 00239 vtkPolyDataMapper2D *BoxMapper; 00240 vtkActor2D *BoxActor; 00241 vtkTextProperty *EntryTextProperty; 00242 00243 // Background plane. 00244 int UseBackground; 00245 double BackgroundOpacity; 00246 double BackgroundColor[3]; 00247 vtkPlaneSource *Background; 00248 00249 // May use texture. 00250 vtkTexturedActor2D *BackgroundActor; 00251 vtkPolyDataMapper2D *BackgroundMapper; 00252 00253 // Used to control whether the stuff is recomputed 00254 int LegendEntriesVisible; 00255 int CachedSize[2]; 00256 vtkTimeStamp BuildTime; 00257 00258 private: 00259 vtkLegendBoxActor(const vtkLegendBoxActor&); // Not implemented. 00260 void operator=(const vtkLegendBoxActor&); // Not implemented. 00261 }; 00262 00263 00264 #endif 00265