File indexing completed on 2024-04-06 12:11:37
0001 #include "TGLIncludes.h"
0002 #include "Fireworks/Core/src/FWEveDigitSetScalableMarker.h"
0003
0004 void FWEveDigitSetScalableMarkerGL::DirectDraw(TGLRnrCtx& rnrCtx) const {
0005 glPushAttrib(GL_ENABLE_BIT | GL_POLYGON_BIT | GL_POINT_BIT);
0006 glEnable(GL_POINT_SMOOTH);
0007 glDisable(GL_LIGHTING);
0008
0009 TEveChunkManager::iterator qi(fM->GetPlex());
0010 if (rnrCtx.Highlight() && fHighlightSet)
0011 qi.fSelection = fHighlightSet;
0012
0013 if (rnrCtx.SecSelection())
0014 glPushName(0);
0015
0016 glPointSize(((FWEveDigitSetScalableMarker*)fM)->GetMarkerSize());
0017 while (qi.next()) {
0018 TEveQuadSet::QFreeQuad_t* q = (TEveQuadSet::QFreeQuad_t*)qi();
0019 if (q->fValue < 0)
0020 continue;
0021 TGLUtil::ColorAlpha(Color_t(q->fValue));
0022 if (rnrCtx.SecSelection())
0023 glLoadName(qi.index());
0024 float* p = &q->fVertices[0];
0025 glBegin(GL_LINES);
0026 float c[3] = {0.5f * (p[0] + p[6]), 0.5f * (p[1] + p[7]), 0.5f * (p[2] + p[8])};
0027
0028 float d = p[6] - p[0];
0029 glVertex3f(c[0] - d, c[1], c[2]);
0030 glVertex3f(c[0] + d, c[1], c[2]);
0031 glVertex3f(c[0], c[1] - d, c[2]);
0032 glVertex3f(c[0], c[1] + d, c[2]);
0033 glVertex3f(c[0], c[1], c[2] - d);
0034 glVertex3f(c[0], c[1], c[2] + d);
0035
0036 glEnd();
0037
0038 glBegin(GL_POINTS);
0039 glVertex3fv(&c[0]);
0040 glEnd();
0041 }
0042
0043 glPopAttrib();
0044 }