00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #ifndef ROOT_TView
00014 #define ROOT_TView
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef ROOT_TObject
00025 #include "TObject.h"
00026 #endif
00027
00028 #ifndef ROOT_TAttLine
00029 #include "TAttLine.h"
00030 #endif
00031
00032 class TList;
00033 class TSeqCollection;
00034 class TVirtualPad;
00035
00036 class TView : public TObject, public TAttLine {
00037
00038 public:
00039
00040 TView() {}
00041 TView(const TView &);
00042 virtual ~TView() {}
00043
00044 virtual void DefinePerspectiveView() = 0;
00045 virtual void AxisVertex(Double_t ang, Double_t *av, Int_t &ix1, Int_t &ix2, Int_t &iy1, Int_t &iy2, Int_t &iz1, Int_t &iz2) = 0;
00046 virtual void DefineViewDirection(const Double_t *s, const Double_t *c,
00047 Double_t cosphi, Double_t sinphi,
00048 Double_t costhe, Double_t sinthe,
00049 Double_t cospsi, Double_t sinpsi,
00050 Double_t *tnorm, Double_t *tback) = 0;
00051 virtual void DrawOutlineCube(TList *outline, Double_t *rmin, Double_t *rmax) = 0;
00052 virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py) = 0;
00053 virtual void ExecuteRotateView(Int_t event, Int_t px, Int_t py) = 0;
00054 virtual void FindScope(Double_t *scale, Double_t *center, Int_t &irep) = 0;
00055 virtual Int_t GetDistancetoAxis(Int_t axis, Int_t px, Int_t py, Double_t &ratio) = 0;
00056 virtual Double_t GetDview() const = 0;
00057 virtual Double_t GetDproj() const = 0;
00058 virtual Double_t GetExtent() const = 0;
00059 virtual Bool_t GetAutoRange() = 0;
00060 virtual Double_t GetLatitude() = 0;
00061 virtual Double_t GetLongitude() = 0;
00062 virtual Double_t GetPsi() = 0;
00063 virtual void GetRange (Float_t *min, Float_t *max) = 0;
00064 virtual void GetRange (Double_t *min, Double_t *max) = 0;
00065 virtual Double_t *GetRmax() = 0;
00066 virtual Double_t *GetRmin() = 0;
00067 virtual TSeqCollection *GetOutline() = 0;
00068 virtual Double_t *GetTback() = 0;
00069 virtual Double_t *GetTN() = 0;
00070 virtual Double_t *GetTnorm() = 0;
00071 virtual Int_t GetSystem() = 0;
00072 virtual void GetWindow(Double_t &u0, Double_t &v0, Double_t &du, Double_t &dv) const = 0;
00073 virtual Double_t GetWindowWidth() const = 0;
00074 virtual Double_t GetWindowHeight() const = 0;
00075 virtual void FindNormal(Double_t x, Double_t y, Double_t z, Double_t &zn) = 0;
00076 virtual void FindPhiSectors(Int_t iopt, Int_t &kphi, Double_t *aphi, Int_t &iphi1, Int_t &iphi2) = 0;
00077 virtual void FindThetaSectors(Int_t iopt, Double_t phi, Int_t &kth, Double_t *ath, Int_t &ith1, Int_t &ith2) = 0;
00078 virtual Bool_t IsClippedNDC(Double_t *p) const = 0;
00079 virtual Bool_t IsPerspective() const = 0;
00080 virtual Bool_t IsViewChanged() const = 0;
00081 virtual void NDCtoWC(const Float_t *pn, Float_t *pw) = 0;
00082 virtual void NDCtoWC(const Double_t *pn, Double_t *pw) = 0;
00083 virtual void NormalWCtoNDC(const Float_t *pw, Float_t *pn) = 0;
00084 virtual void NormalWCtoNDC(const Double_t *pw, Double_t *pn) = 0;
00085 virtual void PadRange(Int_t rback) = 0;
00086 virtual void ResizePad() = 0;
00087 virtual void SetAutoRange(Bool_t autorange=kTRUE) = 0;
00088 virtual void SetAxisNDC(const Double_t *x1, const Double_t *x2, const Double_t *y1, const Double_t *y2, const Double_t *z1, const Double_t *z2) = 0;
00089 virtual void SetDefaultWindow() = 0;
00090 virtual void SetDview(Double_t dview) = 0;
00091 virtual void SetDproj(Double_t dproj) = 0;
00092 virtual void SetLatitude(Double_t latitude) = 0;
00093 virtual void SetLongitude(Double_t longitude) = 0;
00094 virtual void SetPsi(Double_t psi) = 0;
00095 virtual void SetOutlineToCube() = 0;
00096 virtual void SetParallel() = 0;
00097 virtual void SetPerspective() = 0;
00098 virtual void SetRange(const Double_t *min, const Double_t *max) = 0;
00099 virtual void SetRange(Double_t x0, Double_t y0, Double_t z0, Double_t x1, Double_t y1, Double_t z1, Int_t flag=0) = 0;
00100 virtual void SetSystem(Int_t system) = 0;
00101 virtual void SetView(Double_t longitude, Double_t latitude, Double_t psi, Int_t &irep) = 0;
00102 virtual void SetViewChanged(Bool_t flag=kTRUE) = 0;
00103 virtual void SetWindow(Double_t u0, Double_t v0, Double_t du, Double_t dv) = 0;
00104 virtual void WCtoNDC(const Float_t *pw, Float_t *pn) = 0;
00105 virtual void WCtoNDC(const Double_t *pw, Double_t *pn) = 0;
00106
00107
00108 virtual void MoveFocus(Double_t *center, Double_t dx, Double_t dy, Double_t dz, Int_t nsteps=10,
00109 Double_t dlong=0, Double_t dlat=0, Double_t dpsi=0) = 0;
00110 virtual void MoveViewCommand(Char_t chCode, Int_t count=1) = 0;
00111 virtual void MoveWindow(Char_t option) = 0;
00112
00113 virtual void AdjustScales(TVirtualPad *pad=0) = 0;
00114 virtual void Centered3DImages(TVirtualPad *pad=0) = 0;
00115 virtual void Centered() = 0;
00116 virtual void FrontView(TVirtualPad *pad=0) = 0;
00117 virtual void Front() = 0;
00118
00119 virtual void ZoomIn() = 0;
00120 virtual void ZoomOut() = 0;
00121 virtual void ZoomView(TVirtualPad *pad=0, Double_t zoomFactor = 1.25 ) = 0;
00122 virtual void UnzoomView(TVirtualPad *pad=0,Double_t unZoomFactor = 1.25) = 0;
00123
00124 virtual void RotateView(Double_t phi, Double_t theta, TVirtualPad *pad=0) = 0;
00125 virtual void SideView(TVirtualPad *pad=0) = 0;
00126 virtual void Side() = 0;
00127 virtual void TopView(TVirtualPad *pad=0) = 0;
00128 virtual void Top() = 0;
00129
00130 virtual void ToggleRulers(TVirtualPad *pad=0) = 0;
00131 virtual void ShowAxis() = 0;
00132 virtual void ToggleZoom(TVirtualPad *pad=0) = 0;
00133 virtual void ZoomMove() = 0;
00134 virtual void Zoom() = 0;
00135 virtual void UnZoom() = 0;
00136
00137 static TView *CreateView(Int_t system=1, const Double_t *rmin=0, const Double_t *rmax=0);
00138
00139 ClassDef(TView,3);
00140 };
00141
00142 #endif
00143