00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00059 #ifndef __vtkAxisActor2D_h
00060 #define __vtkAxisActor2D_h
00061
00062 #include "vtkActor2D.h"
00063
00064 class vtkPolyDataMapper2D;
00065 class vtkPolyData;
00066 class vtkTextMapper;
00067 class vtkTextProperty;
00068
00069 #define VTK_MAX_LABELS 25
00070
00071 class VTK_RENDERING_EXPORT vtkAxisActor2D : public vtkActor2D
00072 {
00073 public:
00074 vtkTypeRevisionMacro(vtkAxisActor2D,vtkActor2D);
00075 void PrintSelf(ostream& os, vtkIndent indent);
00076
00078 static vtkAxisActor2D *New();
00079
00081
00083 virtual vtkCoordinate *GetPoint1Coordinate()
00084 { return this->GetPositionCoordinate(); };
00085 virtual void SetPoint1(float x[2]) { this->SetPosition(x); };
00086 virtual void SetPoint1(float x, float y) { this->SetPosition(x,y); };
00087 virtual float *GetPoint1() { return this->GetPosition(); };
00089
00091
00095 virtual vtkCoordinate *GetPoint2Coordinate()
00096 { return this->GetPosition2Coordinate(); };
00097 virtual void SetPoint2(float x[2]) { this->SetPosition2(x); };
00098 virtual void SetPoint2(float x, float y) { this->SetPosition2(x,y); };
00099 virtual float *GetPoint2() { return this->GetPosition2(); };
00101
00103
00105 vtkSetVector2Macro(Range,float);
00106 vtkGetVectorMacro(Range,float,2);
00108
00110
00111 vtkSetClampMacro(NumberOfLabels, int, 2, VTK_MAX_LABELS);
00112 vtkGetMacro(NumberOfLabels, int);
00114
00116
00117 vtkSetStringMacro(LabelFormat);
00118 vtkGetStringMacro(LabelFormat);
00120
00122
00127 vtkSetMacro(AdjustLabels, int);
00128 vtkGetMacro(AdjustLabels, int);
00129 vtkBooleanMacro(AdjustLabels, int);
00130 virtual float *GetAdjustedRange()
00131 {
00132 this->UpdateAdjustedRange();
00133 return this->AdjustedRange;
00134 }
00135 virtual void GetAdjustedRange(float &_arg1, float &_arg2)
00136 {
00137 this->UpdateAdjustedRange();
00138 _arg1 = this->AdjustedRange[0];
00139 _arg2 = this->AdjustedRange[1];
00140 };
00141 virtual void GetAdjustedRange(float _arg[2])
00142 {
00143 this->GetAdjustedRange(_arg[0], _arg[1]);
00144 }
00145 virtual int GetAdjustedNumberOfLabels()
00146 {
00147 this->UpdateAdjustedRange();
00148 return this->AdjustedNumberOfLabels;
00149 }
00151
00153
00154 vtkSetStringMacro(Title);
00155 vtkGetStringMacro(Title);
00157
00159
00160 virtual void SetTitleTextProperty(vtkTextProperty *p);
00161 vtkGetObjectMacro(TitleTextProperty,vtkTextProperty);
00163
00165
00166 virtual void SetLabelTextProperty(vtkTextProperty *p);
00167 vtkGetObjectMacro(LabelTextProperty,vtkTextProperty);
00169
00170 #ifndef VTK_REMOVE_LEGACY_CODE
00171
00172
00177 virtual void SetFontFamily(int val);
00178 virtual int GetFontFamily();
00179 void SetFontFamilyToArial() { this->SetFontFamily(VTK_ARIAL); };
00180 void SetFontFamilyToCourier() { this->SetFontFamily(VTK_COURIER);};
00181 void SetFontFamilyToTimes() { this->SetFontFamily(VTK_TIMES); };
00183 #endif
00184
00185 #ifndef VTK_REMOVE_LEGACY_CODE
00186
00187
00190 virtual void SetBold(int val);
00191 virtual int GetBold();
00192 vtkBooleanMacro(Bold, int);
00194 #endif
00195
00196 #ifndef VTK_REMOVE_LEGACY_CODE
00197
00198
00201 virtual void SetItalic(int val);
00202 virtual int GetItalic();
00203 vtkBooleanMacro(Italic, int);
00205 #endif
00206
00207 #ifndef VTK_REMOVE_LEGACY_CODE
00208
00209
00212 virtual void SetShadow(int val);
00213 virtual int GetShadow();
00214 vtkBooleanMacro(Shadow, int);
00216 #endif
00217
00219
00221 vtkSetClampMacro(TickLength, int, 0, 100);
00222 vtkGetMacro(TickLength, int);
00224
00226
00229 vtkSetClampMacro(TickOffset, int, 0, 100);
00230 vtkGetMacro(TickOffset, int);
00232
00234
00235 vtkSetMacro(AxisVisibility, int);
00236 vtkGetMacro(AxisVisibility, int);
00237 vtkBooleanMacro(AxisVisibility, int);
00239
00241
00242 vtkSetMacro(TickVisibility, int);
00243 vtkGetMacro(TickVisibility, int);
00244 vtkBooleanMacro(TickVisibility, int);
00246
00248
00249 vtkSetMacro(LabelVisibility, int);
00250 vtkGetMacro(LabelVisibility, int);
00251 vtkBooleanMacro(LabelVisibility, int);
00253
00255
00256 vtkSetMacro(TitleVisibility, int);
00257 vtkGetMacro(TitleVisibility, int);
00258 vtkBooleanMacro(TitleVisibility, int);
00260
00262
00265 vtkSetClampMacro(FontFactor, float, 0.1, 2.0);
00266 vtkGetMacro(FontFactor, float);
00268
00270
00272 vtkSetClampMacro(LabelFactor, float, 0.1, 2.0);
00273 vtkGetMacro(LabelFactor, float);
00275
00277
00278 int RenderOverlay(vtkViewport* viewport);
00279 int RenderOpaqueGeometry(vtkViewport* viewport);
00280 int RenderTranslucentGeometry(vtkViewport *) {return 0;}
00282
00286 void ReleaseGraphicsResources(vtkWindow *);
00287
00289
00297 static void ComputeRange(float inRange[2],
00298 float outRange[2],
00299 int inNumTicks,
00300 int &outNumTicks,
00301 float &interval);
00303
00305
00312 static int SetFontSize(vtkViewport *viewport,
00313 vtkTextMapper *textMapper,
00314 int *targetSize,
00315 float factor,
00316 int *stringSize);
00317 static int SetMultipleFontSize(vtkViewport *viewport,
00318 vtkTextMapper **textMappers,
00319 int nbOfMappers,
00320 int *targetSize,
00321 float factor,
00322 int *stringSize);
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 float Range[2];
00337 int NumberOfLabels;
00338 char *LabelFormat;
00339 int AdjustLabels;
00340 float FontFactor;
00341 float LabelFactor;
00342 int TickLength;
00343 int TickOffset;
00344
00345 float AdjustedRange[2];
00346 int AdjustedNumberOfLabels;
00347 int NumberOfLabelsBuilt;
00348
00349 int AxisVisibility;
00350 int TickVisibility;
00351 int LabelVisibility;
00352 int TitleVisibility;
00353
00354 int LastPosition[2];
00355 int LastPosition2[2];
00356
00357 int LastSize[2];
00358 int LastMaxLabelSize[2];
00359
00360 virtual void BuildAxis(vtkViewport *viewport);
00361 static float ComputeStringOffset(float width, float height, float theta);
00362 static void SetOffsetPosition(float xTick[3], float theta, int stringHeight,
00363 int stringWidth, int offset, vtkActor2D *actor);
00364 virtual void UpdateAdjustedRange();
00365
00366 vtkTextMapper *TitleMapper;
00367 vtkActor2D *TitleActor;
00368
00369 vtkTextMapper **LabelMappers;
00370 vtkActor2D **LabelActors;
00371
00372 vtkPolyData *Axis;
00373 vtkPolyDataMapper2D *AxisMapper;
00374 vtkActor2D *AxisActor;
00375
00376 vtkTimeStamp AdjustedRangeBuildTime;
00377 vtkTimeStamp BuildTime;
00378
00379 private:
00380 vtkAxisActor2D(const vtkAxisActor2D&);
00381 void operator=(const vtkAxisActor2D&);
00382 };
00383
00384
00385 #endif