From ca462fa9f6b13d2a33ecf4eda2ffd226bb9c986b Mon Sep 17 00:00:00 2001 From: mtadel Date: Fri, 8 Dec 2006 18:17:34 +0000 Subject: [PATCH] Slight simplification of heavy-duty loops over elements. --- EVE/Reve/QuadSet.cxx | 251 +++++++-------- EVE/Reve/QuadSet.h | 2 + EVE/Reve/QuadSetGL.cxx | 704 +++++++++++++++++------------------------ 3 files changed, 409 insertions(+), 548 deletions(-) diff --git a/EVE/Reve/QuadSet.cxx b/EVE/Reve/QuadSet.cxx index 34be7bbbcc3..9b9776e7c46 100644 --- a/EVE/Reve/QuadSet.cxx +++ b/EVE/Reve/QuadSet.cxx @@ -475,167 +475,145 @@ void QuadSet::ComputeBBox() fBBox[3] = fDefCoord; } - for (Int_t c=0; cfVertices; - 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. @@ -648,6 +626,9 @@ void QuadSet::ComputeBBox() } } } +#else + AssertBBoxExtents(0.001); +#endif } /**************************************************************************/ diff --git a/EVE/Reve/QuadSet.h b/EVE/Reve/QuadSet.h index a3bd8c9f2b0..7ea8d1bed6e 100644 --- a/EVE/Reve/QuadSet.h +++ b/EVE/Reve/QuadSet.h @@ -220,6 +220,8 @@ public: virtual void Paint(Option_t* option=""); + VoidCPlex* GetPlex() { return &fPlex; } + ClassDef(QuadSet, 1); }; diff --git a/EVE/Reve/QuadSetGL.cxx b/EVE/Reve/QuadSetGL.cxx index bc427ecea60..63c4c212d37 100644 --- a/EVE/Reve/QuadSetGL.cxx +++ b/EVE/Reve/QuadSetGL.cxx @@ -175,6 +175,8 @@ void QuadSetGL::RenderQuads(const TGLDrawFlags &) const QuadSet& mQ = * fM; + VoidCPlex::iterator qi(mQ.fPlex); + if (mQ.fRenderMode != QuadSet::RM_Line) { @@ -184,318 +186,279 @@ void QuadSetGL::RenderQuads(const TGLDrawFlags &) const glNormal3f(0, 0, 1); glBegin(GL_QUADS); - for (Int_t c=0; cfVertices; - 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; cfVertices; - 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 } @@ -507,55 +470,47 @@ void QuadSetGL::RenderLines(const TGLDrawFlags &) const QuadSet& mQ = * fM; - for (Int_t c=0; c