diff --git a/graf3d/gl/inc/TGLUtil.h b/graf3d/gl/inc/TGLUtil.h index 56838ebd396727f9f0913a84ebd473e0a07c61a9..509d59e825c5a01e1ae0d0bdecfdbbf8c53c7d34 100644 --- a/graf3d/gl/inc/TGLUtil.h +++ b/graf3d/gl/inc/TGLUtil.h @@ -1223,6 +1223,9 @@ void DrawBoxFrontTextured(Double_t xMin, Double_t xMax, Double_t yMin, void DrawBoxWithGradientFill(Double_t y1, Double_t y2, Double_t x1, Double_t x2, const Double_t *rgba1, const Double_t *rgba2); + +void DrawQuadStripWithRadialGradientFill(unsigned nPoints, const Double_t *inner, const Double_t *innerRGBA, + const Double_t *outer, const Double_t *outerRGBA); #ifndef __CINT__ void DrawTrapezoidTextured(const Double_t ver[][2], Double_t zMin, Double_t zMax, diff --git a/graf3d/gl/src/TGLUtil.cxx b/graf3d/gl/src/TGLUtil.cxx index cd677caea913b380b98457f76c801d05ad0cf615..109c4101e7d05b1b686cb96a473b744ead94c149 100644 --- a/graf3d/gl/src/TGLUtil.cxx +++ b/graf3d/gl/src/TGLUtil.cxx @@ -3102,6 +3102,34 @@ void DrawBoxWithGradientFill(Double_t y1, Double_t y2, Double_t x1, Double_t x2, glEnd(); } +//______________________________________________________________________________ +void DrawQuadStripWithRadialGradientFill(unsigned nPoints, const Double_t *inner, const Double_t *innerRGBA, + const Double_t *outer, const Double_t *outerRGBA) +{ + //TODO: is it possible to use GLdouble to avoid problems with Double_t/GLdouble if they + //are not the same type? + + assert(nPoints != 0 && + "DrawQuadStripWithRadialGradientFill, invalid number of points"); + assert(inner != 0 && + "DrawQuadStripWithRadialGradientFill, parameter 'inner' is null"); + assert(innerRGBA != 0 && + "DrawQuadStripWithRadialGradientFill, parameter 'innerRGBA' is null"); + assert(outer != 0 && + "DrawQuadStripWithRadialGradientFill, parameter 'outer' is null"); + assert(outerRGBA != 0 && + "DrawQuadStripWithRadialGradientFill, parameter 'outerRGBA' is null"); + + glBegin(GL_QUAD_STRIP); + for (UInt_t j = 0; j < nPoints; ++j) { + glColor4dv(innerRGBA); + glVertex2dv(inner + j * 2); + glColor4dv(outerRGBA); + glVertex2dv(outer + j * 2); + } + glEnd(); +} + //______________________________________________________________________________ void DrawCylinder(TGLQuadric *quadric, Double_t xMin, Double_t xMax, Double_t yMin, Double_t yMax, Double_t zMin, Double_t zMax)