33#include "TGLIncludes.h" 
  132   std::cout << 
"(" << 
fVals[0] << 
"," << 
fVals[1] << 
"," << 
fVals[2] << 
")" << std::endl;
 
 
  177   fVertex(start), fVector(end - start)
 
 
  185   fVertex(start), fVector(
vect)
 
 
  230      fX(0), fY(0), fWidth(0), fHeight(0)
 
 
  338   Set(1.0, 1.0, 1.0, 0.0);
 
 
  403      Error(
"TGLPlane::Normalise", 
"trying to normalise plane with zero magnitude normal");
 
 
  418   std::cout.precision(6);
 
  419   std::cout << 
"Plane : " << 
fVals[0] << 
"x + " << 
fVals[1] << 
"y + " << 
fVals[2] << 
"z + " << 
fVals[3] << std::endl;
 
 
  706  for(
int r=0; 
r<4; ++
r, ++C)
 
  709    for(
int c=0; 
c<4; ++
c, T+=4)
 
  710      B[
c] = C[0]*T[0] + C[4]*T[1] + C[8]*T[2] + C[12]*T[3];
 
  711    C[0] = B[0]; C[4] = B[1]; C[8] = B[2]; C[12] = B[3];
 
 
  722   for (
int c=0; 
c<4; ++
c, C+=4)
 
  725      for(
int r=0; 
r<4; ++
r, ++T)
 
  726         B[
r] = T[0]*C[0] + T[4]*C[1] + T[8]*C[2] + T[12]*C[3];
 
  727      C[0] = B[0]; C[1] = B[1]; C[2] = B[2]; C[3] = B[3];
 
 
  757   for (
UInt_t i=0; i < 16; i++) {
 
 
  844      Error(
"TGLMatrix::Scale()", 
"zero scale div by zero");
 
  852      Error(
"TGLMatrix::Scale()", 
"zero scale div by zero");
 
  860      Error(
"TGLMatrix::Scale()", 
"zero scale div by zero");
 
 
  903   --
i1 <<= 2; --
i2 <<= 2; 
 
  904   for(
int r=0; 
r<4; ++
r, ++
c) {
 
  905      b1 = cos*
c[
i1] + sin*
c[
i2];
 
  906      b2 = cos*
c[
i2] - sin*
c[
i1];
 
 
  923   for(
int c=0; 
c<4; ++
c, C+=4) {
 
  924      b1 = cos*C[
i1] - sin*C[
i2];
 
  925      b2 = cos*C[
i2] + sin*C[
i1];
 
  926      C[
i1] = b1; C[
i2] = b2;
 
 
  936   for (
UInt_t i = 0; i < 3; i++) {
 
 
 1016      Warning(
"TGLMatrix::Invert", 
"matrix is singular.");
 
 
 1053   r.X() = M[0]*
v[0] + M[4]*
v[1] +  M[8]*
v[2] + M[12]*
w;
 
 1054   r.Y() = M[1]*
v[0] + M[5]*
v[1] +  M[9]*
v[2] + M[13]*
w;
 
 1055   r.Z() = M[2]*
v[0] + M[6]*
v[1] + M[10]*
v[2] + M[14]*
w;
 
 
 1066   r.X() = M[0]*
v[0] + M[4]*
v[1] +  M[8]*
v[2];
 
 1067   r.Y() = M[1]*
v[0] + M[5]*
v[1] +  M[9]*
v[2];
 
 1068   r.Z() = M[2]*
v[0] + M[6]*
v[1] + M[10]*
v[2];
 
 
 1079   v.X() = M[0]*
r[0] + M[4]*
r[1] +  M[8]*
r[2] + M[12]*
w;
 
 1080   v.Y() = M[1]*
r[0] + M[5]*
r[1] +  M[9]*
r[2] + M[13]*
w;
 
 1081   v.Z() = M[2]*
r[0] + M[6]*
r[1] + M[10]*
r[2] + M[14]*
w;
 
 
 1091   v.X() = M[0]*
r[0] + M[4]*
r[1] +  M[8]*
r[2];
 
 1092   v.Y() = M[1]*
r[0] + M[5]*
r[1] +  M[9]*
r[2];
 
 1093   v.Z() = M[2]*
r[0] + M[6]*
r[1] + M[10]*
r[2];
 
 
 1134   std::cout.precision(6);
 
 1138         std::cout << 
fVals[
y*4 + 
x] << 
" ";
 
 1140      std::cout << 
"]" << std::endl;
 
 
 1351   for (
Int_t i = 0; i < 5; ++i)
 
 
 1364   for (
Int_t i = 0; i < 5; ++i)
 
 
 1443#if defined(__APPLE_CC__) && __APPLE_CC__ > 4000 && __APPLE_CC__ < 5450 && !defined(__INTEL_COMPILER) 
 1445#elif defined(__linux__) || defined(__FreeBSD__) || defined( __OpenBSD__ ) || defined(__sun) || defined (__CYGWIN__) || defined (__APPLE__) 
 1447#elif defined (WIN32) 
 1450    #error "Error - need to define type tessfuncptr_t for this platform/compiler" 
 1457class TGLTesselatorWrap
 
 1468         throw std::bad_alloc();
 
 1470#if defined(__GNUC__) && __GNUC__ >= 8 
 1471#pragma GCC diagnostic push 
 1472#pragma GCC diagnostic ignored "-Wcast-function-type" 
 1479#if defined(__GNUC__) && __GNUC__ >= 8 
 1480#pragma GCC diagnostic pop 
 1501#if defined(__GNUC__) && __GNUC__ >= 8 
 1502#pragma GCC diagnostic push 
 1503#pragma GCC diagnostic ignored "-Wcast-function-type" 
 1508#if defined(__GNUC__) && __GNUC__ >= 8 
 1509#pragma GCC diagnostic pop 
 
 1522#if defined(__GNUC__) && __GNUC__ >= 8 
 1523#pragma GCC diagnostic push 
 1524#pragma GCC diagnostic ignored "-Wcast-function-type" 
 1529#if defined(__GNUC__) && __GNUC__ >= 8 
 1530#pragma GCC diagnostic pop 
 
 1543#if defined(__GNUC__) && __GNUC__ >= 8 
 1544#pragma GCC diagnostic push 
 1545#pragma GCC diagnostic ignored "-Wcast-function-type" 
 1550#if defined(__GNUC__) && __GNUC__ >= 8 
 1551#pragma GCC diagnostic pop 
 
 1564#if defined(__GNUC__) && __GNUC__ >= 8 
 1565#pragma GCC diagnostic push 
 1566#pragma GCC diagnostic ignored "-Wcast-function-type" 
 1571#if defined(__GNUC__) && __GNUC__ >= 8 
 1572#pragma GCC diagnostic pop 
 
 1590   if (
strcmp(
gEnv->
GetValue(
"OpenGL.PointLineScalingFactor", 
"native"), 
"native") == 0)
 
 
 1656         Error(
"TGLUtil::CheckError", 
"GL Error %s", (
const char *)
errString);
 
 
 1682      Error(
"TGLUtil::UnlockColor", 
"fgColorLockCount already 0.");
 
 
 1734         glColor4f(
c->GetRed(), 
c->GetGreen(), 
c->GetBlue(), alpha);
 
 
 1960   for (
Int_t i=0; i<=12; i+=4) {
 
 
 1993   if (s == 2 || s == 3 || s == 5 || s == 28)
 
 
 2010   if (s == 2 || s == 3 || s == 5 || s == 28)
 
 
 2054      for (
Int_t i=0; i<
n; ++i, 
p+=3)
 
 
 2162      for (
Int_t i=0; i<
n; ++i, 
p+=3)
 
 2176      for (
Int_t i=0; i<
n; ++i, 
p+=3)
 
 
 2229   typedef std::vector<Double_t>::size_type size_type;
 
 2233   for (size_type i = 0; i < 
points.size(); i += 3) {
 
 
 2280   if (
aline.GetLineStyle() > 1)
 
 2284      switch (
aline.GetLineStyle()) {
 
 2285         case 2:  
pat = 0x3333; 
break;
 
 2286         case 3:  
pat = 0x5555; 
break;
 
 2287         case 4:  
pat = 0xf040; 
break;
 
 2288         case 5:  
pat = 0xf4f4; 
break;
 
 2289         case 6:  
pat = 0xf111; 
break;
 
 2290         case 7:  
pat = 0xf0f0; 
break;
 
 2291         case 8:  
pat = 0xff11; 
break;
 
 2292         case 9:  
pat = 0x3fff; 
break;
 
 2293         case 10: 
pat = 0x08ff;  
break;
 
 
 2511   static const UChar_t xyz[][8] = {
 
 2512      {0x44, 0x44, 0x28, 0x10, 0x10, 0x28, 0x44, 0x44},
 
 2513      {0x10, 0x10, 0x10, 0x10, 0x10, 0x28, 0x44, 0x44},
 
 2514      {0x7c, 0x20, 0x10, 0x10, 0x08, 0x08, 0x04, 0x7c}
 
 2527   for (
UInt_t i = 0; i < 3; i++) {
 
 2533         start[(i+1)%3] = 0.0;
 
 2534         start[(i+2)%3] = 0.0;
 
 2537         start[(i+1)%3] = min[(i+1)%3];
 
 2538         start[(i+2)%3] = min[(i+2)%3];
 
 2540      vector[(i+1)%3] = 0.0;
 
 2541      vector[(i+2)%3] = 0.0;
 
 2551            vector[i] = min[i] - max[i];
 
 2563            vector[i] = max[i] - min[i];
 
 2575         if (min[
j] <= 0.0 && max[
j] >= 0.0) {
 
 2578            zero[(
j+1)%3] = min[(
j+1)%3];
 
 2579            zero[(
j+2)%3] = min[(
j+2)%3];
 
 2591   for (
UInt_t k = 0; k < 3; k++) {
 
 2598         minPos[(k+1)%3] = min[(k+1)%3];
 
 2599         minPos[(k+2)%3] = min[(k+2)%3];
 
 2628      glBitmap(8, 8, 0.0, 4.0, 0.0, 0.0, xyz[k]); 
 
 
 2642      {0x38, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x38},
 
 2643      {0x10, 0x10, 0x10, 0x10, 0x10, 0x70, 0x10, 0x10},
 
 2644      {0x7c, 0x44, 0x20, 0x18, 0x04, 0x04, 0x44, 0x38},
 
 2645      {0x38, 0x44, 0x04, 0x04, 0x18, 0x04, 0x44, 0x38},
 
 2646      {0x04, 0x04, 0x04, 0x04, 0x7c, 0x44, 0x44, 0x44},
 
 2647      {0x7c, 0x44, 0x04, 0x04, 0x7c, 0x40, 0x40, 0x7c},
 
 2648      {0x7c, 0x44, 0x44, 0x44, 0x7c, 0x40, 0x40, 0x7c},
 
 2649      {0x20, 0x20, 0x20, 0x10, 0x08, 0x04, 0x44, 0x7c},
 
 2650      {0x38, 0x44, 0x44, 0x44, 0x38, 0x44, 0x44, 0x38},
 
 2651      {0x7c, 0x44, 0x04, 0x04, 0x7c, 0x44, 0x44, 0x7c},
 
 2652      {0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
 
 2653      {0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00},
 
 2654      {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} 
 
 2666      if (num[i] == 
'.') {
 
 2668      } 
else if (num[i] == 
'-') {
 
 2670      } 
else if (num[i] == 
' ') {
 
 2672      } 
else if (num[i] >= 
'0' && num[i] <= 
'9') {
 
 
 2797                        : fWidth(0), fHeight(0)
 
 
 2873      if (
lhs.fRGB[0] < 
rhs.fRGB[0])
 
 2875      else if (
lhs.fRGB[0] > 
rhs.fRGB[0])
 
 2877      else if (
lhs.fRGB[1] < 
rhs.fRGB[1])
 
 2879      else if (
lhs.fRGB[1] > 
rhs.fRGB[1])
 
 2881      else if (
lhs.fRGB[2] < 
rhs.fRGB[2])
 
 2916         glColor3ub(it->second.fRGB[0], it->second.fRGB[1], it->second.fRGB[2]);
 
 2918         Error(
"ObjectIDToColor", 
"No color for such object ID: %d", 
objectID);
 
 
 3005const Int_t    gBoxFrontQuads[][4] = {{0, 1, 2, 3}, {4, 0, 3, 5}, {4, 5, 6, 7}, {7, 6, 2, 1}};
 
 3006const Double_t gBoxFrontNormals[][3] = {{-1., 0., 0.}, {0., -1., 0.}, {1., 0., 0.}, {0., 1., 0.}};
 
 3009const Int_t    gBoxBackQuads[][4] = {{7, 1, 2, 6}, {4, 7, 6, 5}, {0, 4, 5, 3}, {0, 3, 2, 1}};
 
 3010const Double_t gBoxBackNormals[][3] = {{0., -1., 0.}, {-1., 0., 0.}, {0., 1., 0.}, {1., 0., 0.}};
 
 3031   const Double_t box[][3] = {{
xMin, 
yMin, 
zMax}, {
xMin, 
yMax, 
zMax}, {
xMin, 
yMax, 
zMin}, {
xMin, 
yMin, 
zMin},
 
 3032                              {
xMax, 
yMin, 
zMax}, {
xMax, 
yMin, 
zMin}, {
xMax, 
yMax, 
zMin}, {
xMax, 
yMax, 
zMax}};
 
 
 3084   const Double_t box[][3] = {{
xMin, 
yMin, 
zMax}, {
xMin, 
yMax, 
zMax}, {
xMin, 
yMax, 
zMin}, {
xMin, 
yMin, 
zMin},
 
 3085                              {
xMax, 
yMin, 
zMax}, {
xMax, 
yMin, 
zMin}, {
xMax, 
yMax, 
zMin}, {
xMax, 
yMax, 
zMax}};
 
 
 3171   const Double_t box[][3] = {{
xMin, 
yMin, 
zMax}, {
xMin, 
yMax, 
zMax}, {
xMin, 
yMax, 
zMin}, {
xMin, 
yMin, 
zMin},
 
 3172                              {
xMax, 
yMin, 
zMax}, {
xMax, 
yMin, 
zMin}, {
xMax, 
yMax, 
zMin}, {
xMax, 
yMax, 
zMax}};
 
 
 3209   assert(
rgba1 != 
nullptr && 
"DrawBoxWithGradientFill, parameter 'rgba1' is null");
 
 3210   assert(
rgba2 != 
nullptr && 
"DrawBoxWithGradientFill, parameter 'rgba2' is null");
 
 
 3230          "DrawQuadStripWithRadialGradientFill, invalid number of points");
 
 3232          "DrawQuadStripWithRadialGradientFill, parameter 'inner' is null");
 
 3234          "DrawQuadStripWithRadialGradientFill, parameter 'innerRGBA' is null");
 
 3236          "DrawQuadStripWithRadialGradientFill, parameter 'outer' is null");
 
 3238          "DrawQuadStripWithRadialGradientFill, parameter 'outerRGBA' is null");
 
 
 3333      normal[0] = 
v[0] / 
n;
 
 3334      normal[1] = 
v[1] / 
n;
 
 
 3347      normal[0] = -
v[0] / 
n;
 
 3348      normal[1] = -
v[1] / 
n;
 
 
 3572      normal[0] = 
v[0] / 
n;
 
 3573      normal[1] = 
v[1] / 
n;
 
 3574      normal[2] = 
v[2] / 
n;
 
 
 3588      normal[0] = -
v[0] / 
n;
 
 3589      normal[1] = -
v[1] / 
n;
 
 3590      normal[2] = -
v[2] / 
n;
 
 
 3774                                             + 
box[left].X() - 
vp[0]));
 
 3776                                             + (1 - 
gPad->GetHNDC() - 
gPad->GetYlowNDC())
 
 3777                                             * 
gPad->GetWh() + 
vp[1]));
 
 3779                                             + 
box[fp].X()  - 
vp[0]));
 
 3781                                             + (1 - 
gPad->GetHNDC() - 
gPad->GetYlowNDC())
 
 3782                                             * 
gPad->GetWh() + 
vp[1]));
 
 3784                                             * 
