Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
TGLEventHandler.h
Go to the documentation of this file.
1 // @(#)root/gl:$Id$
2 // Author: Bertrand Bellenot 29/01/2008
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2008, 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_TGLEventHandler
13 #define ROOT_TGLEventHandler
14 
15 //////////////////////////////////////////////////////////////////////////
16 // //
17 // TGLEventHandler //
18 // //
19 //////////////////////////////////////////////////////////////////////////
20 
21 #include "TGEventHandler.h"
22 #include "TPoint.h"
23 
24 class TGToolTip;
25 
26 class TGLViewer;
27 class TGLPhysicalShape;
28 
29 class TGLEventHandler : public TGEventHandler
30 {
31 protected:
32  TGLViewer *fGLViewer;
33  TTimer *fMouseTimer; // mouse delay timer
34  TPoint fButtonPushPos;
35  TPoint fLastPos;
36  TPoint fLastMouseOverPos;
37  TGLPhysicalShape *fLastMouseOverShape;
38  TGToolTip *fTooltip; // tooltip for highlight
39  TPoint fLastGlobalPos;
40  TPoint fTooltipPos;
41  UInt_t fActiveButtonID;
42  UInt_t fLastEventState;
43  Bool_t fIgnoreButtonUp;
44  Bool_t fInPointerGrab;
45  Bool_t fMouseTimerRunning;
46  Bool_t fTooltipShown;
47  Bool_t fArcBall;
48  Int_t fTooltipPixelTolerance;
49  Int_t fSecSelType; // secondary selection type
50  Bool_t fDoInternalSelection;
51  Bool_t fViewerCentricControls;
52  Float_t fArrowKeyFactor;
53  Float_t fMouseDragFactor;
54  Float_t fMouseWheelFactor;
55 
56  virtual Bool_t Rotate(Int_t xDelta, Int_t yDelta, Bool_t mod1, Bool_t mod2);
57 
58  virtual void GrabMouse();
59  virtual void UnGrabMouse();
60 
61  virtual void SelectForClicked(Event_t *event);
62  virtual void SelectForMouseOver();
63 
64  Int_t ControlValue(Int_t v) { return fViewerCentricControls ? -v : v; }
65 
66 public:
67  TGLEventHandler(TGWindow *w, TObject *obj);
68  virtual ~TGLEventHandler();
69 
70  virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py);
71  virtual Bool_t HandleEvent(Event_t *event);
72  virtual Bool_t HandleExpose(Event_t * event);
73  virtual Bool_t HandleFocusChange(Event_t *event);
74  virtual Bool_t HandleCrossing(Event_t *event);
75  virtual Bool_t HandleButton(Event_t * event);
76  virtual Bool_t HandleDoubleClick(Event_t *event);
77  virtual Bool_t HandleConfigureNotify(Event_t *event);
78  virtual Bool_t HandleKey(Event_t *event);
79  virtual Bool_t HandleMotion(Event_t * event);
80  virtual Bool_t HandleTimer(TTimer *t);
81  virtual void StartMouseTimer();
82  virtual void StopMouseTimer();
83  virtual void ClearMouseOver();
84  virtual void Repaint();
85 
86  virtual void PopupContextMenu(TGLPhysicalShape* pshp, Event_t *event, Int_t gx, Int_t gy);
87 
88  virtual void TriggerTooltip(const char* text);
89  virtual void RemoveTooltip();
90 
91  void SetMouseOverSelectDelay(Int_t ms);
92  void SetMouseOverTooltipDelay(Int_t ms);
93 
94  Int_t GetTooltipPixelTolerance() const { return fTooltipPixelTolerance; }
95  void SetTooltipPixelTolerance(Int_t t) { fTooltipPixelTolerance = t; }
96 
97  Int_t GetSecSelType() const { return fSecSelType; }
98  void SetSecSelType(Int_t t) { fSecSelType = t; }
99 
100  Bool_t GetDoInternalSelection() const { return fDoInternalSelection; }
101  void SetDoInternalSelection(Bool_t x) { fDoInternalSelection = x; }
102 
103  Bool_t GetArcBall() const { return fArcBall; }
104  void SetArcBall(Bool_t a) { fArcBall = a; }
105 
106  ClassDef(TGLEventHandler, 0); // Base-class and default implementation of event-handler for TGLViewer.
107 };
108 
109 #endif
110