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();