00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00051 #ifndef __vtkCubeAxesActor2D_h
00052 #define __vtkCubeAxesActor2D_h
00053
00054 #include "vtkActor2D.h"
00055
00056 #define VTK_FLY_OUTER_EDGES 0
00057 #define VTK_FLY_CLOSEST_TRIAD 1
00058
00059 class vtkAxisActor2D;
00060 class vtkCamera;
00061 class vtkDataSet;
00062 class vtkTextProperty;
00063
00064 class VTK_HYBRID_EXPORT vtkCubeAxesActor2D : public vtkActor2D
00065 {
00066 public:
00067 vtkTypeRevisionMacro(vtkCubeAxesActor2D,vtkActor2D);
00068 void PrintSelf(ostream& os, vtkIndent indent);
00069
00073 static vtkCubeAxesActor2D *New();
00074
00076
00077 int RenderOverlay(vtkViewport*);
00078 int RenderOpaqueGeometry(vtkViewport*);
00079 int RenderTranslucentGeometry(vtkViewport *) {return 0;}
00081
00083
00086 virtual void SetInput(vtkDataSet*);
00087 vtkGetObjectMacro(Input, vtkDataSet);
00089
00091
00093 virtual void SetProp(vtkProp*);
00094 vtkGetObjectMacro(Prop, vtkProp);
00096
00098
00102 vtkSetVector6Macro(Bounds,double);
00103 double *GetBounds();
00104 void GetBounds(double& xmin, double& xmax, double& ymin, double& ymax,
00105 double& zmin, double& zmax);
00106 void GetBounds(double bounds[6]);
00108
00110
00113 vtkSetVector6Macro(Ranges,double);
00114 double *GetRanges();
00115 void GetRanges(double& xmin, double& xmax, double& ymin, double& ymax,
00116 double& zmin, double& zmax);
00117 void GetRanges(double ranges[6]);
00119
00121
00123 vtkSetMacro(UseRanges,int);
00124 vtkGetMacro(UseRanges,int);
00125 vtkBooleanMacro(UseRanges,int);
00127
00129
00131 virtual void SetCamera(vtkCamera*);
00132 vtkGetObjectMacro(Camera,vtkCamera);
00134
00136
00138 vtkSetClampMacro(FlyMode, int, VTK_FLY_OUTER_EDGES, VTK_FLY_CLOSEST_TRIAD);
00139 vtkGetMacro(FlyMode, int);
00140 void SetFlyModeToOuterEdges()
00141 {this->SetFlyMode(VTK_FLY_OUTER_EDGES);};
00142 void SetFlyModeToClosestTriad()
00143 {this->SetFlyMode(VTK_FLY_CLOSEST_TRIAD);};
00145
00147
00151 vtkSetMacro(Scaling,int);
00152 vtkGetMacro(Scaling,int);
00153 vtkBooleanMacro(Scaling,int);
00155
00157
00160 vtkSetClampMacro(NumberOfLabels, int, 0, 50);
00161 vtkGetMacro(NumberOfLabels, int);
00163
00165
00167 vtkSetStringMacro(XLabel);
00168 vtkGetStringMacro(XLabel);
00169 vtkSetStringMacro(YLabel);
00170 vtkGetStringMacro(YLabel);
00171 vtkSetStringMacro(ZLabel);
00172 vtkGetStringMacro(ZLabel);
00174
00176
00178 vtkAxisActor2D *GetXAxisActor2D()
00179 {return this->XAxis;}
00180 vtkAxisActor2D *GetYAxisActor2D()
00181 {return this->YAxis;}
00182 vtkAxisActor2D *GetZAxisActor2D()
00183 {return this->ZAxis;}
00185
00187
00189 virtual void SetAxisTitleTextProperty(vtkTextProperty *p);
00190 vtkGetObjectMacro(AxisTitleTextProperty,vtkTextProperty);
00192
00194
00196 virtual void SetAxisLabelTextProperty(vtkTextProperty *p);
00197 vtkGetObjectMacro(AxisLabelTextProperty,vtkTextProperty);
00199
00201
00203 vtkSetStringMacro(LabelFormat);
00204 vtkGetStringMacro(LabelFormat);
00206
00208
00210 vtkSetClampMacro(FontFactor, double, 0.1, 2.0);
00211 vtkGetMacro(FontFactor, double);
00213
00215
00218 vtkSetClampMacro(Inertia, int, 1, VTK_LARGE_INTEGER);
00219 vtkGetMacro(Inertia, double);
00221
00223
00226 vtkSetMacro(CornerOffset, double);
00227 vtkGetMacro(CornerOffset, double);
00229
00233 void ReleaseGraphicsResources(vtkWindow *);
00234
00236
00237 vtkSetMacro(XAxisVisibility,int);
00238 vtkGetMacro(XAxisVisibility,int);
00239 vtkBooleanMacro(XAxisVisibility,int);
00240 vtkSetMacro(YAxisVisibility,int);
00241 vtkGetMacro(YAxisVisibility,int);
00242 vtkBooleanMacro(YAxisVisibility,int);
00243 vtkSetMacro(ZAxisVisibility,int);
00244 vtkGetMacro(ZAxisVisibility,int);
00245 vtkBooleanMacro(ZAxisVisibility,int);
00247
00249 void ShallowCopy(vtkCubeAxesActor2D *actor);
00250
00251 protected:
00252 vtkCubeAxesActor2D();
00253 ~vtkCubeAxesActor2D();
00254
00255 vtkDataSet *Input;
00256 vtkProp *Prop;
00257 double Bounds[6];
00258 double Ranges[6];
00259 int UseRanges;
00260
00261 vtkCamera *Camera;
00262 int FlyMode;
00263 int Scaling;
00264
00265 vtkAxisActor2D *XAxis;
00266 vtkAxisActor2D *YAxis;
00267 vtkAxisActor2D *ZAxis;
00268
00269 vtkTextProperty *AxisTitleTextProperty;
00270 vtkTextProperty *AxisLabelTextProperty;
00271
00272 vtkTimeStamp BuildTime;
00273
00274 int NumberOfLabels;
00275 char *XLabel;
00276 char *YLabel;
00277 char *ZLabel;
00278 char *Labels[3];
00279
00280 int XAxisVisibility;
00281 int YAxisVisibility;
00282 int ZAxisVisibility;
00283
00284 char *LabelFormat;
00285 double FontFactor;
00286 double CornerOffset;
00287 int Inertia;
00288 int RenderCount;
00289 int InertiaAxes[8];
00290
00291 int RenderSomething;
00292
00293
00294 void TransformBounds(vtkViewport *viewport, double bounds[6],
00295 double pts[8][3]);
00296 int ClipBounds(vtkViewport *viewport, double pts[8][3], double bounds[6]);
00297 double EvaluatePoint(double planes[24], double x[3]);
00298 double EvaluateBounds(double planes[24], double bounds[6]);
00299 void AdjustAxes(double pts[8][3], double bounds[6],
00300 int idx, int xIdx, int yIdx, int zIdx, int zIdx2,
00301 int xAxes, int yAxes, int zAxes,
00302 double xCoords[4], double yCoords[4], double zCoords[4],
00303 double xRange[2], double yRange[2], double zRange[2]);
00304
00305 private:
00306
00307 void ShallowCopy(vtkProp *prop) { this->vtkProp::ShallowCopy( prop ); };
00308 private:
00309 vtkCubeAxesActor2D(const vtkCubeAxesActor2D&);
00310 void operator=(const vtkCubeAxesActor2D&);
00311 };
00312
00313
00314 #endif