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)
 
  215   glVertex3dv(
End().CArr());
 
  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;
 
  520   if (lineDir.
Mag() == 0.0) {
 
  525                           Dot(lineDir, lineDir);
 
  541   return std::make_pair(
kTRUE, interVert);
 
  562                      plane.
B()*
line.Vector().Y() +
 
  563                      plane.
C()*
line.Vector().Z());
 
  570                  plane.
C()*
line.Start().Z() + plane.
D();
 
  574   if (!extend && (factor < 0.0 || factor > 1.0)) {
 
  579   return std::make_pair(
kTRUE, 
line.Start() + toPlane);
 
  653      arbAxis.
Set(1.0, 0.0, 0.0);
 
  655      arbAxis.
Set(0.0, 1.0, 0.0);
 
  657      arbAxis.
Set(0.0, 0.0, 1.0);
 
  660   Set(origin, zAxis, 
Cross(zAxisInt, arbAxis));
 
  671   Set(origin, zAxis, xAxis);
 
  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++) {
 
  786   fVals[12] = translation[0];
 
  787   fVals[13] = translation[1];
 
  788   fVals[14] = translation[2];
 
  804   fVals[12] += vect[0];
 
  805   fVals[13] += vect[1];
 
  806   fVals[14] += vect[2];
 
  816   fVals[12] += amount*C[0]; 
fVals[13] += amount*C[1]; 
fVals[14] += amount*C[2];
 
  839   if (currentScale[0] != 0.0) {
 
  840      fVals[0] *= scale[0]/currentScale[0];
 
  841      fVals[1] *= scale[0]/currentScale[0];
 
  842      fVals[2] *= scale[0]/currentScale[0];
 
  844      Error(
"TGLMatrix::Scale()", 
"zero scale div by zero");
 
  847   if (currentScale[1] != 0.0) {
 
  848      fVals[4] *= scale[1]/currentScale[1];
 
  849      fVals[5] *= scale[1]/currentScale[1];
 
  850      fVals[6] *= scale[1]/currentScale[1];
 
  852      Error(
"TGLMatrix::Scale()", 
"zero scale div by zero");
 
  855   if (currentScale[2] != 0.0) {
 
  856      fVals[8] *= scale[2]/currentScale[2];
 
  857      fVals[9] *= scale[2]/currentScale[2];
 
  858      fVals[10] *= scale[2]/currentScale[2];
 
  860      Error(
"TGLMatrix::Scale()", 
"zero scale div by zero");
 
  882   rotMat[ 0] = 
x*
x*(1-
c) + 
c;   rotMat[ 4] = 
x*
y*(1-
c) - z*s; rotMat[ 8] = 
x*z*(1-
c) + 
y*s; rotMat[12] = pivot[0];
 
  883   rotMat[ 1] = 
y*
x*(1-
c) + z*s; rotMat[ 5] = 
y*
y*(1-
c) + 
c;   rotMat[ 9] = 
y*z*(1-
c) - 
x*s; rotMat[13] = pivot[1];
 
  884   rotMat[ 2] = 
x*z*(1-
c) - 
y*s; rotMat[ 6] = 
y*z*(1-
c) + 
x*s; rotMat[10] = z*z*(1-
c) + 
c;   rotMat[14] = pivot[2];
 
  885   rotMat[ 3] = 0.0;             rotMat[ 7] = 0.0;             rotMat[11] = 0.0;             rotMat[15] = 1.0;
 
  890   *
this = rotMat * localToWorld * (*this);
 
  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];
 
  907      c[i1] = b1; 
c[i2] = b2;
 
  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++) {
 
  975   const Double_t det2_12_01 = M[1]*M[6]  - M[5]*M[2];
 
  976   const Double_t det2_12_02 = M[1]*M[10] - M[9]*M[2];
 
  977   const Double_t det2_12_03 = M[1]*M[14] - M[13]*M[2];
 
  978   const Double_t det2_12_13 = M[5]*M[14] - M[13]*M[6];
 
  979   const Double_t det2_12_23 = M[9]*M[14] - M[13]*M[10];
 
  980   const Double_t det2_12_12 = M[5]*M[10] - M[9]*M[6];
 
  981   const Double_t det2_13_01 = M[1]*M[7]  - M[5]*M[3];
 
  982   const Double_t det2_13_02 = M[1]*M[11] - M[9]*M[3];
 
  983   const Double_t det2_13_03 = M[1]*M[15] - M[13]*M[3];
 
  984   const Double_t det2_13_12 = M[5]*M[11] - M[9]*M[7];
 
  985   const Double_t det2_13_13 = M[5]*M[15] - M[13]*M[7];
 
  986   const Double_t det2_13_23 = M[9]*M[15] - M[13]*M[11];
 
  987   const Double_t det2_23_01 = M[2]*M[7]  - M[6]*M[3];
 
  988   const Double_t det2_23_02 = M[2]*M[11] - M[10]*M[3];
 
  989   const Double_t det2_23_03 = M[2]*M[15] - M[14]*M[3];
 
  990   const Double_t det2_23_12 = M[6]*M[11] - M[10]*M[7];
 
  991   const Double_t det2_23_13 = M[6]*M[15] - M[14]*M[7];
 
  992   const Double_t det2_23_23 = M[10]*M[15] - M[14]*M[11];
 
  995   const Double_t det3_012_012 = M[0]*det2_12_12 - M[4]*det2_12_02 + M[8]*det2_12_01;
 
  996   const Double_t det3_012_013 = M[0]*det2_12_13 - M[4]*det2_12_03 + M[12]*det2_12_01;
 
  997   const Double_t det3_012_023 = M[0]*det2_12_23 - M[8]*det2_12_03 + M[12]*det2_12_02;
 
  998   const Double_t det3_012_123 = M[4]*det2_12_23 - M[8]*det2_12_13 + M[12]*det2_12_12;
 
  999   const Double_t det3_013_012 = M[0]*det2_13_12 - M[4]*det2_13_02 + M[8]*det2_13_01;
 
 1000   const Double_t det3_013_013 = M[0]*det2_13_13 - M[4]*det2_13_03 + M[12]*det2_13_01;
 
 1001   const Double_t det3_013_023 = M[0]*det2_13_23 - M[8]*det2_13_03 + M[12]*det2_13_02;
 
 1002   const Double_t det3_013_123 = M[4]*det2_13_23 - M[8]*det2_13_13 + M[12]*det2_13_12;
 
 1003   const Double_t det3_023_012 = M[0]*det2_23_12 - M[4]*det2_23_02 + M[8]*det2_23_01;
 
 1004   const Double_t det3_023_013 = M[0]*det2_23_13 - M[4]*det2_23_03 + M[12]*det2_23_01;
 
 1005   const Double_t det3_023_023 = M[0]*det2_23_23 - M[8]*det2_23_03 + M[12]*det2_23_02;
 
 1006   const Double_t det3_023_123 = M[4]*det2_23_23 - M[8]*det2_23_13 + M[12]*det2_23_12;
 
 1007   const Double_t det3_123_012 = M[1]*det2_23_12 - M[5]*det2_23_02 + M[9]*det2_23_01;
 
 1008   const Double_t det3_123_013 = M[1]*det2_23_13 - M[5]*det2_23_03 + M[13]*det2_23_01;
 
 1009   const Double_t det3_123_023 = M[1]*det2_23_23 - M[9]*det2_23_03 + M[13]*det2_23_02;
 
 1010   const Double_t det3_123_123 = M[5]*det2_23_23 - M[9]*det2_23_13 + M[13]*det2_23_12;
 
 1012   const Double_t det = M[0]*det3_123_123 - M[4]*det3_123_023 +
 
 1013      M[8]*det3_123_013 - M[12]*det3_123_012;
 
 1016      Warning(
"TGLMatrix::Invert", 
"matrix is singular.");
 
 1020   const Double_t oneOverDet = 1.0/det;
 
 1021   const Double_t mn1OverDet = - oneOverDet;
 
 1023   M[0]  = det3_123_123 * oneOverDet;
 
 1024   M[4]  = det3_023_123 * mn1OverDet;
 
 1025   M[8]  = det3_013_123 * oneOverDet;
 
 1026   M[12] = det3_012_123 * mn1OverDet;
 
 1028   M[1]  = det3_123_023 * mn1OverDet;
 
 1029   M[5]  = det3_023_023 * oneOverDet;
 
 1030   M[9]  = det3_013_023 * mn1OverDet;
 
 1031   M[13] = det3_012_023 * oneOverDet;
 
 1033   M[2]  = det3_123_013 * oneOverDet;
 
 1034   M[6]  = det3_023_013 * mn1OverDet;
 
 1035   M[10] = det3_013_013 * oneOverDet;
 
 1036   M[14] = det3_012_013 * mn1OverDet;
 
 1038   M[3]  = det3_123_012 * mn1OverDet;
 
 1039   M[7]  = det3_023_012 * oneOverDet;
 
 1040   M[11] = det3_013_012 * mn1OverDet;
 
 1041   M[15] = det3_012_012 * oneOverDet;
 
 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];
 
 1115   if (ss < 0.8 || ss > 1.2) 
return kTRUE;
 
 1117   if (ss < 0.8 || ss > 1.2) 
return kTRUE;
 
 1119   if (ss < 0.8 || ss > 1.2) 
return kTRUE;
 
 1134   std::cout.precision(6);
 
 1138         std::cout << 
fVals[
y*4 + 
x] << 
" ";
 
 1140      std::cout << 
"]" << std::endl;
 
 1186   SetColor(color_index, transparency);
 
 1286   UChar_t alpha = (255*(100 - transparency))/100;
 
 1314   fRGBA[3] = (255*(100 - transparency))/100;
 
 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) 
 1444    typedef GLvoid (*tessfuncptr_t)(...);
 
 1445#elif defined(__linux__) || defined(__FreeBSD__) || defined( __OpenBSD__ ) || defined(__sun) || defined (__CYGWIN__) || defined (__APPLE__) 
 1446    typedef GLvoid (*tessfuncptr_t)();
 
 1447#elif defined (WIN32) 
 1450    #error "Error - need to define type tessfuncptr_t for this platform/compiler" 
 1457class TGLTesselatorWrap
 
 1464   TGLTesselatorWrap(tessfuncptr_t vertex_func) : fTess(0)
 
 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 
 1485   virtual ~TGLTesselatorWrap()
 
 1501#if defined(__GNUC__) && __GNUC__ >= 8 
 1502#pragma GCC diagnostic push 
 1503#pragma GCC diagnostic ignored "-Wcast-function-type" 
 1506   static TGLTesselatorWrap singleton((tessfuncptr_t) glVertex3fv);
 
 1508#if defined(__GNUC__) && __GNUC__ >= 8 
 1509#pragma GCC diagnostic pop 
 1512   return singleton.fTess;
 
 1522#if defined(__GNUC__) && __GNUC__ >= 8 
 1523#pragma GCC diagnostic push 
 1524#pragma GCC diagnostic ignored "-Wcast-function-type" 
 1527   static TGLTesselatorWrap singleton((tessfuncptr_t) glVertex4fv);
 
 1529#if defined(__GNUC__) && __GNUC__ >= 8 
 1530#pragma GCC diagnostic pop 
 1533   return singleton.fTess;
 
 1543#if defined(__GNUC__) && __GNUC__ >= 8 
 1544#pragma GCC diagnostic push 
 1545#pragma GCC diagnostic ignored "-Wcast-function-type" 
 1548   static TGLTesselatorWrap singleton((tessfuncptr_t) glVertex3dv);
 
 1550#if defined(__GNUC__) && __GNUC__ >= 8 
 1551#pragma GCC diagnostic pop 
 1554   return singleton.fTess;
 
 1564#if defined(__GNUC__) && __GNUC__ >= 8 
 1565#pragma GCC diagnostic push 
 1566#pragma GCC diagnostic ignored "-Wcast-function-type" 
 1569   static TGLTesselatorWrap singleton((tessfuncptr_t) glVertex4dv);
 
 1571#if defined(__GNUC__) && __GNUC__ >= 8 
 1572#pragma GCC diagnostic pop 
 1575   return singleton.fTess;
 
 1585   if (init_done) 
return;
 
 1590   if (strcmp(
gEnv->
GetValue(
"OpenGL.PointLineScalingFactor", 
"native"), 
"native") == 0)
 
 1651   if ((errCode = glGetError()) != GL_NO_ERROR) {
 
 1652      errString = gluErrorString(errCode);
 
 1654         Error(loc, 
"GL Error %s", (
const char *)errString);
 
 1656         Error(
"TGLUtil::CheckError", 
"GL Error %s", (
const char *)errString);
 
 1682      Error(
"TGLUtil::UnlockColor", 
"fgColorLockCount already 0.");
 
 1730      if (color_index < 0)
 
 1734         glColor4f(
c->GetRed(), 
c->GetGreen(), 
c->GetBlue(), alpha);
 
 1744      if (color_index < 0)
 
 1748         glColor4f(
c->GetRed(), 
c->GetGreen(), 
c->GetBlue(), 1.0f - 0.01f*transparency);
 
 1956   glMatrixMode(GL_PROJECTION);
 
 1959   glGetFloatv(GL_PROJECTION_MATRIX, pm);
 
 1960   for (
Int_t i=0; i<=12; i+=4) {
 
 1961      pm[i] *= scale; pm[i+1] *= scale;
 
 1964   glMatrixMode(GL_MODELVIEW);
 
 1971   glMatrixMode(GL_PROJECTION);
 
 1973   glMatrixMode(GL_MODELVIEW);
 
 1987   glPushAttrib(GL_ENABLE_BIT | GL_POINT_BIT | GL_LINE_BIT);
 
 1989   glDisable(GL_LIGHTING);
 
 1993   if (s == 2 || s == 3 || s == 5 || s == 28)
 
 1996      RenderPoints(marker, 
p, 
n, pick_radius, selection, sec_selection);
 
 2010   if (s == 2 || s == 3 || s == 5 || s == 28)
 
 2029      glEnable(GL_POINT_SMOOTH);
 
 2032         glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
 
 2033         glHint(GL_POINT_SMOOTH_HINT, GL_NICEST);
 
 2038      glDisable(GL_POINT_SMOOTH);
 
 2054      for (
Int_t i=0; i<
n; ++i, 
p+=3)
 
 2065      glPushClientAttrib(GL_CLIENT_VERTEX_ARRAY_BIT);
 
 2066      glVertexPointer(3, GL_FLOAT, 0, 
p);
 
 2067      glEnableClientState(GL_VERTEX_ARRAY);
 
 2071         const Int_t maxChunk = 8192;
 
 2072         while (nleft > maxChunk)
 
 2074            glDrawArrays(
GL_POINTS, ndone, maxChunk);
 
 2080      glPopClientAttrib();
 
 2098      glEnable(GL_POINT_SMOOTH);
 
 2101         glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
 
 2102         glHint(GL_POINT_SMOOTH_HINT, GL_NICEST);
 
 2107      glDisable(GL_POINT_SMOOTH);
 
 2115   glVertexPointer(3, GL_DOUBLE, 0, &
points[0]);
 
 2116   glEnableClientState(GL_VERTEX_ARRAY);
 
 2121   const Int_t maxChunk = 8192;
 
 2122   while (nleft > maxChunk)
 
 2124      glDrawArrays(
GL_POINTS, ndone, maxChunk);
 
 2132   glDisableClientState(GL_VERTEX_ARRAY);
 
 2147      glEnable(GL_LINE_SMOOTH);
 
 2152      glDisable(GL_LINE_SMOOTH);
 
 2162      for (
Int_t i=0; i<
n; ++i, 
p+=3)
 
 2166         glVertex3f(
p[0]-
d, 
p[1],   
p[2]);   glVertex3f(
p[0]+
d, 
p[1],   
p[2]);
 
 2167         glVertex3f(
p[0],   
p[1]-
d, 
p[2]);   glVertex3f(
p[0],   
p[1]+
d, 
p[2]);
 
 2168         glVertex3f(
p[0],   
p[1],   
p[2]-
d); glVertex3f(
p[0],   
p[1],   
p[2]+
d);
 
 2176      for (
Int_t i=0; i<
n; ++i, 
p+=3)
 
 2178         glVertex3f(
p[0]-
d, 
p[1],   
p[2]);   glVertex3f(
p[0]+
d, 
p[1],   
p[2]);
 
 2179         glVertex3f(
p[0],   
p[1]-
d, 
p[2]);   glVertex3f(
p[0],   
p[1]+
d, 
p[2]);
 
 2180         glVertex3f(
p[0],   
p[1],   
p[2]-
d); glVertex3f(
p[0],   
p[1],   
p[2]+
d);
 
 2188      glDisable(GL_POINT_SMOOTH);
 
 2191      glPushClientAttrib(GL_CLIENT_VERTEX_ARRAY_BIT);
 
 2192      glVertexPointer(3, GL_FLOAT, 0, op);
 
 2193      glEnableClientState(GL_VERTEX_ARRAY);
 
 2197         const Int_t maxChunk = 8192;
 
 2198         while (nleft > maxChunk)
 
 2200            glDrawArrays(
GL_POINTS, ndone, maxChunk);
 
 2206      glPopClientAttrib();
 
 2220      glEnable(GL_LINE_SMOOTH);
 
 2225      glDisable(GL_LINE_SMOOTH);
 
 2229   typedef std::vector<Double_t>::size_type size_type;
 
 2233   for (size_type i = 0; i < 
points.size(); i += 3) {
 
 2235      glVertex3f(
p[0] - dX, 
p[1], 
p[2]); glVertex3f(
p[0] + dX, 
p[1], 
p[2]);
 
 2236      glVertex3f(
p[0], 
p[1] - dY, 
p[2]); glVertex3f(
p[0], 
p[1] + dY, 
p[2]);
 
 2237      glVertex3f(
p[0], 
p[1], 
p[2] - dZ); glVertex3f(
p[0], 
p[1], 
p[2] + dZ);
 
 2243      glDisable(GL_LINE_SMOOTH);
 
 2244      glDisable(GL_BLEND);
 
 2262   for (
Int_t i=0; i<
n; ++i, tp+=3)
 
 2275   glPushAttrib(GL_ENABLE_BIT | GL_LINE_BIT);
 
 2277   glDisable(GL_LIGHTING);
 
 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;
 
 2296      glLineStipple(1, pat);
 
 2297      glEnable(GL_LINE_STIPPLE);
 
 2340   Float_t rgba[4]     = {rgbai[0]/255.f, rgbai[1]/255.f, rgbai[2]/255.f, rgbai[3]/255.f};
 
 2341   Float_t ambient[4]  = {0.0, 0.0, 0.0, 1.0};
 
 2342   Float_t specular[4] = {0.6, 0.6, 0.6, 1.0};
 
 2343   Float_t emission[4] = {rgba[0]/4.f, rgba[1]/4.f, rgba[2]/4.f, rgba[3]};
 
 2346   glMaterialfv(GL_FRONT, GL_DIFFUSE, rgba);
 
 2347   glMaterialfv(GL_FRONT, GL_AMBIENT, ambient);
 
 2348   glMaterialfv(GL_FRONT, GL_SPECULAR, specular);
 
 2349   glMaterialfv(GL_FRONT, GL_EMISSION, emission);
 
 2350   glMaterialf(GL_FRONT, GL_SHININESS, 60.0);
 
 2363   glTranslated(position.
X(), position.
Y(), position.
Z());
 
 2392   glMultMatrixd(local.
CArr());
 
 2398      headHeight = 
size*2.0;
 
 2400      headHeight = 
size*1.4;
 
 2408   glTranslated(0.0, 0.0, vector.
Mag() - headHeight); 
 
 2454   glMultMatrixd(local.
CArr());
 
 2457   glTranslated(0.0, 0.0, -
width/2.0);
 
 2466   glTranslated(0.0, 0.0, 
width);
 
 2484   static const UChar_t defColor[4] = { 250, 110, 0, 255 }; 
 
 2487   DrawSphere(pos, radius, rgba ? rgba : defColor);
 
 2502   static const UChar_t axesColors[][4] = {
 
 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];
 
 2574      for (
UInt_t j = 0; j < 3; j++) {
 
 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];
 
 2580            DrawSphere(zero, pixelSize*2.0, axesColors[j*2 + 1]);
 
 2585   glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
 
 2590   glDisable(GL_LIGHTING);
 
 2591   for (
UInt_t k = 0; k < 3; k++) {
 
 2595         minPos[(k+1)%3] = 0.0;
 
 2596         minPos[(k+2)%3] = 0.0;
 
 2598         minPos[(k+1)%3] = min[(k+1)%3];
 
 2599         minPos[(k+2)%3] = min[(k+2)%3];
 
 2610      if (axisViewport.
Mag() < 1) {
 
 2615                                                    padPixels*axisViewport.
Y()/axisViewport.
Mag());
 
 2618                                                    padPixels*axisViewport.
Y()/axisViewport.
Mag());
 
 2626                                     padPixels*axisViewport.
Y()/axisViewport.
Mag());
 
 2627      glRasterPos3dv(namePos.
CArr());
 
 2628      glBitmap(8, 8, 0.0, 4.0, 0.0, 0.0, xyz[k]); 
 
 2641   static const UChar_t digits[][8] = {
 
 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} 
 
 2660      xOffset = 3.5 * num.
Length();
 
 2664   glRasterPos3dv(pos.
CArr());
 
 2666      if (num[i] == 
'.') {
 
 2667         glBitmap(8, 8, xOffset, yOffset, 7.0, 0.0, digits[10]);
 
 2668      } 
else if (num[i] == 
'-') {
 
 2669         glBitmap(8, 8, xOffset, yOffset, 7.0, 0.0, digits[11]);
 
 2670      } 
else if (num[i] == 
' ') {
 
 2671         glBitmap(8, 8, xOffset, yOffset, 7.0, 0.0, digits[12]);
 
 2672      } 
else if (num[i] >= 
'0' && num[i] <= 
'9') {
 
 2673         glBitmap(8, 8, xOffset, yOffset, 7.0, 0.0, digits[num[i] - 
'0']);
 
 2738      fWhat(
what), fState(0), fFlip(
kFALSE), fFoo(foo)
 
 2797                        : fWidth(0), fHeight(0)
 
 2816   glPixelStorei(GL_PACK_ALIGNMENT, 1);
 
 2817   glReadPixels(0, 0, 
w, 
h, GL_RGBA, GL_UNSIGNED_BYTE, &
fBuffer[0]);
 
 2828   glPixelStorei(GL_PACK_ALIGNMENT, 1);
 
 2829   glReadPixels(
x, 
y, 
w, 
h, GL_RGBA, GL_UNSIGNED_BYTE, &
fBuffer[0]);
 
 2863   RGB_t gColorTriplets[] = {{{255, 0, 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])
 
 2887   typedef std::map<Int_t, RGB_t> ColorLookupTable_t;
 
 2888   typedef ColorLookupTable_t::const_iterator CLTCI_t;
 
 2890   ColorLookupTable_t gObjectIDToColor;
 
 2892   typedef std::map<RGB_t, Int_t> ObjectLookupTable_t;
 
 2893   typedef ObjectLookupTable_t::const_iterator OLTCI_t;
 
 2895   ObjectLookupTable_t gColorToObjectID;
 
 2903      glColor3ub(objectID & 0xff, (objectID & 0xff00) >> 8, (objectID & 0xff0000) >> 16);
 
 2905      if (!gObjectIDToColor.size()) {
 
 2907         for (
Int_t i = 0, 
id = 1; i < 
Int_t(
sizeof gColorTriplets / 
sizeof(RGB_t)); ++i, ++
id)
 
 2908            gObjectIDToColor[
id] = gColorTriplets[i];
 
 2909         for (
Int_t i = 0, 
id = 1; i < 
Int_t(
sizeof gColorTriplets / 
sizeof(RGB_t)); ++i, ++
id)
 
 2910            gColorToObjectID[gColorTriplets[i]] = 
id;
 
 2913      CLTCI_t it = gObjectIDToColor.find(objectID);
 
 2915      if (it != gObjectIDToColor.end())
 
 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);
 
 2919         glColor3ub(0, 0, 0);
 
 2931      if (!gObjectIDToColor.size())
 
 2935      OLTCI_t it = gColorToObjectID.find(triplet);
 
 2937      if (it != gColorToObjectID.end())
 
 2952   glVertex3dv(
v1.CArr());
 
 2953   glVertex3dv(
v2.CArr());
 
 2954   glVertex3dv(
v3.CArr());
 
 2955   glVertex3dv(
v4.CArr());
 
 2966   glNormal3dv(normal.
CArr());
 
 2967   glVertex3dv(
v0.CArr());
 
 2968   glVertex3dv(
v1.CArr());
 
 2969   glVertex3dv(
v2.CArr());
 
 2970   glVertex3dv(
v3.CArr());
 
 2981   glNormal3dv(normal);
 
 2996   glNormal3dv(norm1.
CArr());
 
 2997   glVertex3dv(
v1.CArr());
 
 2998   glNormal3dv(norm2.
CArr());
 
 2999   glVertex3dv(
v2.CArr());
 
 3000   glNormal3dv(norm3.
CArr());
 
 3001   glVertex3dv(
v3.CArr());
 
 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.}};
 
 3020      std::swap(zMax, zMin);
 
 3024   glNormal3d(0., 0., -1.);
 
 3025   glVertex3d(xMax, yMin, zMin);
 
 3026   glVertex3d(xMin, yMin, zMin);
 
 3027   glVertex3d(xMin, yMax, zMin);
 
 3028   glVertex3d(xMax, yMax, zMin);
 
 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}};
 
 3037   glVertex3dv(
box[verts[0]]);
 
 3038   glVertex3dv(
box[verts[1]]);
 
 3039   glVertex3dv(
box[verts[2]]);
 
 3040   glVertex3dv(
box[verts[3]]);
 
 3047   glVertex3dv(
box[verts[0]]);
 
 3048   glVertex3dv(
box[verts[1]]);
 
 3049   glVertex3dv(
box[verts[2]]);
 
 3050   glVertex3dv(
box[verts[3]]);
 
 3055   glNormal3d(0., 0., 1.);
 
 3056   glVertex3d(xMax, yMin, zMax);
 
 3057   glVertex3d(xMax, yMax, zMax);
 
 3058   glVertex3d(xMin, yMax, zMax);
 
 3059   glVertex3d(xMin, yMin, zMax);
 
 3070      std::swap(zMax, zMin);
 
 3077   glNormal3d(0., 0., -1.);
 
 3078   glVertex3d(xMax, yMin, zMin);
 
 3079   glVertex3d(xMin, yMin, zMin);
 
 3080   glVertex3d(xMin, yMax, zMin);
 
 3081   glVertex3d(xMax, yMax, zMin);
 
 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}};
 
 3092   glVertex3dv(
box[verts[0]]);
 
 3093   glVertex3dv(
box[verts[1]]);
 
 3094   glVertex3dv(
box[verts[2]]);
 
 3095   glVertex3dv(
box[verts[3]]);
 
 3102   glVertex3dv(
box[verts[0]]);
 
 3103   glVertex3dv(
box[verts[1]]);
 
 3104   glVertex3dv(
box[verts[2]]);
 
 3105   glVertex3dv(
box[verts[3]]);
 
 3113   glVertex3dv(
box[verts[0]]);
 
 3114   glVertex3dv(
box[verts[1]]);
 
 3115   glVertex3dv(
box[verts[2]]);
 
 3116   glVertex3dv(
box[verts[3]]);
 
 3123   glVertex3dv(
box[verts[0]]);
 
 3124   glVertex3dv(
box[verts[1]]);
 
 3125   glVertex3dv(
box[verts[2]]);
 
 3126   glVertex3dv(
box[verts[3]]);
 
 3131   glNormal3d(0., 0., 1.);
 
 3132   glVertex3d(xMax, yMin, zMax);
 
 3133   glVertex3d(xMax, yMax, zMax);
 
 3134   glVertex3d(xMin, yMax, zMax);
 
 3135   glVertex3d(xMin, yMin, zMax);
 
 3148      std::swap(zMax, zMin);
 
 3149      std::swap(texMax, texMin);
 
 3154   glNormal3d(0., 0., 1.);
 
 3155   glTexCoord1d(texMax);
 
 3156   glVertex3d(xMax, yMin, zMax);
 
 3157   glVertex3d(xMax, yMax, zMax);
 
 3158   glVertex3d(xMin, yMax, zMax);
 
 3159   glVertex3d(xMin, yMin, zMax);
 
 3163   glTexCoord1d(texMin);
 
 3164   glNormal3d(0., 0., -1.);
 
 3165   glVertex3d(xMax, yMin, zMin);
 
 3166   glVertex3d(xMin, yMin, zMin);
 
 3167   glVertex3d(xMin, yMax, zMin);
 
 3168   glVertex3d(xMax, yMax, zMin);
 
 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}};
 
 3174   const Double_t tex[] = {texMax, texMax, texMin, texMin, texMax, texMin, texMin, texMax};
 
 3179   glTexCoord1d(tex[verts[0]]);
 
 3180   glVertex3dv(
box[verts[0]]);
 
 3181   glTexCoord1d(tex[verts[1]]);
 
 3182   glVertex3dv(
box[verts[1]]);
 
 3183   glTexCoord1d(tex[verts[2]]);
 
 3184   glVertex3dv(
box[verts[2]]);
 
 3185   glTexCoord1d(tex[verts[3]]);
 
 3186   glVertex3dv(
box[verts[3]]);
 
 3193   glTexCoord1d(tex[verts[0]]);
 
 3194   glVertex3dv(
box[verts[0]]);
 
 3195   glTexCoord1d(tex[verts[1]]);
 
 3196   glVertex3dv(
box[verts[1]]);
 
 3197   glTexCoord1d(tex[verts[2]]);
 
 3198   glVertex3dv(
box[verts[2]]);
 
 3199   glTexCoord1d(tex[verts[3]]);
 
 3200   glVertex3dv(
box[verts[3]]);
 
 3209   assert(rgba1 != 0 && 
"DrawBoxWithGradientFill, parameter 'rgba1' is null");
 
 3210   assert(rgba2 != 0 && 
"DrawBoxWithGradientFill, parameter 'rgba2' is null");
 
 3229   assert(nPoints != 0 &&
 
 3230          "DrawQuadStripWithRadialGradientFill, invalid number of points");
 
 3231   assert(inner != 0 &&
 
 3232          "DrawQuadStripWithRadialGradientFill, parameter 'inner' is null");
 
 3233   assert(innerRGBA != 0 &&
 
 3234          "DrawQuadStripWithRadialGradientFill, parameter 'innerRGBA' is null");
 
 3235   assert(outer != 0 &&
 
 3236          "DrawQuadStripWithRadialGradientFill, parameter 'outer' is null");
 
 3237   assert(outerRGBA != 0 &&
 
 3238          "DrawQuadStripWithRadialGradientFill, parameter 'outerRGBA' is null");
 
 3241   for (
UInt_t j = 0; j < nPoints; ++j) {
 
 3242      glColor4dv(innerRGBA);
 
 3243      glVertex2dv(inner + j * 2);
 
 3244      glColor4dv(outerRGBA);
 
 3245      glVertex2dv(outer + j * 2);
 
 3256   GLUquadric *quad = quadric->
Get();
 
 3260         std::swap(zMin, zMax);
 
 3261      const Double_t xCenter = xMin + (xMax - xMin) / 2;
 
 3262      const Double_t yCenter = yMin + (yMax - yMin) / 2;
 
 3266      glTranslated(xCenter, yCenter, zMin);
 
 3267      gluCylinder(quad, radius, radius, zMax - zMin, 40, 1);
 
 3270      glTranslated(xCenter, yCenter, zMax);
 
 3271      gluDisk(quad, 0., radius, 40, 1);
 
 3274      glTranslated(xCenter, yCenter, zMin);
 
 3275      glRotated(180., 0., 1., 0.);
 
 3276      gluDisk(quad, 0., radius, 40, 1);
 
 3287   GLUquadric *quad = quadric->
Get();
 
 3290      const Double_t xCenter = xMin + (xMax - xMin) / 2;
 
 3291      const Double_t yCenter = yMin + (yMax - yMin) / 2;
 
 3292      const Double_t zCenter = zMin + (zMax - zMin) / 2;
 
 3295                                          TMath::Min((xMax - xMin) / 2, (yMax - yMin) / 2));
 
 3298      glTranslated(xCenter, yCenter, zCenter);
 
 3299      gluSphere(quad, radius, 10, 10);
 
 3314   glVertex3d(xMin + xWid / 2, yMin + yWid / 2, zMin);
 
 3315   glVertex3d(xMin + xWid / 2, yMin + yWid / 2, zMax);
 
 3319   glVertex3d(xMin + xWid / 2, yMin, zMin);
 
 3320   glVertex3d(xMin + xWid / 2, yMax, zMin);
 
 3324   glVertex3d(xMin, yMin + yWid / 2, zMin);
 
 3325   glVertex3d(xMax, yMin + yWid / 2, zMin);
 
 3333      normal[0] = 
