27 ClassImp(TGLCameraGuide);
32 TGLCameraGuide::TGLCameraGuide(Float_t x, Float_t y, Float_t s,
33 ERole role, EState state) :
34 TGLOverlayElement(role, state),
35 fXPos(x), fYPos(y), fSize(s),
36 fSelAxis(-1), fInDrag(kFALSE)
43 Bool_t TGLCameraGuide::MouseEnter(TGLOvlSelectRecord& )
52 Bool_t TGLCameraGuide::Handle(TGLRnrCtx& rnrCtx,
53 TGLOvlSelectRecord& selRec,
56 if (selRec.GetN() < 2)
return kFALSE;
57 Int_t recID = selRec.GetItem(1);
81 const TGLRect& vp = rnrCtx.RefCamera().RefViewport();
82 if (vp.Width() == 0 || vp.Height() == 0)
return kFALSE;
84 fXPos = TMath::Range(0.0f, 1.0f, (Float_t)(event->fX) / vp.Width());
85 fYPos = TMath::Range(0.0f, 1.0f, 1.0f - (Float_t)(event->fY) / vp.Height());
99 void TGLCameraGuide::MouseLeave()
108 void TGLCameraGuide::Render(TGLRnrCtx& rnrCtx)
110 TGLCapabilitySwitch lgt_off(GL_LIGHTING, kFALSE);
112 rnrCtx.ProjectionMatrixPushIdentity();
115 glTranslatef(-1.0f, -1.0f, 0.0f);
116 glScalef(2.0f, 2.0f, -2.0f);
117 glTranslatef(fXPos, fYPos, -0.25f);
119 Float_t aspect= rnrCtx.RefCamera().RefViewport().Aspect();
121 glScalef(1.0f / aspect, 1.0f, 1.0f);
123 glScalef(1.0f, aspect, 1.0f);
126 glGetFloatv(GL_DEPTH_RANGE, dr);
127 glDepthRange(0, 0.01);
131 const TGLMatrix &mv = rnrCtx.RefCamera().RefModelViewMatrix();
136 TGLUtil::DrawLine(c, e, TGLUtil::kLineHeadArrow, 0.1*fSize,
137 fSelAxis == 1 ? TGLUtil::fgYellow : TGLUtil::fgRed);
142 TGLUtil::DrawLine(c, e, TGLUtil::kLineHeadArrow, 0.1*fSize,
143 fSelAxis == 2 ? TGLUtil::fgYellow : TGLUtil::fgGreen);
148 TGLUtil::DrawLine(c, e, TGLUtil::kLineHeadArrow, 0.1*fSize,
149 fSelAxis == 3 ? TGLUtil::fgYellow : TGLUtil::fgBlue);
152 TGLUtil::DrawSphere(c, 0.08*fSize,
153 fSelAxis == 4 ? TGLUtil::fgYellow : rnrCtx.ColorSet().Foreground().CArr());
157 glDepthRange(dr[0], dr[1]);
160 rnrCtx.ProjectionMatrixPop();