00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00034 #ifndef __vtkViewport_h
00035 #define __vtkViewport_h
00036
00037 #include "vtkObject.h"
00038
00039 class vtkActor2DCollection;
00040 class vtkAssemblyPath;
00041 class vtkProp;
00042 class vtkPropCollection;
00043 class vtkWindow;
00044
00045 class VTK_COMMON_EXPORT vtkViewport : public vtkObject
00046 {
00047 public:
00048 vtkTypeRevisionMacro(vtkViewport,vtkObject);
00049 void PrintSelf(ostream& os, vtkIndent indent);
00050
00053 void AddProp(vtkProp *);
00054
00056 vtkPropCollection *GetProps() {return this->Props;};
00057
00059 int HasProp(vtkProp *);
00060
00062 void RemoveProp(vtkProp *);
00063
00065 void RemoveAllProps(void);
00066
00068
00071 void AddActor2D(vtkProp* p) {this->AddProp(p);};
00072 void RemoveActor2D(vtkProp* p);
00073 vtkActor2DCollection *GetActors2D();
00075
00077
00079 vtkSetVector3Macro(Background,double);
00080 vtkGetVectorMacro(Background,double,3);
00082
00084
00086 vtkSetVector2Macro(Aspect,double);
00087 vtkGetVectorMacro(Aspect,double,2);
00088 virtual void ComputeAspect();
00090
00092
00095 vtkSetVector2Macro(PixelAspect,double);
00096 vtkGetVectorMacro(PixelAspect,double,2);
00098
00100
00103 vtkSetVector4Macro(Viewport,double);
00104 vtkGetVectorMacro(Viewport,double,4);
00106
00108
00111 vtkSetVector3Macro(DisplayPoint,double);
00112 vtkGetVectorMacro(DisplayPoint,double,3);
00114
00116
00119 vtkSetVector3Macro(ViewPoint,double);
00120 vtkGetVectorMacro(ViewPoint,double,3);
00122
00124
00126 vtkSetVector4Macro(WorldPoint,double);
00127 vtkGetVectorMacro(WorldPoint,double,4);
00129
00131 virtual double *GetCenter();
00132
00134 virtual int IsInViewport(int x,int y);
00135
00137 virtual vtkWindow *GetVTKWindow() = 0;
00138
00140 virtual void DisplayToView();
00141
00143 virtual void ViewToDisplay();
00144
00146 virtual void WorldToView();
00147
00149 virtual void ViewToWorld();
00150
00152 void DisplayToWorld() {this->DisplayToView(); this->ViewToWorld();};
00153
00155 void WorldToDisplay() {this->WorldToView(); this->ViewToDisplay();};
00156
00158
00163 virtual void LocalDisplayToDisplay(double &x, double &y);
00164 virtual void DisplayToNormalizedDisplay(double &u, double &v);
00165 virtual void NormalizedDisplayToViewport(double &x, double &y);
00166 virtual void ViewportToNormalizedViewport(double &u, double &v);
00167 virtual void NormalizedViewportToView(double &x, double &y, double &z);
00168 virtual void ViewToWorld(double &, double &, double &) {};
00169 virtual void DisplayToLocalDisplay(double &x, double &y);
00170 virtual void NormalizedDisplayToDisplay(double &u, double &v);
00171 virtual void ViewportToNormalizedDisplay(double &x, double &y);
00172 virtual void NormalizedViewportToViewport(double &u, double &v);
00173 virtual void ViewToNormalizedViewport(double &x, double &y, double &z);
00174 virtual void WorldToView(double &, double &, double &) {};
00176
00178
00181 int *GetSize();
00182 int *GetOrigin();
00183 void GetTiledSize(int *width, int *height);
00185
00186
00187
00188
00194 virtual vtkAssemblyPath* PickProp(double selectionX, double selectionY) = 0;
00195
00197
00200 vtkAssemblyPath* PickPropFrom(double selectionX, double selectionY,
00201 vtkPropCollection*);
00203
00205
00207 vtkGetMacro(PickX, double);
00208 vtkGetMacro(PickY, double);
00209 vtkGetMacro(IsPicking, int);
00211
00213 virtual double GetPickedZ() = 0;
00214
00215 protected:
00216
00217
00218
00219 vtkViewport();
00220 ~vtkViewport();
00221
00222
00223
00224
00225 virtual void DevicePickRender() = 0;
00226
00227 virtual void StartPick(unsigned int pickFromSize) = 0;
00228
00229 virtual void UpdatePickId() = 0;
00230
00231 virtual void DonePick() = 0;
00232
00233 virtual unsigned int GetPickedId() = 0;
00234
00235
00236
00237
00238 vtkAssemblyPath* PickedProp;
00239 vtkPropCollection* PickFromProps;
00240
00241 int IsPicking;
00242 unsigned int CurrentPickId;
00243 double PickX;
00244 double PickY;
00245
00246
00247 vtkPropCollection *Props;
00248 vtkActor2DCollection *Actors2D;
00249 vtkWindow *VTKWindow;
00250 double Background[3];
00251 double Viewport[4];
00252 double Aspect[2];
00253 double PixelAspect[2];
00254 double Center[2];
00255
00256 int Size[2];
00257 int Origin[2];
00258 double DisplayPoint[3];
00259 double ViewPoint[3];
00260 double WorldPoint[4];
00261
00262 private:
00263 vtkViewport(const vtkViewport&);
00264 void operator=(const vtkViewport&);
00265 };
00266
00267
00268
00269 #endif