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

dox/Rendering/vtkAxisActor2D.h

Go to the documentation of this file.
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkAxisActor2D.h,v $ 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 =========================================================================*/ 00055 #ifndef __vtkAxisActor2D_h 00056 #define __vtkAxisActor2D_h 00057 00058 #include "vtkActor2D.h" 00059 00060 class vtkPolyDataMapper2D; 00061 class vtkPolyData; 00062 class vtkTextMapper; 00063 class vtkTextProperty; 00064 00065 #define VTK_MAX_LABELS 25 00066 00067 class VTK_RENDERING_EXPORT vtkAxisActor2D : public vtkActor2D 00068 { 00069 public: 00070 vtkTypeRevisionMacro(vtkAxisActor2D,vtkActor2D); 00071 void PrintSelf(ostream& os, vtkIndent indent); 00072 00074 static vtkAxisActor2D *New(); 00075 00077 00079 virtual vtkCoordinate *GetPoint1Coordinate() 00080 { return this->GetPositionCoordinate(); }; 00081 virtual void SetPoint1(double x[2]) { this->SetPosition(x); }; 00082 virtual void SetPoint1(double x, double y) { this->SetPosition(x,y); }; 00083 virtual double *GetPoint1() { return this->GetPosition(); }; 00085 00087 00091 virtual vtkCoordinate *GetPoint2Coordinate() 00092 { return this->GetPosition2Coordinate(); }; 00093 virtual void SetPoint2(double x[2]) { this->SetPosition2(x); }; 00094 virtual void SetPoint2(double x, double y) { this->SetPosition2(x,y); }; 00095 virtual double *GetPoint2() { return this->GetPosition2(); }; 00097 00099 00101 vtkSetVector2Macro(Range,double); 00102 vtkGetVectorMacro(Range,double,2); 00104 00106 00107 vtkSetClampMacro(NumberOfLabels, int, 2, VTK_MAX_LABELS); 00108 vtkGetMacro(NumberOfLabels, int); 00110 00112 00113 vtkSetStringMacro(LabelFormat); 00114 vtkGetStringMacro(LabelFormat); 00116 00118 00123 vtkSetMacro(AdjustLabels, int); 00124 vtkGetMacro(AdjustLabels, int); 00125 vtkBooleanMacro(AdjustLabels, int); 00126 virtual double *GetAdjustedRange() 00127 { 00128 this->UpdateAdjustedRange(); 00129 return this->AdjustedRange; 00130 } 00131 virtual void GetAdjustedRange(double &_arg1, double &_arg2) 00132 { 00133 this->UpdateAdjustedRange(); 00134 _arg1 = this->AdjustedRange[0]; 00135 _arg2 = this->AdjustedRange[1]; 00136 }; 00137 virtual void GetAdjustedRange(double _arg[2]) 00138 { 00139 this->GetAdjustedRange(_arg[0], _arg[1]); 00140 } 00141 virtual int GetAdjustedNumberOfLabels() 00142 { 00143 this->UpdateAdjustedRange(); 00144 return this->AdjustedNumberOfLabels; 00145 } 00147 00149 00150 vtkSetStringMacro(Title); 00151 vtkGetStringMacro(Title); 00153 00155 00156 virtual void SetTitleTextProperty(vtkTextProperty *p); 00157 vtkGetObjectMacro(TitleTextProperty,vtkTextProperty); 00159 00161 00162 virtual void SetLabelTextProperty(vtkTextProperty *p); 00163 vtkGetObjectMacro(LabelTextProperty,vtkTextProperty); 00165 00167 00169 vtkSetClampMacro(TickLength, int, 0, 100); 00170 vtkGetMacro(TickLength, int); 00172 00174 00177 vtkSetClampMacro(TickOffset, int, 0, 100); 00178 vtkGetMacro(TickOffset, int); 00180 00182 00183 vtkSetMacro(AxisVisibility, int); 00184 vtkGetMacro(AxisVisibility, int); 00185 vtkBooleanMacro(AxisVisibility, int); 00187 00189 00190 vtkSetMacro(TickVisibility, int); 00191 vtkGetMacro(TickVisibility, int); 00192 vtkBooleanMacro(TickVisibility, int); 00194 00196 00197 vtkSetMacro(LabelVisibility, int); 00198 vtkGetMacro(LabelVisibility, int); 00199 vtkBooleanMacro(LabelVisibility, int); 00201 00203 00204 vtkSetMacro(TitleVisibility, int); 00205 vtkGetMacro(TitleVisibility, int); 00206 vtkBooleanMacro(TitleVisibility, int); 00208 00210 00213 vtkSetClampMacro(FontFactor, double, 0.1, 2.0); 00214 vtkGetMacro(FontFactor, double); 00216 00218 00220 vtkSetClampMacro(LabelFactor, double, 0.1, 2.0); 00221 vtkGetMacro(LabelFactor, double); 00223 00225 00226 int RenderOverlay(vtkViewport* viewport); 00227 int RenderOpaqueGeometry(vtkViewport* viewport); 00228 int RenderTranslucentGeometry(vtkViewport *) {return 0;} 00230 00234 void ReleaseGraphicsResources(vtkWindow *); 00235 00237 00245 static void ComputeRange(double inRange[2], 00246 double outRange[2], 00247 int inNumTicks, 00248 int &outNumTicks, 00249 double &interval); 00251 00253 00260 static int SetFontSize(vtkViewport *viewport, 00261 vtkTextMapper *textMapper, 00262 int *targetSize, 00263 double factor, 00264 int *stringSize); 00265 static int SetMultipleFontSize(vtkViewport *viewport, 00266 vtkTextMapper **textMappers, 00267 int nbOfMappers, 00268 int *targetSize, 00269 double factor, 00270 int *stringSize); 00272 00274 void ShallowCopy(vtkProp *prop); 00275 00276 protected: 00277 vtkAxisActor2D(); 00278 ~vtkAxisActor2D(); 00279 00280 vtkTextProperty *TitleTextProperty; 00281 vtkTextProperty *LabelTextProperty; 00282 00283 char *Title; 00284 double Range[2]; 00285 int NumberOfLabels; 00286 char *LabelFormat; 00287 int AdjustLabels; 00288 double FontFactor; 00289 double LabelFactor; 00290 int TickLength; 00291 int TickOffset; 00292 00293 double AdjustedRange[2]; 00294 int AdjustedNumberOfLabels; 00295 int NumberOfLabelsBuilt; 00296 00297 int AxisVisibility; 00298 int TickVisibility; 00299 int LabelVisibility; 00300 int TitleVisibility; 00301 00302 int LastPosition[2]; 00303 int LastPosition2[2]; 00304 00305 int LastSize[2]; 00306 int LastMaxLabelSize[2]; 00307 00308 virtual void BuildAxis(vtkViewport *viewport); 00309 static double ComputeStringOffset(double width, double height, double theta); 00310 static void SetOffsetPosition(double xTick[3], double theta, 00311 int stringHeight, int stringWidth, 00312 int offset, vtkActor2D *actor); 00313 virtual void UpdateAdjustedRange(); 00314 00315 vtkTextMapper *TitleMapper; 00316 vtkActor2D *TitleActor; 00317 00318 vtkTextMapper **LabelMappers; 00319 vtkActor2D **LabelActors; 00320 00321 vtkPolyData *Axis; 00322 vtkPolyDataMapper2D *AxisMapper; 00323 vtkActor2D *AxisActor; 00324 00325 vtkTimeStamp AdjustedRangeBuildTime; 00326 vtkTimeStamp BuildTime; 00327 00328 private: 00329 vtkAxisActor2D(const vtkAxisActor2D&); // Not implemented. 00330 void operator=(const vtkAxisActor2D&); // Not implemented. 00331 }; 00332 00333 00334 #endif