• Main Page
  • Related Pages
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

dox/Hybrid/vtkAxisActor.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    $RCSfile: vtkAxisActor.h,v $
00005   Language:  C++
00006 
00007 Copyright (c) 1993-2000 Ken Martin, Will Schroeder, Bill Lorensen 
00008 All rights reserved.
00009      This software is distributed WITHOUT ANY WARRANTY; without even 
00010      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
00011      PURPOSE.  See the above copyright notice for more information.
00012 =========================================================================*/
00048 #ifndef __vtkAxisActor_h
00049 #define __vtkAxisActor_h
00050 
00051 #include "vtkActor.h"
00052 
00053 #define VTK_MAX_LABELS    200
00054 #define VTK_MAX_TICKS     1000
00055 
00056 #define VTK_AXIS_TYPE_X   0
00057 #define VTK_AXIS_TYPE_Y   1
00058 #define VTK_AXIS_TYPE_Z   2
00059 
00060 #define VTK_TICKS_INSIDE  0
00061 #define VTK_TICKS_OUTSIDE 1
00062 #define VTK_TICKS_BOTH    2
00063 
00064 #define VTK_AXIS_POS_MINMIN 0
00065 #define VTK_AXIS_POS_MINMAX 1
00066 #define VTK_AXIS_POS_MAXMAX 2
00067 #define VTK_AXIS_POS_MAXMIN 3
00068 
00069 // ****************************************************************************
00070 //  Modifications:
00071 //    Kathleen Bonnell, Tue Aug 31 16:17:43 PDT 2004
00072 //    Added TitleTextTime timestamp, so that title can be updated appropriately
00073 //    when its text changes.  Changed Titles Set macro for a user-defined
00074 //    set so TitleTextTime can be updated.
00075 //
00076 // ****************************************************************************
00077 
00078 class vtkCamera;
00079 class vtkCoordinate;
00080 class vtkFollower;
00081 class vtkPoints;
00082 class vtkPolyData;
00083 class vtkPolyDataMapper;
00084 class vtkStringArray;
00085 class vtkVectorText;
00086 
00087 class VTK_HYBRID_EXPORT vtkAxisActor : public vtkActor
00088 {
00089 public:
00090   vtkTypeRevisionMacro(vtkAxisActor,vtkActor);
00091   void PrintSelf(ostream& os, vtkIndent indent);
00092 
00094   static vtkAxisActor *New();
00095   
00097 
00098   virtual vtkCoordinate *GetPoint1Coordinate();
00099   virtual void SetPoint1(double x[3])
00100     { this->SetPoint1(x[0], x[1], x[2]); }
00101   virtual void SetPoint1(double x, double y, double z);
00102   virtual double *GetPoint1();
00104 
00106 
00107   virtual vtkCoordinate *GetPoint2Coordinate();
00108   virtual void SetPoint2(double x[3])
00109     { this->SetPoint2(x[0], x[1], x[2]); }
00110   virtual void SetPoint2(double x, double y, double z);
00111   virtual double *GetPoint2();
00113 
00115 
00117   vtkSetVector2Macro(Range,double);
00118   vtkGetVectorMacro(Range,double,2);
00120 
00122 
00124   void   SetBounds(double bounds[6]);
00125   double *GetBounds(void);
00126   void   GetBounds(double bounds[6]);
00128 
00130 
00131   vtkSetStringMacro(LabelFormat);
00132   vtkGetStringMacro(LabelFormat);
00134 
00136 
00137   vtkSetMacro(MinorTicksVisible, int);
00138   vtkGetMacro(MinorTicksVisible, int);
00139   vtkBooleanMacro(MinorTicksVisible, int);
00141 
00142 
00144 
00145   void SetTitle(const char *t);
00146   vtkGetStringMacro(Title);
00148 
00150 
00151   vtkSetMacro(MajorTickSize, double);
00152   vtkGetMacro(MajorTickSize, double);
00154   
00156 
00157   vtkSetMacro(MinorTickSize, double);
00158   vtkGetMacro(MinorTickSize, double);
00160 
00162 
00163   vtkSetClampMacro(TickLocation, int, VTK_TICKS_INSIDE, VTK_TICKS_BOTH);
00164   vtkGetMacro(TickLocation, int);
00166 
00167   void SetTickLocationToInside(void)
00168     { this->SetTickLocation(VTK_TICKS_INSIDE); };
00169   void SetTickLocationToOutside(void)
00170     { this->SetTickLocation(VTK_TICKS_OUTSIDE); };
00171   void SetTickLocationToBoth(void)
00172     { this->SetTickLocation(VTK_TICKS_BOTH); };
00173   
00175 
00176   vtkSetMacro(AxisVisibility, int);
00177   vtkGetMacro(AxisVisibility, int);
00178   vtkBooleanMacro(AxisVisibility, int);
00180 
00182 
00183   vtkSetMacro(TickVisibility, int);
00184   vtkGetMacro(TickVisibility, int);
00185   vtkBooleanMacro(TickVisibility, int);
00187 
00189 
00190   vtkSetMacro(LabelVisibility, int);
00191   vtkGetMacro(LabelVisibility, int);
00192   vtkBooleanMacro(LabelVisibility, int);
00194 
00196 
00197   vtkSetMacro(TitleVisibility, int);
00198   vtkGetMacro(TitleVisibility, int);
00199   vtkBooleanMacro(TitleVisibility, int);
00201 
00203 
00204   vtkSetMacro(DrawGridlines, int);
00205   vtkGetMacro(DrawGridlines, int);
00206   vtkBooleanMacro(DrawGridlines, int);
00208 
00210 
00211   vtkSetMacro(GridlineXLength, double);
00212   vtkGetMacro(GridlineXLength, double);
00213   vtkSetMacro(GridlineYLength, double);
00214   vtkGetMacro(GridlineYLength, double);
00215   vtkSetMacro(GridlineZLength, double);
00216   vtkGetMacro(GridlineZLength, double);
00218 
00220 
00221   vtkSetClampMacro(AxisType, int, VTK_AXIS_TYPE_X, VTK_AXIS_TYPE_Z);
00222   vtkGetMacro(AxisType, int);
00223   void SetAxisTypeToX(void) { this->SetAxisType(VTK_AXIS_TYPE_X); };
00224   void SetAxisTypeToY(void) { this->SetAxisType(VTK_AXIS_TYPE_Y); };
00225   void SetAxisTypeToZ(void) { this->SetAxisType(VTK_AXIS_TYPE_Z); };
00227 
00229 
00234   vtkSetClampMacro(AxisPosition, int, VTK_AXIS_POS_MINMIN, VTK_AXIS_POS_MAXMIN);
00235   vtkGetMacro(AxisPosition, int);
00237 
00238   void SetAxisPositionToMinMin(void)
00239       { this->SetAxisPosition(VTK_AXIS_POS_MINMIN); };
00240   void SetAxisPositionToMinMax(void)
00241       { this->SetAxisPosition(VTK_AXIS_POS_MINMAX); };
00242   void SetAxisPositionToMaxMax(void)
00243       { this->SetAxisPosition(VTK_AXIS_POS_MAXMAX); };
00244   void SetAxisPositionToMaxMin(void)
00245       { this->SetAxisPosition(VTK_AXIS_POS_MAXMIN); };
00246 
00248 
00250   virtual void SetCamera(vtkCamera*);
00251   vtkGetObjectMacro(Camera, vtkCamera);
00253 
00255 
00256   virtual int RenderOpaqueGeometry(vtkViewport* viewport);
00257   virtual int RenderTranslucentGeometry(vtkViewport *) {return 0;}
00259 
00263   void ReleaseGraphicsResources(vtkWindow *);
00264 
00266   void ShallowCopy(vtkProp *prop);
00267 
00268 //BTX
00269   double ComputeMaxLabelLength(const double [3]);
00270   double ComputeTitleLength(const double [3]);
00271 //ETX
00272   void SetLabelScale(const double);
00273   void SetTitleScale(const double);
00274 
00275 
00277 
00279   vtkSetMacro(MinorStart, double);
00280   vtkGetMacro(MinorStart, double);
00281   vtkSetMacro(MajorStart, double);
00282   vtkGetMacro(MajorStart, double);
00283   vtkSetMacro(DeltaMinor, double);
00284   vtkGetMacro(DeltaMinor, double);
00285   vtkSetMacro(DeltaMajor, double);
00286   vtkGetMacro(DeltaMajor, double);
00288 
00289 //BTX
00290   void SetLabels(vtkStringArray *labels);
00291 //ETX
00292 
00293   void BuildAxis(vtkViewport *viewport, bool);
00294 
00295 protected:
00296   vtkAxisActor();
00297   ~vtkAxisActor();
00298 
00299   char  *Title;
00300   double  Range[2];
00301   double  LastRange[2];
00302   char  *LabelFormat;
00303   int    NumberOfLabelsBuilt;
00304   int    MinorTicksVisible;
00305   int    LastMinorTicksVisible;
00306   int    TickLocation;
00307  
00308   int    DrawGridlines;
00309   int    LastDrawGridlines;
00310   double  GridlineXLength;
00311   double  GridlineYLength;
00312   double  GridlineZLength;
00313   
00314   int    AxisVisibility;
00315   int    TickVisibility;
00316   int    LastTickVisibility;
00317   int    LabelVisibility;
00318   int    TitleVisibility;
00319   
00320   int    AxisType;
00321   int    AxisPosition;
00322   double  Bounds[6];
00323   
00324 private:
00325   vtkAxisActor(const vtkAxisActor&); // Not implemented
00326   void operator=(const vtkAxisActor&); // Not implemented
00327 
00328   void TransformBounds(vtkViewport *, double bnds[6]);
00329 
00330   void BuildLabels(vtkViewport *, bool);
00331   void SetLabelPositions(vtkViewport *, bool);
00332 
00333   void BuildTitle(bool);
00334 
00335   void SetAxisPointsAndLines(void);
00336   bool BuildTickPointsForXType(double p1[3], double p2[3], bool);
00337   bool BuildTickPointsForYType(double p1[3], double p2[3], bool);
00338   bool BuildTickPointsForZType(double p1[3], double p2[3], bool);
00339 
00340   bool TickVisibilityChanged(void);
00341 
00342   vtkCoordinate *Point1Coordinate;
00343   vtkCoordinate *Point2Coordinate;
00344 
00345   double  MajorTickSize;
00346   double  MinorTickSize;
00347 
00348   double  MajorStart;
00349   double  MinorStart;
00350 
00351   double  DeltaMinor;
00352   double  DeltaMajor;
00353 
00354   int    LastAxisPosition;
00355   int    LastAxisType;
00356   int    LastTickLocation;
00357   double  LastLabelStart;
00358 
00359   vtkPoints         *MinorTickPts;
00360   vtkPoints         *MajorTickPts;
00361   vtkPoints         *GridlinePts;
00362 
00363   vtkVectorText     *TitleVector;
00364   vtkPolyDataMapper *TitleMapper;
00365   vtkFollower       *TitleActor;
00366 
00367   vtkVectorText     **LabelVectors;
00368   vtkPolyDataMapper **LabelMappers;
00369   vtkFollower       **LabelActors;
00370 
00371   vtkPolyData        *Axis;
00372   vtkPolyDataMapper  *AxisMapper;
00373   vtkActor           *AxisActor;
00374 
00375   vtkCamera          *Camera;
00376   vtkTimeStamp        BuildTime;
00377   vtkTimeStamp        BoundsTime;
00378   vtkTimeStamp        LabelBuildTime;
00379   vtkTimeStamp        TitleTextTime;
00380 
00381   int                 AxisHasZeroLength;
00382 };
00383 
00384 
00385 #endif

Generated by  doxygen 1.7.1