v[0] / 
n;
 
 3334      normal[1] = 
v[1] / 
n;
 
 3347      normal[0] = -
v[0] / 
n;
 
 3348      normal[1] = -
v[1] / 
n;
 
 3362      std::swap(zMin, zMax);
 
 3365   glNormal3d(0., 0., 1.);
 
 3366   glVertex3d(ver[0][0], ver[0][1], zMax);
 
 3367   glVertex3d(ver[1][0], ver[1][1], zMax);
 
 3368   glVertex3d(ver[2][0], ver[2][1], zMax);
 
 3369   glVertex3d(ver[3][0], ver[3][1], zMax);
 
 3373   glNormal3d(0., 0., -1.);
 
 3374   glVertex3d(ver[0][0], ver[0][1], zMin);
 
 3375   glVertex3d(ver[3][0], ver[3][1], zMin);
 
 3376   glVertex3d(ver[2][0], ver[2][1], zMin);
 
 3377   glVertex3d(ver[1][0], ver[1][1], zMin);
 
 3381   Double_t trapezoid[][3] = {{ver[0][0], ver[0][1], zMin}, {ver[1][0], ver[1][1], zMin},
 
 3382                              {ver[2][0], ver[2][1], zMin}, {ver[3][0], ver[3][1], zMin},
 
 3383                              {ver[0][0], ver[0][1], zMax}, {ver[1][0], ver[1][1], zMax},
 
 3384                              {ver[2][0], ver[2][1], zMax}, {ver[3][0], ver[3][1], zMax}};
 
 3387   CylindricalNormal(trapezoid[1], normal), glNormal3dv(normal), glVertex3dv(trapezoid[1]);
 
 3388   CylindricalNormal(trapezoid[2], normal), glNormal3dv(normal), glVertex3dv(trapezoid[2]);
 
 3389   CylindricalNormal(trapezoid[6], normal), glNormal3dv(normal), glVertex3dv(trapezoid[6]);
 
 3390   CylindricalNormal(trapezoid[5], normal), glNormal3dv(normal), glVertex3dv(trapezoid[5]);
 
 3403      glNormal3dv(normal);
 
 3405   glVertex3dv(trapezoid[0]);
 
 3406   glVertex3dv(trapezoid[1]);
 
 3407   glVertex3dv(trapezoid[5]);
 
 3408   glVertex3dv(trapezoid[4]);
 
 3414      glNormal3dv(normal);
 
 3416   glVertex3dv(trapezoid[3]);
 
 3417   glVertex3dv(trapezoid[7]);
 
 3418   glVertex3dv(trapezoid[6]);
 
 3419   glVertex3dv(trapezoid[2]);
 
 3431      std::swap(zMin, zMax);
 
 3432      std::swap(texMin, texMax);
 
 3437   glNormal3d(0., 0., 1.);
 
 3438   glTexCoord1d(texMax);
 
 3439   glVertex3d(ver[0][0], ver[0][1], zMax);
 
 3440   glVertex3d(ver[1][0], ver[1][1], zMax);
 
 3441   glVertex3d(ver[2][0], ver[2][1], zMax);
 
 3442   glVertex3d(ver[3][0], ver[3][1], zMax);
 
 3446   glNormal3d(0., 0., -1.);
 
 3447   glTexCoord1d(texMin);
 
 3448   glVertex3d(ver[0][0], ver[0][1], zMin);
 
 3449   glVertex3d(ver[3][0], ver[3][1], zMin);
 
 3450   glVertex3d(ver[2][0], ver[2][1], zMin);
 
 3451   glVertex3d(ver[1][0], ver[1][1], zMin);
 
 3455   Double_t trapezoid[][3] = {{ver[0][0], ver[0][1], zMin}, {ver[1][0], ver[1][1], zMin},
 
 3456                              {ver[2][0], ver[2][1], zMin}, {ver[3][0], ver[3][1], zMin},
 
 3457                              {ver[0][0], ver[0][1], zMax}, {ver[1][0], ver[1][1], zMax},
 
 3458                              {ver[2][0], ver[2][1], zMax}, {ver[3][0], ver[3][1], zMax}};
 
 3461   CylindricalNormal(trapezoid[1], normal), glNormal3dv(normal), glTexCoord1d(texMin), glVertex3dv(trapezoid[1]);
 
 3462   CylindricalNormal(trapezoid[2], normal), glNormal3dv(normal), glTexCoord1d(texMin), glVertex3dv(trapezoid[2]);
 
 3463   CylindricalNormal(trapezoid[6], normal), glNormal3dv(normal), glTexCoord1d(texMax), glVertex3dv(trapezoid[6]);
 
 3464   CylindricalNormal(trapezoid[5], normal), glNormal3dv(normal), glTexCoord1d(texMax), glVertex3dv(trapezoid[5]);
 
 3468   CylindricalNormalInv(trapezoid[0], normal), glNormal3dv(normal), glTexCoord1d(texMin), glVertex3dv(trapezoid[0]);
 
 3469   CylindricalNormalInv(trapezoid[4], normal), glNormal3dv(normal), glTexCoord1d(texMax), glVertex3dv(trapezoid[4]);
 
 3470   CylindricalNormalInv(trapezoid[7], normal), glNormal3dv(normal), glTexCoord1d(texMax), glVertex3dv(trapezoid[7]);
 
 3471   CylindricalNormalInv(trapezoid[3], normal), glNormal3dv(normal), glTexCoord1d(texMin), glVertex3dv(trapezoid[3]);
 
 3476   glNormal3dv(normal);
 
 3477   glTexCoord1d(texMin);
 
 3478   glVertex3dv(trapezoid[0]);
 
 3479   glTexCoord1d(texMin);
 
 3480   glVertex3dv(trapezoid[1]);
 
 3481   glTexCoord1d(texMax);
 
 3482   glVertex3dv(trapezoid[5]);
 
 3483   glTexCoord1d(texMax);
 
 3484   glVertex3dv(trapezoid[4]);
 
 3489   glNormal3dv(normal);
 
 3490   glTexCoord1d(texMin);
 
 3491   glVertex3dv(trapezoid[3]);
 
 3492   glTexCoord1d(texMax);
 
 3493   glVertex3dv(trapezoid[7]);
 
 3494   glTexCoord1d(texMax);
 
 3495   glVertex3dv(trapezoid[6]);
 
 3496   glTexCoord1d(texMin);
 
 3497   glVertex3dv(trapezoid[2]);
 
 3508      std::swap(zMin, zMax);
 
 3510   const Double_t trapezoid[][3] = {{ver[0][0], ver[0][1], zMin}, {ver[1][0], ver[1][1], zMin},
 
 3511                                    {ver[2][0], ver[2][1], zMin}, {ver[3][0], ver[3][1], zMin},
 
 3512                                    {ver[0][0], ver[0][1], zMax}, {ver[1][0], ver[1][1], zMax},
 
 3513                                    {ver[2][0], ver[2][1], zMax}, {ver[3][0], ver[3][1], zMax}};
 
 3514   const Double_t tex[] = {texMin, texMax, texMax, texMin, texMin, texMax, texMax, texMin};
 
 3517   glNormal3d(0., 0., 1.);
 
 3518   glTexCoord1d(tex[4]), glVertex3dv(trapezoid[4]);
 
 3519   glTexCoord1d(tex[5]), glVertex3dv(trapezoid[5]);
 
 3520   glTexCoord1d(tex[6]), glVertex3dv(trapezoid[6]);
 
 3521   glTexCoord1d(tex[7]), glVertex3dv(trapezoid[7]);
 
 3525   glNormal3d(0., 0., -1.);
 
 3526   glTexCoord1d(tex[0]), glVertex3dv(trapezoid[0]);
 
 3527   glTexCoord1d(tex[3]), glVertex3dv(trapezoid[3]);
 
 3528   glTexCoord1d(tex[2]), glVertex3dv(trapezoid[2]);
 
 3529   glTexCoord1d(tex[1]), glVertex3dv(trapezoid[1]);
 
 3534   CylindricalNormal(trapezoid[1], normal), glNormal3dv(normal), glTexCoord1d(tex[1]), glVertex3dv(trapezoid[1]);
 
 3535   CylindricalNormal(trapezoid[2], normal), glNormal3dv(normal), glTexCoord1d(tex[2]), glVertex3dv(trapezoid[2]);
 
 3536   CylindricalNormal(trapezoid[6], normal), glNormal3dv(normal), glTexCoord1d(tex[6]), glVertex3dv(trapezoid[6]);
 
 3537   CylindricalNormal(trapezoid[5], normal), glNormal3dv(normal), glTexCoord1d(tex[5]), glVertex3dv(trapezoid[5]);
 
 3541   CylindricalNormalInv(trapezoid[0], normal), glNormal3dv(normal), glTexCoord1d(tex[0]), glVertex3dv(trapezoid[0]);
 
 3542   CylindricalNormalInv(trapezoid[4], normal), glNormal3dv(normal), glTexCoord1d(tex[4]), glVertex3dv(trapezoid[4]);
 
 3543   CylindricalNormalInv(trapezoid[7], normal), glNormal3dv(normal), glTexCoord1d(tex[7]), glVertex3dv(trapezoid[7]);
 
 3544   CylindricalNormalInv(trapezoid[3], normal), glNormal3dv(normal), glTexCoord1d(tex[3]), glVertex3dv(trapezoid[3]);
 
 3549   glNormal3dv(normal);
 
 3550   glTexCoord1d(tex[0]), glVertex3dv(trapezoid[0]);
 
 3551   glTexCoord1d(tex[1]), glVertex3dv(trapezoid[1]);
 
 3552   glTexCoord1d(tex[5]), glVertex3dv(trapezoid[5]);
 
 3553   glTexCoord1d(tex[4]), glVertex3dv(trapezoid[4]);
 
 3558   glNormal3dv(normal);
 
 3559   glTexCoord1d(tex[3]), glVertex3dv(trapezoid[3]);
 
 3560   glTexCoord1d(tex[7]), glVertex3dv(trapezoid[7]);
 
 3561   glTexCoord1d(tex[6]), glVertex3dv(trapezoid[6]);
 
 3562   glTexCoord1d(tex[2]), glVertex3dv(trapezoid[2]);
 
 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;
 
 3606   glNormal3dv(normal);
 
 3607   glVertex3dv(ver[0]);
 
 3608   glVertex3dv(ver[1]);
 
 3609   glVertex3dv(ver[2]);
 
 3610   glVertex3dv(ver[3]);
 
 3615   glNormal3dv(normal);
 
 3616   glVertex3dv(ver[4]);
 
 3617   glVertex3dv(ver[7]);
 
 3618   glVertex3dv(ver[6]);
 
 3619   glVertex3dv(ver[5]);
 
 3625   glNormal3dv(normal);
 
 3626   glVertex3dv(ver[0]);
 
 3627   glVertex3dv(ver[3]);
 
 3628   glVertex3dv(ver[7]);
 
 3629   glVertex3dv(ver[4]);
 
 3633   SphericalNormal(ver[3], normal), glNormal3dv(normal), glVertex3dv(ver[3]);
 
 3634   SphericalNormal(ver[2], normal), glNormal3dv(normal), glVertex3dv(ver[2]);
 
 3635   SphericalNormal(ver[6], normal), glNormal3dv(normal), glVertex3dv(ver[6]);
 
 3636   SphericalNormal(ver[7], normal), glNormal3dv(normal), glVertex3dv(ver[7]);
 
 3641   glNormal3dv(normal);
 
 3642   glVertex3dv(ver[5]);
 
 3643   glVertex3dv(ver[6]);
 
 3644   glVertex3dv(ver[2]);
 
 3645   glVertex3dv(ver[1]);
 
 3661   if (texMin > texMax)
 
 3662      std::swap(texMin, texMax);
 
 3664   const Double_t tex[] = {texMin, texMin, texMax, texMax, texMin, texMin, texMax, texMax};
 
 3667   glNormal3dv(normal);
 
 3668   glTexCoord1d(tex[0]), glVertex3dv(ver[0]);
 
 3669   glTexCoord1d(tex[1]), glVertex3dv(ver[1]);
 
 3670   glTexCoord1d(tex[2]), glVertex3dv(ver[2]);
 
 3671   glTexCoord1d(tex[3]), glVertex3dv(ver[3]);
 
 3675   glNormal3dv(normal);
 
 3676   glTexCoord1d(tex[4]), glVertex3dv(ver[4]);
 
 3677   glTexCoord1d(tex[7]), glVertex3dv(ver[7]);
 
 3678   glTexCoord1d(tex[6]), glVertex3dv(ver[6]);
 
 3679   glTexCoord1d(tex[5]), glVertex3dv(ver[5]);
 
 3683   glNormal3dv(normal);
 
 3684   glTexCoord1d(tex[0]), glVertex3dv(ver[0]);
 
 3685   glTexCoord1d(tex[3]), glVertex3dv(ver[3]);
 
 3686   glTexCoord1d(tex[7]), glVertex3dv(ver[7]);
 
 3687   glTexCoord1d(tex[4]), glVertex3dv(ver[4]);
 
 3690   SphericalNormal(ver[3], normal), glNormal3dv(normal), glTexCoord1d(tex[3]), glVertex3dv(ver[3]);
 
 3691   SphericalNormal(ver[2], normal), glNormal3dv(normal), glTexCoord1d(tex[2]), glVertex3dv(ver[2]);
 
 3692   SphericalNormal(ver[6], normal), glNormal3dv(normal), glTexCoord1d(tex[6]), glVertex3dv(ver[6]);
 
 3693   SphericalNormal(ver[7], normal), glNormal3dv(normal), glTexCoord1d(tex[7]), glVertex3dv(ver[7]);
 
 3697   glNormal3dv(normal);
 
 3698   glTexCoord1d(tex[5]), glVertex3dv(ver[5]);
 
 3699   glTexCoord1d(tex[6]), glVertex3dv(ver[6]);
 
 3700   glTexCoord1d(tex[2]), glVertex3dv(ver[2]);
 
 3701   glTexCoord1d(tex[1]), glVertex3dv(ver[1]);
 
 3704   SphericalNormalInv(ver[0], normal), glNormal3dv(normal), glTexCoord1d(tex[0]), glVertex3dv(ver[0]);
 
 3705   SphericalNormalInv(ver[4], normal), glNormal3dv(normal), glTexCoord1d(tex[4]), glVertex3dv(ver[4]);
 
 3706   SphericalNormalInv(ver[5], normal), glNormal3dv(normal), glTexCoord1d(tex[5]), glVertex3dv(ver[5]);
 
 3707   SphericalNormalInv(ver[1], normal), glNormal3dv(normal), glTexCoord1d(tex[1]), glVertex3dv(ver[1]);
 
 3719   if (xMin > xMax || z) 
