Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
TGLOrthoCamera.h
Go to the documentation of this file.
1// @(#)root/gl:$Id$
2// Author: Richard Maunder 25/05/2005
3
4/*************************************************************************
5 * Copyright (C) 1995-2004, 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_TGLOrthoCamera
13#define ROOT_TGLOrthoCamera
14
15#include "TGLCamera.h"
16
17
18//////////////////////////////////////////////////////////////////////////
19// //
20// TGLOrthoCamera //
21// //
22// Orthographic projection camera. Currently limited to three types //
23// defined at construction time - kXOY, kXOZ, kZOY - where this refers //
24// to the viewport plane axis - e.g. kXOY has X axis horizontal, Y //
25// vertical - i.e. looking down Z axis with Y vertical. //
26//
27// The plane types restriction could easily be removed to supported //
28// arbitary ortho projections along any axis/orientation with free //
29// rotations about them. //
30// //
31//////////////////////////////////////////////////////////////////////////
32
33class TGLPaintDevice;
34
36{
37public:
38 enum EType { kZOY, kXOZ, kXOY, // Pair of world axes aligned to h/v screen.
39 kZnOY, kXnOZ, kXnOY, kZOX, kZnOX}; // 'n' means preceding axis is negated.
40private:
41 // Fields
42 EType fType; // camera type
43 Bool_t fEnableRotate; // enable rotation
44 Bool_t fDollyToZoom; // zoom when dolly is requested
45
46 // Limits - set in Setup()
47 Double_t fZoomMin; // minimum zoom factor
48 Double_t fZoomDefault; // default zoom factor
49 Double_t fZoomMax; // maximum zoom factor
50 TGLBoundingBox fVolume; //! scene volume
51
52 // Current interaction
53 Double_t fDefXSize, fDefYSize; //! x, y size of scene from camera view
54 Double_t fZoom; // current zoom
55
57
58public:
60 TGLOrthoCamera(EType type, const TGLVector3 & hAxis, const TGLVector3 & vAxis);
61 ~TGLOrthoCamera() override;
62
63 Bool_t IsOrthographic() const override { return kTRUE; }
64
65 void Setup(const TGLBoundingBox & box, Bool_t reset=kTRUE) override;
66 void Reset() override;
67
68 Bool_t Dolly(Int_t delta, Bool_t mod1, Bool_t mod2) override;
69 Bool_t Zoom (Int_t delta, Bool_t mod1, Bool_t mod2) override;
70 using TGLCamera::Truck;
71 Bool_t Truck(Int_t xDelta, Int_t yDelta, Bool_t mod1, Bool_t mod2) override;
72 Bool_t Rotate(Int_t xDelta, Int_t yDelta, Bool_t mod1, Bool_t mod2) override;
73 void Apply(const TGLBoundingBox & sceneBox, const TGLRect * pickRect = nullptr) const override;
74
75 // External scripting control
76 // void Configure(Double_t left, Double_t right, Double_t top, Double_t bottom);
77 void Configure(Double_t zoom, Double_t dolly, Double_t center[3],
78 Double_t hRotate, Double_t vRotate) override;
79
82
83 Double_t GetZoomMin() const { return fZoomMin; }
84 Double_t GetZoomMax() const { return fZoomMax; }
85 void SetZoomMin(Double_t z);
86 void SetZoomMax(Double_t z);
87 void SetZoomMinMax(Double_t min, Double_t max) { SetZoomMin(min); SetZoomMax(max); }
88
91
92 void SetZoom(Double_t x) { fZoom = x; }
93 Double_t GetZoom() const { return fZoom; }
94
95 ClassDefOverride(TGLOrthoCamera,1) // Camera for orthographic view.
96};
97
98#endif // ROOT_TGLOrthoCamera
bool Bool_t
Definition RtypesCore.h:63
int Int_t
Definition RtypesCore.h:45
double Double_t
Definition RtypesCore.h:59
constexpr Bool_t kTRUE
Definition RtypesCore.h:100
#define ClassDefOverride(name, id)
Definition Rtypes.h:341
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t type
Concrete class describing an orientated (free) or axis aligned box of 8 vertices.
Abstract base camera class - concrete classes for orthographic and perspective cameras derive from it...
Definition TGLCamera.h:44
virtual Bool_t Truck(Double_t xDelta, Double_t yDelta)
Truck the camera - 'move camera parallel to film plane'.
Orthographic projection camera.
void SetZoom(Double_t x)
~TGLOrthoCamera() override
Destroy orthographic camera.
void SetZoomMax(Double_t z)
Set maximum zoom factor.
Bool_t GetDollyToZoom() const
Bool_t Rotate(Int_t xDelta, Int_t yDelta, Bool_t mod1, Bool_t mod2) override
Rotate the camera - 'swivel round the view volume center'.
void SetDollyToZoom(Bool_t x)
Bool_t Zoom(Int_t delta, Bool_t mod1, Bool_t mod2) override
Zoom the camera - 'adjust lens focal length, retaining camera position'.
Double_t fZoom
x, y size of scene from camera view
Bool_t Truck(Int_t xDelta, Int_t yDelta, Bool_t mod1, Bool_t mod2) override
Truck the camera - 'move camera parallel to film plane'.
Bool_t GetEnableRotate() const
void SetEnableRotate(Bool_t x)
Double_t GetZoomMax() const
TGLBoundingBox fVolume
static UInt_t fgZoomDeltaSens
Bool_t Dolly(Int_t delta, Bool_t mod1, Bool_t mod2) override
Dolly the camera.
Double_t GetZoomMin() const
void Apply(const TGLBoundingBox &sceneBox, const TGLRect *pickRect=nullptr) const override
Apply the camera to the current GL context, setting the viewport, projection and modelview matrices.
void Reset() override
Reset the camera to defaults - trucking, zooming to reframe the world volume established in Setup().
void SetZoomMinMax(Double_t min, Double_t max)
Bool_t IsOrthographic() const override
TGLOrthoCamera()
Construct kXOY orthographic camera.
Double_t fDefXSize
scene volume
void Setup(const TGLBoundingBox &box, Bool_t reset=kTRUE) override
Setup camera limits suitable to view the world volume defined by 'box' and call Reset() to initialise...
void SetZoomMin(Double_t z)
Set minimum zoom factor.
void Configure(Double_t zoom, Double_t dolly, Double_t center[3], Double_t hRotate, Double_t vRotate) override
Configure the camera state.
Double_t GetZoom() const
Double_t fZoomDefault
Viewport (pixel base) 2D rectangle class.
Definition TGLUtil.h:422
3 component (x/y/z) vector class.
Definition TGLUtil.h:248
void box(Int_t pat, Double_t x1, Double_t y1, Double_t x2, Double_t y2)
Definition fillpatterns.C:1
Double_t x[n]
Definition legend1.C:17