VTK
vtkAxisActor.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkAxisActor.h
5  Language: C++
6 
7 Copyright (c) 1993-2000 Ken Martin, Will Schroeder, Bill Lorensen
8 All rights reserved.
9  This software is distributed WITHOUT ANY WARRANTY; without even
10  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
11  PURPOSE. See the above copyright notice for more information.
12 =========================================================================*/
51 #ifndef __vtkAxisActor_h
52 #define __vtkAxisActor_h
53 
54 #include "vtkActor.h"
55 
56 #define VTK_MAX_LABELS 200
57 #define VTK_MAX_TICKS 1000
58 
59 #define VTK_AXIS_TYPE_X 0
60 #define VTK_AXIS_TYPE_Y 1
61 #define VTK_AXIS_TYPE_Z 2
62 
63 #define VTK_TICKS_INSIDE 0
64 #define VTK_TICKS_OUTSIDE 1
65 #define VTK_TICKS_BOTH 2
66 
67 #define VTK_AXIS_POS_MINMIN 0
68 #define VTK_AXIS_POS_MINMAX 1
69 #define VTK_AXIS_POS_MAXMAX 2
70 #define VTK_AXIS_POS_MAXMIN 3
71 
72 // ****************************************************************************
73 // Modifications:
74 // Kathleen Bonnell, Tue Aug 31 16:17:43 PDT 2004
75 // Added TitleTextTime timestamp, so that title can be updated appropriately
76 // when its text changes. Changed Titles Set macro for a user-defined
77 // set so TitleTextTime can be updated.
78 //
79 // ****************************************************************************
80 
81 class vtkCamera;
82 class vtkCoordinate;
83 class vtkFollower;
84 class vtkPoints;
85 class vtkPolyData;
86 class vtkPolyDataMapper;
87 class vtkStringArray;
88 class vtkVectorText;
89 
91 {
92 public:
93  vtkTypeMacro(vtkAxisActor,vtkActor);
94  void PrintSelf(ostream& os, vtkIndent indent);
95 
97  static vtkAxisActor *New();
98 
100 
101  virtual vtkCoordinate *GetPoint1Coordinate();
102  virtual void SetPoint1(double x[3])
103  { this->SetPoint1(x[0], x[1], x[2]); }
104  virtual void SetPoint1(double x, double y, double z);
105  virtual double *GetPoint1();
107 
109 
110  virtual vtkCoordinate *GetPoint2Coordinate();
111  virtual void SetPoint2(double x[3])
112  { this->SetPoint2(x[0], x[1], x[2]); }
113  virtual void SetPoint2(double x, double y, double z);
114  virtual double *GetPoint2();
116 
118 
120  vtkSetVector2Macro(Range,double);
121  vtkGetVectorMacro(Range,double,2);
123 
125 
127  void SetBounds(double bounds[6]);
128  void SetBounds(double xmin, double xmax, double ymin, double ymax, double zmin, double zmax);
129  double *GetBounds(void);
130  void GetBounds(double bounds[6]);
132 
134 
135  vtkSetStringMacro(LabelFormat);
136  vtkGetStringMacro(LabelFormat);
138 
140 
141  vtkSetMacro(MinorTicksVisible, int);
142  vtkGetMacro(MinorTicksVisible, int);
143  vtkBooleanMacro(MinorTicksVisible, int);
145 
146 
148 
149  void SetTitle(const char *t);
150  vtkGetStringMacro(Title);
152 
154 
155  vtkSetMacro(MajorTickSize, double);
156  vtkGetMacro(MajorTickSize, double);
158 
160 
161  vtkSetMacro(MinorTickSize, double);
162  vtkGetMacro(MinorTickSize, double);
164 
166 
167  vtkSetClampMacro(TickLocation, int, VTK_TICKS_INSIDE, VTK_TICKS_BOTH);
168  vtkGetMacro(TickLocation, int);
170 
172  { this->SetTickLocation(VTK_TICKS_INSIDE); };
174  { this->SetTickLocation(VTK_TICKS_OUTSIDE); };
176  { this->SetTickLocation(VTK_TICKS_BOTH); };
177 
179 
180  vtkSetMacro(AxisVisibility, int);
181  vtkGetMacro(AxisVisibility, int);
182  vtkBooleanMacro(AxisVisibility, int);
184 
186 
187  vtkSetMacro(TickVisibility, int);
188  vtkGetMacro(TickVisibility, int);
189  vtkBooleanMacro(TickVisibility, int);
191 
193 
194  vtkSetMacro(LabelVisibility, int);
195  vtkGetMacro(LabelVisibility, int);
196  vtkBooleanMacro(LabelVisibility, int);
198 
200 
201  vtkSetMacro(TitleVisibility, int);
202  vtkGetMacro(TitleVisibility, int);
203  vtkBooleanMacro(TitleVisibility, int);
205 
207 
208  vtkSetMacro(DrawGridlines, int);
209  vtkGetMacro(DrawGridlines, int);
210  vtkBooleanMacro(DrawGridlines, int);
212 
214 
215  vtkSetMacro(GridlineXLength, double);
216  vtkGetMacro(GridlineXLength, double);
217  vtkSetMacro(GridlineYLength, double);
218  vtkGetMacro(GridlineYLength, double);
219  vtkSetMacro(GridlineZLength, double);
220  vtkGetMacro(GridlineZLength, double);
222 
224 
225  vtkSetClampMacro(AxisType, int, VTK_AXIS_TYPE_X, VTK_AXIS_TYPE_Z);
226  vtkGetMacro(AxisType, int);
227  void SetAxisTypeToX(void) { this->SetAxisType(VTK_AXIS_TYPE_X); };
228  void SetAxisTypeToY(void) { this->SetAxisType(VTK_AXIS_TYPE_Y); };
229  void SetAxisTypeToZ(void) { this->SetAxisType(VTK_AXIS_TYPE_Z); };
231 
233 
238  vtkSetClampMacro(AxisPosition, int, VTK_AXIS_POS_MINMIN, VTK_AXIS_POS_MAXMIN);
239  vtkGetMacro(AxisPosition, int);
241 
243  { this->SetAxisPosition(VTK_AXIS_POS_MINMIN); };
245  { this->SetAxisPosition(VTK_AXIS_POS_MINMAX); };
247  { this->SetAxisPosition(VTK_AXIS_POS_MAXMAX); };
249  { this->SetAxisPosition(VTK_AXIS_POS_MAXMIN); };
250 
252 
254  virtual void SetCamera(vtkCamera*);
255  vtkGetObjectMacro(Camera, vtkCamera);
257 
259 
260  virtual int RenderOpaqueGeometry(vtkViewport* viewport);
261  virtual int RenderTranslucentGeometry(vtkViewport *) {return 0;}
263 
268 
270  void ShallowCopy(vtkProp *prop);
271 
272 //BTX
273  double ComputeMaxLabelLength(const double [3]);
274  double ComputeTitleLength(const double [3]);
275 //ETX
276  void SetLabelScale(const double);
277  void SetTitleScale(const double);
278 
279 
281 
283  vtkSetMacro(MinorStart, double);
284  vtkGetMacro(MinorStart, double);
285  vtkSetMacro(MajorStart, double);
286  vtkGetMacro(MajorStart, double);
287  vtkSetMacro(DeltaMinor, double);
288  vtkGetMacro(DeltaMinor, double);
289  vtkSetMacro(DeltaMajor, double);
290  vtkGetMacro(DeltaMajor, double);
292 
294 
298  vtkSetMacro(MinorRangeStart, double);
299  vtkGetMacro(MinorRangeStart, double);
300  vtkSetMacro(MajorRangeStart, double);
301  vtkGetMacro(MajorRangeStart, double);
302  vtkSetMacro(DeltaRangeMinor, double);
303  vtkGetMacro(DeltaRangeMinor, double);
304  vtkSetMacro(DeltaRangeMajor, double);
305  vtkGetMacro(DeltaRangeMajor, double);
307 
308 //BTX
309  void SetLabels(vtkStringArray *labels);
310 //ETX
311 
312  void BuildAxis(vtkViewport *viewport, bool);
313 
314 protected:
315  vtkAxisActor();
316  ~vtkAxisActor();
317 
318  char *Title;
319  double Range[2];
320  double LastRange[2];
321  char *LabelFormat;
326 
332 
338 
339  int AxisType;
341  double Bounds[6];
342 
343 private:
344  vtkAxisActor(const vtkAxisActor&); // Not implemented
345  void operator=(const vtkAxisActor&); // Not implemented
346 
347  void TransformBounds(vtkViewport *, double bnds[6]);
348 
349  void BuildLabels(vtkViewport *, bool);
350  void SetLabelPositions(vtkViewport *, bool);
351 
352  void BuildTitle(bool);
353 
354  void SetAxisPointsAndLines(void);
355  bool BuildTickPointsForXType(double p1[3], double p2[3], bool);
356  bool BuildTickPointsForYType(double p1[3], double p2[3], bool);
357  bool BuildTickPointsForZType(double p1[3], double p2[3], bool);
358 
359  bool TickVisibilityChanged(void);
360 
361  vtkCoordinate *Point1Coordinate;
362  vtkCoordinate *Point2Coordinate;
363 
364  double MajorTickSize;
365  double MinorTickSize;
366 
367  // for the positions
368  double MajorStart;
369  double MinorStart;
370 
371  double DeltaMinor;
372  double DeltaMajor;
373 
374  // For the ticks, w.r.t to the set range
375  double MajorRangeStart;
376  double MinorRangeStart;
377  double DeltaRangeMinor;
378  double DeltaRangeMajor;
379 
380  int LastAxisPosition;
381  int LastAxisType;
382  int LastTickLocation;
383  double LastLabelStart;
384 
385  vtkPoints *MinorTickPts;
386  vtkPoints *MajorTickPts;
387  vtkPoints *GridlinePts;
388 
389  vtkVectorText *TitleVector;
390  vtkPolyDataMapper *TitleMapper;
391  vtkFollower *TitleActor;
392 
393  vtkVectorText **LabelVectors;
394  vtkPolyDataMapper **LabelMappers;
395  vtkFollower **LabelActors;
396 
397  vtkPolyData *Axis;
398  vtkPolyDataMapper *AxisMapper;
399  vtkActor *AxisActor;
400 
401  vtkCamera *Camera;
402  vtkTimeStamp BuildTime;
403  vtkTimeStamp BoundsTime;
404  vtkTimeStamp LabelBuildTime;
405  vtkTimeStamp TitleTextTime;
406 
407  int AxisHasZeroLength;
408 };
409 
410 
411 #endif
#define VTK_AXIS_TYPE_X
Definition: vtkAxisActor.h:59
abstract superclass for all actors, volumes and annotations
Definition: vtkProp.h:49
virtual void SetPoint1(double x[3])
Definition: vtkAxisActor.h:102
double GridlineXLength
Definition: vtkAxisActor.h:329
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:49
#define VTK_TICKS_OUTSIDE
Definition: vtkAxisActor.h:64
void SetAxisTypeToY(void)
Definition: vtkAxisActor.h:228
int LastMinorTicksVisible
Definition: vtkAxisActor.h:324
#define VTK_AXIS_POS_MAXMAX
Definition: vtkAxisActor.h:69
abstract specification for Viewports
Definition: vtkViewport.h:45
virtual void SetPoint2(double x[3])
Definition: vtkAxisActor.h:111
#define VTK_AXIS_TYPE_Z
Definition: vtkAxisActor.h:61
double GridlineZLength
Definition: vtkAxisActor.h:331
record modification and/or execution time
Definition: vtkTimeStamp.h:33
Create an axis with tick marks and labels.
Definition: vtkAxisActor.h:90
a vtkAbstractArray subclass for strings
int LastDrawGridlines
Definition: vtkAxisActor.h:328
void SetTickLocationToInside(void)
Definition: vtkAxisActor.h:171
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:81
static vtkActor * New()
void PrintSelf(ostream &os, vtkIndent indent)
double GridlineYLength
Definition: vtkAxisActor.h:330
void SetAxisPositionToMaxMin(void)
Definition: vtkAxisActor.h:248
window superclass for vtkRenderWindow
Definition: vtkWindow.h:35
void SetAxisTypeToX(void)
Definition: vtkAxisActor.h:227
a simple class to control print indentation
Definition: vtkIndent.h:37
a virtual camera for 3D rendering
Definition: vtkCamera.h:47
void SetAxisPositionToMaxMax(void)
Definition: vtkAxisActor.h:246
void SetTickLocationToBoth(void)
Definition: vtkAxisActor.h:175
#define VTK_AXIS_POS_MAXMIN
Definition: vtkAxisActor.h:70
int LastTickVisibility
Definition: vtkAxisActor.h:335
#define VTK_TICKS_BOTH
Definition: vtkAxisActor.h:65
#define VTK_AXIS_TYPE_Y
Definition: vtkAxisActor.h:60
int NumberOfLabelsBuilt
Definition: vtkAxisActor.h:322
char * LabelFormat
Definition: vtkAxisActor.h:321
perform coordinate transformation, and represent position, in a variety of vtk coordinate systems ...
Definition: vtkCoordinate.h:68
double * GetBounds()
void SetAxisPositionToMinMax(void)
Definition: vtkAxisActor.h:244
map vtkPolyData to graphics primitives
void SetAxisPositionToMinMin(void)
Definition: vtkAxisActor.h:242
#define VTK_AXIS_POS_MINMAX
Definition: vtkAxisActor.h:68
a subclass of actor that always faces the camera
Definition: vtkFollower.h:44
virtual int RenderOpaqueGeometry(vtkViewport *viewport)
int MinorTicksVisible
Definition: vtkAxisActor.h:323
#define VTK_TICKS_INSIDE
Definition: vtkAxisActor.h:63
void ReleaseGraphicsResources(vtkWindow *)
void SetAxisTypeToZ(void)
Definition: vtkAxisActor.h:229
void SetTickLocationToOutside(void)
Definition: vtkAxisActor.h:173
#define VTK_HYBRID_EXPORT
#define VTK_AXIS_POS_MINMIN
Definition: vtkAxisActor.h:67
virtual int RenderTranslucentGeometry(vtkViewport *)
Definition: vtkAxisActor.h:261
void ShallowCopy(vtkProp *prop)
represent and manipulate 3D points
Definition: vtkPoints.h:38
create polygonal text
Definition: vtkVectorText.h:45