00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00060 #ifndef __vtkAxisActor2D_h
00061 #define __vtkAxisActor2D_h
00062
00063 #include "vtkActor2D.h"
00064
00065 class vtkPolyDataMapper2D;
00066 class vtkPolyData;
00067 class vtkTextMapper;
00068 class vtkTextProperty;
00069
00070 #define VTK_MAX_LABELS 25
00071
00072 class VTK_RENDERING_EXPORT vtkAxisActor2D : public vtkActor2D
00073 {
00074 public:
00075 vtkTypeMacro(vtkAxisActor2D,vtkActor2D);
00076 void PrintSelf(ostream& os, vtkIndent indent);
00077
00079 static vtkAxisActor2D *New();
00080
00082
00084 virtual vtkCoordinate *GetPoint1Coordinate()
00085 { return this->GetPositionCoordinate(); };
00086 virtual void SetPoint1(double x[2]) { this->SetPosition(x); };
00087 virtual void SetPoint1(double x, double y) { this->SetPosition(x,y); };
00088 virtual double *GetPoint1() { return this->GetPosition(); };
00090
00092
00096 virtual vtkCoordinate *GetPoint2Coordinate()
00097 { return this->GetPosition2Coordinate(); };
00098 virtual void SetPoint2(double x[2]) { this->SetPosition2(x); };
00099 virtual void SetPoint2(double x, double y) { this->SetPosition2(x,y); };
00100 virtual double *GetPoint2() { return this->GetPosition2(); };
00102
00104
00106 vtkSetVector2Macro(Range,double);
00107 vtkGetVectorMacro(Range,double,2);
00109
00111
00114 vtkSetMacro(RulerMode,int);
00115 vtkGetMacro(RulerMode,int);
00116 vtkBooleanMacro(RulerMode,int);
00118
00120
00122 vtkSetClampMacro(RulerDistance,double,0,VTK_LARGE_FLOAT);
00123 vtkGetMacro(RulerDistance,double);
00125
00127
00130 vtkSetClampMacro(NumberOfLabels, int, 2, VTK_MAX_LABELS);
00131 vtkGetMacro(NumberOfLabels, int);
00133
00135
00136 vtkSetStringMacro(LabelFormat);
00137 vtkGetStringMacro(LabelFormat);
00139
00141
00147 vtkSetMacro(AdjustLabels, int);
00148 vtkGetMacro(AdjustLabels, int);
00149 vtkBooleanMacro(AdjustLabels, int);
00150 virtual double *GetAdjustedRange()
00151 {
00152 this->UpdateAdjustedRange();
00153 return this->AdjustedRange;
00154 }
00155 virtual void GetAdjustedRange(double &_arg1, double &_arg2)
00156 {
00157 this->UpdateAdjustedRange();
00158 _arg1 = this->AdjustedRange[0];
00159 _arg2 = this->AdjustedRange[1];
00160 };
00161 virtual void GetAdjustedRange(double _arg[2])
00162 {
00163 this->GetAdjustedRange(_arg[0], _arg[1]);
00164 }
00165 virtual int GetAdjustedNumberOfLabels()
00166 {
00167 this->UpdateAdjustedRange();
00168 return this->AdjustedNumberOfLabels;
00169 }
00171
00173
00174 vtkSetStringMacro(Title);
00175 vtkGetStringMacro(Title);
00177
00179
00180 virtual void SetTitleTextProperty(vtkTextProperty *p);
00181 vtkGetObjectMacro(TitleTextProperty,vtkTextProperty);
00183
00185
00186 virtual void SetLabelTextProperty(vtkTextProperty *p);
00187 vtkGetObjectMacro(LabelTextProperty,vtkTextProperty);
00189
00191
00193 vtkSetClampMacro(TickLength, int, 0, 100);
00194 vtkGetMacro(TickLength, int);
00196
00198
00200 vtkSetClampMacro(NumberOfMinorTicks, int, 0, 20);
00201 vtkGetMacro(NumberOfMinorTicks, int);
00203
00205
00207 vtkSetClampMacro(MinorTickLength, int, 0, 100);
00208 vtkGetMacro(MinorTickLength, int);
00210
00212
00215 vtkSetClampMacro(TickOffset, int, 0, 100);
00216 vtkGetMacro(TickOffset, int);
00218
00220
00221 vtkSetMacro(AxisVisibility, int);
00222 vtkGetMacro(AxisVisibility, int);
00223 vtkBooleanMacro(AxisVisibility, int);
00225
00227
00228 vtkSetMacro(TickVisibility, int);
00229 vtkGetMacro(TickVisibility, int);
00230 vtkBooleanMacro(TickVisibility, int);
00232
00234
00235 vtkSetMacro(LabelVisibility, int);
00236 vtkGetMacro(LabelVisibility, int);
00237 vtkBooleanMacro(LabelVisibility, int);
00239
00241
00242 vtkSetMacro(TitleVisibility, int);
00243 vtkGetMacro(TitleVisibility, int);
00244 vtkBooleanMacro(TitleVisibility, int);
00246
00248
00250 vtkSetMacro(TitlePosition, double);
00251 vtkGetMacro(TitlePosition, double);
00253
00255
00258 vtkSetClampMacro(FontFactor, double, 0.1, 2.0);
00259 vtkGetMacro(FontFactor, double);
00261
00263
00265 vtkSetClampMacro(LabelFactor, double, 0.1, 2.0);
00266 vtkGetMacro(LabelFactor, double);
00268
00270
00271 int RenderOverlay(vtkViewport* viewport);
00272 int RenderOpaqueGeometry(vtkViewport* viewport);
00273 virtual int RenderTranslucentPolygonalGeometry(vtkViewport *) {return 0;}
00275
00277 virtual int HasTranslucentPolygonalGeometry();
00278
00282 void ReleaseGraphicsResources(vtkWindow *);
00283
00285
00293 static void ComputeRange(double inRange[2],
00294 double outRange[2],
00295 int inNumTicks,
00296 int &outNumTicks,
00297 double &interval);
00299
00301
00308 static int SetMultipleFontSize(vtkViewport *viewport,
00309 vtkTextMapper **textMappers,
00310 int nbOfMappers,
00311 int *targetSize,
00312 double factor,
00313 int *stringSize);
00315
00317
00320 vtkSetMacro(SizeFontRelativeToAxis,int);
00321 vtkGetMacro(SizeFontRelativeToAxis,int);
00322 vtkBooleanMacro(SizeFontRelativeToAxis,int);
00324
00326 void ShallowCopy(vtkProp *prop);
00327
00328 protected:
00329 vtkAxisActor2D();
00330 ~vtkAxisActor2D();
00331
00332 vtkTextProperty *TitleTextProperty;
00333 vtkTextProperty *LabelTextProperty;
00334
00335 char *Title;
00336 double Range[2];
00337 double TitlePosition;
00338 int RulerMode;
00339 double RulerDistance;
00340 int NumberOfLabels;
00341 char *LabelFormat;
00342 int AdjustLabels;
00343 double FontFactor;
00344 double LabelFactor;
00345 int TickLength;
00346 int MinorTickLength;
00347 int TickOffset;
00348 int NumberOfMinorTicks;
00349
00350 double AdjustedRange[2];
00351 int AdjustedNumberOfLabels;
00352 int NumberOfLabelsBuilt;
00353
00354 int AxisVisibility;
00355 int TickVisibility;
00356 int LabelVisibility;
00357 int TitleVisibility;
00358
00359 int LastPosition[2];
00360 int LastPosition2[2];
00361
00362 int LastSize[2];
00363 int LastMaxLabelSize[2];
00364
00365 int SizeFontRelativeToAxis;
00366
00367 virtual void BuildAxis(vtkViewport *viewport);
00368 static double ComputeStringOffset(double width, double height, double theta);
00369 static void SetOffsetPosition(double xTick[3], double theta,
00370 int stringHeight, int stringWidth,
00371 int offset, vtkActor2D *actor);
00372 virtual void UpdateAdjustedRange();
00373
00374 vtkTextMapper *TitleMapper;
00375 vtkActor2D *TitleActor;
00376
00377 vtkTextMapper **LabelMappers;
00378 vtkActor2D **LabelActors;
00379
00380 vtkPolyData *Axis;
00381 vtkPolyDataMapper2D *AxisMapper;
00382 vtkActor2D *AxisActor;
00383
00384 vtkTimeStamp AdjustedRangeBuildTime;
00385 vtkTimeStamp BuildTime;
00386
00387 private:
00388 vtkAxisActor2D(const vtkAxisActor2D&);
00389 void operator=(const vtkAxisActor2D&);
00390 };
00391
00392
00393 #endif