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;
129 if (!ignoreStipple) {
131 const UInt_t fasi = fillStyle % 1000;
132 fStipple = (fasi >= 1 && fasi <=25) ? fasi : 2;
134 glEnable(GL_POLYGON_STIPPLE);
139 Float_t rgba[] = {0.f, 0.f, 0.f, 1.f};
144 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
154 glDisable(GL_POLYGON_STIPPLE);
165 0xf040, 0xf4f4, 0xf111, 0xf0f0,
166 0xff11, 0x3fff, 0x08ff};
182 glEnable(GL_LINE_SMOOTH);
183 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
184 glHint(GL_LINE_SMOOTH_HINT, GL_NICEST);
195 glEnable(GL_LINE_STIPPLE);
201 Float_t rgba[] = {0.f, 0.f, 0.f, 0.8f};
206 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
212 glLineWidth(lineWidth > maxWidth ? maxWidth : !lineWidth ? 1.f : lineWidth);
221 glDisable(GL_LINE_SMOOTH);
226 glDisable(GL_LINE_STIPPLE);
272 glVertex2d(xy[i].fX, xy[i].fY);
285 for (
UInt_t i = 0; i <
n; ++i) {
288 glVertex2d(-im +
x,
y);
289 glVertex2d(im +
x,
y);
290 glVertex2d(
x, -im +
y);
291 glVertex2d(
x, im +
y);
315 for (
UInt_t i = 0; i <
n; ++i) {
340 for (
UInt_t i = 0; i <
n; ++i) {
344 glVertex2d(-im +
x, -im +
y);
345 glVertex2d(im +
x, im +
y);
346 glVertex2d(-im +
x, im +
y);
347 glVertex2d(im +
x, -im +
y);
359 for (
UInt_t i = 0; i <
n; ++i) {
363 glVertex2d(-1. +
x,
y);
364 glVertex2d(
x + 1.,
y);
365 glVertex2d(
x, -1. +
y);
366 glVertex2d(
x, 1. +
y);
377 glRectd(xy[i].fX - 1, xy[i].fY - 1, xy[i].fX + 1, xy[i].fY + 1);
382void CalculateCircle(std::vector<TPoint> &circle,
Double_t r,
UInt_t pts);
396 for (
UInt_t i = 0; i <
n; ++i) {
400 glBegin(GL_LINE_LOOP);
420 for (
UInt_t i = 0; i <
n; ++i) {
424 glBegin(GL_TRIANGLE_FAN);
437 glRectd(xy[i].fX - im, xy[i].fY - im, xy[i].fX + im, xy[i].fY + im);
445 for (
UInt_t i = 0; i <
n; ++i) {
449 glVertex2d(
x - im,
y - im);
450 glVertex2d(
x + im,
y - im);
451 glVertex2d(
x, im +
y);
462 for (
UInt_t i = 0; i <
n; ++i) {
466 glVertex2d(
x - im,
y + im);
467 glVertex2d(
x,
y - im);
468 glVertex2d(im +
x,
y + im);
478 const Int_t im =
Int_t(4.00 * MarkerSizeReduced + 0.5);
479 const Int_t imx =
Int_t(2.66 * MarkerSizeReduced + 0.5);
481 for (
UInt_t i = 0; i <
n; ++i) {
485 glBegin(GL_LINE_LOOP);
486 glVertex2d(
x - imx,
y);
487 glVertex2d(
x,
y - im);
488 glVertex2d(
x + imx,
y);
489 glVertex2d(
x,
y + im);
501 for (
UInt_t i = 0; i <
n; ++i) {
506 glVertex2d(
x - imx,
y);
507 glVertex2d(
x,
y - im);
508 glVertex2d(
x + imx,
y);
509 glVertex2d(
x,
y + im);
520 for (
UInt_t i = 0; i <
n; ++i) {
523 glBegin(GL_LINE_LOOP);
524 glVertex2d(
x - im,
y + im);
525 glVertex2d(
x,
y - im);
526 glVertex2d(im +
x,
y + im);
536 const Int_t im =
Int_t(4.00 * MarkerSizeReduced + 0.5);
537 const Int_t imx =
Int_t(1.33 * MarkerSizeReduced + 0.5);
539 for (
UInt_t i = 0; i <
n; ++i) {
543 glBegin(GL_LINE_LOOP);
544 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);
549 glVertex2d(
x + im,
y - imx);
550 glVertex2d(
x + im,
y + imx);
551 glVertex2d(
x + imx,
y + imx);
552 glVertex2d(
x + imx,
y + im);
553 glVertex2d(
x - imx,
y + im);
554 glVertex2d(
x - imx,
y + imx);
555 glVertex2d(
x - im,
y + imx);
567 for (
UInt_t i = 0; i <
n; ++i) {
572 glVertex2d(
x - im,
y - imx);
573 glVertex2d(
x - im,
y + imx);
574 glVertex2d(
x + im,
y + imx);
575 glVertex2d(
x + im,
y - imx);
578 glVertex2d(
x - imx,
y + imx);
579 glVertex2d(
x - imx,
y + im);
580 glVertex2d(
x + imx,
y + im);
581 glVertex2d(
x + imx,
y + imx);
584 glVertex2d(
x - imx,
y - imx);
585 glVertex2d(
x - imx,
y - im);
586 glVertex2d(
x + imx,
y - im);
587 glVertex2d(
x + imx,
y - imx);
603 for (
UInt_t i = 0; i <
n; ++i) {
607 glBegin(GL_TRIANGLES);
608 glVertex2d(
x - im,
y - im4);
609 glVertex2d(
x - im2,
y + im1);
610 glVertex2d(
x - im4,
y - im4);
612 glVertex2d(
x - im2,
y + im1);
613 glVertex2d(
x - im3,
y + im);
614 glVertex2d(
x,
y + im2);
616 glVertex2d(
x,
y + im2);
617 glVertex2d(
x + im3,
y + im);
618 glVertex2d(
x + im2,
y + im1);
620 glVertex2d(
x + im2,
y + im1);
621 glVertex2d(
x + im,
y - im4);
622 glVertex2d(
x + im4,
y - im4);
624 glVertex2d(
x + im4,
y - im4);
625 glVertex2d(
x,
y - im);
626 glVertex2d(
x - im4,
y - im4);
628 glVertex2d(
x - im4,
y - im4);
629 glVertex2d(
x - im2,
y + im1);
630 glVertex2d(
x,
y + im2);
632 glVertex2d(
x - im4,
y - im4);
633 glVertex2d(
x,
y + im2);
634 glVertex2d(
x + im2,
y + im1);
636 glVertex2d(
x - im4,
y - im4);
637 glVertex2d(
x + im2,
y + im1);
638 glVertex2d(
x + im4,
y - im4);
651 const Int_t im =
Int_t(4.00 * MarkerSizeReduced + 0.5);
652 const Int_t im1 =
Int_t(0.66 * MarkerSizeReduced + 0.5);
653 const Int_t im2 =
Int_t(2.00 * MarkerSizeReduced + 0.5);
654 const Int_t im3 =
Int_t(2.66 * MarkerSizeReduced + 0.5);
655 const Int_t im4 =
Int_t(1.33 * MarkerSizeReduced + 0.5);
657 for (
UInt_t i = 0; i <
n; ++i) {
661 glBegin(GL_LINE_LOOP);
662 glVertex2d(
x - im,
y - im4);
663 glVertex2d(
x - im2,
y + im1);
664 glVertex2d(
x - im3,
y + im);
665 glVertex2d(
x,
y + im2);
666 glVertex2d(
x + im3,
y + im);
667 glVertex2d(
x + im2,
y + im1);
668 glVertex2d(
x + im,
y - im4);
669 glVertex2d(
x + im4,
y - im4);
670 glVertex2d(
x,
y - im);
671 glVertex2d(
x - im4,
y - im4);
682 for (
unsigned i = 0; i <
n; ++i) {
686 glBegin(GL_LINE_LOOP);
687 glVertex2d(
x - im,
y - im);
688 glVertex2d(
x + im,
y - im);
689 glVertex2d(
x + im,
y + im);
690 glVertex2d(
x - im,
y + im);
691 glVertex2d(
x - im,
y - im);
692 glVertex2d(
x + im,
y + im);
693 glVertex2d(
x - im,
y + im);
694 glVertex2d(
x + im,
y - im);
705 for (
unsigned i = 0; i <
n; ++i) {
709 glBegin(GL_LINE_LOOP);
710 glVertex2d(
x - im,
y );
711 glVertex2d(
x ,
y - im);
712 glVertex2d(
x + im,
y );
713 glVertex2d(
x ,
y + im);
714 glVertex2d(
x - im,
y );
715 glVertex2d(
x + im,
y );
716 glVertex2d(
x ,
y + im);
717 glVertex2d(
x ,
y - im);
727 const Int_t im =
Int_t(4. * MarkerSizeReduced + 0.5);
728 const Int_t im2 =
Int_t(2. * MarkerSizeReduced + 0.5);
730 for (
unsigned i = 0; i <
n; ++i) {
734 glBegin(GL_LINE_LOOP);
736 glVertex2d(
x -im2,
y + im);
737 glVertex2d(
x - im,
y );
739 glVertex2d(
x -im2,
y - im);
740 glVertex2d(
x +im2,
y - im);
742 glVertex2d(
x + im,
y );
743 glVertex2d(
x +im2,
y + im);
754 const Int_t im =
Int_t(4. * MarkerSizeReduced + 0.5);
755 const Int_t im2 =
Int_t(2. * MarkerSizeReduced + 0.5);
757 for (
unsigned i = 0; i <
n; ++i) {
761 glBegin(GL_LINE_LOOP);
762 glVertex2d(
x-im,
y );
763 glVertex2d(
x-im,
y-im2);
764 glVertex2d(
x-im2,
y-im);
765 glVertex2d(
x+im2,
y-im);
766 glVertex2d(
x+im,
y-im2);
767 glVertex2d(
x+im,
y+im2);
768 glVertex2d(
x+im2,
y+im);
769 glVertex2d(
x-im2,
y+im);
770 glVertex2d(
x-im,
y+im2);
771 glVertex2d(
x-im,
y );
772 glVertex2d(
x+im,
y );
774 glVertex2d(
x ,
y-im);
775 glVertex2d(
x ,
y+im);
788 for (
unsigned i = 0; i <
n; ++i) {
794 glVertex2d(
x -im2,
y + im);
795 glVertex2d(
x - im,
y );
797 glVertex2d(
x -im2,
y - im);
798 glVertex2d(
x +im2,
y - im);
800 glVertex2d(
x + im,
y );
801 glVertex2d(
x +im2,
y + im);
812 const Int_t im =
Int_t(4. * MarkerSizeReduced + 0.5);
813 const Int_t im2 =
Int_t(2. * MarkerSizeReduced + 0.5);
815 for (
unsigned i = 0; i <
n; ++i) {
819 glBegin(GL_LINE_LOOP);
821 glVertex2d(
x+im2,
y+im);
822 glVertex2d(
x+im ,
y+im2);
824 glVertex2d(
x+im ,
y-im2);
825 glVertex2d(
x+im2,
y-im);
827 glVertex2d(
x-im2,
y-im);
828 glVertex2d(
x-im ,
y-im2);
830 glVertex2d(
x-im ,
y+im2);
831 glVertex2d(
x-im2,
y+im);
844 for (
unsigned i = 0; i <
n; ++i) {
850 glVertex2d(
x+im2,
y+im);
851 glVertex2d(
x+im ,
y+im2);
853 glVertex2d(
x+im ,
y-im2);
854 glVertex2d(
x+im2,
y-im);
856 glVertex2d(
x-im2,
y-im);
857 glVertex2d(
x-im ,
y-im2);
859 glVertex2d(
x-im ,
y+im2);
860 glVertex2d(
x-im2,
y+im);
871 const Int_t im =
Int_t(4.00 * MarkerSizeReduced + 0.5);
872 const Int_t im4 =
Int_t(1.33 * MarkerSizeReduced + 0.5);
874 for (
unsigned i = 0; i <
n; ++i) {
878 glBegin(GL_LINE_LOOP);
879 glVertex2d(
x ,
y+im );
880 glVertex2d(
x-im4,
y+im4);
881 glVertex2d(
x-im ,
y );
882 glVertex2d(
x-im4,
y-im4);
883 glVertex2d(
x ,
y-im );
884 glVertex2d(
x+im4,
y-im4);
885 glVertex2d(
x+im ,
y );
886 glVertex2d(
x+im4,
y+im4);
887 glVertex2d(
x ,
y+im );
899 for (
unsigned i = 0; i <
n; ++i) {
904 glVertex2d(
x,
y+im );
905 glVertex2d(
x-im4,
y+im4);
909 glVertex2d(
x-im4,
y+im4);
915 glVertex2d(
x-im4,
y-im4);
919 glVertex2d(
x-im4,
y-im4);
925 glVertex2d(
x+im4,
y-im4);
929 glVertex2d(
x+im4,
y-im4);
935 glVertex2d(
x+im4,
y+im4);
939 glVertex2d(
x+im4,
y+im4);
951 const Int_t im =
Int_t(4. * MarkerSizeReduced + 0.5);
952 const Int_t im2 =
Int_t(2. * MarkerSizeReduced + 0.5);
954 for (
unsigned i = 0; i <
n; ++i) {
958 glBegin(GL_LINE_LOOP);
960 glVertex2d(
x+im2,
y+im);
961 glVertex2d(
x-im2,
y+im);
962 glVertex2d(
x+im2,
y-im);
963 glVertex2d(
x-im2,
y-im);
965 glVertex2d(
x+im,
y+im2);
966 glVertex2d(
x+im,
y-im2);
967 glVertex2d(
x-im,
y+im2);
968 glVertex2d(
x-im,
y-im2);
981 for (
unsigned i = 0; i <
n; ++i) {
987 glVertex2d(
x+im2,
y+im);
988 glVertex2d(
x-im2,
y+im);
989 glVertex2d(
x+im2,
y-im);
990 glVertex2d(
x-im2,
y-im);
992 glVertex2d(
x+im,
y+im2);
993 glVertex2d(
x+im,
y-im2);
994 glVertex2d(
x-im,
y+im2);
995 glVertex2d(
x-im,
y-im2);
1006 const Int_t im =
Int_t(4. * MarkerSizeReduced + 0.5);
1007 const Int_t im2 =
Int_t(2. * MarkerSizeReduced + 0.5);
1009 for (
unsigned i = 0; i <
n; ++i) {
1013 glBegin(GL_LINE_LOOP);
1014 glVertex2d(
x ,
y +im2);
1015 glVertex2d(
x -im2,
y + im);
1016 glVertex2d(
x - im,
y +im2);
1017 glVertex2d(
x -im2,
y );
1018 glVertex2d(
x - im,
y -im2);
1019 glVertex2d(
x -im2,
y - im);
1020 glVertex2d(
x ,
y -im2);
1021 glVertex2d(
x +im2,
y - im);
1022 glVertex2d(
x + im,
y -im2);
1023 glVertex2d(
x +im2,
y );
1024 glVertex2d(
x + im,
y +im2);
1025 glVertex2d(
x +im2,
y + im);
1026 glVertex2d(
x ,
y +im2);
1038 for (
unsigned i = 0; i <
n; ++i) {
1042 glBegin(GL_POLYGON);
1043 glVertex2d(
x ,
y +im2);
1044 glVertex2d(
x -im2,
y +im);
1045 glVertex2d(
x -im ,
y +im2);
1046 glVertex2d(
x -im2,
y );
1049 glBegin(GL_POLYGON);
1050 glVertex2d(
x -im2,
y);
1051 glVertex2d(
x -im,
y -im2);
1052 glVertex2d(
x -im2,
y -im);
1053 glVertex2d(
x ,
y-im2);
1056 glBegin(GL_POLYGON);
1057 glVertex2d(
x ,
y -im2);
1058 glVertex2d(
x +im2,
y -im);
1059 glVertex2d(
x +im ,
y -im2);
1060 glVertex2d(
x +im2,
y);
1063 glBegin(GL_POLYGON);
1064 glVertex2d(
x +im2,
y);
1065 glVertex2d(
x +im ,
y +im2);
1066 glVertex2d(
x +im2,
y +im);
1067 glVertex2d(
x ,
y +im2);
1079 for (
unsigned i = 0; i <
n; ++i) {
1083 glBegin(GL_POLYGON);
1084 glVertex2d(
x,
y+im2);
1085 glVertex2d(
x-im2 ,
y+im);
1086 glVertex2d(
x-im,
y+im2);
1087 glVertex2d(
x-im2 ,
y);
1089 glBegin(GL_POLYGON);
1090 glVertex2d(
x-im2,
y);
1091 glVertex2d(
x-im ,
y-im2);
1092 glVertex2d(
x-im2,
y-im);
1093 glVertex2d(
x,
y-im2);
1095 glBegin(GL_POLYGON);
1096 glVertex2d(
x,
y-im2);
1097 glVertex2d(
x+im2 ,
y-im);
1098 glVertex2d(
x+im,
y-im2);
1099 glVertex2d(
x+im2,
y);
1101 glBegin(GL_POLYGON);
1102 glVertex2d(
x+im2,
y);
1103 glVertex2d(
x+im ,
y+im2);
1104 glVertex2d(
x+im2,
y+im);
1105 glVertex2d(
x,
y+im2);
1117 for (
unsigned i = 0; i <
n; ++i) {
1121 glBegin(GL_POLYGON);
1122 glVertex2d(
x+im2,
y+im2);
1123 glVertex2d(
x+im2,
y+im);
1124 glVertex2d(
x-im2,
y+im);
1125 glVertex2d(
x-im2,
y+im2);
1127 glBegin(GL_POLYGON);
1128 glVertex2d(
x-im2,
y+im2);
1129 glVertex2d(
x-im,
y+im2);
1130 glVertex2d(
x-im,
y-im2);
1131 glVertex2d(
x-im2,
y-im2);
1133 glBegin(GL_POLYGON);
1134 glVertex2d(
x-im2,
y-im2);
1135 glVertex2d(
x-im2,
y-im);
1136 glVertex2d(
x+im2,
y-im);
1137 glVertex2d(
x+im2,
y-im2);
1139 glBegin(GL_POLYGON);
1140 glVertex2d(
x+im2,
y-im2);
1141 glVertex2d(
x+im,
y-im2);
1142 glVertex2d(
x+im,
y+im2);
1143 glVertex2d(
x+im2,
y+im2);
1156#if defined(__APPLE_CC__) && __APPLE_CC__ > 4000 && __APPLE_CC__ < 5450 && !defined(__INTEL_COMPILER)
1157 typedef GLvoid (*tess_t)(...);
1158#elif defined( __mips ) || defined( __linux__ ) || defined( __FreeBSD__ ) || defined( __OpenBSD__ ) || defined( __sun ) || defined (__CYGWIN__) || defined (__APPLE__)
1159 typedef GLvoid (*tess_t)();
1160#elif defined ( WIN32)
1161 typedef GLvoid (
CALLBACK *tess_t)( );
1163 #error "Error - need to define type tess_t for this platform/compiler"
1186 std::vector<Double_t> & vs = dump->back().fPatch;
1205 GLUtesselator *tess = gluNewTess();
1207 throw std::runtime_error(
"tesselator creation failed");
1209#if defined(__GNUC__) && __GNUC__ >= 8
1210#pragma GCC diagnostic push
1211#pragma GCC diagnostic ignored "-Wcast-function-type"
1215 gluTessCallback(tess, (GLenum)GLU_BEGIN, (tess_t) impl_glBegin);
1216 gluTessCallback(tess, (GLenum)GLU_END, (tess_t) impl_glEnd);
1217 gluTessCallback(tess, (GLenum)GLU_VERTEX, (tess_t) impl_glVertex3dv);
1219 gluTessCallback(tess, (GLenum)GLU_BEGIN, (tess_t)
Begin);
1220 gluTessCallback(tess, (GLenum)GLU_END, (tess_t)
End);
1221 gluTessCallback(tess, (GLenum)GLU_VERTEX, (tess_t)
Vertex);
1224#if defined(__GNUC__) && __GNUC__ >= 8
1225#pragma GCC diagnostic pop
1228 gluTessProperty(tess, GLU_TESS_TOLERANCE, 1
e-10);
1236 gluDeleteTess((GLUtesselator *)
fTess);
1289 const TColor *color =
gROOT->GetColor(colorIndex);
1291 color->GetRGB(rgba[0], rgba[1], rgba[2]);
1292 rgba[3] = color->GetAlpha();
1298template<
class ValueType>
1301 assert(nPoints > 0 &&
"FindBoundingRect, invalind number of points");
1302 assert(xs !=
nullptr &&
"FindBoundingRect, parameter 'xs' is null");
1303 assert(ys !=
nullptr &&
"FindBoundingRect, parameter 'ys' is null");
1305 ValueType xMin = xs[0], xMax = xMin;
1306 ValueType yMin = ys[0], yMax = yMin;
1308 for (
Int_t i = 1; i < nPoints; ++i) {
1319 box.fWidth = xMax - xMin;
1323 box.fHeight = yMax - yMin;
1340void CalculateCircle(std::vector<TPoint> &circle,
Double_t r,
UInt_t pts)
1343 const UInt_t first = circle.size();
1345 circle.resize(circle.size() + pts + 1);
1347 for (
UInt_t i = 0; i < pts; ++i, angle += delta) {
1352 circle.back().fX = circle[first].fX;
1353 circle.back().fY = circle[first].fY;
const unsigned char gStipples[26][32]
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
unsigned short UShort_t
Unsigned Short integer 2 bytes (unsigned short).
int Int_t
Signed integer 4 bytes (int).
float Size_t
Attribute size (float).
unsigned char UChar_t
Unsigned Character 1 byte (unsigned char).
unsigned int UInt_t
Unsigned integer 4 bytes (unsigned int).
long Long_t
Signed long integer 4 bytes (long). Size depends on architecture.
short Width_t
Line width (short).
bool Bool_t
Boolean (0=false, 1=true) (bool).
double Double_t
Double 8 bytes.
short SCoord_t
Screen coordinates (short).
short Color_t
Color number (short).
short Style_t
Style number (short).
float Float_t
Float 4 bytes (float).
FillAttribSet(const PolygonStippleSet &set, Bool_t ignoreStipple, const TAttFill *att=nullptr)
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, const TAttLine *att=nullptr)
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
Width_t GetMarkerWidth() const
Get marker width If not set before - use gVirtualX value.
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 SetMarkerSizeWidth(Size_t size, Width_t width)
Set marker size and line width.
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
Size_t GetMarkerSize() const
Get marker size If not set before - use gVirtualX value.
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 Color_t GetFillColor() const
Return the fill area color.
virtual Style_t GetFillStyle() const
Return the fill area style.
virtual Color_t GetLineColor() const
Return the line color.
virtual Width_t GetLineWidth() const
Return the line width.
static Width_t GetMarkerLineWidth(Style_t style)
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)
Returns the largest of a and b.
Double_t Floor(Double_t x)
Rounds x downward, returning the largest integral value that is not greater than x.
Short_t Min(Short_t a, Short_t b)
Returns the smallest of a and b.
Double_t Cos(Double_t)
Returns the cosine of an angle of x radians.
Double_t Sin(Double_t)
Returns the sine of an angle of x radians.
constexpr Double_t TwoPi()