fBBox[3] = fDefCoord;
}
- for (Int_t c=0; c<fPlex.VecSize(); ++c)
+ VoidCPlex::iterator qi(fPlex);
+
+ switch (fQuadType)
{
- QuadBase* qbp = (QuadBase*) fPlex.Chunk(c);
- Int_t n = fPlex.NAtoms(c);
- switch (fQuadType)
+ case QT_FreeQuad:
{
-
- case QT_FreeQuad:
- {
- QFreeQuad* qp = (QFreeQuad*) qbp;
- while (n--) {
- Float_t* p = qp->fVertices;
- BBoxCheckPoint(p); p += 3;
- BBoxCheckPoint(p); p += 3;
- BBoxCheckPoint(p); p += 3;
- BBoxCheckPoint(p);
- ++qp;
- }
- break;
+ while (qi.next()) {
+ const Float_t* p = ((QFreeQuad*) qi())->fVertices;
+ BBoxCheckPoint(p); p += 3;
+ BBoxCheckPoint(p); p += 3;
+ BBoxCheckPoint(p); p += 3;
+ BBoxCheckPoint(p);
}
+ break;
+ }
- case QT_RectangleXY:
- {
- QRect* qp = (QRect*) qbp;
- while (n--) {
- QRect& q = * qp;
- if(q.fX < fBBox[0]) fBBox[0] = q.fX;
- if(q.fX + q.fW > fBBox[1]) fBBox[1] = q.fX + q.fW;
- if(q.fY < fBBox[2]) fBBox[2] = q.fY;
- if(q.fY + q.fH > fBBox[3]) fBBox[3] = q.fY + q.fH;
- if(q.fZ < fBBox[4]) fBBox[4] = q.fZ;
- if(q.fZ > fBBox[5]) fBBox[5] = q.fZ;
- ++qp;
- }
- break;
+ case QT_RectangleXY:
+ {
+ while (qi.next()) {
+ QRect& q = * (QRect*) qi();
+ if(q.fX < fBBox[0]) fBBox[0] = q.fX;
+ if(q.fX + q.fW > fBBox[1]) fBBox[1] = q.fX + q.fW;
+ if(q.fY < fBBox[2]) fBBox[2] = q.fY;
+ if(q.fY + q.fH > fBBox[3]) fBBox[3] = q.fY + q.fH;
+ if(q.fZ < fBBox[4]) fBBox[4] = q.fZ;
+ if(q.fZ > fBBox[5]) fBBox[5] = q.fZ;
}
+ break;
+ }
- case QT_RectangleXYFixedDim:
- {
- QRectFixDim* qp = (QRectFixDim*) qbp;
- const Float_t& w = fDefWidth;
- const Float_t& h = fDefHeight;
- while (n--) {
- QRectFixDim& q = * qp;
- if(q.fX < fBBox[0]) fBBox[0] = q.fX;
- if(q.fX + w > fBBox[1]) fBBox[1] = q.fX + w;
- if(q.fY < fBBox[2]) fBBox[2] = q.fY;
- if(q.fY + h > fBBox[3]) fBBox[3] = q.fY + h;
- if(q.fZ < fBBox[4]) fBBox[4] = q.fZ;
- if(q.fZ > fBBox[5]) fBBox[5] = q.fZ;
- ++qp;
- }
- break;
+ case QT_RectangleXYFixedDim:
+ {
+ const Float_t& w = fDefWidth;
+ const Float_t& h = fDefHeight;
+ while (qi.next()) {
+ QRectFixDim& q = * (QRectFixDim*) qi();
+ if(q.fX < fBBox[0]) fBBox[0] = q.fX;
+ if(q.fX + w > fBBox[1]) fBBox[1] = q.fX + w;
+ if(q.fY < fBBox[2]) fBBox[2] = q.fY;
+ if(q.fY + h > fBBox[3]) fBBox[3] = q.fY + h;
+ if(q.fZ < fBBox[4]) fBBox[4] = q.fZ;
+ if(q.fZ > fBBox[5]) fBBox[5] = q.fZ;
}
+ break;
+ }
- case QT_RectangleXYFixedZ:
- {
- QRectFixC* qp = (QRectFixC*) qbp;
- while (n--) {
- QRectFixC& q = * qp;
- if(q.fX < fBBox[0]) fBBox[0] = q.fX;
- if(q.fX + q.fW > fBBox[1]) fBBox[1] = q.fX + q.fW;
- if(q.fY < fBBox[2]) fBBox[2] = q.fY;
- if(q.fY + q.fH > fBBox[3]) fBBox[3] = q.fY + q.fH;
- ++qp;
- }
- break;
+ case QT_RectangleXYFixedZ:
+ {
+ while (qi.next()) {
+ QRectFixC& q = * (QRectFixC*) qi();
+ if(q.fX < fBBox[0]) fBBox[0] = q.fX;
+ if(q.fX + q.fW > fBBox[1]) fBBox[1] = q.fX + q.fW;
+ if(q.fY < fBBox[2]) fBBox[2] = q.fY;
+ if(q.fY + q.fH > fBBox[3]) fBBox[3] = q.fY + q.fH;
}
+ break;
+ }
- case QT_RectangleXZFixedY:
- {
- QRectFixC* qp = (QRectFixC*) qbp;
- while (n--) {
- QRectFixC& q = * qp;
- if(q.fX < fBBox[0]) fBBox[0] = q.fX;
- if(q.fX + q.fW > fBBox[1]) fBBox[1] = q.fX + q.fW;
- if(q.fY < fBBox[4]) fBBox[4] = q.fY;
- if(q.fY + q.fH > fBBox[5]) fBBox[5] = q.fY + q.fH;
- ++qp;
- }
- break;
+ case QT_RectangleXZFixedY:
+ {
+ while (qi.next()) {
+ QRectFixC& q = * (QRectFixC*) qi();
+ if(q.fX < fBBox[0]) fBBox[0] = q.fX;
+ if(q.fX + q.fW > fBBox[1]) fBBox[1] = q.fX + q.fW;
+ if(q.fY < fBBox[4]) fBBox[4] = q.fY;
+ if(q.fY + q.fH > fBBox[5]) fBBox[5] = q.fY + q.fH;
}
+ break;
+ }
- case QT_RectangleXYFixedDimZ:
- {
- QRectFixDimC* qp = (QRectFixDimC*) qbp;
- const Float_t& w = fDefWidth;
- const Float_t& h = fDefHeight;
- while (n--) {
- QRectFixDimC& q = * qp;
- if(q.fX < fBBox[0]) fBBox[0] = q.fX;
- if(q.fX + w > fBBox[1]) fBBox[1] = q.fX + w;
- if(q.fY < fBBox[2]) fBBox[2] = q.fY;
- if(q.fY + h > fBBox[3]) fBBox[3] = q.fY + h;
- ++qp;
- }
- break;
+ case QT_RectangleXYFixedDimZ:
+ {
+ const Float_t& w = fDefWidth;
+ const Float_t& h = fDefHeight;
+ while (qi.next()) {
+ QRectFixDimC& q = * (QRectFixDimC*) qi();
+ if(q.fX < fBBox[0]) fBBox[0] = q.fX;
+ if(q.fX + w > fBBox[1]) fBBox[1] = q.fX + w;
+ if(q.fY < fBBox[2]) fBBox[2] = q.fY;
+ if(q.fY + h > fBBox[3]) fBBox[3] = q.fY + h;
}
+ break;
+ }
- case QT_RectangleXZFixedDimY:
- {
- QRectFixDimC* qp = (QRectFixDimC*) qbp;
- const Float_t& w = fDefWidth;
- const Float_t& h = fDefHeight;
- while (n--) {
- QRectFixDimC& q = * qp;
- if(q.fX < fBBox[0]) fBBox[0] = q.fX;
- if(q.fX + w > fBBox[1]) fBBox[1] = q.fX + w;
- if(q.fY < fBBox[4]) fBBox[4] = q.fY;
- if(q.fY + h > fBBox[5]) fBBox[5] = q.fY + h;
- ++qp;
- }
- break;
+ case QT_RectangleXZFixedDimY:
+ {
+ const Float_t& w = fDefWidth;
+ const Float_t& h = fDefHeight;
+ while (qi.next()) {
+ QRectFixDimC& q = * (QRectFixDimC*) qi();
+ if(q.fX < fBBox[0]) fBBox[0] = q.fX;
+ if(q.fX + w > fBBox[1]) fBBox[1] = q.fX + w;
+ if(q.fY < fBBox[4]) fBBox[4] = q.fY;
+ if(q.fY + h > fBBox[5]) fBBox[5] = q.fY + h;
}
+ break;
+ }
- case QT_LineXYFixedZ:
- {
- QLineFixC* qp = (QLineFixC*) qbp;
- while (n--) {
- QLineFixC& q = * qp;
- BBoxCheckPoint(q.fX, q.fY, fDefCoord);
- BBoxCheckPoint(q.fX + q.fDx, q.fY + q.fDy, fDefCoord);
- ++qp;
- }
- break;
+ case QT_LineXYFixedZ:
+ {
+ while (qi.next()) {
+ QLineFixC& q = * (QLineFixC*) qi();
+ BBoxCheckPoint(q.fX, q.fY, fDefCoord);
+ BBoxCheckPoint(q.fX + q.fDx, q.fY + q.fDy, fDefCoord);
}
+ break;
+ }
- case QT_LineXZFixedY:
- {
- QLineFixC* qp = (QLineFixC*) qbp;
- while (n--) {
- QLineFixC& q = * qp;
- BBoxCheckPoint(q.fX, fDefCoord, q.fY);
- BBoxCheckPoint(q.fX + q.fDx, fDefCoord, q.fY + q.fDy);
- ++qp;
- }
- break;
+ case QT_LineXZFixedY:
+ {
+ while (qi.next()) {
+ QLineFixC& q = * (QLineFixC*) qi();
+ BBoxCheckPoint(q.fX, fDefCoord, q.fY);
+ BBoxCheckPoint(q.fX + q.fDx, fDefCoord, q.fY + q.fDy);
}
+ break;
+ }
- case QT_HexagonXY:
- case QT_HexagonYX:
- {
- QHex* qp = (QHex*) qbp;
- while (n--) {
- QHex& q = * qp;
- BBoxCheckPoint(q.fX-q.fR, q.fY-q.fR, q.fZ);
- BBoxCheckPoint(q.fX+q.fR, q.fY+q.fR, q.fZ);
- ++qp;
- }
- break;
+ // Ignore 'slight' difference, assume square box for both cases.
+ case QT_HexagonXY:
+ case QT_HexagonYX:
+ {
+ while (qi.next()) {
+ QHex& q = * (QHex*) qi();
+ BBoxCheckPoint(q.fX-q.fR, q.fY-q.fR, q.fZ);
+ BBoxCheckPoint(q.fX+q.fR, q.fY+q.fR, q.fZ);
}
+ break;
+ }
- default: {
- throw(eH + "unsupported quad-type.");
- }
+ default: {
+ throw(eH + "unsupported quad-type.");
+ }
- } // end switch quad-type
+ } // end switch quad-type
- } // end for chunk
+#if ROOT_VERSION_CODE <= ROOT_VERSION(5,14,0)
{ // Resize bounding box so that it does not have 0 volume.
// This should be done in TAttBBox (via method AssertMinExtents(epsilon)).
// Or handled more gracefully in TGLViewer.
}
}
}
+#else
+ AssertBBoxExtents(0.001);
+#endif
}
/**************************************************************************/
QuadSet& mQ = * fM;
+ VoidCPlex::iterator qi(mQ.fPlex);
+
if (mQ.fRenderMode != QuadSet::RM_Line)
{
glNormal3f(0, 0, 1);
glBegin(GL_QUADS);
- for (Int_t c=0; c<mQ.fPlex.VecSize(); ++c)
+
+ switch (mQ.fQuadType)
{
- QuadSet::QuadBase* qbp = (QuadSet::QuadBase*) mQ.fPlex.Chunk(c);
- Int_t n = mQ.fPlex.NAtoms(c);
- switch (mQ.fQuadType)
+ case QuadSet::QT_FreeQuad:
{
-
- case QuadSet::QT_FreeQuad:
- {
- QuadSet::QFreeQuad* qp = (QuadSet::QFreeQuad*) qbp;
- Float_t e1[3], e2[3], normal[3];
- while (n--) {
- if (SetupColor(*qp))
- {
- Float_t* p = qp->fVertices;
- e1[0] = p[3] - p[0]; e1[1] = p[4] - p[1]; e1[2] = p[5] - p[2];
- e2[0] = p[6] - p[0]; e2[1] = p[7] - p[1]; e2[2] = p[8] - p[2];
- TMath::Cross(e1, e2, normal);
- glNormal3fv(normal);
- glVertex3fv(p);
- glVertex3fv(p + 3);
- glVertex3fv(p + 6);
- glVertex3fv(p + 9);
- }
- ++qp;
+ Float_t e1[3], e2[3], normal[3];
+ while (qi.next()) {
+ QuadSet::QFreeQuad& q = * (QuadSet::QFreeQuad*) qi();
+ if (SetupColor(q))
+ {
+ Float_t* p = q.fVertices;
+ e1[0] = p[3] - p[0]; e1[1] = p[4] - p[1]; e1[2] = p[5] - p[2];
+ e2[0] = p[6] - p[0]; e2[1] = p[7] - p[1]; e2[2] = p[8] - p[2];
+ TMath::Cross(e1, e2, normal);
+ glNormal3fv(normal);
+ glVertex3fv(p);
+ glVertex3fv(p + 3);
+ glVertex3fv(p + 6);
+ glVertex3fv(p + 9);
}
- break;
}
+ break;
+ }
- case QuadSet::QT_RectangleXY:
- {
- QuadSet::QRect* qp = (QuadSet::QRect*) qbp;
- while (n--) {
- QuadSet::QRect& q = * qp;
- if (SetupColor(q))
- {
- glVertex3f(q.fX, q.fY, q.fZ);
- glVertex3f(q.fX + q.fW, q.fY, q.fZ);
- glVertex3f(q.fX + q.fW, q.fY + q.fH, q.fZ);
- glVertex3f(q.fX, q.fY + q.fH, q.fZ);
- }
- ++qp;
+ case QuadSet::QT_RectangleXY:
+ {
+ while (qi.next()) {
+ QuadSet::QRect& q = * (QuadSet::QRect*) qi();
+ if (SetupColor(q))
+ {
+ glVertex3f(q.fX, q.fY, q.fZ);
+ glVertex3f(q.fX + q.fW, q.fY, q.fZ);
+ glVertex3f(q.fX + q.fW, q.fY + q.fH, q.fZ);
+ glVertex3f(q.fX, q.fY + q.fH, q.fZ);
}
- break;
}
+ break;
+ }
- case QuadSet::QT_RectangleXYFixedDim:
- {
- QuadSet::QRectFixDim* qp = (QuadSet::QRectFixDim*) qbp;
- const Float_t& w = mQ.fDefWidth;
- const Float_t& h = mQ.fDefHeight;
- while (n--) {
- QuadSet::QRectFixDim& q = * qp;
- if (SetupColor(q))
- {
- glVertex3f(q.fX, q.fY, q.fZ);
- glVertex3f(q.fX + w, q.fY, q.fZ);
- glVertex3f(q.fX + w, q.fY + h, q.fZ);
- glVertex3f(q.fX, q.fY + h, q.fZ);
- }
- ++qp;
+ case QuadSet::QT_RectangleXYFixedDim:
+ {
+ const Float_t& w = mQ.fDefWidth;
+ const Float_t& h = mQ.fDefHeight;
+ while (qi.next()) {
+ QuadSet::QRectFixDim& q = * (QuadSet::QRectFixDim*) qi();
+ if (SetupColor(q))
+ {
+ glVertex3f(q.fX, q.fY, q.fZ);
+ glVertex3f(q.fX + w, q.fY, q.fZ);
+ glVertex3f(q.fX + w, q.fY + h, q.fZ);
+ glVertex3f(q.fX, q.fY + h, q.fZ);
}
- break;
}
+ break;
+ }
- case QuadSet::QT_RectangleXYFixedZ:
- {
- QuadSet::QRectFixC* qp = (QuadSet::QRectFixC*) qbp;
- const Float_t& z = mQ.fDefCoord;
- while (n--) {
- QuadSet::QRectFixC& q = * qp;
- if (SetupColor(q))
- {
- glVertex3f(q.fX, q.fY, z);
- glVertex3f(q.fX + q.fW, q.fY, z);
- glVertex3f(q.fX + q.fW, q.fY + q.fH, z);
- glVertex3f(q.fX, q.fY + q.fH, z);
- }
- ++qp;
+ case QuadSet::QT_RectangleXYFixedZ:
+ {
+ const Float_t& z = mQ.fDefCoord;
+ while (qi.next()) {
+ QuadSet::QRectFixC& q = * (QuadSet::QRectFixC*) qi();
+ if (SetupColor(q))
+ {
+ glVertex3f(q.fX, q.fY, z);
+ glVertex3f(q.fX + q.fW, q.fY, z);
+ glVertex3f(q.fX + q.fW, q.fY + q.fH, z);
+ glVertex3f(q.fX, q.fY + q.fH, z);
}
- break;
}
+ break;
+ }
- case QuadSet::QT_RectangleXZFixedY:
- {
- QuadSet::QRectFixC* qp = (QuadSet::QRectFixC*) qbp;
- const Float_t& z = mQ.fDefCoord;
- while (n--) {
- QuadSet::QRectFixC& q = * qp;
- if (SetupColor(q))
- {
- glVertex3f(q.fX, z, q.fY);
- glVertex3f(q.fX + q.fW, z, q.fY);
- glVertex3f(q.fX + q.fW, z, q.fY + q.fH);
- glVertex3f(q.fX, z, q.fY + q.fH);
- }
- ++qp;
+ case QuadSet::QT_RectangleXZFixedY:
+ {
+ const Float_t& z = mQ.fDefCoord;
+ while (qi.next()) {
+ QuadSet::QRectFixC& q = * (QuadSet::QRectFixC*) qi();
+ if (SetupColor(q))
+ {
+ glVertex3f(q.fX, z, q.fY);
+ glVertex3f(q.fX + q.fW, z, q.fY);
+ glVertex3f(q.fX + q.fW, z, q.fY + q.fH);
+ glVertex3f(q.fX, z, q.fY + q.fH);
}
- break;
}
+ break;
+ }
- case QuadSet::QT_RectangleXYFixedDimZ:
- {
- QuadSet::QRectFixDimC* qp = (QuadSet::QRectFixDimC*) qbp;
- const Float_t& z = mQ.fDefCoord;
- const Float_t& w = mQ.fDefWidth;
- const Float_t& h = mQ.fDefHeight;
- while (n--) {
- QuadSet::QRectFixDimC& q = * qp;
- if (SetupColor(q))
- {
- glVertex3f(q.fX, q.fY, z);
- glVertex3f(q.fX + w, q.fY, z);
- glVertex3f(q.fX + w, q.fY + h, z);
- glVertex3f(q.fX, q.fY + h, z);
- }
- ++qp;
+ case QuadSet::QT_RectangleXYFixedDimZ:
+ {
+ const Float_t& z = mQ.fDefCoord;
+ const Float_t& w = mQ.fDefWidth;
+ const Float_t& h = mQ.fDefHeight;
+ while (qi.next()) {
+ QuadSet::QRectFixDimC& q = * (QuadSet::QRectFixDimC*) qi();
+ if (SetupColor(q))
+ {
+ glVertex3f(q.fX, q.fY, z);
+ glVertex3f(q.fX + w, q.fY, z);
+ glVertex3f(q.fX + w, q.fY + h, z);
+ glVertex3f(q.fX, q.fY + h, z);
}
- break;
}
+ break;
+ }
- case QuadSet::QT_RectangleXZFixedDimY:
- {
- QuadSet::QRectFixDimC* qp = (QuadSet::QRectFixDimC*) qbp;
- const Float_t& z = mQ.fDefCoord;
- const Float_t& w = mQ.fDefWidth;
- const Float_t& h = mQ.fDefHeight;
- while (n--) {
- QuadSet::QRectFixDimC& q = * qp;
- if (SetupColor(q))
- {
- glVertex3f(q.fX, z, q.fY);
- glVertex3f(q.fX + w, z, q.fY);
- glVertex3f(q.fX + w, z, q.fY + h);
- glVertex3f(q.fX, z, q.fY + h);
- }
- ++qp;
+ case QuadSet::QT_RectangleXZFixedDimY:
+ {
+ const Float_t& z = mQ.fDefCoord;
+ const Float_t& w = mQ.fDefWidth;
+ const Float_t& h = mQ.fDefHeight;
+ while (qi.next()) {
+ QuadSet::QRectFixDimC& q = * (QuadSet::QRectFixDimC*) qi();
+ if (SetupColor(q))
+ {
+ glVertex3f(q.fX, z, q.fY);
+ glVertex3f(q.fX + w, z, q.fY);
+ glVertex3f(q.fX + w, z, q.fY + h);
+ glVertex3f(q.fX, z, q.fY + h);
}
- break;
}
+ break;
+ }
- default:
- throw(eH + "unsupported quad-type.");
+ default:
+ throw(eH + "unsupported quad-type.");
- } // end switch quad-type
+ } // end switch quad-type
- } // end for chunk
glEnd();
}
else
{
- for (Int_t c=0; c<mQ.fPlex.VecSize(); ++c)
+ switch (mQ.fQuadType)
{
- QuadSet::QuadBase* qbp = (QuadSet::QuadBase*) mQ.fPlex.Chunk(c);
- Int_t n = mQ.fPlex.NAtoms(c);
- switch (mQ.fQuadType)
+ case QuadSet::QT_FreeQuad:
{
-
- case QuadSet::QT_FreeQuad:
- {
- QuadSet::QFreeQuad* qp = (QuadSet::QFreeQuad*) qbp;
- while (n--) {
- if (SetupColor(*qp))
- {
- SetupColor(*qp);
- Float_t* p = qp->fVertices;
- glBegin(GL_LINE_LOOP);
- glVertex3fv(p);
- glVertex3fv(p + 3);
- glVertex3fv(p + 6);
- glVertex3fv(p + 9);
- glEnd();
- }
- ++qp;
+ while (qi.next()) {
+ QuadSet::QFreeQuad& q = * (QuadSet::QFreeQuad*) qi();
+ if (SetupColor(q))
+ {
+ Float_t* p = q.fVertices;
+ glBegin(GL_LINE_LOOP);
+ glVertex3fv(p);
+ glVertex3fv(p + 3);
+ glVertex3fv(p + 6);
+ glVertex3fv(p + 9);
+ glEnd();
}
- break;
}
+ break;
+ }
- case QuadSet::QT_RectangleXY:
- {
- QuadSet::QRect* qp = (QuadSet::QRect*) qbp;
- while (n--) {
- QuadSet::QRect& q = * qp;
- if (SetupColor(q))
- {
- glBegin(GL_LINE_LOOP);
- glVertex3f(q.fX, q.fY, q.fZ);
- glVertex3f(q.fX + q.fW, q.fY, q.fZ);
- glVertex3f(q.fX + q.fW, q.fY + q.fH, q.fZ);
- glVertex3f(q.fX, q.fY + q.fH, q.fZ);
- glEnd();
- }
- ++qp;
+ case QuadSet::QT_RectangleXY:
+ {
+ while (qi.next()) {
+ QuadSet::QRect& q = * (QuadSet::QRect*) qi();
+ if (SetupColor(q))
+ {
+ glBegin(GL_LINE_LOOP);
+ glVertex3f(q.fX, q.fY, q.fZ);
+ glVertex3f(q.fX + q.fW, q.fY, q.fZ);
+ glVertex3f(q.fX + q.fW, q.fY + q.fH, q.fZ);
+ glVertex3f(q.fX, q.fY + q.fH, q.fZ);
+ glEnd();
}
- break;
}
+ break;
+ }
- case QuadSet::QT_RectangleXYFixedDim:
- {
- QuadSet::QRectFixDim* qp = (QuadSet::QRectFixDim*) qbp;
- const Float_t& w = mQ.fDefWidth;
- const Float_t& h = mQ.fDefHeight;
- while (n--) {
- QuadSet::QRectFixDim& q = * qp;
- if (SetupColor(q))
- {
- glBegin(GL_LINE_LOOP);
- glVertex3f(q.fX, q.fY, q.fZ);
- glVertex3f(q.fX + w, q.fY, q.fZ);
- glVertex3f(q.fX + w, q.fY + h, q.fZ);
- glVertex3f(q.fX, q.fY + h, q.fZ);
- glEnd();
- }
- ++qp;
+ case QuadSet::QT_RectangleXYFixedDim:
+ {
+ const Float_t& w = mQ.fDefWidth;
+ const Float_t& h = mQ.fDefHeight;
+ while (qi.next()) {
+ QuadSet::QRectFixDim& q = * (QuadSet::QRectFixDim*) qi();
+ if (SetupColor(q))
+ {
+ glBegin(GL_LINE_LOOP);
+ glVertex3f(q.fX, q.fY, q.fZ);
+ glVertex3f(q.fX + w, q.fY, q.fZ);
+ glVertex3f(q.fX + w, q.fY + h, q.fZ);
+ glVertex3f(q.fX, q.fY + h, q.fZ);
+ glEnd();
}
- break;
}
+ break;
+ }
- case QuadSet::QT_RectangleXYFixedZ:
- {
- QuadSet::QRectFixC* qp = (QuadSet::QRectFixC*) qbp;
- const Float_t& z = mQ.fDefCoord;
- while (n--) {
- QuadSet::QRectFixC& q = * qp;
- if (SetupColor(q))
- {
- glBegin(GL_LINE_LOOP);
- glVertex3f(q.fX, q.fY, z);
- glVertex3f(q.fX + q.fW, q.fY, z);
- glVertex3f(q.fX + q.fW, q.fY + q.fH, z);
- glVertex3f(q.fX, q.fY + q.fH, z);
- glEnd();
- }
- ++qp;
+ case QuadSet::QT_RectangleXYFixedZ:
+ {
+ const Float_t& z = mQ.fDefCoord;
+ while (qi.next()) {
+ QuadSet::QRectFixC& q = * (QuadSet::QRectFixC*) qi();
+ if (SetupColor(q))
+ {
+ glBegin(GL_LINE_LOOP);
+ glVertex3f(q.fX, q.fY, z);
+ glVertex3f(q.fX + q.fW, q.fY, z);
+ glVertex3f(q.fX + q.fW, q.fY + q.fH, z);
+ glVertex3f(q.fX, q.fY + q.fH, z);
+ glEnd();
}
- break;
}
+ break;
+ }
- case QuadSet::QT_RectangleXZFixedY:
- {
- QuadSet::QRectFixC* qp = (QuadSet::QRectFixC*) qbp;
- const Float_t& z = mQ.fDefCoord;
- while (n--) {
- QuadSet::QRectFixC& q = * qp;
- if (SetupColor(q))
- {
- glBegin(GL_LINE_LOOP);
- glVertex3f(q.fX, z, q.fY);
- glVertex3f(q.fX + q.fW, z, q.fY);
- glVertex3f(q.fX + q.fW, z, q.fY + q.fH);
- glVertex3f(q.fX, z, q.fY + q.fH);
- glEnd();
- }
- ++qp;
+ case QuadSet::QT_RectangleXZFixedY:
+ {
+ const Float_t& z = mQ.fDefCoord;
+ while (qi.next()) {
+ QuadSet::QRectFixC& q = * (QuadSet::QRectFixC*) qi();
+ if (SetupColor(q))
+ {
+ glBegin(GL_LINE_LOOP);
+ glVertex3f(q.fX, z, q.fY);
+ glVertex3f(q.fX + q.fW, z, q.fY);
+ glVertex3f(q.fX + q.fW, z, q.fY + q.fH);
+ glVertex3f(q.fX, z, q.fY + q.fH);
+ glEnd();
}
- break;
}
+ break;
+ }
- case QuadSet::QT_RectangleXYFixedDimZ:
- {
- QuadSet::QRectFixDimC* qp = (QuadSet::QRectFixDimC*) qbp;
- const Float_t& z = mQ.fDefCoord;
- const Float_t& w = mQ.fDefWidth;
- const Float_t& h = mQ.fDefHeight;
- while (n--) {
- QuadSet::QRectFixDimC& q = * qp;
- if (SetupColor(q))
- {
- glBegin(GL_LINE_LOOP);
- glVertex3f(q.fX, q.fY, z);
- glVertex3f(q.fX + w, q.fY, z);
- glVertex3f(q.fX + w, q.fY + h, z);
- glVertex3f(q.fX, q.fY + h, z);
- glEnd();
- }
- ++qp;
+ case QuadSet::QT_RectangleXYFixedDimZ:
+ {
+ const Float_t& z = mQ.fDefCoord;
+ const Float_t& w = mQ.fDefWidth;
+ const Float_t& h = mQ.fDefHeight;
+ while (qi.next()) {
+ QuadSet::QRectFixDimC& q = * (QuadSet::QRectFixDimC*) qi();
+ if (SetupColor(q))
+ {
+ glBegin(GL_LINE_LOOP);
+ glVertex3f(q.fX, q.fY, z);
+ glVertex3f(q.fX + w, q.fY, z);
+ glVertex3f(q.fX + w, q.fY + h, z);
+ glVertex3f(q.fX, q.fY + h, z);
+ glEnd();
}
- break;
}
+ break;
+ }
- case QuadSet::QT_RectangleXZFixedDimY:
- {
- QuadSet::QRectFixDimC* qp = (QuadSet::QRectFixDimC*) qbp;
- const Float_t& z = mQ.fDefCoord;
- const Float_t& w = mQ.fDefWidth;
- const Float_t& h = mQ.fDefHeight;
- while (n--) {
- QuadSet::QRectFixDimC& q = * qp;
- if (SetupColor(q))
- {
- glBegin(GL_LINE_LOOP);
- glVertex3f(q.fX, z, q.fY);
- glVertex3f(q.fX + w, z, q.fY);
- glVertex3f(q.fX + w, z, q.fY + h);
- glVertex3f(q.fX, z, q.fY + h);
- glEnd();
- }
- ++qp;
+ case QuadSet::QT_RectangleXZFixedDimY:
+ {
+ const Float_t& z = mQ.fDefCoord;
+ const Float_t& w = mQ.fDefWidth;
+ const Float_t& h = mQ.fDefHeight;
+ while (qi.next()) {
+ QuadSet::QRectFixDimC& q = * (QuadSet::QRectFixDimC*) qi();
+ if (SetupColor(q))
+ {
+ glBegin(GL_LINE_LOOP);
+ glVertex3f(q.fX, z, q.fY);
+ glVertex3f(q.fX + w, z, q.fY);
+ glVertex3f(q.fX + w, z, q.fY + h);
+ glVertex3f(q.fX, z, q.fY + h);
+ glEnd();
}
- break;
}
+ break;
+ }
- default:
- throw(eH + "unsupported quad-type.");
-
- } // end switch quad-type
+ default:
+ throw(eH + "unsupported quad-type.");
- } // end for chunk
+ } // end switch quad-type
} // end else of RenderMode
}
QuadSet& mQ = * fM;
- for (Int_t c=0; c<mQ.fPlex.VecSize(); ++c)
+ VoidCPlex::iterator qi(mQ.fPlex);
+
+ glBegin(GL_LINES);
+
+ switch (mQ.fQuadType)
{
- QuadSet::QuadBase* qbp = (QuadSet::QuadBase*) mQ.fPlex.Chunk(c);
- Int_t n = mQ.fPlex.NAtoms(c);
- switch (mQ.fQuadType)
+ case QuadSet::QT_LineXYFixedZ:
{
-
- case QuadSet::QT_LineXYFixedZ:
- {
- QuadSet::QLineFixC* qp = (QuadSet::QLineFixC*) qbp;
- const Float_t& z = mQ.fDefCoord;
- glBegin(GL_LINES);
- while (n--) {
- QuadSet::QLineFixC& q = * qp;
- if (SetupColor(q))
- {
- glVertex3f(q.fX, q.fY, z);
- glVertex3f(q.fX + q.fDx, q.fY + q.fDy, z);
- }
- ++qp;
+ const Float_t& z = mQ.fDefCoord;
+ while (qi.next()) {
+ QuadSet::QLineFixC& q = * (QuadSet::QLineFixC*) qi();
+ if (SetupColor(q))
+ {
+ glVertex3f(q.fX, q.fY, z);
+ glVertex3f(q.fX + q.fDx, q.fY + q.fDy, z);
}
- glEnd();
- break;
}
+ break;
+ }
- case QuadSet::QT_LineXZFixedY:
- {
- QuadSet::QLineFixC* qp = (QuadSet::QLineFixC*) qbp;
- const Float_t& z = mQ.fDefCoord;
- glBegin(GL_LINES);
- while (n--) {
- QuadSet::QLineFixC& q = * qp;
- if (SetupColor(q))
- {
- glVertex3f(q.fX, z, q.fY);
- glVertex3f(q.fX + q.fDx, z, q.fY + q.fDy);
- }
- ++qp;
+ case QuadSet::QT_LineXZFixedY:
+ {
+ const Float_t& z = mQ.fDefCoord;
+ while (qi.next()) {
+ QuadSet::QLineFixC& q = * (QuadSet::QLineFixC*) qi();
+ if (SetupColor(q))
+ {
+ glVertex3f(q.fX, z, q.fY);
+ glVertex3f(q.fX + q.fDx, z, q.fY + q.fDy);
}
- glEnd();
- break;
}
+ break;
+ }
- default:
- throw(eH + "unsupported quad-type.");
+ default:
+ throw(eH + "unsupported quad-type.");
- }
}
+
+ glEnd();
}
void QuadSetGL::RenderHexagons(const TGLDrawFlags &) const
QuadSet& mQ = * fM;
- if (mQ.fRenderMode != QuadSet::RM_Line)
- {
-
- glNormal3f(0, 0, 1);
+ GLenum primitveType = (mQ.fRenderMode != QuadSet::RM_Line) ?
+ GL_POLYGON : GL_LINE_LOOP;
- for (Int_t c=0; c<mQ.fPlex.VecSize(); ++c)
- {
- QuadSet::QuadBase* qbp = (QuadSet::QuadBase*) mQ.fPlex.Chunk(c);
- Int_t n = mQ.fPlex.NAtoms(c);
-
- switch (mQ.fQuadType)
- {
-
- case QuadSet::QT_HexagonXY:
- {
- QuadSet::QHex* qp = (QuadSet::QHex*) qbp;
- while (n--) {
- QuadSet::QHex& q = * qp;
- if (SetupColor(q))
- {
- const Float_t rh = q.fR * 0.5;
- const Float_t rs = q.fR * sqr3hf;
- glBegin(GL_POLYGON);
- glVertex3f( q.fR + q.fX, q.fY, q.fZ);
- glVertex3f( rh + q.fX, rs + q.fY, q.fZ);
- glVertex3f( -rh + q.fX, rs + q.fY, q.fZ);
- glVertex3f(-q.fR + q.fX, q.fY, q.fZ);
- glVertex3f( -rh + q.fX, -rs + q.fY, q.fZ);
- glVertex3f( rh + q.fX, -rs + q.fY, q.fZ);
- glEnd();
- }
- ++qp;
- }
- break;
- }
+ glNormal3f(0, 0, 1);
- case QuadSet::QT_HexagonYX:
- {
- QuadSet::QHex* qp = (QuadSet::QHex*) qbp;
- while (n--) {
- QuadSet::QHex& q = * qp;
- if (SetupColor(q))
- {
- const Float_t rh = q.fR * 0.5;
- const Float_t rs = q.fR * sqr3hf;
- glBegin(GL_POLYGON);
- glVertex3f( rs + q.fX, rh + q.fY, q.fZ);
- glVertex3f( q.fX, q.fR + q.fY, q.fZ);
- glVertex3f(-rs + q.fX, rh + q.fY, q.fZ);
- glVertex3f(-rs + q.fX, -rh + q.fY, q.fZ);
- glVertex3f( q.fX, -q.fR + q.fY, q.fZ);
- glVertex3f( rs + q.fX, -rh + q.fY, q.fZ);
- glEnd();
- }
- ++qp;
- }
- break;
- }
+ VoidCPlex::iterator qi(mQ.fPlex);
- default:
- throw(eH + "unsupported quad-type.");
-
- } // end switch quad-type
-
- } // end for chunk
-
- }
- else
+ switch (mQ.fQuadType)
{
- for (Int_t c=0; c<mQ.fPlex.VecSize(); ++c)
+ case QuadSet::QT_HexagonXY:
{
- QuadSet::QuadBase* qbp = (QuadSet::QuadBase*) mQ.fPlex.Chunk(c);
- Int_t n = mQ.fPlex.NAtoms(c);
-
- switch (mQ.fQuadType)
- {
-
- case QuadSet::QT_HexagonXY:
+ while (qi.next()) {
+ QuadSet::QHex& q = * (QuadSet::QHex*) qi();
+ if (SetupColor(q))
{
- QuadSet::QHex* qp = (QuadSet::QHex*) qbp;
- while (n--) {
- QuadSet::QHex& q = * qp;
- if (SetupColor(q))
- {
- const Float_t rh = q.fR * 0.5;
- const Float_t rs = q.fR * sqr3hf;
- glBegin(GL_LINE_LOOP);
- glVertex3f( q.fR + q.fX, q.fY, q.fZ);
- glVertex3f( rh + q.fX, rs + q.fY, q.fZ);
- glVertex3f( -rh + q.fX, rs + q.fY, q.fZ);
- glVertex3f(-q.fR + q.fX, q.fY, q.fZ);
- glVertex3f( -rh + q.fX, -rs + q.fY, q.fZ);
- glVertex3f( rh + q.fX, -rs + q.fY, q.fZ);
- glEnd();
- }
- ++qp;
- }
- break;
+ const Float_t rh = q.fR * 0.5;
+ const Float_t rs = q.fR * sqr3hf;
+ glBegin(primitveType);
+ glVertex3f( q.fR + q.fX, q.fY, q.fZ);
+ glVertex3f( rh + q.fX, rs + q.fY, q.fZ);
+ glVertex3f( -rh + q.fX, rs + q.fY, q.fZ);
+ glVertex3f(-q.fR + q.fX, q.fY, q.fZ);
+ glVertex3f( -rh + q.fX, -rs + q.fY, q.fZ);
+ glVertex3f( rh + q.fX, -rs + q.fY, q.fZ);
+ glEnd();
}
+ }
+ break;
+ }
- case QuadSet::QT_HexagonYX:
+ case QuadSet::QT_HexagonYX:
+ {
+ while (qi.next()) {
+ QuadSet::QHex& q = * (QuadSet::QHex*) qi();
+ if (SetupColor(q))
{
- QuadSet::QHex* qp = (QuadSet::QHex*) qbp;
- while (n--) {
- QuadSet::QHex& q = * qp;
- if (SetupColor(q))
- {
- const Float_t rh = q.fR * 0.5;
- const Float_t rs = q.fR * sqr3hf;
- glBegin(GL_LINE_LOOP);
- glVertex3f( rs + q.fX, rh + q.fY, q.fZ);
- glVertex3f( q.fX, q.fR + q.fY, q.fZ);
- glVertex3f(-rs + q.fX, rh + q.fY, q.fZ);
- glVertex3f(-rs + q.fX, -rh + q.fY, q.fZ);
- glVertex3f( q.fX, -q.fR + q.fY, q.fZ);
- glVertex3f( rs + q.fX, -rh + q.fY, q.fZ);
- glEnd();
- }
- ++qp;
- }
- break;
+ const Float_t rh = q.fR * 0.5;
+ const Float_t rs = q.fR * sqr3hf;
+ glBegin(primitveType);
+ glVertex3f( rs + q.fX, rh + q.fY, q.fZ);
+ glVertex3f( q.fX, q.fR + q.fY, q.fZ);
+ glVertex3f(-rs + q.fX, rh + q.fY, q.fZ);
+ glVertex3f(-rs + q.fX, -rh + q.fY, q.fZ);
+ glVertex3f( q.fX, -q.fR + q.fY, q.fZ);
+ glVertex3f( rs + q.fX, -rh + q.fY, q.fZ);
+ glEnd();
}
+ }
+ break;
+ }
- default:
- throw(eH + "unsupported quad-type.");
-
- } // end switch quad-type
-
- } // end for chunk
-
- } // end else of RenderMode
+ default:
+ throw(eH + "unsupported quad-type.");
+ } // end switch quad-type
}