25 ClassImp(TEveTrackProjectedGL);
30 TEveTrackProjectedGL::TEveTrackProjectedGL() : TEveTrackGL(), fM(0)
38 Bool_t TEveTrackProjectedGL::SetModel(TObject* obj,
const Option_t* )
40 TEveTrackGL::SetModel(obj);
41 fM = DynCast<TEveTrackProjected>(obj);
48 void TEveTrackProjectedGL::DirectDraw(TGLRnrCtx& rnrCtx)
const
57 TGLCapabilityEnabler sw_smooth(GL_LINE_SMOOTH, fM->fSmooth);
58 TGLCapabilityEnabler sw_blend(GL_BLEND, fM->fSmooth);
60 Float_t* p = fM->GetP();
62 for (std::vector<Int_t>::iterator bpi = fM->fBreakPoints.begin();
63 bpi != fM->fBreakPoints.end(); ++bpi)
65 Int_t size = *bpi - start;
66 TGLUtil::RenderPolyLine(*fM, fM->GetMainTransparency(), p, size);
70 TGLUtil::UnlockColor();
76 TGLUtil::RenderPolyMarkers(*fM, 0,
77 fM->GetP(), fM->Size(),
78 rnrCtx.GetPickRadius(),
83 if (fM->fBreakPoints.size() > 1 && fM->fPropagator->GetRnrPTBMarkers())
86 Int_t nbp = fM->fBreakPoints.size() - 1;
87 Bool_t bmb = fM->fPropagator->GetProjTrackBreaking() == TEveTrackPropagator::kPTB_Break;
88 Int_t nbptd = bmb ? 2*nbp : nbp;
89 std::vector<Float_t> pnts(3*nbptd);
91 for (Int_t i = 0; i < nbp; ++i, n+=3)
93 fM->GetPoint(fM->fBreakPoints[i] - 1, pnts[n], pnts[n+1], pnts[n+2]);
97 fM->GetPoint(fM->fBreakPoints[i], pnts[n], pnts[n+1], pnts[n+2]);
100 TGLUtil::RenderPolyMarkers(fM->fPropagator->RefPTBAtt(), 0,
102 rnrCtx.GetPickRadius(),
106 RenderPathMarksAndFirstVertex(rnrCtx);