forked from root-project/root
-
Notifications
You must be signed in to change notification settings - Fork 0
/
TGLManip.h
79 lines (61 loc) · 2.55 KB
/
TGLManip.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
// @(#)root/gl:$Id$
// Author: Richard Maunder 16/09/2005
/*************************************************************************
* Copyright (C) 1995-2005, Rene Brun and Fons Rademakers. *
* All rights reserved. *
* *
* For the licensing terms see $ROOTSYS/LICENSE. *
* For the list of contributors see $ROOTSYS/README/CREDITS. *
*************************************************************************/
#ifndef ROOT_TGLManip
#define ROOT_TGLManip
#ifndef ROOT_TVirtualGL
#include "TVirtualGL.h"
#endif
#ifndef ROOT_TPoint
#include "TPoint.h"
#endif
#ifndef ROOT_GuiTypes
#include "GuiTypes.h"
#endif
#ifndef ROOT_TGLUtil
#include "TGLUtil.h"
#endif
class TGLPhysicalShape;
class TGLVertex3;
class TGLVector3;
class TGLCamera;
class TGLRect;
class TGLBoundingBox;
class TGLManip : public TVirtualGLManip
{
protected:
TGLPhysicalShape *fShape; //! manipulated shape
UInt_t fSelectedWidget; //! active width (axis) component
Bool_t fActive; //! manipulator is active?
// Mouse tracking - in WINDOW coords
TPoint fFirstMouse; //! first (start) mouse position (in WINDOW coords)
TPoint fLastMouse; //! last (latest) mouse position (in WINDOW coords)
TGLManip(const TGLManip&);
TGLManip& operator=(const TGLManip&);
void CalcDrawScale(const TGLBoundingBox& box, const TGLCamera& camera,
Double_t& base, TGLVector3 axis[3]) const;
const UChar_t* ColorFor(UInt_t widget) const;
public:
TGLManip();
TGLManip(TGLPhysicalShape* shape);
virtual ~TGLManip();
UInt_t GetSelectedWidget() const { return fSelectedWidget; }
void SetSelectedWidget(UInt_t s) { fSelectedWidget = s; }
Bool_t GetActive() const { return fActive; }
void SetActive(Bool_t a) { fActive = a; }
void Attach(TGLPhysicalShape* shape) { fShape = shape; }
TGLPhysicalShape * GetAttached() const { return fShape; }
virtual void Draw(const TGLCamera& camera) const = 0;
// CRAPPY TVirtualGLManip TTTT, just override it here
virtual Bool_t Select(const TGLCamera&, const TGLRect&, const TGLBoundingBox&) { return kFALSE; }
virtual Bool_t HandleButton(const Event_t& event, const TGLCamera& camera);
virtual Bool_t HandleMotion(const Event_t& event, const TGLCamera& camera);
ClassDef(TGLManip, 0); // abstract base GL manipulator widget
};
#endif