39 TGLManip::TGLManip() :
41 fSelectedWidget(0), fActive(kFALSE),
50 TGLManip::TGLManip(TGLPhysicalShape* shape) :
52 fSelectedWidget(0), fActive(kFALSE),
61 TGLManip::TGLManip(
const TGLManip& gm) :
64 fSelectedWidget(gm.fSelectedWidget),
66 fFirstMouse(gm.fFirstMouse),
67 fLastMouse(gm.fLastMouse)
74 TGLManip& TGLManip::operator=(
const TGLManip& gm)
77 TVirtualGLManip::operator=(gm);
79 fSelectedWidget=gm.fSelectedWidget;
81 fFirstMouse=gm.fFirstMouse;
82 fLastMouse=gm.fLastMouse;
97 const UChar_t* TGLManip::ColorFor(UInt_t widget)
const
99 if (widget == fSelectedWidget)
101 return TGLUtil::fgYellow;
107 case 1:
return TGLUtil::fgRed;
108 case 2:
return TGLUtil::fgGreen;
109 case 3:
return TGLUtil::fgBlue;
110 default:
return TGLUtil::fgGrey;
118 Bool_t TGLManip::HandleButton(
const Event_t& event,
const TGLCamera& )
121 if (event.fCode != kButton1) {
126 if (event.fType == kButtonPress && fSelectedWidget != 0) {
127 fFirstMouse.SetX(event.fX);
128 fFirstMouse.SetY(event.fY);
129 fLastMouse.SetX(event.fX);
130 fLastMouse.SetY(event.fY);
133 }
else if (event.fType == kButtonRelease && fActive) {
145 Bool_t TGLManip::HandleMotion(
const Event_t& ,
156 void TGLManip::CalcDrawScale(
const TGLBoundingBox& box,
157 const TGLCamera& camera,
159 TGLVector3 axis[3])
const
162 base = box.Extents().Mag() / 100.0;
166 TGLVector3 pixelInWorld = camera.ViewportDeltaToWorld(box.Center(), 1, 1);
167 Double_t pixelScale = pixelInWorld.Mag();
168 if (base < pixelScale * 3.0) {
169 base = pixelScale * 3.0;
170 }
else if (base > pixelScale * 6.0) {
171 base = pixelScale * 6.0;
175 for (UInt_t i = 0; i<3; i++) {
177 axis[i] = box.Axis(i, kTRUE)*base*-10.0;
179 axis[i] = box.Axis(i, kFALSE)*-0.51;
180 if (axis[i].Mag() < base*10.0) {
181 axis[i] = box.Axis(i, kTRUE)*base*-10.0;