gPad->GetWw() + 
box[right].X() - 
vp[0]));
 
 3786                                             + (1 - 
gPad->GetHNDC() - 
gPad->GetYlowNDC())
 
 3787                                             * 
gPad->GetWh() + 
vp[1]));
 
 3789                                 {
coord->GetXRange().second, 
coord->GetYRange().first },
 
 3790                                 {
coord->GetXRange().second, 
coord->GetYRange().second},
 
 3791                                 {
coord->GetXRange().first,  
coord->GetYRange().second}};
 
 3821                                          + 
box[left + 4].X() - 
vp[0]));
 
 3823                                          + (1 - 
gPad->GetHNDC() - 
gPad->GetYlowNDC())
 
 3824                                          * 
gPad->GetWh() + 
vp[1]));
 
 
 3834   Double_t binLow = 0., binHigh = 0., binWidth = 0.;
 
 3838   for (
Int_t i = 0; i < nBins + 1; ++i)
 
 
 3911   } 
else if (
v < (
vmin + 0.5 * 
dv)) {
 
 3915   } 
else if (
v < (
vmin + 0.75 * 
dv)) {
 
 3940      } 
else if (
v < (
vmin + 2.0 * 
dv / 6.0)) {
 
 3944      } 
else if (
v < (
vmin + 3.0 * 
dv / 6.0)) {
 
 3948      } 
