Logo ROOT   6.08/07
Reference Guide
TGLViewer.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_TGLViewer
13 #define ROOT_TGLViewer
14 
15 #include "TGLViewerBase.h"
16 #include "TGLRnrCtx.h"
17 #include "TGLSelectRecord.h"
18 
19 #include "TVirtualViewer3D.h"
20 #include "TBuffer3D.h"
21 
22 #include "TGLPerspectiveCamera.h"
23 #include "TGLOrthoCamera.h"
24 #include "TGLClip.h"
25 
26 #include "TTimer.h"
27 #include "TPoint.h"
28 
29 #include "TGEventHandler.h"
30 
31 #include "GuiTypes.h"
32 #include "TQObject.h"
33 
34 #include <vector>
35 
36 class TGLSceneBase;
37 class TGLRedrawTimer;
38 class TGLViewerEditor;
39 class TGLWidget;
40 class TGLLightSet;
41 class TGLClipSet;
42 class TGLManipSet;
43 class TGLCameraOverlay;
44 class TGLContextIdentity;
45 class TGLAutoRotator;
46 class TTimer;
47 class TImage;
48 
49 class TContextMenu;
50 class TGedEditor;
51 class TGLPShapeObj;
52 
53 class TGLViewer : public TVirtualViewer3D,
54  public TGLViewerBase,
55  public TQObject
56 
57 {
58  friend class TGLOutput;
59  friend class TGLEventHandler;
60  friend class TGLAutoRotator;
61 public:
62 
66 
67  enum ESecSelType { // When to do secondary-selection:
68  kOnRequest, // - on request - when Mod1 is pressed or logical-shape requests it;
69  kOnKeyMod1 // - only when Mod1 is pressed.
70  };
71 
72 private:
73  TGLViewer(const TGLViewer &); // Not implemented
74  TGLViewer & operator=(const TGLViewer &); // Not implemented
75 
76  void InitSecondaryObjects();
77 
78 protected:
79  // External handles
80  TVirtualPad *fPad; //! external pad - remove replace with signal
81 
82  // GUI Handles
84 
85  // Cameras
86  // TODO: Put in vector and allow external creation
98 
99  // Stereo
100  Bool_t fStereo; //! use stereo rendering
101  Bool_t fStereoQuadBuf; //! draw quad buffer or left/right stereo in left/right half of window
102  Float_t fStereoZeroParallax; //! position of zero-parallax plane: 0 - near clipping plane, 1 - far clipping plane
105 
106  // Lights
108  // Clipping
110  // Selected physical
111  TGLSelectRecord fCurrentSelRec; //! select record in use as selected
112  TGLSelectRecord fSelRec; //! select record from last select (should go to context)
113  TGLSelectRecord fSecSelRec; //! select record from last secondary select (should go to context)
115  // Overlay
116  TGLOverlayElement *fCurrentOvlElm; //! current overlay element
117  TGLOvlSelectRecord fOvlSelRec; //! select record from last overlay select
118 
119  TGEventHandler *fEventHandler; //! event handler
120  TGedEditor *fGedEditor; //! GED editor
122 
123  // Mouse ineraction
124 public:
130 protected:
133 
134  // Redraw timer
135  TGLRedrawTimer *fRedrawTimer; //! timer for triggering redraws
136  Float_t fMaxSceneDrawTimeHQ; //! max time for scene rendering at high LOD (in ms)
137  Float_t fMaxSceneDrawTimeLQ; //! max time for scene rendering at high LOD (in ms)
138 
139  TGLRect fViewport; //! viewport - drawn area
140  TGLColorSet fDarkColorSet; //! color-set with dark background
141  TGLColorSet fLightColorSet; //! color-set with light background
142  Float_t fPointScale; //! size scale for points
143  Float_t fLineScale; //! width scale for lines
144  Bool_t fSmoothPoints; //! smooth point edge rendering
145  Bool_t fSmoothLines; //! smooth line edge rendering
146  Int_t fAxesType; //! axes type
147  Bool_t fAxesDepthTest; //! remove guides hidden-lines
148  Bool_t fReferenceOn; //! reference marker on?
149  TGLVertex3 fReferencePos; //! reference position
150  Bool_t fDrawCameraCenter; //! reference marker on?
151  TGLCameraOverlay *fCameraOverlay; //! markup size of viewport in scene units
152 
153  Bool_t fSmartRefresh; //! cache logicals during scene rebuilds
154 
155  // Debug tracing (for scene rebuilds)
156  Bool_t fDebugMode; //! debug mode (forced rebuild + draw scene/frustum/interest boxes)
158  TString fPictureFileName; //! default file-name for SavePicture()
159  Float_t fFader; //! fade the view (0 - no fade/default, 1 - full fade/no rendering done)
160 
161  static TGLColorSet fgDefaultColorSet; //! a shared, default color-set
162  static Bool_t fgUseDefaultColorSetForNewViewers; //! name says it all
163 
164 
165  ///////////////////////////////////////////////////////////////////////
166  // Methods
167  ///////////////////////////////////////////////////////////////////////
168 
169  virtual void SetupClipObject();
170 
171  // Drawing - can tidy up/remove lots when TGLManager added
172  void InitGL();
173  void PreDraw();
174  void PostDraw();
175  void FadeView(Float_t alpha);
176  void MakeCurrent() const;
177  void SwapBuffers() const;
178 
179  // Cameras
180  void SetViewport(Int_t x, Int_t y, Int_t width, Int_t height);
181  void SetViewport(const TGLRect& vp);
182  void SetupCameras(Bool_t reset);
183 
184 protected:
186  Int_t fGLDevice; //!for embedded gl viewer
187  TGLContextIdentity *fGLCtxId; //!for embedded gl viewer
188 
189  // Updata/camera-reset behaviour
190  Bool_t fIgnoreSizesOnUpdate; // ignore sizes of bounding-boxes on update
191  Bool_t fResetCamerasOnUpdate; // reposition camera on each update
192  Bool_t fResetCamerasOnNextUpdate; // reposition camera on next update
193 
194 public:
195  TGLViewer(TVirtualPad* pad, Int_t x, Int_t y, Int_t width, Int_t height);
196  TGLViewer(TVirtualPad* pad);
197  virtual ~TGLViewer();
198 
199  // TVirtualViewer3D interface ... mostly a facade
200 
201  // Forward to TGLScenePad
202  virtual Bool_t CanLoopOnPrimitives() const { return kTRUE; }
203  virtual void PadPaint(TVirtualPad* pad);
204  // Actually used by GL-in-pad
205  virtual Int_t DistancetoPrimitive(Int_t px, Int_t py);
206  virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py);
207  // Only implemented because they're abstract ... should throw an
208  // exception or assert they are not called.
209  virtual Bool_t PreferLocalFrame() const { return kTRUE; }
210  virtual void BeginScene() {}
211  virtual Bool_t BuildingScene() const { return kFALSE; }
212  virtual void EndScene() {}
213  virtual Int_t AddObject(const TBuffer3D&, Bool_t* = 0) { return TBuffer3D::kNone; }
214  virtual Int_t AddObject(UInt_t, const TBuffer3D&, Bool_t* = 0) { return TBuffer3D::kNone; }
215  virtual Bool_t OpenComposite(const TBuffer3D&, Bool_t* = 0) { return kFALSE; }
216  virtual void CloseComposite() {}
217  virtual void AddCompositeOp(UInt_t) {}
218 
219  virtual void PrintObjects();
220  virtual void ResetCameras() { SetupCameras(kTRUE); }
221  virtual void ResetCamerasAfterNextUpdate() { fResetCamerasOnNextUpdate = kTRUE; }
222 
224 
225  virtual void CreateGLWidget() {}
226  virtual void DestroyGLWidget() {}
227 
228  Int_t GetDev() const { return fGLDevice; }
230  void SetSmartRefresh(Bool_t smart_ref) { fSmartRefresh = smart_ref; }
231 
235  void UseDarkColorSet();
236  void UseLightColorSet();
237  void SwitchColorSet();
238 
241  Bool_t IsColorSetDark() const;
242 
243  void SetClearColor(Color_t col);
244 
248 
249  const TGLRect& RefViewport() const { return fViewport; }
250  Int_t ViewportDiagonal() const { return fViewport.Diagonal(); }
251 
252  Float_t GetPointScale() const { return fPointScale; }
253  Float_t GetLineScale() const { return fLineScale; }
254  void SetPointScale(Float_t s) { fPointScale = s; }
255  void SetLineScale (Float_t s) { fLineScale = s; }
257  Bool_t GetSmoothLines() const { return fSmoothLines; }
258  void SetSmoothPoints(Bool_t s){ fSmoothPoints = s; }
259  void SetSmoothLines(Bool_t s) { fSmoothLines = s; }
260 
261  TGLLightSet* GetLightSet() const { return fLightSet; }
262  TGLClipSet * GetClipSet() const { return fClipSet; }
263  Bool_t GetClipAutoUpdate() const { return fClipSet->GetAutoUpdate(); }
264  void SetClipAutoUpdate(Bool_t x) { fClipSet->SetAutoUpdate(x); }
265 
266  // External GUI component interface
267  TGLCamera & CurrentCamera() const { return *fCurrentCamera; }
268  TGLCamera & RefCamera(ECameraType camera);
269  void SetCurrentCamera(ECameraType camera);
270  void SetOrthoCamera(ECameraType camera, Double_t zoom, Double_t dolly,
271  Double_t center[3], Double_t hRotate, Double_t vRotate);
272  void SetPerspectiveCamera(ECameraType camera, Double_t fov, Double_t dolly,
273  Double_t center[3], Double_t hRotate, Double_t vRotate);
274  void ReinitializeCurrentCamera(const TGLVector3& hAxis, const TGLVector3& vAxis, Bool_t redraw=kTRUE);
275  void GetGuideState(Int_t & axesType, Bool_t & axesDepthTest, Bool_t & referenceOn, Double_t* referencePos) const;
276  void SetGuideState(Int_t axesType, Bool_t axesDepthTest, Bool_t referenceOn, const Double_t* referencePos);
277  void SetDrawCameraCenter(Bool_t x);
279  void PickCameraCenter() { fPushAction = kPushCamCenter; RefreshPadEditor(this); }
280  void PickAnnotate() { fPushAction = kPushAnnotate; RefreshPadEditor(this); }
282  void SetCameraOverlay(TGLCameraOverlay* m) { fCameraOverlay = m; }
284  void SetAutoRotator(TGLAutoRotator* ar);
285 
286  // Stereo
287  Bool_t GetStereo() const { return fStereo; }
291 
292  void SetStereo(Bool_t stereo, Bool_t quad_buf=kTRUE);
293  void SetStereoZeroParallax(Float_t f) { fStereoZeroParallax = f; }
294  void SetStereoEyeOffsetFac(Float_t f) { fStereoEyeOffsetFac = f; }
295  void SetStereoFrustumAsymFac(Float_t f) { fStereoFrustumAsymFac = f; }
296 
297  // Push / drag action
300 
301  const TGLPhysicalShape * GetSelected() const;
302 
303 
304  // Draw and selection
305 
306  // Scene rendering timeouts
309  void SetMaxSceneDrawTimeHQ(Float_t t) { fMaxSceneDrawTimeHQ = t; }
310  void SetMaxSceneDrawTimeLQ(Float_t t) { fMaxSceneDrawTimeLQ = t; }
311 
312  // Request methods post cross thread request via TROOT::ProcessLineFast().
313  void RequestDraw(Short_t LOD = TGLRnrCtx::kLODMed); // Cross thread draw request
314  virtual void PreRender();
315  virtual void Render();
316  virtual void PostRender();
317  void DoDraw(Bool_t swap_buffers=kTRUE);
318  void DoDrawMono(Bool_t swap_buffers);
319  void DoDrawStereo(Bool_t swap_buffers);
320 
321  void DrawGuides();
322  void DrawDebugInfo();
323 
324  Bool_t RequestSelect(Int_t x, Int_t y); // Cross thread select request
325  Bool_t DoSelect(Int_t x, Int_t y); // First level selecton (shapes/objects).
326  Bool_t RequestSecondarySelect(Int_t x, Int_t y); // Cross thread secondary select request
327  Bool_t DoSecondarySelect(Int_t x, Int_t y); // Second level selecton (inner structure).
328  void ApplySelection();
329 
330  Bool_t RequestOverlaySelect(Int_t x, Int_t y); // Cross thread select request
331  Bool_t DoOverlaySelect(Int_t x, Int_t y); // Window coords origin top left
332 
333  // Saving of screen image
335  Bool_t SavePicture(const TString &fileName);
336  Bool_t SavePictureUsingBB (const TString &fileName);
337  Bool_t SavePictureUsingFBO(const TString &fileName, Int_t w, Int_t h, Float_t pixel_object_scale=0);
338  Bool_t SavePictureWidth (const TString &fileName, Int_t width, Bool_t pixel_object_scale=kTRUE);
339  Bool_t SavePictureHeight(const TString &fileName, Int_t height, Bool_t pixel_object_scale=kTRUE);
340  Bool_t SavePictureScale (const TString &fileName, Float_t scale, Bool_t pixel_object_scale=kTRUE);
341 
342  // Methods returning screen image
344  TImage* GetPictureUsingFBO(Int_t w, Int_t h,Float_t pixel_object_scale=0);
345 
346  const char* GetPictureFileName() const { return fPictureFileName.Data(); }
347  void SetPictureFileName(const TString& f) { fPictureFileName = f; }
348  Float_t GetFader() const { return fFader; }
349  void SetFader(Float_t x) { fFader = x; }
350  void AutoFade(Float_t fade, Float_t time=1, Int_t steps=10);
351 
352  // Update/camera-reset
353  void UpdateScene(Bool_t redraw=kTRUE);
355  void SetIgnoreSizesOnUpdate(Bool_t v) { fIgnoreSizesOnUpdate = v; }
356  void ResetCurrentCamera();
358  void SetResetCamerasOnUpdate(Bool_t v) { fResetCamerasOnUpdate = v; }
359 
360  virtual void PostSceneBuildSetup(Bool_t resetCameras);
361 
362  virtual void Activated() { Emit("Activated()"); } // *SIGNAL*
363 
364  virtual void MouseIdle(TGLPhysicalShape*,UInt_t,UInt_t); // *SIGNAL*
365  virtual void MouseOver(TGLPhysicalShape*); // *SIGNAL*
366  virtual void MouseOver(TGLPhysicalShape*, UInt_t state); // *SIGNAL*
367  virtual void MouseOver(TObject *obj, UInt_t state); // *SIGNAL*
368  virtual void ReMouseOver(TObject *obj, UInt_t state); // *SIGNAL*
369  virtual void UnMouseOver(TObject *obj, UInt_t state); // *SIGNAL*
370 
371  virtual void Clicked(TObject *obj); //*SIGNAL*
372  virtual void Clicked(TObject *obj, UInt_t button, UInt_t state); //*SIGNAL*
373  virtual void ReClicked(TObject *obj, UInt_t button, UInt_t state); //*SIGNAL*
374  virtual void UnClicked(TObject *obj, UInt_t button, UInt_t state); //*SIGNAL*
375  virtual void DoubleClicked() { Emit("DoubleClicked()"); } // *SIGNAL*
376 
378  virtual void SetEventHandler(TGEventHandler *handler);
379 
380  TGedEditor* GetGedEditor() const { return fGedEditor; }
381  virtual void SetGedEditor(TGedEditor* ed) { fGedEditor = ed; }
382 
383  virtual void SelectionChanged();
384  virtual void OverlayDragFinished();
385  virtual void RefreshPadEditor(TObject* obj=0);
386 
387  virtual void RemoveOverlayElement(TGLOverlayElement* el);
388 
392  void ClearCurrentOvlElm();
393 
394  ClassDef(TGLViewer,0) // Standard ROOT GL viewer.
395 };
396 
397 
398 
399 // TODO: Find a better place/way to do this
400 class TGLRedrawTimer : public TTimer
401 {
402 private:
406 public:
408  fViewer(viewer), fRedrawLOD(TGLRnrCtx::kLODHigh), fPending(kFALSE) {}
410  void RequestDraw(Int_t milliSec, Short_t redrawLOD)
411  {
412  if (fPending) TurnOff(); else fPending = kTRUE;
413  if (redrawLOD < fRedrawLOD) fRedrawLOD = redrawLOD;
414  TTimer::Start(milliSec, kTRUE);
415  }
416  Bool_t IsPending() const { return fPending; }
417  virtual void Stop()
418  {
419  if (fPending) { TurnOff(); fPending = kFALSE; }
420  }
422  {
423  TurnOff();
424  fPending = kFALSE;
425  fViewer.RequestDraw(fRedrawLOD);
426  fRedrawLOD = TGLRnrCtx::kLODHigh;
427  return kTRUE;
428  }
429 };
430 
432 private:
433  TGLFaderHelper(const TGLFaderHelper&); // Not implemented
434  TGLFaderHelper& operator=(const TGLFaderHelper&); // Not implemented
435 
436 public:
441 
443  fViewer(0), fFadeTarget(0), fTime(0), fNSteps(0) {}
445  fViewer(v),fFadeTarget(fade), fTime(time), fNSteps(steps) {}
446  virtual ~TGLFaderHelper() {}
447 
448  void MakeFadeStep();
449 
451 };
452 
453 #endif // ROOT_TGLViewer
TGEventHandler * fEventHandler
select record from last overlay select
Definition: TGLViewer.h:119
void FadeView(Float_t alpha)
Draw a rectangle (background color and given alpha) across the whole viewport.
Definition: TGLViewer.cxx:1250
Int_t fAxesType
smooth line edge rendering
Definition: TGLViewer.h:146
TGLCamera * fCurrentCamera
Definition: TGLViewer.h:96
Float_t fTime
Definition: TGLViewer.h:439
A GL overlay element which displays camera furstum.
virtual void Stop()
Definition: TGLViewer.h:417
The TGLRnrCtx class aggregates data for a given redering context as needed by various parts of the RO...
Definition: TGLRnrCtx.h:40
TGLVertex3 fReferencePos
reference marker on?
Definition: TGLViewer.h:149
virtual void ReMouseOver(TObject *obj, UInt_t state)
Emit MouseOver signal.
Definition: TGLViewer.cxx:2104
Class encapsulating a set of colors used throughout standard rendering.
Definition: TGLUtil.h:838
TGLSelectRecord fSelRec
select record in use as selected
Definition: TGLViewer.h:112
TString fPictureFileName
Definition: TGLViewer.h:158
Bool_t fStereoQuadBuf
use stereo rendering
Definition: TGLViewer.h:101
Short_t fRedrawLOD
Definition: TGLViewer.h:404
TGLClipSet * GetClipSet() const
Definition: TGLViewer.h:262
const TGLRect & RefViewport() const
Definition: TGLViewer.h:249
TGLColorSet fLightColorSet
color-set with dark background
Definition: TGLViewer.h:141
void MakeCurrent() const
Make GL context current.
Definition: TGLViewer.cxx:1275
virtual void PadPaint(TVirtualPad *pad)
Entry point for updating viewer contents via VirtualViewer3D interface.
Definition: TGLViewer.cxx:302
Abstract base camera class - concrete classes for orthographic and perspective cameras derive from it...
Definition: TGLCamera.h:43
TGLPerspectiveCamera fPerspectiveCameraXOZ
Definition: TGLViewer.h:87
virtual void PreRender()
Initialize objects that influence rendering.
Definition: TGLViewer.cxx:481
void ReinitializeCurrentCamera(const TGLVector3 &hAxis, const TGLVector3 &vAxis, Bool_t redraw=kTRUE)
Change base-vectors defining the camera-base transformation of current camera.
Definition: TGLViewer.cxx:1966
Float_t fLineScale
size scale for points
Definition: TGLViewer.h:143
Wrap TGLPysicalShape into TObject so that it can be edited using GED.
Definition: TGLPShapeObj.h:20
float Float_t
Definition: RtypesCore.h:53
TGEventHandler * GetEventHandler() const
Definition: TGLViewer.h:377
virtual void MouseOver(TGLPhysicalShape *)
Emit MouseOver signal.
Definition: TGLViewer.cxx:2074
void SwitchColorSet()
Switch between dark and light colorsets.
Definition: TGLViewer.cxx:1631
TGLAutoRotator * fAutoRotator
Definition: TGLViewer.h:97
Float_t fFadeTarget
Definition: TGLViewer.h:438
TGLViewer & fViewer
Definition: TGLViewer.h:403
virtual Bool_t OpenComposite(const TBuffer3D &, Bool_t *=0)
Definition: TGLViewer.h:215
virtual void ResetCamerasAfterNextUpdate()
Definition: TGLViewer.h:221
Bool_t GetStereo() const
Definition: TGLViewer.h:287
TGLOverlayElement * GetCurrentOvlElm() const
Definition: TGLViewer.h:391
TH1 * h
Definition: legend2.C:5
TGLOrthoCamera fOrthoXnOZCamera
Definition: TGLViewer.h:94
Identifier of a shared GL-context.
Definition: TGLContext.h:85
void ResetCurrentCamera()
Resets position/rotation of current camera to default values.
Definition: TGLViewer.cxx:356
void SetupCameras(Bool_t reset)
Setup cameras for current bounding box.
Definition: TGLViewer.cxx:365
TGLOrthoCamera fOrthoXOZCamera
Definition: TGLViewer.h:91
static TGLColorSet & GetDefaultColorSet()
Returns reference to the default color-set.
Definition: TGLViewer.cxx:1679
TGLOrthoCamera fOrthoXOYCamera
Definition: TGLViewer.h:90
TGLCamera & RefCamera(ECameraType camera)
Return camera reference by type.
Definition: TGLViewer.cxx:1752
Bool_t RequestOverlaySelect(Int_t x, Int_t y)
Post request for secondary selection rendering of selected object around the window point (x...
Definition: TGLViewer.cxx:1487
virtual void SetEventHandler(TGEventHandler *handler)
Set the event-handler.
Definition: TGLViewer.cxx:2270
This is the ROOT implementation of the Qt object communication mechanism (see also http://www...
Definition: TQObject.h:53
Scene base-class – provides basic interface expected by the TGLViewer or its sub-classes: ...
Definition: TGLSceneBase.h:32
Float_t fStereoEyeOffsetFac
position of zero-parallax plane: 0 - near clipping plane, 1 - far clipping plane
Definition: TGLViewer.h:103
TGLViewer * fViewer
Definition: TGLViewer.h:437
TGLViewer & operator=(const TGLViewer &)
void DoDraw(Bool_t swap_buffers=kTRUE)
Draw out the viewer.
Definition: TGLViewer.cxx:546
Bool_t IsColorSetDark() const
Returns true if current color set is dark.
Definition: TGLViewer.cxx:1707
Basic string class.
Definition: TString.h:137
void SetCameraOverlay(TGLCameraOverlay *m)
Definition: TGLViewer.h:282
void SetSmoothPoints(Bool_t s)
Definition: TGLViewer.h:258
Bool_t SavePictureScale(const TString &fileName, Float_t scale, Bool_t pixel_object_scale=kTRUE)
Save picture with given scale to current window size.
Definition: TGLViewer.cxx:1142
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
TGLColorSet & RefLightColorSet()
Definition: TGLViewer.h:233
const TGLPhysicalShape * GetSelected() const
Return selected physical shape.
Definition: TGLViewer.cxx:2063
const Bool_t kFALSE
Definition: Rtypes.h:92
void SetMaxSceneDrawTimeLQ(Float_t t)
Definition: TGLViewer.h:310
void SetDrawCameraCenter(Bool_t x)
Draw camera look at and rotation point.
Definition: TGLViewer.cxx:2053
GUI editor for TGLViewer.
An abstract interface to image processing library.
Definition: TImage.h:37
Bool_t SavePictureHeight(const TString &fileName, Int_t height, Bool_t pixel_object_scale=kTRUE)
Save picture with given height (width scaled proportionally).
Definition: TGLViewer.cxx:1128
Bool_t RequestSecondarySelect(Int_t x, Int_t y)
Request secondary select.
Definition: TGLViewer.cxx:1380
virtual void UnMouseOver(TObject *obj, UInt_t state)
Emit UnMouseOver signal.
Definition: TGLViewer.cxx:2116
virtual void SetGedEditor(TGedEditor *ed)
Definition: TGLViewer.h:381
Perspective projection camera - with characteristic foreshortening.
virtual void PostRender()
Restore state set in PreRender().
Definition: TGLViewer.cxx:535
virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py)
Process event of type &#39;event&#39; - one of EEventType types, occurring at window location px...
Definition: TGLViewer.cxx:2207
Encapsulates a set of lights for OpenGL.
Definition: TGLLightSet.h:21
void UseLightColorSet()
Use the light color-set.
Definition: TGLViewer.cxx:1622
Combine all available manipulators in a collection.
Definition: TGLManipSet.h:21
An overlay element.
Definition: TGLOverlay.h:22
static void UseDefaultColorSetForNewViewers(Bool_t x)
Sets static flag that determines if new viewers should use the default color-set. ...
Definition: TGLViewer.cxx:1689
void SetOrthoCamera(ECameraType camera, Double_t zoom, Double_t dolly, Double_t center[3], Double_t hRotate, Double_t vRotate)
Set an orthographic camera to supplied configuration - note this does not need to be the current came...
Definition: TGLViewer.cxx:1878
Wrapper class for GL capture & output routines.
Definition: TGLOutput.h:28
Bool_t GetResetCamerasOnUpdate() const
Definition: TGLViewer.h:357
void SetClearColor(Color_t col)
Set background method.
Definition: TGLViewer.cxx:1670
Base class for GL viewers.
Definition: TGLViewerBase.h:36
Concrete physical shape - a GL drawable.
TGLCamera & CurrentCamera() const
Definition: TGLViewer.h:267
virtual Bool_t CanLoopOnPrimitives() const
Definition: TGLViewer.h:202
Float_t GetStereoFrustumAsymFac() const
Definition: TGLViewer.h:290
virtual void Render()
Normal rendering, used by mono and stereo rendering.
Definition: TGLViewer.cxx:515
void AutoFade(Float_t fade, Float_t time=1, Int_t steps=10)
Animate fading from current value to fade over given time (sec) and number of steps.
Definition: TGLViewer.cxx:1604
static TGLColorSet fgDefaultColorSet
fade the view (0 - no fade/default, 1 - full fade/no rendering done)
Definition: TGLViewer.h:161
void SetPointScale(Float_t s)
Definition: TGLViewer.h:254
EDragAction GetDragAction() const
Definition: TGLViewer.h:299
Short_t LOD() const
TGLSelectRecord fCurrentSelRec
Definition: TGLViewer.h:111
void SetLineScale(Float_t s)
Definition: TGLViewer.h:255
Double_t x[n]
Definition: legend1.C:17
#define ClassDef(name, id)
Definition: Rtypes.h:254
virtual void OverlayDragFinished()
An overlay operation can result in change to an object.
Definition: TGLViewer.cxx:2244
Bool_t fDebugMode
cache logicals during scene rebuilds
Definition: TGLViewer.h:156
TGLRedrawTimer * fRedrawTimer
Definition: TGLViewer.h:135
TGLRnrCtx * fRnrCtx
Definition: TGLViewerBase.h:62
3 component (x/y/z) vertex class.
Definition: TGLUtil.h:86
void SetFader(Float_t x)
Definition: TGLViewer.h:349
TGLContextIdentity * fGLCtxId
for embedded gl viewer
Definition: TGLViewer.h:187
virtual void PostSceneBuildSetup(Bool_t resetCameras)
Perform post scene-build setup.
Definition: TGLViewer.cxx:390
virtual void Start(Long_t milliSec=-1, Bool_t singleShot=kFALSE)
Starts the timer with a milliSec timeout.
Definition: TTimer.cxx:211
void PostDraw()
Perform GL work which must be done after each draw.
Definition: TGLViewer.cxx:1240
Bool_t GetIgnoreSizesOnUpdate() const
Definition: TGLViewer.h:354
Bool_t GetSmoothLines() const
Definition: TGLViewer.h:257
const char * GetPictureFileName() const
Definition: TGLViewer.h:346
Viewport (pixel base) 2D rectangle class.
Definition: TGLUtil.h:426
Bool_t fResetCamerasOnUpdate
Definition: TGLViewer.h:191
void SwapBuffers() const
Swap GL buffers.
Definition: TGLViewer.cxx:1286
Bool_t DoSecondarySelect(Int_t x, Int_t y)
Secondary selection.
Definition: TGLViewer.cxx:1395
Abstract 3D shapes viewer.
3 component (x/y/z) vector class.
Definition: TGLUtil.h:250
virtual void RemoveOverlayElement(TGLOverlayElement *el)
Remove overlay element.
Definition: TGLViewer.cxx:2283
Int_t ViewportDiagonal() const
Definition: TGLViewer.h:250
TVirtualPad * fPad
Definition: TGLViewer.h:80
TGedEditor * GetGedEditor() const
Definition: TGLViewer.h:380
void DrawGuides()
Draw reference marker and coordinate axes.
Definition: TGLViewer.cxx:1154
TVirtualPad is an abstract base class for the Pad and Canvas classes.
Definition: TVirtualPad.h:59
Float_t GetFader() const
Definition: TGLViewer.h:348
void ApplySelection()
Process result from last selection (in fSelRec) and extract a new current selection from it...
Definition: TGLViewer.cxx:1470
Bool_t fAxesDepthTest
axes type
Definition: TGLViewer.h:147
virtual ~TGLFaderHelper()
Definition: TGLViewer.h:446
void SetSmartRefresh(Bool_t smart_ref)
Definition: TGLViewer.h:230
short Color_t
Definition: RtypesCore.h:79
TGLWidget * fGLWidget
Definition: TGLViewer.h:185
void Emit(const char *signal)
Acitvate signal without args.
Definition: TQObject.cxx:561
Float_t GetStereoEyeOffsetFac() const
Definition: TGLViewer.h:289
Bool_t GetSmartRefresh() const
Definition: TGLViewer.h:229
TGLManipSet * fSelectedPShapeRef
select record from last secondary select (should go to context)
Definition: TGLViewer.h:114
Bool_t GetClipAutoUpdate() const
Definition: TGLViewer.h:263
Float_t fMaxSceneDrawTimeLQ
max time for scene rendering at high LOD (in ms)
Definition: TGLViewer.h:137
void UpdateScene(Bool_t redraw=kTRUE)
Force update of pad-scenes.
Definition: TGLViewer.cxx:334
TGLSelectRecord & GetSelRec()
Definition: TGLViewer.h:389
void InitGL()
Initialise GL state.
Definition: TGLViewer.cxx:407
virtual Int_t AddObject(UInt_t, const TBuffer3D &, Bool_t *=0)
Definition: TGLViewer.h:214
void SetPerspectiveCamera(ECameraType camera, Double_t fov, Double_t dolly, Double_t center[3], Double_t hRotate, Double_t vRotate)
Set a perspective camera to supplied configuration - note this does not need to be the current camera...
Definition: TGLViewer.cxx:1926
Float_t fFader
default file-name for SavePicture()
Definition: TGLViewer.h:159
void PickCameraCenter()
Definition: TGLViewer.h:279
Bool_t IsUsingDefaultColorSet() const
Check if the viewer is using the default color set.
Definition: TGLViewer.cxx:1661
Automatically rotates GL camera.
TGLAutoRotator * GetAutoRotator()
Get the auto-rotator for this viewer.
Definition: TGLViewer.cxx:1978
void RequestDraw(Short_t LOD=TGLRnrCtx::kLODMed)
Post request for redraw of viewer at level of detail &#39;LOD&#39; Request is directed via cross thread gVirt...
Definition: TGLViewer.cxx:436
virtual void PrintObjects()
Pass viewer for print capture by TGLOutput.
Definition: TGLViewer.cxx:2216
Bool_t RequestSelect(Int_t x, Int_t y)
Post request for selection render pass viewer, picking objects around the window point (x...
Definition: TGLViewer.cxx:1304
static Bool_t IsUsingDefaultColorSetForNewViewers()
Returns the value of the static flag that determines if new viewers should use the default color-set...
Definition: TGLViewer.cxx:1699
virtual void AddCompositeOp(UInt_t)
Definition: TGLViewer.h:217
SVector< double, 2 > v
Definition: Dict.h:5
void RequestDraw(Int_t milliSec, Short_t redrawLOD)
Definition: TGLViewer.h:410
Bool_t fIsPrinting
debug mode (forced rebuild + draw scene/frustum/interest boxes)
Definition: TGLViewer.h:157
Standard selection record including information about containing scene and details ob out selected ob...
Bool_t GetAutoUpdate() const
Definition: TGLClip.h:188
TGLCameraOverlay * GetCameraOverlay() const
Definition: TGLViewer.h:281
Bool_t SavePictureUsingFBO(const TString &fileName, Int_t w, Int_t h, Float_t pixel_object_scale=0)
Save current image in various formats (gif, gif+, jpg, png).
Definition: TGLViewer.cxx:889
Int_t fGLDevice
Definition: TGLViewer.h:186
This class provides an interface to context sensitive popup menus.
Definition: TContextMenu.h:44
void GetGuideState(Int_t &axesType, Bool_t &axesDepthTest, Bool_t &referenceOn, Double_t *referencePos) const
Fetch the state of guides (axes & reference markers) into arguments.
Definition: TGLViewer.cxx:2024
virtual Int_t AddObject(const TBuffer3D &, Bool_t *=0)
Definition: TGLViewer.h:213
virtual void CreateGLWidget()
Definition: TGLViewer.h:225
unsigned int UInt_t
Definition: RtypesCore.h:42
TMarker * m
Definition: textangle.C:8
virtual void Clicked(TObject *obj)
Emit Clicked signal.
Definition: TGLViewer.cxx:2127
TGLRect fViewport
max time for scene rendering at high LOD (in ms)
Definition: TGLViewer.h:139
Bool_t fStereo
Definition: TGLViewer.h:100
Bool_t DoOverlaySelect(Int_t x, Int_t y)
Perform GL selection, picking overlay objects only.
Definition: TGLViewer.cxx:1506
void DoDrawStereo(Bool_t swap_buffers)
Draw out in stereoscopic mode.
Definition: TGLViewer.cxx:656
EDragAction fDragAction
Definition: TGLViewer.h:132
void SetStereoZeroParallax(Float_t f)
Definition: TGLViewer.h:293
A collection of concrete TGLClip objects to be selected from.
Definition: TGLClip.h:139
short Short_t
Definition: RtypesCore.h:35
void SetStereoFrustumAsymFac(Float_t f)
Definition: TGLViewer.h:295
virtual void DoubleClicked()
Definition: TGLViewer.h:375
Generic 3D primitive description class.
Definition: TBuffer3D.h:19
TGLOvlSelectRecord fOvlSelRec
current overlay element
Definition: TGLViewer.h:117
Handles synchronous and a-synchronous timer events.
Definition: TTimer.h:57
TGLOvlSelectRecord & GetOvlSelRec()
Definition: TGLViewer.h:390
void UseDarkColorSet()
Use the dark color-set.
Definition: TGLViewer.cxx:1613
Float_t GetMaxSceneDrawTimeLQ() const
Definition: TGLViewer.h:308
Base GL viewer object - used by both standalone and embedded (in pad) GL.
Definition: TGLViewer.h:53
GL window with context.
Definition: TGLWidget.h:35
Bool_t fSmoothPoints
width scale for lines
Definition: TGLViewer.h:144
void SetStereo(Bool_t stereo, Bool_t quad_buf=kTRUE)
Enable stereo rendering.
Definition: TGLViewer.cxx:2003
Int_t Diagonal() const
Return the diagonal of the rectangle.
Definition: TGLUtil.cxx:316
virtual Bool_t PreferLocalFrame() const
Definition: TGLViewer.h:209
Bool_t DoSelect(Int_t x, Int_t y)
Perform GL selection, picking objects overlapping WINDOW area described by &#39;rect&#39;.
Definition: TGLViewer.cxx:1326
Float_t GetPointScale() const
Definition: TGLViewer.h:252
void SetStereoEyeOffsetFac(Float_t f)
Definition: TGLViewer.h:294
Float_t GetStereoZeroParallax() const
Definition: TGLViewer.h:288
void SetSmoothLines(Bool_t s)
Definition: TGLViewer.h:259
Float_t GetLineScale() const
Definition: TGLViewer.h:253
void SetPictureFileName(const TString &f)
Definition: TGLViewer.h:347
TImage * GetPictureUsingBB()
Returns current image.
Definition: TGLViewer.cxx:983
void SetAutoUpdate(Bool_t aup)
Definition: TGLClip.h:189
Bool_t fSmoothLines
smooth point edge rendering
Definition: TGLViewer.h:145
double f(double x)
Bool_t SavePictureWidth(const TString &fileName, Int_t width, Bool_t pixel_object_scale=kTRUE)
Save picture with given width (height scaled proportionally).
Definition: TGLViewer.cxx:1114
double Double_t
Definition: RtypesCore.h:55
void SetViewport(Int_t x, Int_t y, Int_t width, Int_t height)
Set viewer viewport (window area) with bottom/left at (x,y), with dimensions &#39;width&#39;/&#39;height&#39;.
Definition: TGLViewer.cxx:1720
void SetResetCamerasOnUpdate(Bool_t v)
Definition: TGLViewer.h:358
TGLOrthoCamera fOrthoXnOYCamera
Definition: TGLViewer.h:93
EPushAction fPushAction
Definition: TGLViewer.h:131
virtual Bool_t BuildingScene() const
Definition: TGLViewer.h:211
TGLOrthoCamera fOrthoZOYCamera
Definition: TGLViewer.h:92
static Bool_t fgUseDefaultColorSetForNewViewers
a shared, default color-set
Definition: TGLViewer.h:162
Float_t fMaxSceneDrawTimeHQ
timer for triggering redraws
Definition: TGLViewer.h:136
TGLOrthoCamera fOrthoZnOYCamera
Definition: TGLViewer.h:95
virtual void BeginScene()
Definition: TGLViewer.h:210
Base-class and default implementation of event-handler for TGLViewer.
Float_t fStereoZeroParallax
draw quad buffer or left/right stereo in left/right half of window
Definition: TGLViewer.h:102
Double_t y[n]
Definition: legend1.C:17
virtual void SelectionChanged()
Update GUI components for embedded viewer selection change.
Definition: TGLViewer.cxx:2224
virtual void ReClicked(TObject *obj, UInt_t button, UInt_t state)
Emit ReClicked signal with button id and modifier state.
Definition: TGLViewer.cxx:2148
Bool_t fReferenceOn
remove guides hidden-lines
Definition: TGLViewer.h:148
virtual void CloseComposite()
Definition: TGLViewer.h:216
void SetCurrentCamera(ECameraType camera)
Set current active camera - &#39;cameraType&#39; one of: kCameraPerspX, kCameraPerspY, kCameraPerspZ, kCameraOrthoXOY, kCameraOrthoXOZ, kCameraOrthoZOY, kCameraOrthoXnOY, kCameraOrthoXnOZ, kCameraOrthoZnOY.
Definition: TGLViewer.cxx:1786
TGLCameraOverlay * fCameraOverlay
reference marker on?
Definition: TGLViewer.h:151
Bool_t fIgnoreSizesOnUpdate
for embedded gl viewer
Definition: TGLViewer.h:190
TContextMenu * fContextMenu
external pad - remove replace with signal
Definition: TGLViewer.h:83
TImage * GetPictureUsingFBO(Int_t w, Int_t h, Float_t pixel_object_scale=0)
Returns current image.
Definition: TGLViewer.cxx:1030
TGLColorSet & RefDarkColorSet()
Definition: TGLViewer.h:232
TGLOverlayElement * fCurrentOvlElm
Definition: TGLViewer.h:116
void DoDrawMono(Bool_t swap_buffers)
Draw out in monoscopic mode.
Definition: TGLViewer.cxx:624
TGLLightSet * GetLightSet() const
Definition: TGLViewer.h:261
Orthographic projection camera.
Mother of all ROOT objects.
Definition: TObject.h:37
TGLViewer(const TGLViewer &)
Float_t fStereoFrustumAsymFac
Definition: TGLViewer.h:104
Bool_t IsPending() const
Definition: TGLViewer.h:416
virtual void RefreshPadEditor(TObject *obj=0)
Update GED editor if it is set.
Definition: TGLViewer.cxx:2255
void ClearCurrentOvlElm()
Reset current overlay-element to zero, eventually notifying the old one that the mouse has left...
Definition: TGLViewer.cxx:2297
Bool_t Notify()
Notify when timer times out.
Definition: TGLViewer.h:421
Bool_t SavePictureUsingBB(const TString &fileName)
Save current image in various formats (gif, gif+, jpg, png).
Definition: TGLViewer.cxx:832
void SetGuideState(Int_t axesType, Bool_t axesDepthTest, Bool_t referenceOn, const Double_t *referencePos)
Set the state of guides (axes & reference markers) from arguments.
Definition: TGLViewer.cxx:2038
TGLColorSet & ColorSet()
Definition: TGLViewer.h:234
void PickAnnotate()
Definition: TGLViewer.h:280
virtual void DestroyGLWidget()
Definition: TGLViewer.h:226
void InitSecondaryObjects()
Common initialization.
Definition: TGLViewer.cxx:238
virtual void MouseIdle(TGLPhysicalShape *, UInt_t, UInt_t)
Emit MouseIdle signal.
Definition: TGLViewer.cxx:2172
EPushAction GetPushAction() const
Definition: TGLViewer.h:298
virtual ~TGLViewer()
Destroy viewer object.
Definition: TGLViewer.cxx:272
void SetClipAutoUpdate(Bool_t x)
Definition: TGLViewer.h:264
virtual void SetupClipObject()
name says it all
Definition: TGLViewer.cxx:466
TGLPerspectiveCamera fPerspectiveCameraXOY
Definition: TGLViewer.h:89
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
Calculate and return pixel distance to nearest viewer object from window location px...
Definition: TGLViewer.cxx:2194
Float_t GetMaxSceneDrawTimeHQ() const
Definition: TGLViewer.h:307
TGLColorSet * GetBaseColorSet()
Returns the current base color-set.
Definition: TGLRnrCtx.cxx:314
virtual void Activated()
Definition: TGLViewer.h:362
virtual void ResetCameras()
Definition: TGLViewer.h:220
void SetMaxSceneDrawTimeHQ(Float_t t)
Definition: TGLViewer.h:309
Int_t GetDev() const
Definition: TGLViewer.h:228
virtual void UnClicked(TObject *obj, UInt_t button, UInt_t state)
Emit UnClicked signal with button id and modifier state.
Definition: TGLViewer.cxx:2160
Bool_t GetDrawCameraCenter()
Definition: TGLViewer.h:278
TGLLightSet * fLightSet
Definition: TGLViewer.h:107
void PreDraw()
Perform GL work which must be done before each draw.
Definition: TGLViewer.cxx:1215
Selection record for overlay objects.
void UseDefaultColorSet(Bool_t x)
Set usage of the default color set.
Definition: TGLViewer.cxx:1648
void SetAutoRotator(TGLAutoRotator *ar)
Set the auto-rotator for this viewer. The old rotator is deleted.
Definition: TGLViewer.cxx:1988
TGLColorSet fDarkColorSet
viewport - drawn area
Definition: TGLViewer.h:140
TGLRedrawTimer(TGLViewer &viewer)
Definition: TGLViewer.h:407
Bool_t fPending
Definition: TGLViewer.h:405
Bool_t GetSmoothPoints() const
Definition: TGLViewer.h:256
const Bool_t kTRUE
Definition: Rtypes.h:91
TGedEditor * fGedEditor
event handler
Definition: TGLViewer.h:120
Bool_t fSmartRefresh
markup size of viewport in scene units
Definition: TGLViewer.h:153
TGLClipSet * fClipSet
Definition: TGLViewer.h:109
Float_t fPointScale
color-set with light background
Definition: TGLViewer.h:142
TGLPerspectiveCamera fPerspectiveCameraYOZ
Definition: TGLViewer.h:88
Bool_t fDrawCameraCenter
reference position
Definition: TGLViewer.h:150
Bool_t SavePicture()
Save current image using the default file name which can be set via SetPictureFileName() and defaults...
Definition: TGLViewer.cxx:781
void SetIgnoreSizesOnUpdate(Bool_t v)
Definition: TGLViewer.h:355
TGLFaderHelper(TGLViewer *v, Float_t fade, Float_t time, Int_t steps)
Definition: TGLViewer.h:444
TGLPShapeObj * fPShapeWrap
GED editor.
Definition: TGLViewer.h:121
TGLSelectRecord fSecSelRec
select record from last select (should go to context)
Definition: TGLViewer.h:113
void DrawDebugInfo()
If in debug mode draw camera aids and overall bounding box.
Definition: TGLViewer.cxx:1189
const char * Data() const
Definition: TString.h:349
Bool_t fResetCamerasOnNextUpdate
Definition: TGLViewer.h:192
TGLWidget * GetGLWidget()
Definition: TGLViewer.h:223
virtual void EndScene()
Definition: TGLViewer.h:212