00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00057 #ifndef __vtkAxisActor2D_h
00058 #define __vtkAxisActor2D_h
00059
00060 #include "vtkActor2D.h"
00061
00062 class vtkPolyDataMapper2D;
00063 class vtkPolyData;
00064 class vtkTextMapper;
00065 class vtkTextProperty;
00066
00067 #define VTK_MAX_LABELS 25
00068
00069 class VTK_RENDERING_EXPORT vtkAxisActor2D : public vtkActor2D
00070 {
00071 public:
00072 vtkTypeMacro(vtkAxisActor2D,vtkActor2D);
00073 void PrintSelf(ostream& os, vtkIndent indent);
00074
00076 static vtkAxisActor2D *New();
00077
00079
00081 virtual vtkCoordinate *GetPoint1Coordinate()
00082 { return this->GetPositionCoordinate(); };
00083 virtual void SetPoint1(double x[2]) { this->SetPosition(x); };
00084 virtual void SetPoint1(double x, double y) { this->SetPosition(x,y); };
00085 virtual double *GetPoint1() { return this->GetPosition(); };
00087
00089
00093 virtual vtkCoordinate *GetPoint2Coordinate()
00094 { return this->GetPosition2Coordinate(); };
00095 virtual void SetPoint2(double x[2]) { this->SetPosition2(x); };
00096 virtual void SetPoint2(double x, double y) { this->SetPosition2(x,y); };
00097 virtual double *GetPoint2() { return this->GetPosition2(); };
00099
00101
00103 vtkSetVector2Macro(Range,double);
00104 vtkGetVectorMacro(Range,double,2);
00106
00108
00109 vtkSetClampMacro(NumberOfLabels, int, 2, VTK_MAX_LABELS);
00110 vtkGetMacro(NumberOfLabels, int);
00112
00114
00115 vtkSetStringMacro(LabelFormat);
00116 vtkGetStringMacro(LabelFormat);
00118
00120
00125 vtkSetMacro(AdjustLabels, int);
00126 vtkGetMacro(AdjustLabels, int);
00127 vtkBooleanMacro(AdjustLabels, int);
00128 virtual double *GetAdjustedRange()
00129 {
00130 this->UpdateAdjustedRange();
00131 return this->AdjustedRange;
00132 }
00133 virtual void GetAdjustedRange(double &_arg1, double &_arg2)
00134 {
00135 this->UpdateAdjustedRange();
00136 _arg1 = this->AdjustedRange[0];
00137 _arg2 = this->AdjustedRange[1];
00138 };
00139 virtual void GetAdjustedRange(double _arg[2])
00140 {
00141 this->GetAdjustedRange(_arg[0], _arg[1]);
00142 }
00143 virtual int GetAdjustedNumberOfLabels()
00144 {
00145 this->UpdateAdjustedRange();
00146 return this->AdjustedNumberOfLabels;
00147 }
00149
00151
00152 vtkSetStringMacro(Title);
00153 vtkGetStringMacro(Title);
00155
00157
00158 virtual void SetTitleTextProperty(vtkTextProperty *p);
00159 vtkGetObjectMacro(TitleTextProperty,vtkTextProperty);
00161
00163
00164 virtual void SetLabelTextProperty(vtkTextProperty *p);
00165 vtkGetObjectMacro(LabelTextProperty,vtkTextProperty);
00167
00169
00171 vtkSetClampMacro(TickLength, int, 0, 100);
00172 vtkGetMacro(TickLength, int);
00174
00176
00178 vtkSetClampMacro(NumberOfMinorTicks, int, 0, 20);
00179 vtkGetMacro(NumberOfMinorTicks, int);
00181
00183
00185 vtkSetClampMacro(MinorTickLength, int, 0, 100);
00186 vtkGetMacro(MinorTickLength, int);
00188
00190
00193 vtkSetClampMacro(TickOffset, int, 0, 100);
00194 vtkGetMacro(TickOffset, int);
00196
00198
00199 vtkSetMacro(AxisVisibility, int);
00200 vtkGetMacro(AxisVisibility, int);
00201 vtkBooleanMacro(AxisVisibility, int);
00203
00205
00206 vtkSetMacro(TickVisibility, int);
00207 vtkGetMacro(TickVisibility, int);
00208 vtkBooleanMacro(TickVisibility, int);
00210
00212
00213 vtkSetMacro(LabelVisibility, int);
00214 vtkGetMacro(LabelVisibility, int);
00215 vtkBooleanMacro(LabelVisibility, int);
00217
00219
00220 vtkSetMacro(TitleVisibility, int);
00221 vtkGetMacro(TitleVisibility, int);
00222 vtkBooleanMacro(TitleVisibility, int);
00224
00226
00228 vtkSetMacro(TitlePosition, double);
00229 vtkGetMacro(TitlePosition, double);
00231
00233
00236 vtkSetClampMacro(FontFactor, double, 0.1, 2.0);
00237 vtkGetMacro(FontFactor, double);
00239
00241
00243 vtkSetClampMacro(LabelFactor, double, 0.1, 2.0);
00244 vtkGetMacro(LabelFactor, double);
00246
00248
00249 int RenderOverlay(vtkViewport* viewport);
00250 int RenderOpaqueGeometry(vtkViewport* viewport);
00251 virtual int RenderTranslucentPolygonalGeometry(vtkViewport *) {return 0;}
00253
00255 virtual int HasTranslucentPolygonalGeometry();
00256
00260 void ReleaseGraphicsResources(vtkWindow *);
00261
00263
00271 static void ComputeRange(double inRange[2],
00272 double outRange[2],
00273 int inNumTicks,
00274 int &outNumTicks,
00275 double &interval);
00277
00279
00286 static int SetMultipleFontSize(vtkViewport *viewport,
00287 vtkTextMapper **textMappers,
00288 int nbOfMappers,
00289 int *targetSize,
00290 double factor,
00291 int *stringSize);
00293
00295
00298 vtkSetMacro(SizeFontRelativeToAxis,int);
00299 vtkGetMacro(SizeFontRelativeToAxis,int);
00300 vtkBooleanMacro(SizeFontRelativeToAxis,int);
00302
00304 void ShallowCopy(vtkProp *prop);
00305
00306 protected:
00307 vtkAxisActor2D();
00308 ~vtkAxisActor2D();
00309
00310 vtkTextProperty *TitleTextProperty;
00311 vtkTextProperty *LabelTextProperty;
00312
00313 char *Title;
00314 double Range[2];
00315 double TitlePosition;
00316 int NumberOfLabels;
00317 char *LabelFormat;
00318 int AdjustLabels;
00319 double FontFactor;
00320 double LabelFactor;
00321 int TickLength;
00322 int MinorTickLength;
00323 int TickOffset;
00324 int NumberOfMinorTicks;
00325
00326 double AdjustedRange[2];
00327 int AdjustedNumberOfLabels;
00328 int NumberOfLabelsBuilt;
00329
00330 int AxisVisibility;
00331 int TickVisibility;
00332 int LabelVisibility;
00333 int TitleVisibility;
00334
00335 int LastPosition[2];
00336 int LastPosition2[2];
00337
00338 int LastSize[2];
00339 int LastMaxLabelSize[2];
00340
00341 int SizeFontRelativeToAxis;
00342
00343 virtual void BuildAxis(vtkViewport *viewport);
00344 static double ComputeStringOffset(double width, double height, double theta);
00345 static void SetOffsetPosition(double xTick[3], double theta,
00346 int stringHeight, int stringWidth,
00347 int offset, vtkActor2D *actor);
00348 virtual void UpdateAdjustedRange();
00349
00350 vtkTextMapper *TitleMapper;
00351 vtkActor2D *TitleActor;
00352
00353 vtkTextMapper **LabelMappers;
00354 vtkActor2D **LabelActors;
00355
00356 vtkPolyData *Axis;
00357 vtkPolyDataMapper2D *AxisMapper;
00358 vtkActor2D *AxisActor;
00359
00360 vtkTimeStamp AdjustedRangeBuildTime;
00361 vtkTimeStamp BuildTime;
00362
00363 private:
00364 vtkAxisActor2D(const vtkAxisActor2D&);
00365 void operator=(const vtkAxisActor2D&);
00366 };
00367
00368
00369 #endif