else if (
v < (
vmin + 4.0 * 
dv / 6.0)) {
 
 3952      } 
else if (
v < (
vmin + 5.0 * 
dv / 6.0)) {
 
 3977      } 
else if (
v < (
vmin + 0.5 * 
dv)) {
 
 3981      } 
else if (
v < (
vmin + 0.75 * 
dv)) {
 
 4007      } 
else if (
v < (
vmin + 2 * 
dv / 3)) {
 
 4022      } 
else if (
v < (
vmin + 0.4 * 
dv)) {
 
 4026      } 
else if (
v < (
vmin + 0.6 * 
dv)) {
 
 4030      } 
else if (
v < (
vmin + 0.8 * 
dv)) {
 
 4041      c1[0] = 200 / 255.0; 
c1[1] =  60 / 255.0; 
c1[2] =   0 / 255.0;
 
 4042      c2[0] = 250 / 255.0; 
c2[1] = 160 / 255.0; 
c2[2] = 110 / 255.0;
 
 4048      c1[0] =  55 / 255.0; 
c1[1] =  55 / 255.0; 
c1[2] =  45 / 255.0;
 
 4049      c2[0] = 200 / 255.0; 
c2[1] =  60 / 255.0; 
c2[2] =   0 / 255.0;
 
 4050      c3[0] = 250 / 255.0; 
c3[1] = 160 / 255.0; 
c3[2] = 110 / 255.0;
 
 4064      c1[0] =   0 / 255.0; 
c1[1] = 255 / 255.0; 
c1[2] =   0 / 255.0;
 
 4065      c2[0] = 255 / 255.0; 
c2[1] = 150 / 255.0; 
c2[2] =   0 / 255.0;
 
 4066      c3[0] = 255 / 255.0; 
c3[1] = 250 / 255.0; 
c3[2] = 240 / 255.0;
 
 4089      } 
