22#include "TGLIncludes.h"
27const UInt_t PolygonStippleSet::fgBitSwap[] = {0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15};
84 for (
UInt_t i = 0; i < numOfStipples; ++i) {
87 for (
Int_t j = 15, j1 = 0; j >= 0; --j, ++j1) {
90 for (
Int_t k = 1, k1 = 0; k >= 0; --k, ++k1) {
92 const UInt_t ind = baseInd + rowShift + k1;
122 : fStipple(0), fAlpha(1.)
126 if (!ignoreStipple) {
129 fStipple = (fasi >= 1 && fasi <=25) ? fasi : 2;
131 glEnable(GL_POLYGON_STIPPLE);
136 Float_t rgba[] = {0.f, 0.f, 0.f, 1.f};
141 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
151 glDisable(GL_POLYGON_STIPPLE);
162 0xf040, 0xf4f4, 0xf111, 0xf0f0,
163 0xff11, 0x3fff, 0x08ff};
175 : fSmooth(smooth), fStipple(stipple), fSetWidth(setWidth), fAlpha(0.8)
179 glEnable(GL_LINE_SMOOTH);
180 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
181 glHint(GL_LINE_SMOOTH_HINT, GL_NICEST);
189 glEnable(GL_LINE_STIPPLE);
195 Float_t rgba[] = {0.f, 0.f, 0.f, 0.8f};
200 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
207 glLineWidth(w > maxWidth ? maxWidth : !w ? 1.f : w);
216 glDisable(GL_LINE_SMOOTH);
221 glDisable(GL_LINE_STIPPLE);
239 glVertex2d(
xy[i].fX,
xy[i].fY);
252 for (
UInt_t i = 0; i <
n; ++i) {
255 glVertex2d(-im +
x,
y);
256 glVertex2d(im +
x,
y);
257 glVertex2d(
x, -im +
y);
258 glVertex2d(
x, im +
y);
282 for (
UInt_t i = 0; i <
n; ++i) {
307 for (
UInt_t i = 0; i <
n; ++i) {
311 glVertex2d(-im +
x, -im +
y);
312 glVertex2d(im +
x, im +
y);
313 glVertex2d(-im +
x, im +
y);
314 glVertex2d(im +
x, -im +
y);
326 for (
UInt_t i = 0; i <
n; ++i) {
330 glVertex2d(-1. +
x,
y);
331 glVertex2d(
x + 1.,
y);
332 glVertex2d(
x, -1. +
y);
333 glVertex2d(
x, 1. +
y);
344 glRectd(
xy[i].fX - 1,
xy[i].fY - 1,
xy[i].fX + 1,
xy[i].fY + 1);
349void CalculateCircle(std::vector<TPoint> &circle,
Double_t r,
UInt_t pts);
363 for (
UInt_t i = 0; i <
n; ++i) {
387 for (
UInt_t i = 0; i <
n; ++i) {
404 glRectd(
xy[i].fX - im,
xy[i].fY - im,
xy[i].fX + im,
xy[i].fY + im);
412 for (
UInt_t i = 0; i <
n; ++i) {
416 glVertex2d(
x - im,
y - im);
417 glVertex2d(
x + im,
y - im);
418 glVertex2d(
x, im +
y);
429 for (
UInt_t i = 0; i <
n; ++i) {
433 glVertex2d(
x - im,
y + im);
434 glVertex2d(
x,
y - im);
435 glVertex2d(im +
x,
y + im);
445 const Int_t im =
Int_t(4.00 * MarkerSizeReduced + 0.5);
446 const Int_t imx =
Int_t(2.66 * MarkerSizeReduced + 0.5);
448 for (
UInt_t i = 0; i <
n; ++i) {
453 glVertex2d(
x - imx,
y);
454 glVertex2d(
x,
y - im);
455 glVertex2d(
x + imx,
y);
456 glVertex2d(
x,
y + im);
468 for (
UInt_t i = 0; i <
n; ++i) {
473 glVertex2d(
x - imx,
y);
474 glVertex2d(
x,
y - im);
475 glVertex2d(
x + imx,
y);
476 glVertex2d(
x,
y + im);
487 for (
UInt_t i = 0; i <
n; ++i) {
491 glVertex2d(
x - im,
y + im);
492 glVertex2d(
x,
y - im);
493 glVertex2d(im +
x,
y + im);
503 const Int_t im =
Int_t(4.00 * MarkerSizeReduced + 0.5);
504 const Int_t imx =
Int_t(1.33 * MarkerSizeReduced + 0.5);
506 for (
UInt_t i = 0; i <
n; ++i) {
511 glVertex2d(
x - im,
y - imx);
512 glVertex2d(
x - imx,
y - imx);
513 glVertex2d(
x - imx,
y - im);
514 glVertex2d(
x + imx,
y - im);
515 glVertex2d(
x + imx,
y - imx);
516 glVertex2d(
x + im,
y - imx);
517 glVertex2d(
x + im,
y + imx);
518 glVertex2d(
x + imx,
y + imx);
519 glVertex2d(
x + imx,
y + im);
520 glVertex2d(
x - imx,
y + im);
521 glVertex2d(
x - imx,
y + imx);
522 glVertex2d(
x - im,
y + imx);
534 for (
UInt_t i = 0; i <
n; ++i) {
539 glVertex2d(
x - im,
y - imx);
540 glVertex2d(
x - im,
y + imx);
541 glVertex2d(
x + im,
y + imx);
542 glVertex2d(
x + im,
y - imx);
545 glVertex2d(
x - imx,
y + imx);
546 glVertex2d(
x - imx,
y + im);
547 glVertex2d(
x + imx,
y + im);
548 glVertex2d(
x + imx,
y + imx);
552 glVertex2d(
x - imx,
y - imx);
553 glVertex2d(
x - imx,
y - im);
554 glVertex2d(
x + imx,
y - im);
555 glVertex2d(
x + imx,
y - imx);
571 for (
UInt_t i = 0; i <
n; ++i) {
576 glVertex2d(
x - im,
y - im4);
577 glVertex2d(
x - im2,
y + im1);
578 glVertex2d(
x - im4,
y - im4);
580 glVertex2d(
x - im2,
y + im1);
581 glVertex2d(
x - im3,
y + im);
582 glVertex2d(
x,
y + im2);
584 glVertex2d(
x,
y + im2);
585 glVertex2d(
x + im3,
y + im);
586 glVertex2d(
x + im2,
y + im1);
588 glVertex2d(
x + im2,
y + im1);
589 glVertex2d(
x + im,
y - im4);
590 glVertex2d(
x + im4,
y - im4);
592 glVertex2d(
x + im4,
y - im4);
593 glVertex2d(
x,
y - im);
594 glVertex2d(
x - im4,
y - im4);
596 glVertex2d(
x - im4,
y - im4);
597 glVertex2d(
x - im2,
y + im1);
598 glVertex2d(
x,
y + im2);
600 glVertex2d(
x - im4,
y - im4);
601 glVertex2d(
x,
y + im2);
602 glVertex2d(
x + im2,
y + im1);
604 glVertex2d(
x - im4,
y - im4);
605 glVertex2d(
x + im2,
y + im1);
606 glVertex2d(
x + im4,
y - im4);
619 const Int_t im =
Int_t(4.00 * MarkerSizeReduced + 0.5);
620 const Int_t im1 =
Int_t(0.66 * MarkerSizeReduced + 0.5);
621 const Int_t im2 =
Int_t(2.00 * MarkerSizeReduced + 0.5);
622 const Int_t im3 =
Int_t(2.66 * MarkerSizeReduced + 0.5);
623 const Int_t im4 =
Int_t(1.33 * MarkerSizeReduced + 0.5);
625 for (
UInt_t i = 0; i <
n; ++i) {
630 glVertex2d(
x - im,
y - im4);
631 glVertex2d(
x - im2,
y + im1);
632 glVertex2d(
x - im3,
y + im);
633 glVertex2d(
x,
y + im2);
634 glVertex2d(
x + im3,
y + im);
635 glVertex2d(
x + im2,
y + im1);
636 glVertex2d(
x + im,
y - im4);
637 glVertex2d(
x + im4,
y - im4);
638 glVertex2d(
x,
y - im);
639 glVertex2d(
x - im4,
y - im4);
650 for (
unsigned i = 0; i <
n; ++i) {
655 glVertex2d(
x - im,
y - im);
656 glVertex2d(
x + im,
y - im);
657 glVertex2d(
x + im,
y + im);
658 glVertex2d(
x - im,
y + im);
659 glVertex2d(
x - im,
y - im);
660 glVertex2d(
x + im,
y + im);
661 glVertex2d(
x - im,
y + im);
662 glVertex2d(
x + im,
y - im);
673 for (
unsigned i = 0; i <
n; ++i) {
678 glVertex2d(
x - im,
y );
679 glVertex2d(
x ,
y - im);
680 glVertex2d(
x + im,
y );
681 glVertex2d(
x ,
y + im);
682 glVertex2d(
x - im,
y );
683 glVertex2d(
x + im,
y );
684 glVertex2d(
x ,
y + im);
685 glVertex2d(
x ,
y - im);
695 const Int_t im =
Int_t(4. * MarkerSizeReduced + 0.5);
696 const Int_t im2 =
Int_t(2. * MarkerSizeReduced + 0.5);
698 for (
unsigned i = 0; i <
n; ++i) {
704 glVertex2d(
x -im2,
y + im);
705 glVertex2d(
x - im,
y );
707 glVertex2d(
x -im2,
y - im);
708 glVertex2d(
x +im2,
y - im);
710 glVertex2d(
x + im,
y );
711 glVertex2d(
x +im2,
y + im);
722 const Int_t im =
Int_t(4. * MarkerSizeReduced + 0.5);
723 const Int_t im2 =
Int_t(2. * MarkerSizeReduced + 0.5);
725 for (
unsigned i = 0; i <
n; ++i) {
730 glVertex2d(
x-im,
y );
731 glVertex2d(
x-im,
y-im2);
732 glVertex2d(
x-im2,
y-im);
733 glVertex2d(
x+im2,
y-im);
734 glVertex2d(
x+im,
y-im2);
735 glVertex2d(
x+im,
y+im2);
736 glVertex2d(
x+im2,
y+im);
737 glVertex2d(
x-im2,
y+im);
738 glVertex2d(
x-im,
y+im2);
739 glVertex2d(
x-im,
y );
740 glVertex2d(
x+im,
y );
742 glVertex2d(
x ,
y-im);
743 glVertex2d(
x ,
y+im);
756 for (
unsigned i = 0; i <
n; ++i) {
762 glVertex2d(
x -im2,
y + im);
763 glVertex2d(
x - im,
y );
765 glVertex2d(
x -im2,
y - im);
766 glVertex2d(
x +im2,
y - im);
768 glVertex2d(
x + im,
y );
769 glVertex2d(
x +im2,
y + im);
780 const Int_t im =
Int_t(4. * MarkerSizeReduced + 0.5);
781 const Int_t im2 =
Int_t(2. * MarkerSizeReduced + 0.5);
783 for (
unsigned i = 0; i <
n; ++i) {
789 glVertex2d(
x+im2,
y+im);
790 glVertex2d(
x+im ,
y+im2);
792 glVertex2d(
x+im ,
y-im2);
793 glVertex2d(
x+im2,
y-im);
795 glVertex2d(
x-im2,
y-im);
796 glVertex2d(
x-im ,
y-im2);
798 glVertex2d(
x-im ,
y+im2);
799 glVertex2d(
x-im2,
y+im);
812 for (
unsigned i = 0; i <
n; ++i) {
818 glVertex2d(
x+im2,
y+im);
819 glVertex2d(
x+im ,
y+im2);
821 glVertex2d(
x+im ,
y-im2);
822 glVertex2d(
x+im2,
y-im);
824 glVertex2d(
x-im2,
y-im);
825 glVertex2d(
x-im ,
y-im2);
827 glVertex2d(
x-im ,
y+im2);
828 glVertex2d(
x-im2,
y+im);
839 const Int_t im =
Int_t(4.00 * MarkerSizeReduced + 0.5);
840 const Int_t im4 =
Int_t(1.33 * MarkerSizeReduced + 0.5);
842 for (
unsigned i = 0; i <
n; ++i) {
847 glVertex2d(
x ,
y+im );
848 glVertex2d(
x-im4,
y+im4);
849 glVertex2d(
x-im ,
y );
850 glVertex2d(
x-im4,
y-im4);
851 glVertex2d(
x ,
y-im );
852 glVertex2d(
x+im4,
y-im4);
853 glVertex2d(
x+im ,
y );
854 glVertex2d(
x+im4,
y+im4);
855 glVertex2d(
x ,
y+im );
867 for (
unsigned i = 0; i <
n; ++i) {
872 glVertex2d(
x,
y+im );
873 glVertex2d(
x-im4,
y+im4);
877 glVertex2d(
x-im4,
y+im4);
883 glVertex2d(
x-im4,
y-im4);
887 glVertex2d(
x-im4,
y-im4);
893 glVertex2d(
x+im4,
y-im4);
897 glVertex2d(
x+im4,
y-im4);
903 glVertex2d(
x+im4,
y+im4);
907 glVertex2d(
x+im4,
y+im4);
919 const Int_t im =
Int_t(4. * MarkerSizeReduced + 0.5);
920 const Int_t im2 =
Int_t(2. * MarkerSizeReduced + 0.5);
922 for (
unsigned i = 0; i <
n; ++i) {
928 glVertex2d(
x+im2,
y+im);
929 glVertex2d(
x-im2,
y+im);
930 glVertex2d(
x+im2,
y-im);
931 glVertex2d(
x-im2,
y-im);
933 glVertex2d(
x+im,
y+im2);
934 glVertex2d(
x+im,
y-im2);
935 glVertex2d(
x-im,
y+im2);
936 glVertex2d(
x-im,
y-im2);
949 for (
unsigned i = 0; i <
n; ++i) {
955 glVertex2d(
x+im2,
y+im);
956 glVertex2d(
x-im2,
y+im);
957 glVertex2d(
x+im2,
y-im);
958 glVertex2d(
x-im2,
y-im);
960 glVertex2d(
x+im,
y+im2);
961 glVertex2d(
x+im,
y-im2);
962 glVertex2d(
x-im,
y+im2);
963 glVertex2d(
x-im,
y-im2);
974 const Int_t im =
Int_t(4. * MarkerSizeReduced + 0.5);
975 const Int_t im2 =
Int_t(2. * MarkerSizeReduced + 0.5);
977 for (
unsigned i = 0; i <
n; ++i) {
982 glVertex2d(
x ,
y +im2);
983 glVertex2d(
x -im2,
y + im);
984 glVertex2d(
x - im,
y +im2);
985 glVertex2d(
x -im2,
y );
986 glVertex2d(
x - im,
y -im2);
987 glVertex2d(
x -im2,
y - im);
988 glVertex2d(
x ,
y -im2);
989 glVertex2d(
x +im2,
y - im);
990 glVertex2d(
x + im,
y -im2);
991 glVertex2d(
x +im2,
y );
992 glVertex2d(
x + im,
y +im2);
993 glVertex2d(
x +im2,
y + im);
994 glVertex2d(
x ,
y +im2);
1006 for (
unsigned i = 0; i <
n; ++i) {
1011 glVertex2d(
x ,
y +im2);
1012 glVertex2d(
x -im2,
y +im);
1013 glVertex2d(
x -im ,
y +im2);
1014 glVertex2d(
x -im2,
y );
1018 glVertex2d(
x -im2,
y);
1019 glVertex2d(
x -im,
y -im2);
1020 glVertex2d(
x -im2,
y -im);
1021 glVertex2d(
x ,
y-im2);
1025 glVertex2d(
x ,
y -im2);
1026 glVertex2d(
x +im2,
y -im);
1027 glVertex2d(
x +im ,
y -im2);
1028 glVertex2d(
x +im2,
y);
1032 glVertex2d(
x +im2,
y);
1033 glVertex2d(
x +im ,
y +im2);
1034 glVertex2d(
x +im2,
y +im);
1035 glVertex2d(
x ,
y +im2);
1047 for (
unsigned i = 0; i <
n; ++i) {
1052 glVertex2d(
x,
y+im2);
1053 glVertex2d(
x-im2 ,
y+im);
1054 glVertex2d(
x-im,
y+im2);
1055 glVertex2d(
x-im2 ,
y);
1058 glVertex2d(
x-im2,
y);
1059 glVertex2d(
x-im ,
y-im2);
1060 glVertex2d(
x-im2,
y-im);
1061 glVertex2d(
x,
y-im2);
1064 glVertex2d(
x,
y-im2);
1065 glVertex2d(
x+im2 ,
y-im);
1066 glVertex2d(
x+im,
y-im2);
1067 glVertex2d(
x+im2,
y);
1070 glVertex2d(
x+im2,
y);
1071 glVertex2d(
x+im ,
y+im2);
1072 glVertex2d(
x+im2,
y+im);
1073 glVertex2d(
x,
y+im2);
1085 for (
unsigned i = 0; i <
n; ++i) {
1090 glVertex2d(
x+im2,
y+im2);
1091 glVertex2d(
x+im2,
y+im);
1092 glVertex2d(
x-im2,
y+im);
1093 glVertex2d(
x-im2,
y+im2);
1096 glVertex2d(
x-im2,
y+im2);
1097 glVertex2d(
x-im,
y+im2);
1098 glVertex2d(
x-im,
y-im2);
1099 glVertex2d(
x-im2,
y-im2);
1102 glVertex2d(
x-im2,
y-im2);
1103 glVertex2d(
x-im2,
y-im);
1104 glVertex2d(
x+im2,
y-im);
1105 glVertex2d(
x+im2,
y-im2);
1108 glVertex2d(
x+im2,
y-im2);
1109 glVertex2d(
x+im,
y-im2);
1110 glVertex2d(
x+im,
y+im2);
1111 glVertex2d(
x+im2,
y+im2);
1124#if defined(__APPLE_CC__) && __APPLE_CC__ > 4000 && __APPLE_CC__ < 5450 && !defined(__INTEL_COMPILER)
1125 typedef GLvoid (*tess_t)(...);
1126#elif defined( __mips ) || defined( __linux__ ) || defined( __FreeBSD__ ) || defined( __OpenBSD__ ) || defined( __sun ) || defined (__CYGWIN__) || defined (__APPLE__)
1127 typedef GLvoid (*tess_t)();
1128#elif defined ( WIN32)
1131 #error "Error - need to define type tess_t for this platform/compiler"
1154 std::vector<Double_t> & vs = dump->back().fPatch;
1175 throw std::runtime_error(
"tesselator creation failed");
1177#if defined(__GNUC__) && __GNUC__ >= 8
1178#pragma GCC diagnostic push
1179#pragma GCC diagnostic ignored "-Wcast-function-type"
1192#if defined(__GNUC__) && __GNUC__ >= 8
1193#pragma GCC diagnostic pop
1214 : fW(w), fH(
h), fX(
x), fY(
y), fTop(top)
1221 : fMaxLineWidth(0.),
1259 color->
GetRGB(rgba[0], rgba[1], rgba[2]);
1266template<
class ValueType>
1269 assert(nPoints > 0 &&
"FindBoundingRect, invalind number of points");
1270 assert(xs !=
nullptr &&
"FindBoundingRect, parameter 'xs' is null");
1271 assert(ys !=
nullptr &&
"FindBoundingRect, parameter 'ys' is null");
1273 ValueType xMin = xs[0], xMax = xMin;
1274 ValueType yMin = ys[0], yMax = yMin;
1276 for (
Int_t i = 1; i < nPoints; ++i) {
1287 box.fWidth = xMax - xMin;
1291 box.fHeight = yMax - yMin;
1308void CalculateCircle(std::vector<TPoint> &circle,
Double_t r,
UInt_t pts)
1313 circle.resize(circle.size() + pts + 1);
1315 for (
UInt_t i = 0; i < pts; ++i, angle += delta) {
1320 circle.back().fX = circle[
first].fX;
1321 circle.back().fY = circle[
first].fY;
GLAPI GLUtesselator *GLAPIENTRY gluNewTess(void)
#define GLU_TESS_TOLERANCE
GLAPI void GLAPIENTRY gluTessProperty(GLUtesselator *tess, GLenum which, GLdouble data)
GLAPI void GLAPIENTRY gluTessCallback(GLUtesselator *tess, GLenum which, _GLUfuncptr CallBackFunc)
GLAPI void GLAPIENTRY gluDeleteTess(GLUtesselator *tess)
const unsigned char gStipples[26][32]
FillAttribSet(const PolygonStippleSet &set, Bool_t ignoreStipple)
Polygon stipple, if required.
Double_t GetMaxLineWidth() const
Double_t GetMaxPointSize() const
LineAttribSet(Bool_t smooth, UInt_t stipple, Double_t maxWidth, Bool_t setWidth)
Set up line parameters.
void DrawOpenThreeTriangles(UInt_t n, const TPoint *xy) const
void DrawFullCrossX(UInt_t n, const TPoint *xy) const
void DrawFullDotSmall(UInt_t n, const TPoint *xy) const
void DrawOpenSquareDiagonal(UInt_t n, const TPoint *xy) const
void DrawOpenDoubleDiamond(UInt_t n, const TPoint *xy) const
void DrawFullFourTrianglesX(UInt_t n, const TPoint *xy) const
void DrawFullDotLarge(UInt_t n, const TPoint *xy) const
void DrawFullThreeTriangles(UInt_t n, const TPoint *xy) const
void DrawCircle(UInt_t n, const TPoint *xy) const
void DrawFullFourTrianglesPlus(UInt_t n, const TPoint *xy) const
void DrawOpenCross(UInt_t n, const TPoint *xy) const
void DrawFullCross(UInt_t n, const TPoint *xy) const
void DrawFullTrianlgeDown(UInt_t n, const TPoint *xy) const
void DrawOpenStar(UInt_t n, const TPoint *xy) const
Full star pentagone.
void DrawX(UInt_t n, const TPoint *xy) const
void DrawPlus(UInt_t n, const TPoint *xy) const
void DrawFullTrianlgeUp(UInt_t n, const TPoint *xy) const
void DrawFullSquare(UInt_t n, const TPoint *xy) const
std::vector< TPoint > fCircle
void DrawOpenFourTrianglesPlus(UInt_t n, const TPoint *xy) const
void DrawStar(UInt_t n, const TPoint *xy) const
void DrawFullDoubleDiamond(UInt_t n, const TPoint *xy) const
void DrawOpenCrossX(UInt_t n, const TPoint *xy) const
void DrawDot(UInt_t n, const TPoint *xy) const
Simple 1-pixel dots.
void DrawOctagonCross(UInt_t n, const TPoint *xy) const
void DrawFourSquaresX(UInt_t n, const TPoint *xy) const
void DrawFourSquaresPlus(UInt_t n, const TPoint *xy) const
void DrawFullDotMedium(UInt_t n, const TPoint *xy) const
void DrawDiamond(UInt_t n, const TPoint *xy) const
void DrawFullStar(UInt_t n, const TPoint *xy) const
Full star pentagone.
void DrawOpenTrianlgeDown(UInt_t n, const TPoint *xy) const
void DrawFullDiamond(UInt_t n, const TPoint *xy) const
void DrawOpenFourTrianglesX(UInt_t n, const TPoint *xy) const
void DrawOpenDiamondCross(UInt_t n, const TPoint *xy) const
OffScreenDevice(UInt_t w, UInt_t h, UInt_t x, UInt_t y, Bool_t top)
std::vector< unsigned char > fStipples
static UInt_t SwapBits(UInt_t bits)
static const UInt_t fgBitSwap[]
Tesselator(Bool_t dump=kFALSE)
static Tesselation_t * GetDump()
static Tesselation_t * fVs
virtual Style_t GetFillStyle() const
Return the fill area style.
static Width_t GetMarkerLineWidth(Style_t style)
Internal helper function that returns the line width of the given marker style (0 = filled marker)
The color creation and management class.
virtual void GetRGB(Float_t &r, Float_t &g, Float_t &b) const
static Int_t GetColor(const char *hexcolor)
Static method returning color number for color specified by hex color string of form: "#rrggbb",...
void box(Int_t pat, Double_t x1, Double_t y1, Double_t x2, Double_t y2)
const UShort_t gLineStipples[]
std::list< MeshPatch_t > Tesselation_t
BoundingRect< ValueType > FindBoundingRect(Int_t nPoints, const ValueType *xs, const ValueType *ys)
void Vertex(const Double_t *v)
void ExtractRGBA(Color_t colorIndex, Float_t *rgba)
const GLenum lineWidthPNAME
const GLenum pointSizePNAME
Short_t Max(Short_t a, Short_t b)
Double_t Floor(Double_t x)
Short_t Min(Short_t a, Short_t b)
constexpr Double_t TwoPi()