00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
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
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
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
00216 int NumberOfEntries;
00217 int 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
00244 int UseBackground;
00245 double BackgroundOpacity;
00246 double BackgroundColor[3];
00247 vtkPlaneSource *Background;
00248
00249
00250 vtkTexturedActor2D *BackgroundActor;
00251 vtkPolyDataMapper2D *BackgroundMapper;
00252
00253
00254 int LegendEntriesVisible;
00255 int CachedSize[2];
00256 vtkTimeStamp BuildTime;
00257
00258 private:
00259 vtkLegendBoxActor(const vtkLegendBoxActor&);
00260 void operator=(const vtkLegendBoxActor&);
00261 };
00262
00263
00264 #endif
00265