else if (
v < (
vmin + 0.5 * 
dv)) {
 
 4093      } 
else if (
v < (
vmin + 0.75 * 
dv)) {
 
 4136      c1[0] =   0 / 255.0; 
c1[1] = 160 / 255.0; 
c1[2] =   0 / 255.0;
 
 4137      c2[0] = 180 / 255.0; 
c2[1] = 220 / 255.0; 
c2[2] =   0 / 255.0;
 
 4138      c3[0] = 250 / 255.0; 
c3[1] = 220 / 255.0; 
c3[2] = 170 / 255.0;
 
 
 4160                  : fContours(nullptr),
 
 
 4179       Error(
"TGLLevelPaletter::GeneratePalette",
 
 4180             "Invalid palette size, must be a positive number");
 
 4185      Error(
"TGLLevelPalette::GeneratePalette",
 
 4186            "Number of contours %d is too big for GL 1D texture, try to reduce it to %d",
 
 
void gluTessCallback(GLUtesselator *tess, GLenum which, _GLUfuncptr CallBackFunc)
void gluDeleteTess(GLUtesselator *tess)
GLUtesselator * gluNewTess(void)
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
Bool_t operator<(const TDatime &d1, const TDatime &d2)
void Error(const char *location, const char *msgfmt,...)
Use this function in case an error occurred.
void Warning(const char *location, const char *msgfmt,...)
Use this function in warning situations.
std::pair< Bool_t, TGLLine3 > Intersection(const TGLPlane &p1, const TGLPlane &p2)
Find 3D line interestion of this plane with 'other'.
TGLVector3 Cross(const TGLVector3 &v1, const TGLVector3 &v2)
winID h TVirtualViewer3D TVirtualGLPainter p
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void pixel
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t r
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize id
Option_t Option_t TPoint TPoint const char x2
Option_t Option_t TPoint TPoint const char x1
Option_t Option_t TPoint TPoint angle
Option_t Option_t TPoint TPoint const char mode
Option_t Option_t TPoint TPoint const char y2
Option_t Option_t TPoint TPoint const char DrawLine
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t points
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t src
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t type
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t height
Option_t Option_t TPoint TPoint const char y1
char * Form(const char *fmt,...)
Formats a string in a circular formatting buffer.
R__EXTERN TStyle * gStyle
const_iterator end() const
virtual Int_t GetNdivisions() const
virtual Float_t GetLabelOffset() const
virtual Float_t GetTickLength() const
virtual Style_t GetMarkerStyle() const
Return the marker style.
virtual Color_t GetMarkerColor() const
Return the marker color.
virtual Size_t GetMarkerSize() const
Return the marker size.
Class to manage histogram axis.
virtual Bool_t GetTimeDisplay() const
const char * ChooseTimeFormat(Double_t axislength=0)
Choose a reasonable time format from the coordinates in the active pad and the number of divisions in...
virtual const char * GetTimeFormatOnly() const
Return only the time format from the string fTimeFormat.
virtual const char * GetTimeFormat() const
The color creation and management class.
static Int_t GetColor(const char *hexcolor)
Static method returning color number for color specified by hex color string of form: "#rrggbb",...
virtual Int_t GetValue(const char *name, Int_t dflt) const
Returns the integer value for a resource.
Concrete class describing an orientated (free) or axis aligned box of 8 vertices.
TGLVertex3 Center() const
Abstract base camera class - concrete classes for orthographic and perspective cameras derive from it...
~TGLCapabilityEnabler()
Destructor - reset state if changed.
TGLCapabilityEnabler(const TGLCapabilityEnabler &)
TGLCapabilitySwitch(const TGLCapabilitySwitch &)
~TGLCapabilitySwitch()
Destructor - reset state if changed.
Class encapsulating a set of colors used throughout standard rendering.
void StdLightBackground()
Set defaults for light (white) background.
TGLColorSet & operator=(const TGLColorSet &s)
Assignment operator.
void StdDarkBackground()
Set defaults for dark (black) background.
TGLColorSet()
Constructor. Sets default for dark background.
Class encapsulating color information in preferred GL format - an array of four unsigned bytes.
void SetTransparency(Char_t transparency)
Set alpha from the transparency.
const UChar_t * CArr() const
Char_t GetTransparency() const
Returns transparency value.
void SetColor(Int_t r, Int_t g, Int_t b, Int_t a=255)
Set color with Int_t values.
TGLColor()
Default constructor. Color is initialized to black.
TString AsString() const
Return string describing the color.
TGLColor & operator=(const TGLColor &c)
Assignment operator.
Color_t GetColorIndex() const
Returns color-index representing the color.
~TGLDisableGuard()
TGLDisableGuard destructor.
TGLDisableGuard(Int_t cap)
TGLDisableGuard constructor.
~TGLEnableGuard()
TGLEnableGuard destructor.
TGLEnableGuard(Int_t cap)
TGLEnableGuard constructor.
TGLFloatHolder(const TGLFloatHolder &)=delete
const UChar_t * GetColour(Double_t z) const
Get color.
const std::vector< Double_t > * fContours
Int_t GetPaletteSize() const
Get. Palette. Size.
void SetContours(const std::vector< Double_t > *contours)
Clear :)
std::vector< UChar_t > fTexels
void DisableTexture() const
Disable 1D texture.
Double_t GetTexCoord(Double_t z) const
Get tex coordinate.
Bool_t GeneratePalette(UInt_t paletteSize, const Rgl::Range_t &zRange, Bool_t checkSize=kTRUE)
Try to find colors for palette.
void EnableTexture(Int_t mode) const
Enable 1D texture.
3D space, fixed length, line class, with direction / length 'vector', passing through point 'vertex'.
TGLLine3(const TGLVertex3 &start, const TGLVertex3 &end)
Vector of line from fVertex.
const TGLVertex3 End() const
void Draw() const
Draw line in current basic GL color.
TGLVector3 fVector
Start vertex of line.
void Set(const TGLVertex3 &start, const TGLVertex3 &end)
Set 3D line running from 'start' to 'end'.
16 component (4x4) transform matrix - column MAJOR as per GL.
void MultLeft(const TGLMatrix &lhs)
Multiply with matrix lhs on left.
TGLVector3 Multiply(const TGLVector3 &v, Double_t w=1) const
Multiply vector.
void Scale(const TGLVector3 &scale)
Set matrix axis scales to 'scale'.
void RotateLF(Int_t i1, Int_t i2, Double_t amount)
Rotate in local frame.
Double_t Invert()
Invert the matrix, returns determinant.
void MoveLF(Int_t ai, Double_t amount)
Translate in local frame.
void SetIdentity()
Set matrix to identity.
void Transpose3x3()
Transpose the top left 3x3 matrix component along major diagonal Supported as currently incompatibili...
void RotatePF(Int_t i1, Int_t i2, Double_t amount)
Rotate in parent frame. Does optimised version of MultLeft.
void Move3LF(Double_t x, Double_t y, Double_t z)
Translate in local frame along all base vectors simultaneously.
void Rotate(const TGLVertex3 &pivot, const TGLVector3 &axis, Double_t angle)
Update matrix so resulting transform has been rotated about 'pivot' (in parent frame),...
virtual ~TGLMatrix()
Destroy matrix object.
TGLVector3 GetTranslation() const
Return the translation component of matrix.
void RotateIP(TGLVector3 &v) const
Rotate vector in-place. Translation is not applied.
Bool_t IsScalingForRender() const
Return true if matrix is to be considered a scaling matrix for rendering.
void TransformVertex(TGLVertex3 &vertex) const
Transform passed 'vertex' by this matrix - converts local frame to parent.
TGLVector3 GetScale() const
Get local axis scaling factors.
void MultRight(const TGLMatrix &rhs)
Multiply with matrix rhs on right.
void SetTranslation(Double_t x, Double_t y, Double_t z)
Set matrix translation components x,y,z.
void Set(const TGLVertex3 &origin, const TGLVector3 &zAxis, const TGLVector3 &xAxis=nullptr)
Set matrix which when applied puts local origin at 'origin' and the local Z axis in direction 'z'.
void MultiplyIP(TGLVector3 &v, Double_t w=1) const
Multiply vector in-place.
void Translate(const TGLVector3 &vect)
Shift matrix translation components by 'vect' in parent frame.
void Dump() const
Output 16 matrix components to std::cout.
TGLMatrix()
Construct default identity matrix:
3D plane class - of format Ax + By + Cz + D = 0
void Set(const TGLPlane &other)
Assign from other.
void Negate()
Negate the plane.
TGLVertex3 NearestOn(const TGLVertex3 &point) const
Return nearest point on plane.
TGLPlane & operator=(const TGLPlane &src)
Assignment operator.
void Normalise()
Normalise the plane.
TGLPlane()
Construct a default plane of x + y + z = 0.
Double_t DistanceTo(const TGLVertex3 &vertex) const
Distance from plane to vertex.
void Dump() const
Output plane equation to std::out.
Helper class for plot-painters holding information about axis ranges, numbers of bins and flags if ce...
Wrapper class for GLU quadric shape drawing object.
Viewport (pixel base) 2D rectangle class.
TGLRect()
Positive width/height.
Int_t Diagonal() const
Return the diagonal of the rectangle.
Rgl::EOverlap Overlap(const TGLRect &other) const
Return overlap result (kInside, kOutside, kPartial) of this rect with 'other'.
virtual ~TGLRect()
Destroy rect object.
void Expand(Int_t x, Int_t y)
Expand the rect to encompass point (x,y)
const UChar_t * GetPixelColor(Int_t px, Int_t py) const
Get pixel color.
void ReadColorBuffer(Int_t width, Int_t height)
Read color buffer.
virtual ~TGLSelectionBuffer()
TGLSelectionBuffer destructor.
TGLSelectionBuffer()
TGLSelectionBuffer constructor.
std::vector< UChar_t > fBuffer
Wrapper class for various misc static functions - error checking, draw helpers etc.
static void DrawSphere(const TGLVertex3 &position, Double_t radius, const UChar_t rgba[4])
Draw sphere, centered on vertex 'position', with radius 'radius', color 'rgba'.
static void Color4ubv(const UChar_t *rgba)
Wrapper for glColor4ubv.
static UInt_t GetDrawQuality()
static: get draw quality
static Int_t fgPickingRadius
static const UChar_t fgWhite[4]
static UInt_t fgDefaultDrawQuality
static void SetDrawQuality(UInt_t dq)
static: set draw quality
static Float_t GetPointSizeScale()
Get global point-size scale.
static void Color3f(Float_t r, Float_t g, Float_t b)
Wrapper for glColor3f.
static Float_t fgPointSize
static Float_t fgLineWidth
static Float_t fgScreenScalingFactor
static void ResetDrawQuality()
static: reset draw quality
static Float_t fgSimpleAxisWidthScale
static Float_t fgPointSizeScale
static Bool_t IsColorLocked()
Returns true if color lock-count is greater than 0.
static void Color3fv(const Float_t *rgb)
Wrapper for glColor3fv.
static void SetLineWidthScale(Float_t scale)
Set global line-width scale.
static void SetSimpleAxisWidthScale(Float_t s)
static UInt_t LockColor()
Prevent further color changes.
static void Color4f(Float_t r, Float_t g, Float_t b, Float_t a)
Wrapper for glColor4f.
static void SetDrawColors(const UChar_t rgba[4])
Set basic draw colors from 4 component 'rgba' Used by other TGLUtil drawing routines.
static void ColorTransparency(Color_t color_index, Char_t transparency=0)
Set color from color_index and ROOT-style transparency (default 0).
static void BeginAttLine(const TAttLine &aline, Char_t transp, Int_t pick_radius=0, Bool_t selection=kFALSE)
Setup drawing parameters according to passed TAttLine.
static const UChar_t fgRed[4]
static void RenderPolyLine(const TAttLine &aline, Char_t transp, Float_t *p, Int_t n, Int_t pick_radius=0, Bool_t selection=kFALSE)
Render poly-line as specified by the p-array.
static UInt_t GetDefaultDrawQuality()
static: get default draw quality
static void BeginExtendPickRegion(Float_t scale)
static void InitializeIfNeeded()
Initialize globals that require other libraries to be initialized.
static Float_t GetLineWidthScale()
Returns global line-width scale.
static Float_t fgPointLineScalingFactor
static UInt_t UnlockColor()
Allow color changes.
static void EndAttLine(Int_t pick_radius=0, Bool_t selection=kFALSE)
Restore previous line drawing state.
static void DrawLine(const TGLLine3 &line, ELineHeadShape head, Double_t size, const UChar_t rgba[4])
Draw thick line (tube) defined by 'line', with head at end shape 'head' - box/arrow/none,...
static void Color(const TGLColor &color)
Set color from TGLColor.
static void DrawReferenceMarker(const TGLCamera &camera, const TGLVertex3 &pos, Float_t radius=3, const UChar_t *rgba=nullptr)
Draw a sphere- marker on world-coordinate 'pos' with pixel radius 'radius'.
static void DrawRing(const TGLVertex3 ¢er, const TGLVector3 &normal, Double_t radius, const UChar_t *rgba)
Draw ring, centered on 'center', lying on plane defined by 'center' & 'normal' of outer radius 'radiu...
static void Color3ubv(const UChar_t *rgb)
Wrapper for glColor3ubv.
static Int_t CheckError(const char *loc)
Check current GL error state, outputting details via ROOT Error method if one.
static Float_t GetScreenScalingFactor()
Returns scaling factor between screen points and GL viewport pixels.
static void ColorAlpha(const TGLColor &color, UChar_t alpha)
Set color from TGLColor and alpha value.
static Int_t GetPickingRadius()
Returns picking radius.
static void SetPointSizeScale(Float_t scale)
Set global point-size scale.
static void Color4fv(const Float_t *rgba)
Wrapper for glColor4fv.
static void Color3ub(UChar_t r, UChar_t g, UChar_t b)
Wrapper for glColor3ub.
static UInt_t fgDrawQuality
static GLUtesselator * GetDrawTesselator4dv()
Returns a tesselator for direct drawing when using 4-vertices with double precision.
static const UChar_t fgBlue[4]
static const UChar_t fgGrey[4]
static Float_t PointSize()
Get the point-size, taking the global scaling into account.
static void EndExtendPickRegion()
static GLUtesselator * GetDrawTesselator3dv()
Returns a tesselator for direct drawing when using 3-vertices with double precision.
static GLUtesselator * GetDrawTesselator4fv()
Returns a tesselator for direct drawing when using 4-vertices with single precision.
static Float_t fgSimpleAxisBBoxScale
static const UChar_t fgGreen[4]
static UInt_t fgColorLockCount
static GLUtesselator * GetDrawTesselator3fv()
Returns a tesselator for direct drawing when using 3-vertices with single precision.
static void DrawSimpleAxes(const TGLCamera &camera, const TGLBoundingBox &bbox, Int_t axesType, Float_t labelScale=1)
Draw simple xyz-axes for given bounding-box.
static void SetSimpleAxisBBoxScale(Float_t s)
static void SetDefaultDrawQuality(UInt_t dq)
static: set default draw quality
static void PointToViewport(Int_t &x, Int_t &y)
Convert from point/screen coordinates to GL viewport coordinates.
static void DrawNumber(const TString &num, const TGLVertex3 &pos, Bool_t center=kFALSE)
Draw number in string 'num' via internal 8x8-pixel bitmap on vertex 'pos'.
static Float_t LineWidth()
Get the line-width, taking the global scaling into account.
static Float_t fgLineWidthScale
static void RenderPolyMarkers(const TAttMarker &marker, Char_t transp, Float_t *p, Int_t n, Int_t pick_radius=0, Bool_t selection=kFALSE, Bool_t sec_selection=kFALSE)
Render polymarkers at points specified by p-array.
static const UChar_t fgYellow[4]
static void RenderPoints(const TAttMarker &marker, Float_t *p, Int_t n, Int_t pick_radius=0, Bool_t selection=kFALSE, Bool_t sec_selection=kFALSE)
Render markers as circular or square points.
static Float_t GetPointLineScalingFactor()
Return extra scaling factor for points and lines.
static void Color4ub(UChar_t r, UChar_t g, UChar_t b, UChar_t a)
Wrapper for glColor4ub.
static void RenderCrosses(const TAttMarker &marker, Float_t *p, Int_t n, Bool_t sec_selection=kFALSE)
Render markers as crosses.
3 component (x/y/z) vector class.
3 component (x/y/z) vertex class.
void Dump() const
Output vertex component values to std::cout.
void Minimum(const TGLVertex3 &other)
void Maximum(const TGLVertex3 &other)
void Set(Double_t x, Double_t y, Double_t z)
TGLVertex3()
Construct a default (0.0, 0.0, 0.0) vertex.
void Shift(TGLVector3 &shift)
Offset a vertex by vector 'shift'.
const Double_t * CArr() const
~TGLVertex3()
Destroy vertex object.
static void Optimize(Double_t A1, Double_t A2, Int_t nold, Double_t &BinLow, Double_t &BinHigh, Int_t &nbins, Double_t &BWID, Option_t *option="")
Static function to compute reasonable axis limits.
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
Int_t GetColorPalette(Int_t i) const
Return color number i in current palette.
Int_t GetNumberOfColors() const
Return number of colors in the color palette.
void box(Int_t pat, Double_t x1, Double_t y1, Double_t x2, Double_t y2)
void DrawTrapezoid(const Double_t ver[][2], Double_t zMin, Double_t zMax, Bool_t color=kTRUE)
void DrawFaceTextured(const TGLVertex3 &v1, const TGLVertex3 &v2, const TGLVertex3 &v3, Double_t t1, Double_t t2, Double_t t3, const TGLVector3 &norm1, const TGLVector3 &norm2, const TGLVector3 &norm3)
Draw textured triangle.
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 sam...
void DrawQuadFilled(const TGLVertex3 &v0, const TGLVertex3 &v1, const TGLVertex3 &v2, const TGLVertex3 &v3, const TGLVector3 &normal)
Draw quad face.
void DrawTrapezoidTextured(const Double_t ver[][2], Double_t zMin, Double_t zMax, Double_t tMin, Double_t tMax)
In polar coordinates, box became trapezoid.
const Float_t gNullEmission[]
const Int_t gFramePoints[][2]
void ObjectIDToColor(Int_t objectID, Bool_t highColor)
Object id encoded as rgb triplet.
const Float_t gBlueEmission[]
const Float_t gWhiteEmission[]
void SetZLevels(TAxis *zAxis, Double_t zMin, Double_t zMax, Double_t zScale, std::vector< Double_t > &zLevels)
void CylindricalNormalInv(const Double_t *v, Double_t *normal)
void DrawTrapezoidTextured2(const Double_t ver[][2], Double_t zMin, Double_t zMax, Double_t tMin, Double_t tMax)
In polar coordinates, box became trapezoid.
const Int_t gBoxFrontQuads[][4]
const Float_t gGrayEmission[]
void GetColor(Float_t v, Float_t vmin, Float_t vmax, Int_t type, Float_t *rgba)
This function creates color for parametric surface's vertex, using its 'u' value.
const Int_t gBoxBackQuads[][4]
void SphericalNormal(const Double_t *v, Double_t *normal)
void DrawCylinder(TGLQuadric *quadric, Double_t xMin, Double_t xMax, Double_t yMin, Double_t yMax, Double_t zMin, Double_t zMax)
Cylinder for lego3.
const Int_t gAxisType[][2]
void DrawError(Double_t xMin, Double_t xMax, Double_t yMin, Double_t yMax, Double_t zMin, Double_t zMax)
void SphericalNormalInv(const Double_t *v, Double_t *normal)
const Float_t gRedEmission[]
const Int_t gBoxBackPlanes[][2]
void DrawTransparentBox(Double_t xMin, Double_t xMax, Double_t yMin, Double_t yMax, Double_t zMin, Double_t zMax, Int_t fp)
Draws lego's bar as a 3d box.
std::pair< Double_t, Double_t > Range_t
void DrawBoxFront(Double_t xMin, Double_t xMax, Double_t yMin, Double_t yMax, Double_t zMin, Double_t zMax, Int_t fp)
Draws lego's bar as a 3d box.
const Double_t gBoxFrontNormals[][3]
const Float_t gGreenEmission[]
void CylindricalNormal(const Double_t *v, Double_t *normal)
void DrawQuadOutline(const TGLVertex3 &v1, const TGLVertex3 &v2, const TGLVertex3 &v3, const TGLVertex3 &v4)
Draw quad outline.
void DrawBoxWithGradientFill(Double_t y1, Double_t y2, Double_t x1, Double_t x2, const Double_t *rgba1, const Double_t *rgba2)
void DrawSphere(TGLQuadric *quadric, Double_t xMin, Double_t xMax, Double_t yMin, Double_t yMax, Double_t zMin, Double_t zMax)
Cylinder for lego3.
void DrawBoxFrontTextured(Double_t xMin, Double_t xMax, Double_t yMin, Double_t yMax, Double_t zMin, Double_t zMax, Double_t tMin, Double_t tMax, Int_t front)
Draws lego's bar as a 3d box LULULULU.
void DrawSmoothFace(const TGLVertex3 &v1, const TGLVertex3 &v2, const TGLVertex3 &v3, const TGLVector3 &norm1, const TGLVector3 &norm2, const TGLVector3 &norm3)
Draws triangle face, each vertex has its own averaged normal.
const Double_t gBoxBackNormals[][3]
const Float_t gOrangeEmission[]
void Draw2DAxis(TAxis *axis, Double_t xMin, Double_t yMin, Double_t xMax, Double_t yMax, Double_t min, Double_t max, Bool_t log, Bool_t z=kFALSE)
Int_t ColorToObjectID(const UChar_t *color, Bool_t highColor)
const Int_t gBoxFrontPlanes[][2]
void DrawAxes(Int_t frontPoint, const Int_t *viewport, const TGLVertex3 *box2D, const TGLPlotCoordinates *plotCoord, TAxis *xAxis, TAxis *yAxis, TAxis *zAxis)
Using front point, find, where to draw axes and which labels to use for them gVirtualX->SelectWindow(...
T * Normal2Plane(const T v1[3], const T v2[3], const T v3[3], T normal[3])
Calculates a normal vector of a plane.
Int_t Nint(T x)
Round to nearest integer. Rounds half integers to the nearest even integer.
Short_t Max(Short_t a, Short_t b)
Returns the largest of a and b.
Double_t Sqrt(Double_t x)
Returns the square root of x.
LongDouble_t Power(LongDouble_t x, LongDouble_t y)
Returns x raised to the power y.
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.
Short_t Abs(Short_t d)
Returns the absolute value of parameter Short_t d.