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");
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",
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'.
Double_t Dot(const TGLVector3 &v1, const TGLVector3 &v2)
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.