Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
TGLPlotCamera.h
Go to the documentation of this file.
1 // @(#)root/gl:$Id$
2 // Author: Timur Pocheptsov
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2007, Rene Brun and Fons Rademakers. *
6  * All rights reserved. *
7  * *
8  * For the licensing terms see $ROOTSYS/LICENSE. *
9  * For the list of contributors see $ROOTSYS/README/CREDITS. *
10  *************************************************************************/
11 
12 #ifndef ROOT_TGLPlotCamera
13 #define ROOT_TGLPlotCamera
14 
15 #include "TGLUtil.h"
16 #include "TArcBall.h"
17 #include "TPoint.h"
18 
19 class TGLPaintDevice;
20 
21 class TGLPlotCamera
22 {
23 private:
24  TGLPlotCamera(const TGLPlotCamera&); // Not implemented
25  TGLPlotCamera& operator=(const TGLPlotCamera&); // Not implemented
26 
27 protected:
28  TGLRect fViewport;
29  Double_t fZoom;
30  Double_t fShift;
31  Double_t fOrthoBox[4];
32  TGLVertex3 fCenter;
33  TGLVector3 fTruck;
34  TArcBall fArcBall;
35  TPoint fMousePos;
36  Bool_t fVpChanged;
37 
38 public:
39  TGLPlotCamera();
40  virtual ~TGLPlotCamera() {}
41 
42  void SetViewport(const TGLRect &vp);
43 
44  void SetViewVolume(const TGLVertex3 *box);
45  void StartRotation(Int_t px, Int_t py);
46  void RotateCamera(Int_t px, Int_t py);
47  void StartPan(Int_t px, Int_t py);
48  void Pan(Int_t px, Int_t py);
49  void ZoomIn();
50  void ZoomOut();
51  void SetCamera()const;
52  void Apply(Double_t phi, Double_t theta)const;
53  Bool_t ViewportChanged()const{return fVpChanged;}
54  Int_t GetX()const;
55  Int_t GetY()const;
56  Int_t GetWidth()const;
57  Int_t GetHeight()const;
58 
59  ClassDef(TGLPlotCamera, 0); // Camera for plot-painters.
60 };
61 
62 #endif