option += 
"SDH=+";
 
 3734   static const Double_t zero = 0.001;
 
 3755      axisPainter.
PaintAxis(xMin, yMin, xMax, yMax, min, max, nDiv, 
option.c_str());
 
 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]));
 
 3799   if (xLeft - xMid || yLeft - yMid) {
 
 3800      TAxis *axis = leftType ? yAxis : xAxis;
 
 3801      if (leftLabel < leftMidLabel)
 
 3802         Draw2DAxis(axis, xLeft, yLeft, xMid, yMid, leftLabel, leftMidLabel,
 
 3805         Draw2DAxis(axis, xMid, yMid, xLeft, yLeft, leftMidLabel, leftLabel,
 
 3809   if (xRight - xMid || yRight - yMid) {
 
 3810      TAxis *axis = rightType ? yAxis : xAxis;
 
 3812      if (rightMidLabel < rightLabel)
 
 3813         Draw2DAxis(axis, xMid, yMid, xRight, yRight, rightMidLabel, rightLabel,
 
 3816         Draw2DAxis(axis, xRight, yRight, xMid, yMid, rightLabel, rightMidLabel,
 
 3821                                          + 
box[left + 4].X() - vp[0]));
 
 3823                                          + (1 - 
gPad->GetHNDC() - 
gPad->GetYlowNDC())
 
 3824                                          * 
gPad->GetWh() + vp[1]));
 
 3830                  Double_t zScale, std::vector<Double_t> &zLevels)
 
 3834   Double_t binLow = 0., binHigh = 0., binWidth = 0.;
 
 3836   zLevels.resize(nBins + 1);
 
 3838   for (
Int_t i = 0; i < nBins + 1; ++i)
 
 3839      zLevels[i] = (binLow + i * binWidth) * zScale;
 
 3850   glNormal3dv(norm1.
CArr());
 
 3852   glVertex3dv(
v1.CArr());
 
 3853   glNormal3dv(norm2.
CArr());
 
 3855   glVertex3dv(
v2.CArr());
 
 3856   glNormal3dv(norm3.
CArr());
 
 3858   glVertex3dv(
v3.CArr());
 
 3870   glNormal3dv(normal.
CArr());
 
 3872   glVertex3d(
v1.X(), 
v1.Y(), z);
 
 3874   glVertex3d(
v2.X(), 
v2.Y(), z);
 
 3876   glVertex3d(
v3.X(), 
v3.Y(), z);
 
 3907   if (
v < (vmin + 0.25 * dv)) {
 
 3909      rgba[1] = 4 * (
v - vmin) / dv;
 
 3911   } 
else if (
v < (vmin + 0.5 * dv)) {
 
 3914      rgba[2] = 1 + 4 * (vmin + 0.25 * dv - 
v) / dv;
 
 3915   } 
else if (
v < (vmin + 0.75 * dv)) {
 
 3916      rgba[0] = 4 * (
v - vmin - 0.5 * dv) / dv;
 
 3921      rgba[1] = 1 + 4 * (vmin + 0.75 * dv - 
v) / dv;
 
 3926      rgba[0] = (
v - vmin) / dv;
 
 3928      rgba[2] = (vmax - 
v) / dv;
 
 3931      rgba[0] = (
v - vmin) / dv;
 
 3936      if (
v < (vmin + dv / 6.0)) {
 
 3938         rgba[1] = 6 * (
v - vmin) / dv;
 
 3940      } 
else if (
v < (vmin + 2.0 * dv / 6.0)) {
 
 3941         rgba[0] = 1 + 6 * (vmin + dv / 6.0 - 
v) / dv;
 
 3944      } 
else if (
v < (vmin + 3.0 * dv / 6.0)) {
 
 3947         rgba[2] = 6 * (
v - vmin - 2.0 * dv / 6.0) / dv;
 
 3948      } 
else if (
v < (vmin + 4.0 * dv / 6.0)) {
 
 3950         rgba[1] = 1 + 6 * (vmin + 3.0 * dv / 6.0 - 
v) / dv;
 
 3952      } 
else if (
v < (vmin + 5.0 * dv / 6.0)) {
 
 3953         rgba[0] = 6 * (
v - vmin - 4.0 * dv / 6.0) / dv;
 
 3959         rgba[2] = 1 + 6 * (vmin + 5.0 * dv / 6.0 - 
v) / dv;
 
 3963      rgba[0] = (
v - vmin) / (vmax - vmin);
 
 3968      rgba[0] = (
v - vmin) / (vmax - vmin);
 
 3969      rgba[1] = (vmax - 
v) / (vmax - vmin);
 
 3973      if (
v < (vmin + 0.25 * dv)) {
 
 3975         rgba[1] = 4 * (
v - vmin) / dv;
 
 3976         rgba[2] = 1 - rgba[1];
 
 3977      } 
else if (
v < (vmin + 0.5 * dv)) {
 
 3978         rgba[0] = 4 * (
v - vmin - 0.25 * dv) / dv;
 
 3979         rgba[1] = 1 - rgba[0];
 
 3981      } 
else if (
v < (vmin + 0.75 * dv)) {
 
 3982         rgba[1] = 4 * (
v - vmin - 0.5 * dv) / dv;
 
 3983         rgba[0] = 1 - rgba[1];
 
 3987         rgba[2] = 4 * (
v - vmin - 0.75 * dv) / dv;
 
 3988         rgba[1] = 1 - rgba[2];
 
 3992      if (
v < (vmin + 0.5 * dv)) {
 
 3993         rgba[0] = 2 * (
v - vmin) / dv;
 
 3997         rgba[0] = 1 - 2 * (
v - vmin - 0.5 * dv) / dv;
 
 4003      if (
v < (vmin + dv / 3)) {
 
 4004         rgba[2] = 3 * (
v - vmin) / dv;
 
 4006         rgba[0] = 1 - rgba[2];
 
 4007      } 
else if (
v < (vmin + 2 * dv / 3)) {
 
 4009         rgba[1] = 3 * (
v - vmin - dv / 3) / dv;
 
 4012         rgba[0] = 3 * (
v - vmin - 2 * dv / 3) / dv;
 
 4013         rgba[1] = 1 - rgba[0];
 
 4018      if (
v < (vmin + 0.2 * dv)) {
 
 4020         rgba[1] = 5 * (
v - vmin) / dv;
 
 4022      } 
else if (
v < (vmin + 0.4 * dv)) {
 
 4025         rgba[2] = 1 + 5 * (vmin + 0.2 * dv - 
v) / dv;
 
 4026      } 
else if (
v < (vmin + 0.6 * dv)) {
 
 4027         rgba[0] = 5 * (
v - vmin - 0.4 * dv) / dv;
 
 4030      } 
else if (
v < (vmin + 0.8 * dv)) {
 
 4032         rgba[1] = 1 - 5 * (
v - vmin - 0.6 * dv) / dv;
 
 4036         rgba[1] = 5 * (
v - vmin - 0.8 * dv) / dv;
 
 4037         rgba[2] = 5 * (
v - vmin - 0.8 * dv) / 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;
 
 4043      rgba[0] = (
c2[0] - 
c1[0]) * (
v - vmin) / dv + 
c1[0];
 
 4044      rgba[1] = (
c2[1] - 
c1[1]) * (
v - vmin) / dv + 
c1[1];
 
 4045      rgba[2] = (
c2[2] - 
c1[2]) * (
v - vmin) / dv + 
c1[2];
 
 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;
 
 4052      vmid = vmin + ratio * dv;
 
 4054         rgba[0] = (
c2[0] - 
c1[0]) * (
v - vmin) / (ratio*dv) + 
c1[0];
 
 4055         rgba[1] = (
c2[1] - 
c1[1]) * (
v - vmin) / (ratio*dv) + 
c1[1];
 
 4056         rgba[2] = (
c2[2] - 
c1[2]) * (
v - vmin) / (ratio*dv) + 
c1[2];
 
 4058         rgba[0] = (
c3[0] - 
c2[0]) * (
v - vmid) / ((1-ratio)*dv) + 
c2[0];
 
 4059         rgba[1] = (
c3[1] - 
c2[1]) * (
v - vmid) / ((1-ratio)*dv) + 
c2[1];
 
 4060         rgba[2] = (
c3[2] - 
c2[2]) * (
v - vmid) / ((1-ratio)*dv) + 
c2[2];
 
 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;
 
 4068      vmid = vmin + ratio * dv;
 
 4070         rgba[0] = (
c2[0] - 
c1[0]) * (
v - vmin) / (ratio*dv) + 
c1[0];
 
 4071         rgba[1] = (
c2[1] - 
c1[1]) * (
v - vmin) / (ratio*dv) + 
c1[1];
 
 4072         rgba[2] = (
c2[2] - 
c1[2]) * (
v - vmin) / (ratio*dv) + 
c1[2];
 
 4074         rgba[0] = (
c3[0] - 
c2[0]) * (
v - vmid) / ((1-ratio)*dv) + 
c2[0];
 
 4075         rgba[1] = (
c3[1] - 
c2[1]) * (
v - vmid) / ((1-ratio)*dv) + 
c2[1];
 
 4076         rgba[2] = (
c3[2] - 
c2[2]) * (
v - vmid) / ((1-ratio)*dv) + 
c2[2];
 
 4081      rgba[1] = 1 - (
v - vmin) / dv;
 
 4085      if (
v < (vmin + 0.25 * dv)) {
 
 4087         rgba[1] = 4 * (
v - vmin) / dv;
 
 4089      } 
else if (
v < (vmin + 0.5 * dv)) {
 
 4092         rgba[2] = 1 - 4 * (
v - vmin - 0.25 * dv) / dv;
 
 4093      } 
else if (
v < (vmin + 0.75 * dv)) {
 
 4094         rgba[0] = 4 * (
v - vmin - 0.5 * dv) / dv;
 
 4100         rgba[2] = 4 * (
v - vmin - 0.75 * dv) / dv;
 
 4104      if (
v < (vmin + 0.5 * dv)) {
 
 4106         rgba[1] = 2 * (
v - vmin) / dv;
 
 4107         rgba[2] = 1 - 2 * (
v - vmin) / dv;
 
 4109         rgba[0] = 2 * (
v - vmin - 0.5 * dv) / dv;
 
 4110         rgba[1] = 1 - 2 * (
v - vmin - 0.5 * dv) / dv;
 
 4115      if (
v < (vmin + 0.5 * dv)) {
 
 4117         rgba[1] = 1 - 2 * (
v - vmin) / dv;
 
 4118         rgba[2] = 2 * (
v - vmin) / dv;
 
 4120         rgba[0] = 1 - 2 * (
v - vmin - 0.5 * dv) / dv;
 
 4121         rgba[1] = 2 * (
v - vmin - 0.5 * dv) / dv;
 
 4127      rgba[1] = (
v - vmin) / (vmax - vmin);
 
 4131      rgba[0] = (
v - vmin) / (vmax - vmin);
 
 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;
 
 4140      vmid = vmin + ratio * dv;
 
 4142         rgba[0] = (
c2[0] - 
c1[0]) * (
v - vmin) / (ratio*dv) + 
c1[0];
 
 4143         rgba[1] = (
c2[1] - 
c1[1]) * (
v - vmin) / (ratio*dv) + 
c1[1];
 
 4144         rgba[2] = (
c2[2] - 
c1[2]) * (
v - vmin) / (ratio*dv) + 
c1[2];
 
 4146         rgba[0] = (
c3[0] - 
c2[0]) * (
v - vmid) / ((1-ratio)*dv) + 
c2[0];
 
 4147         rgba[1] = (
c3[1] - 
c2[1]) * (
v - vmid) / ((1-ratio)*dv) + 
c2[1];
 
 4148         rgba[2] = (
c3[2] - 
c2[2]) * (
v - vmid) / ((1-ratio)*dv) + 
c2[2];
 
 4175   if (!(zRange.second - zRange.first))
 
 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",
 
 4192   while (nearestPow2 < paletteSize)
 
 4195   fTexels.resize(4 * nearestPow2);
 
 4203   for (
UInt_t i = 0; i < paletteSize; ++i) {
 
 4205      if (paletteInd > nColors - 1)
 
 4206         paletteInd = nColors - 1;
 
 4211         c->GetRGB(rgb[0], rgb[1], rgb[2]);
 
 4237   glEnable(GL_TEXTURE_1D);
 
 4241   glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
 
 4242   glBindTexture(GL_TEXTURE_1D, 
fTexture);
 
 4243   glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_WRAP_S, GL_REPEAT);
 
 4244   glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
 
 4245   glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
 
 4246   glTexImage1D(GL_TEXTURE_1D, 0, GL_RGBA, 
fTexels.size() / 4, 0,
 
 4247                GL_RGBA, GL_UNSIGNED_BYTE, &
fTexels[0]);
 
 4248   glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, 
GLint(
mode));
 
 4257   glDisable(GL_TEXTURE_1D);
 
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
 
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
 
virtual Int_t GetNdivisions() const
 
virtual Float_t GetLabelOffset() const
 
virtual Float_t GetTickLength() const
 
virtual Color_t GetLineColor() const
Return the line color.
 
virtual Width_t GetLineWidth() const
Return the line width.
 
virtual void SetLineWidth(Width_t lwidth)
Set the line width.
 
virtual Style_t GetLineStyle() const
Return the line style.
 
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
 
void Scale(Double_t factor)
Isotropically scale bounding box along it's LOCAL axes, preserving center.
 
Abstract base camera class - concrete classes for orthographic and perspective cameras derive from it...
 
TGLVector3 ViewportDeltaToWorld(const TGLVertex3 &worldRef, Double_t viewportXDelta, Double_t viewportYDelta, TGLMatrix *modviewMat=nullptr) const
Apply a 2D viewport delta (shift) to the projection of worldRef onto viewport, returning the resultan...
 
TGLVector3 WorldDeltaToViewport(const TGLVertex3 &worldRef, const TGLVector3 &worldDelta) const
Convert a 3D vector worldDelta (shift) about vertex worldRef to a viewport (screen) '3D' vector.
 
~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 &)
 
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.
 
const Double_t * CArr() const
 
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...
 
Bool_t GetXLog() const
Get X log.
 
const Rgl::Range_t & GetZRange() const
Z range.
 
Bool_t GetYLog() const
Get Y log.
 
Bool_t GetZLog() const
Get Z log.
 
const Rgl::Range_t & GetYRange() const
Y range.
 
const Rgl::Range_t & GetXRange() const
X range.
 
Wrapper class for GLU quadric shape drawing object.
 
GLUquadric * Get()
Get the internal raw GLU quadric object. Created on first call.
 
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.
 
void SetTimeFormat(const char *tformat)
Change the format used for time plotting.
 
virtual void PaintAxis(Double_t xmin, Double_t ymin, Double_t xmax, Double_t ymax, Double_t &wmin, Double_t &wmax, Int_t &ndiv, Option_t *chopt="", Double_t gridlength=0, Bool_t drawGridOnly=kFALSE)
Control function to draw an axis.
 
void SetLabelOffset(Float_t labeloffset)
 
virtual void ImportAxisAttributes(TAxis *axis)
Internal method to import TAxis attributes to this TGaxis.
 
void SetOption(Option_t *option="")
To set axis options.
 
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.