158 doFill(
fX.size(),
fX.data(),
fY.data());
169 for (std::size_t i = 0; i <
fX.size(); ++i) {
174 Double_t yc[5] = { my - dy, my, my + dy, my, my - dy };
180 Double_t yl[5] = { my - dy, my - dy, my + dy, my + dy, my - dy };
315 :
TVirtualPad(
name,title,xlow,ylow,xup,yup,color,bordersize,bordermode)
398 Error(
"TPad",
"You must create a TCanvas before creating a TPad");
407 if ((xlow < 0) || (xlow > 1) || (ylow < 0) || (ylow > 1)) {
408 Error(
"TPad",
"illegal bottom left position: x=%f, y=%f", xlow, ylow);
410 }
else if ((xup < 0) || (xup > 1) || (yup < 0) || (yup > 1)) {
411 Error(
"TPad",
"illegal top right position: x=%f, y=%f", xup, yup);
413 }
else if (xup-xlow <= 0) {
414 Error(
"TPad",
"illegal width: %f", xup-xlow);
416 }
else if (yup-ylow <= 0) {
417 Error(
"TPad",
"illegal height: %f", yup-ylow);
435 SetPad(
name, title, xlow, ylow, xup, yup, color, bordersize, bordermode);
577 while (
auto exec =
static_cast<TExec *
>(next()))
623 if (!lop)
return nullptr;
624 TList *lof =
nullptr;
631 auto AddEntryFromListOfFunctions = [&]() {
633 while ((obj = nextobj())) {
642 leg->AddEntry(obj, mes.
Data(),
"lpf");
646 while(
auto o = next()) {
652 if (o->InheritsFrom(
TNamed::Class()) && strlen(o->GetTitle()))
654 else if (strlen(o->GetName()))
657 mes = o->ClassName();
670 lof = ((
TH1 *)o)->GetListOfFunctions();
671 AddEntryFromListOfFunctions();
674 lof = ((
TGraph *)o)->GetListOfFunctions();
675 AddEntryFromListOfFunctions();
681 TIter nextgraph(grlist);
683 while ((obj = nextgraph())) {
695 leg->AddEntry(obj, mes.
Data(), opt);
698 AddEntryFromListOfFunctions();
703 TIter nexthist(hlist);
704 while ((obj = nexthist())) {
708 else if (strlen(hist->
GetName()))
716 leg->AddEntry( obj, mes.
Data(), opt );
725 Info(
"BuildLegend",
"No object(s) to build a TLegend.");
768 while (
auto obj = next()) {
771 if (
n == subpadnumber) {
772 return ((
TPad*)obj)->
cd();
812 if (pp && pp->GetPS())
839 for (
Int_t i=0;i<2;i++) {
852 while(code1 + code2) {
863 if (ic == 0) ic = code2;
865 yt =
y[0] + (
y[1]-
y[0])*(xclipl-
x[0])/(
x[1]-
x[0]);
869 yt =
y[0] + (
y[1]-
y[0])*(xclipr-
x[0])/(
x[1]-
x[0]);
873 xt =
x[0] + (
x[1]-
x[0])*(yclipb-
y[0])/(
y[1]-
y[0]);
877 xt =
x[0] + (
x[1]-
x[0])*(yclipt-
y[0])/(
y[1]-
y[0]);
883 code1 =
ClippingCode(xt,yt,xclipl,yclipb,xclipr,yclipt);
887 code2 =
ClippingCode(xt,yt,xclipl,yclipb,xclipr,yclipt);
901 for (
Int_t i=0;i<2;i++) {
910 if (
x[0] < xclipl) code1 = code1 | 0x1;
911 if (
x[0] > xclipr) code1 = code1 | 0x2;
912 if (
y[0] < yclipb) code1 = code1 | 0x4;
913 if (
y[0] > yclipt) code1 = code1 | 0x8;
915 if (
x[1] < xclipl) code2 = code2 | 0x1;
916 if (
x[1] > xclipr) code2 = code2 | 0x2;
917 if (
y[1] < yclipb) code2 = code2 | 0x4;
918 if (
y[1] > yclipt) code2 = code2 | 0x8;
922 while(code1 + code2) {
933 if (ic == 0) ic = code2;
935 yt =
y[0] + (
y[1]-
y[0])*(xclipl-
x[0])/(
x[1]-
x[0]);
939 yt =
y[0] + (
y[1]-
y[0])*(xclipr-
x[0])/(
x[1]-
x[0]);
943 xt =
x[0] + (
x[1]-
x[0])*(yclipb-
y[0])/(
y[1]-
y[0]);
947 xt =
x[0] + (
x[1]-
x[0])*(yclipt-
y[0])/(
y[1]-
y[0]);
953 code1 =
ClippingCode(xt,yt,xclipl,yclipb,xclipr,yclipt);
957 code2 =
ClippingCode(xt,yt,xclipl,yclipb,xclipr,yclipt);
970 if (
x < xcl1) code = code | 0x1;
971 if (
x > xcl2) code = code | 0x2;
972 if (
y < ycl1) code = code | 0x4;
973 if (
y > ycl2) code = code | 0x8;
1024 std::vector<Double_t> xc2(nn), yc2(nn);
1031 for (i = 0; i <
n; i++) {
1040 xc2[nc2] = xclipl; yc2[nc2++] = slope*(xclipl-
x1)+
y1;
1042 xc2[nc2] =
x2; yc2[nc2++] =
y2;
1046 xc2[nc2] = xclipl; yc2[nc2++] = slope*(xclipl-
x1)+
y1;
1047 xc2[nc2] =
x2; yc2[nc2++] =
y2;
1059 for (i = 0; i < nc2; i++) {
1060 x2 = xc2[i];
y2 = yc2[i];
1068 xc[nc] =
x1+(yclipt-
y1)*slope; yc[nc++] = yclipt;
1070 xc[nc] =
x2; yc[nc++] =
y2;
1074 xc[nc] =
x1+(yclipt-
y1)*slope; yc[nc++] = yclipt;
1075 xc[nc] =
x2; yc[nc++] =
y2;
1086 for (i = 0; i < nc; i++) {
1087 x2 = xc[i];
y2 = yc[i];
1095 xc2[nc2] = xclipr; yc2[nc2++] = slope*(xclipr-
x1)+
y1;
1097 xc2[nc2] =
x2; yc2[nc2++] =
y2;
1101 xc2[nc2] = xclipr; yc2[nc2++] = slope*(xclipr-
x1)+
y1;
1102 xc2[nc2] =
x2; yc2[nc2++] =
y2;
1114 for (i = 0; i < nc2; i++) {
1115 x2 = xc2[i];
y2 = yc2[i];
1123 xc[nc] =
x1+(yclipb-
y1)*slope; yc[nc++] = yclipb;
1125 xc[nc] =
x2; yc[nc++] =
y2;
1129 xc[nc] =
x1+(yclipb-
y1)*slope; yc[nc++] = yclipb;
1130 xc[nc] =
x2; yc[nc++] =
y2;
1175 if (!
gROOT->GetListOfCanvases())
return;
1177 gROOT->GetListOfCanvases()->Remove(
this);
1199 if (
gROOT->GetSelectedPad() ==
this)
1200 gROOT->SetSelectedPad(
nullptr);
1227 while (
auto obj = next()) {
1228 if (
auto pad =
dynamic_cast<TPad*
>(obj)) {
1259 Int_t pxl, pyl, pxt, pyt;
1264 if (px1 < px2) {pxl = px1; pxt = px2;}
1265 else {pxl = px2; pxt = px1;}
1266 if (py1 < py2) {pyl = py1; pyt = py2;}
1267 else {pyl = py2; pyt = py1;}
1271 if ( (px > pxl && px < pxt) && (py > pyl && py < pyt) ) {
1278 if (py < pyl) dxl += pyl - py;
1279 if (py > pyt) dxl += py - pyt;
1281 if (py < pyl) dxt += pyl - py;
1282 if (py > pyt) dxt += py - pyt;
1284 if (px < pxl) dyl += pxl - px;
1285 if (px > pxt) dyl += px - pxt;
1287 if (px < pxl) dyt += pxl - px;
1288 if (px > pxt) dyt += px - pxt;
1290 Int_t distance = dxl;
1291 if (dxt < distance) distance = dxt;
1292 if (dyl < distance) distance = dyl;
1293 if (dyt < distance) distance = dyt;
1367 arr[1] =
this; arr[2] = (
void*)&nx;arr[3] = (
void*)& ny;
1368 arr[4] = (
void*)&xmargin; arr[5] = (
void *)& ymargin; arr[6] = (
void *)&color;
1369 if ((*
gThreadXAR)(
"PDCD", 7, arr,
nullptr))
return;
1375 if (nx <= 0) nx = 1;
1376 if (ny <= 0) ny = 1;
1383 if (xmargin >= 0 && ymargin >= 0) {
1387 for (iy=0;iy<ny;iy++) {
1388 y2 = 1 - iy*dy - ymargin;
1389 y1 =
y2 - dy + 2*ymargin;
1391 if (
y1 >
y2)
continue;
1392 for (ix=0;ix<nx;ix++) {
1393 x1 = ix*dx + xmargin;
1394 x2 =
x1 +dx -2*xmargin;
1395 if (
x1 >
x2)
continue;
1420 for (
Int_t i=0;i<nx;i++) {
1424 if (i == nx-1)
x2 = 1-xr;
1425 for (
Int_t j=0;j<ny;j++) {
1426 number = j*nx + i +1;
1429 if (j == 0)
y2 = 1-yt;
1430 if (j == ny-1)
y1 = 0;
1461 const std::vector<double>& widthRatios,
1462 const std::vector<double>& heightRatios,
1463 const double canvasTopMargin,
1464 const double canvasLeftMargin
1469 int wrs = widthRatios.size();
1470 int hrs = heightRatios.size();
1473 if (wrs==0) nxl = nx;
1474 if (hrs==0) nyl = ny;
1484 if (canvasTopMargin <0 || canvasTopMargin >1 ) {
1485 Error(
"DivideRatios",
"The canvas top margin must be >= 0 and <= 1");
1488 y = 1.- canvasTopMargin;
1490 if (canvasLeftMargin <0 || canvasLeftMargin >1 ) {
1491 Error(
"DivideRatios",
"The canvas left margin must be >= 0 and <= 1");
1496 double sumOfHeightRatios = canvasTopMargin;
1498 for (
int i=0; i<nyl; i++) {
1499 yr = heightRatios[i];
1500 sumOfHeightRatios = sumOfHeightRatios + yr;
1501 if (yr <0 || yr >1 ) {
1502 Error(
"DivideRatios",
"Y ratios plus the top margin must be >= 0 and <= 1");
1507 if (sumOfHeightRatios > 1.) {
1508 Error(
"DivideRatios",
"The sum of Y ratios plus the top margin must be <= 1 %g",sumOfHeightRatios);
1511 double sumOfWidthRatios = canvasLeftMargin;
1513 for (
int j=0; j<nxl; j++) {
1514 xr = widthRatios[j];
1515 sumOfWidthRatios = sumOfWidthRatios +xr;
1516 if (xr <0 || xr >1 ) {
1517 Error(
"DivideRatios",
"X ratios must be >= 0 and <= 1");
1522 if (sumOfWidthRatios > 1.) {
1523 Error(
"DivideRatios",
"The sum of X ratios must be <= 1 %g ",sumOfWidthRatios);
1528 for (
int i=0; i<nyl; i++) {
1529 x = canvasLeftMargin;
1530 if (hrs) yr = heightRatios[i];
1532 for (
int j=0; j<nxl; j++) {
1533 if (wrs) xr = widthRatios[j];
1559 Error(
"DivideSquare",
"No canvas associated with this pad.");
1572 Divide(
w,
h, xmargin, ymargin, color);
1582 gROOT->MakeDefCanvas();
1619 if (!classobj)
return;
1621 const Int_t kMAXLEVELS = 10;
1622 TClass *clevel[kMAXLEVELS], *cl, *cll;
1624 TText *ptext =
nullptr;
1627 Int_t nd,nf,nc,nkd,nkf,i,j;
1640 Range(0,0,xpad,ypad);
1645 clevel[nlevel] = obj;
1654 if (nlevel >= maxlev-1)
break;
1658 Int_t ilevel, nelem;
1659 for (ilevel=nlevel;ilevel>=0;ilevel--) {
1660 cl = clevel[ilevel];
1662 if (nelem > maxelem) maxelem = nelem;
1663 nc = (nelem/50) + 1;
1673 if (dx < 1.3) dx = 1.3;
1674 tsizcm = tsizcm - 0.03*
Double_t(ncdraw-5);
1675 if (tsizcm < 0.27) tsizcm = 0.27;
1680 for (ilevel=nlevel;ilevel>=0;ilevel--) {
1681 cl = clevel[ilevel];
1683 if (nelem > maxelem) maxelem = nelem;
1684 nc = (nelem/50) + 1;
1686 if (ilevel < nlevel)
x1 =
x2 + 0.5;
1717 if (
box)
box->SetFillColor(17);
1730 if (i >= nkd) { i = 1;
y =
y1 - 0.5*dy;
x += 1/
Double_t(nc); }
1731 else { i++;
y -= dy; }
1735 Int_t dim =
d->GetArrayDim();
1737 snprintf(dname,256,
"%s",
d->GetName());
1739 while (indx < dim ){
1740 ldname = strlen(dname);
1741 snprintf(&dname[ldname],256-ldname,
"[%d]",
d->GetMaxIndex(indx));
1762 while ((
m = (
TMethod *) nextm())) {
1764 !strcmp(
m->
GetName(),
"Dictionary" ) ||
1765 !strcmp(
m->
GetName(),
"Class_Version" ) ||
1766 !strcmp(
m->
GetName(),
"DeclFileName" ) ||
1767 !strcmp(
m->
GetName(),
"DeclFileLine" ) ||
1768 !strcmp(
m->
GetName(),
"ImplFileName" ) ||
1769 !strcmp(
m->
GetName(),
"ImplFileLine" )
1772 if (fcount > nf)
break;
1773 if (i >= nkf) { i = 1;
y = ysep - 0.5*dy;
x += 1/
Double_t(nc); }
1774 else { i++;
y -= dy; }
1779 for (j=ilevel-1;j>=0;j--) {
1780 if (cl == clevel[ilevel]) {
1781 if (clevel[j]->GetMethodAny((
char*)
m->
GetName())) {
1824 auto cpad =
static_cast<TPad *
>(
gPad);
1836 Int_t px = cpad->GetEventX();
1837 Int_t py = cpad->GetEventY() + 1;
1838 if (canvas->GetCrosshair() > 1) {
1856 uu[0] = umin; uu[1] = umax;
1857 vv[0] =
vv[1] = 1. - 1. * py / canvas->GetWh();
1858 canvas->PaintPolyLineNDC(2, uu,
vv,
"icrosshair1");
1859 uu[0] = uu[1] = 1. * px / canvas->GetWw();
1860 vv[0] = vmin;
vv[1] = vmax;
1861 canvas->PaintPolyLineNDC(2, uu,
vv,
"icrosshair2");
1904 Warning(
"DrawFrame",
"Must be called for the current pad only");
1911 if (hframe)
delete hframe;
1919 std::vector<Double_t> xbins(nbins+1);
1921 for (
Int_t i=1;i<=nbins;i++) {
1924 hframe =
new TH1F(
"hframe",title,nbins,xbins.data());
1947 Double_t xlow, ylow, xup, yup, hs, ws;
1952 gPad->SetFillColor(0);
1957 text.SetTextFont(61);
1958 text.SetTextSize(0.07);
1959 text.SetTextAlign(22);
1966 for (i=0;i<10;i++) {
1973 box.SetFillStyle(1001);
1974 box.SetFillColor(color);
1975 box.DrawBox(xlow, ylow, xup, yup);
1976 box.SetFillStyle(0);
1977 box.SetLineColor(1);
1978 box.DrawBox(xlow, ylow, xup, yup);
1979 if (color == 1)
text.SetTextColor(0);
1980 else text.SetTextColor(1);
2018 if (newcode && (newcode !=
kEditor))
2069 auto setNewValues = [&inter, &parent,
this]() {
2106 if (!inter) inter = &dummy;
2128 if (!inter->ProcessMouseMove(parent, px, py,
kTRUE,
kTRUE, ratio))
2132 inter->ApplyChanges(parent);
2134 if (inter->IsOpaque(parent)) {
2145 if (inter && inter->IsOpaque(parent))
2148 if (
gROOT->IsEscaped()) {
2150 if (inter && inter->IsOpaque(parent)) {
2153 fWNDC = inter->oldX2;
2154 fHNDC = inter->oldY2;
2159 }
else if (inter && !inter->IsOpaque(parent) && (inter->newX1 != inter->newX2)) {
2222 xx[0] = xx[1] = zbx1;
2223 xx[2] = xx[3] = zbx2;
2224 yy[0] = yy[2] = zby1;
2225 yy[1] = yy[3] = zby2;
2227 xx[0] = xx[2] = zbx1;
2228 xx[1] = xx[3] = zbx2;
2229 yy[0] = yy[1] = zby1;
2230 yy[2] = yy[3] = zby2;
2235 pad.
PaintBox(zbx1, zby1, zbx2, zby2,
"iaxiszoom");
2269 if (strstr(opt,
"cont4")) {
2282 inter->axisNumber = 1;
2283 if (!strcmp(axis->
GetName(),
"xaxis"))
2285 else if (!strcmp(axis->
GetName(),
"yaxis"))
2287 else if (!strcmp(axis->
GetName(),
"zaxis"))
2288 inter->axisNumber = 3;
2291 }
else if (inter->axisNumber == 1) {
2295 inter->px2old = inter->px1old;
2302 inter->py2old = inter->py1old;
2311 }
else if (inter->axisNumber == 1) {
2318 inter->PaintZoomBox(*
this);
2352 if (
gROOT->IsEscaped()) {
2357 if (view && inter) {
2359 if (inter->ratio1 > inter->ratio2)
2360 std::swap(inter->ratio1, inter->ratio2);
2361 if (inter->ratio2 - inter->ratio1 > 0.05) {
2363 if (inter->axisNumber == 3 && hobj && hobj->GetDimension() != 3) {
2365 Float_t zmax = hobj->GetMaximum();
2367 if (zmin <= 0 && zmax > 0)
2372 Float_t newmin = zmin + (zmax - zmin) * inter->ratio1;
2373 Float_t newmax = zmin + (zmax - zmin) * inter->ratio2;
2375 newmin = hobj->GetBinContent(hobj->GetMinimumBin());
2377 newmax = hobj->GetBinContent(hobj->GetMaximumBin());
2382 hobj->SetMinimum(newmin);
2383 hobj->SetMaximum(newmax);
2398 if (inter->axisNumber == 1) {
2406 }
else if (inter->axisNumber == 2) {
2416 xmin = inter->ratio1;
2417 xmax = inter->ratio2;
2421 std::swap(inter->ratio1, inter->ratio2);
2430 xmin = ((
xmin - xmi) / (xma - xmi)) * (up - low) + low;
2431 xmax = ((
xmax - xmi) / (xma - xmi)) * (up - low) + low;
2434 if (!strcmp(axis->
GetName(),
"xaxis"))
2435 inter->axisNumber = 1;
2436 if (!strcmp(axis->
GetName(),
"yaxis"))
2437 inter->axisNumber = 2;
2438 if (inter->ratio2 - inter->ratio1 > 0.05) {
2443 if (inter->axisNumber == 1)
2445 if (inter->axisNumber == 2 && hobj1) {
2461 while (
auto obj = next()) {
2462 if (
auto hobj =
dynamic_cast<TH1 *
> (obj)) {
2465 bin1 = hobj->GetXaxis()->FindFixBin(
xmin);
2466 bin2 = hobj->GetXaxis()->FindFixBin(
xmax);
2467 if (inter->axisNumber == 1) {
2468 hobj->GetXaxis()->SetRange(bin1,bin2);
2469 }
else if (inter->axisNumber == 2) {
2470 if (hobj->GetDimension() == 1) {
2473 if (hobj->GetNormFactor() != 0) {
2474 Double_t norm = hobj->GetSumOfWeights()/hobj->GetNormFactor();
2478 hobj->SetMinimum(xxmin);
2479 hobj->SetMaximum(xxmax);
2482 bin1 = hobj->GetYaxis()->FindFixBin(
xmin);
2483 bin2 = hobj->GetYaxis()->FindFixBin(
xmax);
2484 hobj->GetYaxis()->SetRange(bin1,bin2);
2516 if (found)
return found;
2518 while (
auto cur = next()) {
2521 if (found)
return found;
2536 if (found)
return found;
2538 while (
auto cur = next()) {
2541 if (found)
return found;
2624 if (
fCanvas ==
this)
return nullptr;
2633 if (
fCanvas ==
this)
return nullptr;
2642 if (
fCanvas ==
this)
return nullptr;
2723 while (
auto obj = next())
2724 if (
auto p =
dynamic_cast<TPad *
>(obj))
2725 mask |=
p->IsAnyNeedRepaint();
2865 while ((obj=next())) {
2869 if (found)
return found;
2879 if (!subpadnumber) {
2886 while ((obj = next())) {
2889 if (pad->
GetNumber() == subpadnumber)
return pad;
2957 gROOT->SetSelectedPad(
this);
3027 if (i>=ncolors) i = ncolors-1;
3039 Int_t const cellSize = 10;
3046 for (
int i = 0; i <
fCGnx; i++)
3047 for (
int j = 0; j <
fCGny; j++)
3053 while(
auto o = iter()) {
3066 while (
auto og = nextgraph())
3070 while (
auto oh = nexthist()) {
3084 for (
int r = i;
r <
w + i;
r++) {
3085 for (
int c = j;
c <
h + j;
c++) {
3120 bool isFirstVertical =
false;
3121 bool isFirstHorizontal =
false;
3123 for (std::size_t i = 0;
option[i] !=
'\0'; ++i) {
3124 char letter = std::tolower(
option[i]);
3125 if (letter ==
'w') {
3130 }
else if (letter ==
't' || letter ==
'b') {
3131 isFirstVertical = !isFirstHorizontal;
3133 dy = letter ==
't' ? -1 : 1;
3134 }
else if (letter ==
'l' || letter ==
'r') {
3135 isFirstHorizontal = !isFirstVertical;
3137 dx = letter ==
'r' ? -1 : 1;
3141 if(dx < 0) std::swap(nxbeg, nxend);
3142 if(dy < 0) std::swap(nybeg, nyend);
3144 auto attemptPlacement = [&](
Int_t i,
Int_t j) {
3154 if(!isFirstVertical) {
3155 for (
Int_t i = nxbeg; i != nxend; i += dx) {
3156 for (
Int_t j = nybeg; j != nyend; j += dy) {
3157 if (attemptPlacement(i, j))
return true;
3162 for (
Int_t j = nybeg; j != nyend; j += dy) {
3163 for (
Int_t i = nxbeg; i != nxend; i += dx) {
3164 if (attemptPlacement(i, j))
return true;
3173#define NotFree(i, j) fCollideGrid[TMath::Max(TMath::Min(i + j * fCGnx, (fCGnx * fCGny) - 1), 0)] = kFALSE;
3202 for (i=
x1+1; i<
x2; i++) {
3212 for (j=
y1+1; j<
y2; j++) {
3232 for (
int i =
x1; i<=
x2; i++) {
3251 for (i =
x1; i<=
x2; i++) {
3256 for (i =
y1; i<=
y2; i++) {
3274 for (
Int_t i=s; i<
n; i=i+s) {
3276 g->GetPoint(i ,
x2,
y2);
3303 if (
name.Index(
"hframe") >= 0)
return;
3308 bool haserrors =
false;
3309 TString drawOption =
h->GetDrawOption();
3313 if (drawOption.
Index(
"hist") < 0) {
3314 if (drawOption.
Index(
"e") >= 0) haserrors =
true;
3317 Int_t nx =
h->GetNbinsX();
3322 for (i = 1; i<nx; i++) {
3324 x1l =
h->GetBinCenter(i);
3330 y1l =
h->GetBinContent(i)-
h->GetBinErrorLow(i);
3336 y2l =
h->GetBinContent(i)+
h->GetBinErrorUp(i);
3342 for (j=
y1; j<
y2; j++) {
3346 x1l =
h->GetBinLowEdge(i);
3352 y1l =
h->GetBinContent(i);
3359 x1l =
h->GetBinLowEdge(i)+
h->GetBinWidth(i);
3384 box.SetFillColorAlpha(
kRed,0.5);
3395 for (
int i = 0; i<
fCGnx; i++) {
3398 for (
int j = 0; j<
fCGny; j++) {
3415 box.DrawBox(X1L, Y1L, X2L, Y2L);
3417 box.SetFillColorAlpha(
kRed,t);
3418 box.DrawBox(X1L, Y1L, X2L, Y2L);
3422 if (t==0.15) t = 0.1;
3524 TObject *obj = lnk->GetObject();
3534 began3DScene =
kTRUE;
3537 obj->
Paint(lnk->GetOption());
3579 if (!
IsBatch() && (pp->IsCocoa() || (pp->IsNative() && (
style > 3000) && (
style < 3026))))
3580 pp->ClearDrawable();
3594 pp->SetAttFill({color, 1001});
3595 pp->SetOpacity(
style - 4000);
3597 }
else if ((
style >= 4000) && (
style <= 4100) && pp->IsCocoa() && (
this ==
fMother))
3599 else if ((color == 10) && (
style > 3000) && (
style < 3100))
3603 pp->SetAttFill({color,
style});
3604 pp->SetAttLine(*
this);
3617 box.SetFillColor(color);
3709 auto lnk = pList ? pList->
FirstLink() :
nullptr;
3713 ((
TPad*)obj)->PaintModified();
3738 Bool_t useXor = pp && pp->IsNative() && !pp->IsCocoa();
3747 auto lnk = pList ? pList->
FirstLink() :
nullptr;
3750 TObject *obj = lnk->GetObject();
3752 ((
TPad*)obj)->PaintModified();
3753 }
else if (needRepaint) {
3764 began3DScene =
kTRUE;
3767 obj->
Paint(lnk->GetOption());
3773 if (!useXor && needRepaint)
3805 auto savepad =
gPad;
3813 oper.second->Draw(*
this, pp, withXor);
3818 oper.second->Draw(*
this, pp, withXor);
3829 while (
auto obj = next()) {
3830 if (
auto pad =
dynamic_cast<TPad *
>(obj))
3831 pad->PaintOperations(withXor);
3853 fDrawOper[
option] = std::make_unique<TPadDrawOperation>(5,
x,
y, drawKind, pp->GetLineWidth());
3862 skip_fill = draw_border =
kTRUE;
3864 draw_border =
kTRUE;
3871 draw_border =
kTRUE;
3875 draw_fill =
style < 3026;
3878 draw_fill =
style > 4000;
3879 }
else if (
style > 0)
3880 draw_border =
kTRUE;
3882 if (draw_fill && !skip_fill)
3904 while (
auto obj = next()) {
3907 if (
auto pad =
dynamic_cast<TPad *
>(obj))
3908 pad->CopyBackgroundPixmaps(stop,
x,
y);
3916 Warning(
"PaintFillArea",
"Float_t signature is obsolete. Use Double_t signature.");
3938 std::vector<Double_t> xclip, yclip;
3942 xclip.resize(nc, 0.);
3943 yclip.resize(nc, 0.);
3964 Int_t fillstyle = pp->GetFillStyle();
3965 if (fillstyle >= 3100 && fillstyle < 4000)
3968 pp->DrawFillArea(nn, xx, yy);
3978 std::vector<Double_t> xw(
n), yw(
n);
3979 for (
int i=0; i<
n; i++) {
4021 static Double_t ang1[10] = { 0., 10., 20., 30., 45.,5., 60., 70., 80., 89.99};
4022 static Double_t ang2[10] = {180.,170.,160.,150.,135.,5.,120.,110.,100., 89.99};
4024 Int_t fasi = FillStyle % 1000;
4025 Int_t idSPA = fasi / 100;
4026 Int_t iAng2 = (fasi - 100 * idSPA) / 10;
4027 Int_t iAng1 = fasi % 10;
4035 TAttLine saveatt = pp->GetAttLine();
4037 pp->SetAttLine({ pp->GetAttFill().
GetFillColor(), 1, lw });
4040 if (ang1[iAng1] != 5.)
4042 if (ang2[iAng2] != 5.)
4045 pp->SetAttLine(saveatt);
4056 Int_t i, i1, i2, nbi;
4061 std::vector<Double_t> xli;
4062 std::vector<Double_t> yli;
4065 Double_t x,
y,
x1,
x2,
y1,
y2,
a,
b, xi, xip, xin, yi, yip;
4071 ratiox = 1./(rwxmax-rwxmin);
4072 ratioy = 1./(rwymax-rwymin);
4085 gPad->GetPadPar(x1p,y1p,x2p,y2p);
4094 for (i=1; i<=nn; i++) {
4095 x = wndc*ratiox*(xx[i-1]-rwxmin);
4096 y = hndc*ratioy*(yy[i-1]-rwymin);
4097 yrot = sina*
x+cosa*
y;
4104 while (dy * yindx >=
ymin) {
4105 ycur = dy * yindx--;
4111 for (i=2; i<=nn+1; i++) {
4114 if (i == nn+1) i2=1;
4116 x1 = wndc*ratiox*(xx[i1-1]-rwxmin);
4117 y1 = hndc*ratioy*(yy[i1-1]-rwymin);
4118 x2 = wndc*ratiox*(xx[i2-1]-rwxmin);
4119 y2 = hndc*ratioy*(yy[i2-1]-rwymin);
4121 xt1 = cosa*
x1-sina*
y1;
4122 yt1 = sina*
x1+cosa*
y1;
4123 xt2 = cosa*
x2-sina*
y2;
4124 yt2 = sina*
x2+cosa*
y2;
4135 if ((yi <= ycur) && (ycur < yip)) {
4154 a = (yt1-yt2)/(xt1-xt2);
4155 b = (yt2*xt1-xt2*yt1)/(xt1-xt2);
4167 if ((xi <= xin) && (xin < xip) &&
4176 std::sort(xli.begin(), xli.end());
4179 if ((nbi%2 != 0) || (nbi == 0))
4182 for (i=0; i<nbi; ++i) {
4184 Double_t ytmp = sinb*xli[i] + cosb*ycur;
4185 xli[i] = cosb*xli[i] - sinb*ycur;
4187 xli[i] = (xli[i]/wndc)*(rwxmax-rwxmin)+rwxmin;
4188 ytmp = (ytmp/hndc)*(rwymax-rwymin)+rwymin;
4189 yli.push_back(ytmp);
4192 gPad->PaintSegments(nbi/2, xli.data(), yli.data());
4212 pp->DrawLine(
x[0],
y[0],
x[1],
y[1]);
4225 pp->DrawLineNDC(u1,
v1, u2,
v2);
4242 for (i=0;i<3;i++) temp[i] = p1[i];
4244 for (i=0;i<3;i++) temp[i] = p2[i];
4246 PaintLine(xpad[0],xpad[1],xpad[3],xpad[4]);
4260 for (i=0;i<3;i++) temp[i] = p1[i];
4262 for (i=0;i<3;i++) temp[i] = p2[i];
4264 PaintLine(xpad[0],xpad[1],xpad[3],xpad[4]);
4283 if (
x<rmin[0] ||
x>rmax[0])
return;
4284 if (
y<rmin[1] ||
y>rmax[1])
return;
4285 if (z<rmin[2] || z>rmax[2])
return;
4310 Int_t i1 = -1,
np = 1, iclip = 0;
4311 for (
Int_t i = 0; i <
n - 1; i++) {
4326 if (iclip == 0 && i <
n-2)
4332 pp->DrawPolyLine(
np, &
x[i1], &
y[i1]);
4369 Int_t i1 = -1,
np = 1, iclip = 0;
4371 for (
Int_t i = 0; i <
n-1; i++) {
4386 if (iclip == 0 && i <
n-2)
4392 pp->DrawPolyLine(
np, &
x[i1], &
y[i1]);
4423 pp->DrawPolyLineNDC(
n,
x,
y);
4436 for (
Int_t i = 1; i <
n; i++)
4457 for (i=0; i<
n; i++) {
4461 if (i <
n-1)
continue;
4469 pp->DrawPolyMarker(
np, &
x[i1], &
y[i1]);
4492 for (i=0; i<
n; i++) {
4496 if (i <
n-1)
continue;
4505 pp->DrawPolyMarker(
np, &
x[i1], &
y[i1]);
4535 for (
Int_t i = 0; i < 2*
n; i+=2) {
4538 x[i] =
y[i] =
x[i+1] =
y[i+1] = 0;
4547 pp->DrawSegments(
n,
x,
y);
4563 pp->DrawSegmentsNDC(
n, u,
v);
4605 pp->DrawTextUrl(
x,
y,
text, url);
4653 if (!
gPad)
return nullptr;
4660 if (
this !=
gPad->GetCanvas()) {
4669 TPad *pick =
nullptr;
4670 TPad *picked =
this;
4674 pickobj = &dummyLink;
4703 pick = ((
TPad*)obj)->
Pick(px, py, pickobj);
4708 }
else if (!
gROOT->GetEditorMode()) {
4715 if (dist == 0)
break;
4730 if (
fView && !gotPrim) {
4749 if (!
button->IsEditable()) pickobj =
nullptr;
4754 if (picked ==
this) {
4777 while (
auto obj = next())
4974 const char *opt_default =
"ps";
4997 if (!title && opt.
Contains(
"gif+")) {
5000 }
else if (!title && opt.
Contains(
"gif")) {
5003 }
else if (!title && opt.
Contains(
"png")) {
5006 }
else if (!title && opt.
Contains(
"jpg")) {
5009 }
else if (!title && opt.
Contains(
"tiff")) {
5012 }
else if (!title && opt.
Contains(
"xpm")) {
5015 }
else if (!title && opt.
Contains(
"bmp")) {
5018 }
else if (!title && opt.
Contains(
"svg")) {
5020 }
else if (!title && opt.
Contains(
"pdf")) {
5022 }
else if (!title && opt.
Contains(
"html")) {
5027 Bool_t isweb = canv->IsWeb();
5028 Bool_t isbatch =
gROOT->IsBatch() || canv->IsBatch();
5037 auto cmd =
TString::Format(
"TWebCanvas::ProduceImage((TPad *) 0x%zx, \"%s\");", (
size_t)
this, psname.
Data());
5040 Error(
"Print",
"Fail create HTML file %s", psname.
Data());
5044 if (((!isbatch && image) || isweb) && pp) {
5045 Color_t hc = canv->GetHighLightColor();
5048 canv->SetHighLightColor(-1);
5053 auto res = pp->SaveAsImage(
this, psname.
Data(), gtype);
5056 canv->SetHighLightColor(hc);
5059 Warning(
"Print",
"Unsupported image format %s, fallback to TImageDump", psname.
Data());
5061 Info(
"Print",
"file %s has been created", psname.
Data());
5068 if (!title && opt.
Contains(
"cxx")) {
5074 if (!title && opt.
Contains(
"root")) {
5080 if (!title && opt.
Contains(
"xml")) {
5087 if (!title && opt.
Contains(
"json")) {
5106 if (
auto h =
gROOT->GetPluginManager()->FindHandler(
"TVirtualPS",
"svg")) {
5107 if (
h->LoadPlugin() == -1)
5124 if (wasModified && !
IsBatch())
5128 Info(
"Print",
"SVG file %s has been created", psname.
Data());
5150 if (
auto h =
gROOT->GetPluginManager()->FindHandler(
"TVirtualPS",
"tex")) {
5151 if (
h->LoadPlugin() == -1)
5158 if (strstr(opt,
"Standalone")) standalone =
kTRUE;
5171 if (wasModified && !
IsBatch())
5176 Info(
"Print",
"Standalone TeX file %s has been created", psname.
Data());
5178 Info(
"Print",
"TeX file %s has been created", psname.
Data());
5197 copen = psname.
EndsWith(
"(");
if (copen) psname[psname.
Length()-1] = 0;
5198 cclose = psname.
EndsWith(
")");
if (cclose) psname[psname.
Length()-1] = 0;
5199 copenb = psname.
EndsWith(
"[");
if (copenb) psname[psname.
Length()-1] = 0;
5200 ccloseb = psname.
EndsWith(
"]");
if (ccloseb) psname[psname.
Length()-1] = 0;
5204 if (copen || copenb) mustClose =
kFALSE;
5205 if (cclose || ccloseb) mustClose =
kTRUE;
5216 if (ratio < 1) pstype = 112;
5217 if (strstr(opt,
"Portrait")) pstype = 111;
5218 if (strstr(opt,
"Landscape")) pstype = 112;
5219 if (strstr(opt,
"eps")) pstype = 113;
5220 if (strstr(opt,
"Preview")) pstype = 113;
5227 const char *pluginName =
"ps";
5231 pluginName =
"image";
5233 if (
auto h =
gROOT->GetPluginManager()->FindHandler(
"TVirtualPS", pluginName)) {
5234 if (
h->LoadPlugin() == -1)
5243 if (titlePos !=
kNPOS) {
5253 if (!opt.
Contains(
"pdf") || image) {
5270 if (!copen)
Info(
"Print",
"%s file %s has been created", opt.
Data(), psname.
Data());
5271 else Info(
"Print",
"%s file %s has been created using the current canvas", opt.
Data(), psname.
Data());
5280 if (titlePos !=
kNPOS) {
5283 }
else if (!ccloseb) {
5287 if (cclose)
Info(
"Print",
"Current canvas added to %s file %s and file closed", opt.
Data(), psname.
Data());
5288 else Info(
"Print",
"%s file %s has been closed", opt.
Data(), psname.
Data());
5293 Info(
"Print",
"Current canvas added to %s file %s", opt.
Data(), psname.
Data());
5298 if (wasModified && !
IsBatch())
5304 gSystem->
Exec(
TString::Format(
"gs -quiet -dSAFER -dNOPLATFONTS -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/printer -dCompatibilityLevel=1.4 -dMaxSubsetPct=100 -dSubsetFonts=true -dEmbedAllFonts=true -sOutputFile=pdf_temp.pdf -f %s",
5319 Error(
"Range",
"illegal world coordinates range: x1=%f, y1=%f, x2=%f, y2=%f",
x1,
y1,
x2,
y2);
5357 Error(
"RangeAxis",
"illegal axis coordinates range: xmin=%f, ymin=%f, xmax=%f, ymax=%f",
5397 if (res && modified)
5442 TH1 *hobj =
nullptr;
5448 while ((obj = next())) {
5460 if (
g) hobj =
g->GetHistogram();
5477 gPad->GetUxmax(),
gPad->GetUymax());
5479 b->SetLineStyle(
gPad->GetFrameLineStyle());
5480 b->SetLineWidth(
gPad->GetFrameLineWidth());
5481 b->SetLineColor(
gPad->GetFrameLineColor());
5613 Error(
"ResizePad",
"Cannot resize pad. No current pad available.");
5616 if (
gPad->GetWw()==0.0||
gPad->GetWh()==0.0) {
5617 Warning(
"ResizePad",
"gPad has at least one zero dimension.");
5621 Warning(
"ResizePad",
"The pad has at least one zero dimension.");
5626 if (
this ==
gPad->GetCanvas()) {
5634 Warning(
"ResizePad",
"The parent pad has at least one zero dimension.");
5683 while (
auto obj = next()) {
5689 if (
gPad->IsBatch())
5692 if (pp->IsNative()) {
5694 auto attl = pp->GetAttLine();
5695 attl.SetLineColor(-1);
5696 pp->SetAttLine(attl);
5697 auto attt = pp->GetAttText();
5698 attt.SetTextSize(-1);
5700 pp->SetAttText(attt);
5711 Warning(
"ResizePad",
"Inf/NaN propagated to the pad. Check drawn objects.");
5712 if (w <= 0 || w > 10000) {
5713 Warning(
"ResizePad",
"%s width changed from %d to %d\n",
GetName(),
w,10);
5716 if (h <= 0 || h > 10000) {
5717 Warning(
"ResizePad",
"%s height changed from %d to %d\n",
GetName(),
h,10);
5786 ((
TPad*)
this)->Print(psname,
"gif");
5831 auto p = padName.
Index(
" ");
5837 static Int_t pcounter = 0;
5842 const char *pname = padName.
Data();
5845 if (padName.
Length() == 0) {
5847 if (
this ==
gPad->GetCanvas())
5854 if (
this !=
gPad->GetCanvas()) {
5856 out <<
"// ------------>Primitives in pad: " <<
GetName() <<
"\n";
5857 out <<
" TPad *" <<
cname <<
" = new TPad(\"" <<
GetName() <<
"\", \""
5860 out <<
" " <<
cname <<
"->Draw();\n";
5861 out <<
" " <<
cname <<
"->cd();\n";
5863 out <<
" " <<
cname <<
"->Range(" <<
fX1 <<
"," <<
fY1 <<
"," <<
fX2 <<
"," <<
fY2 <<
");\n";
5868 out <<
" TView::CreateView(1)->SetRange(" << rmin[0] <<
", " << rmin[1] <<
", " << rmin[2] <<
", " << rmax[0]
5869 <<
", " << rmax[1] <<
", " << rmax[2] <<
");\n";
5879 out <<
" " <<
cname <<
"->SetLogx();\n";
5881 out <<
" " <<
cname <<
"->SetLogy();\n";
5883 out <<
" " <<
cname <<
"->SetLogz();\n";
5885 out <<
" " <<
cname <<
"->SetGridx();\n";
5887 out <<
" " <<
cname <<
"->SetGridy();\n";
5889 out <<
" " <<
cname <<
"->SetTickx(" <<
GetTickx() <<
");\n";
5891 out <<
" " <<
cname <<
"->SetTicky(" <<
GetTicky() <<
");\n";
5893 out <<
" " <<
cname <<
"->SetTheta(" <<
GetTheta() <<
");\n";
5895 out <<
" " <<
cname <<
"->SetPhi(" <<
GetPhi() <<
");\n";
5927 out <<
" " <<
cname <<
"->SetFrameFillStyle(" << frame->
GetFillStyle() <<
");\n";
5929 out <<
" " <<
cname <<
"->SetFrameLineStyle(" << frame->
GetLineStyle() <<
");\n";
5933 out <<
" " <<
cname <<
"->SetFrameLineWidth(" << frame->
GetLineWidth() <<
");\n";
5942 while (
auto obj = next()) {
5946 out <<
" " << pname <<
"->cd();\n";
5948 out <<
" " <<
cname <<
"->cd();\n";
5951 out <<
" " <<
cname <<
"->Modified();\n";
5964 Error(
"SetAspectRatio",
"cannot fix aspect ratio, height of pad is 0");
5988 while ((obj = next())) {
6002 if (fstyle == 0) fstyle = 4000;
6065 if ((xlow < 0) || (xlow > 1) || (ylow < 0) || (ylow > 1)) {
6066 Error(
"TPad",
"illegal bottom left position: x=%f, y=%f", xlow, ylow);
6069 if ((xup < 0) || (xup > 1) || (yup < 0) || (yup > 1)) {
6070 Error(
"TPad",
"illegal top right position: x=%f, y=%f", xup, yup);
6073 if (xup-xlow <= 0) {
6074 Error(
"TPad",
"illegal width: %f", xup-xlow);
6077 if (yup-ylow <= 0) {
6078 Error(
"TPad",
"illegal height: %f", yup-ylow);
6115 SetPad(xlow, ylow, xup, yup);
6123 if (!view)
delete fView;
6136 pp->SetAttFill({color,
style});
6148 pp->SetAttLine({color,
style, lwidth});
6160 pp->SetAttMarker({color,
style, msize});
6172 if (font % 10 > 2) {
6185 pp->SetAttText({align,
angle, color, font, tsize});
6199 if (aBBox.
fX<bBBox.
fX) {
6215 else if (
mode ==
'y') {
6216 if (aBBox.
fY<bBBox.
fY) {
6284 std::vector<dField> curDist;
6285 std::vector<dField> otherDist;
6295 Int_t dSizeArrow = 12;
6297 movedX = movedY =
false;
6300 if (
mode !=
'i') resize =
true;
6309 static TPad *tmpGuideLinePad =
nullptr;
6312 if (tmpGuideLinePad) {
6314 auto guidePadClicked = (
object == tmpGuideLinePad);
6315 tmpGuideLinePad->
Delete();
6316 tmpGuideLinePad =
nullptr;
6317 if (guidePadClicked)
return;
6321 prims =
gPad->GetListOfPrimitives();
6328 if (!tmpGuideLinePad){
6329 tmpGuideLinePad =
new TPad(
"tmpGuideLinePad",
"tmpGuideLinePad", 0, 0, 1, 1);
6335 tmpGuideLinePad->
Draw();
6336 tmpGuideLinePad->
cd();
6339 if (cling && !log) threshold = 7;
6352 MX =
gPad->GetX1() + 0.5 * (
gPad->GetX2()-
gPad->GetX1());
6353 MY =
gPad->GetY1() + 0.5 * (
gPad->GetY2()-
gPad->GetY1());
6354 pMX =
gPad->XtoPixel(MX);
6355 pMY =
gPad->YtoPixel(MY);
6358 if (cling && (!resize)) {
6366 L->SetLineColor(lineColor);
6370 if (cling && (!resize)) {
6378 L->SetLineColor(lineColor);
6382 for (
UInt_t i = 0; i<
n; i++) {
6388 if (cling && (!resize)) {
6395 L->SetLineColor(lineColor);
6400 if (cling && (!resize)) {
6408 L->SetLineColor(lineColor);
6415 for (
UInt_t i = 0; i<
n; i++) {
6418 aBBox =
a->GetBBox();
6419 for (
UInt_t j = i+1; j<
n; j++) {
6422 bBBox =
b->GetBBox();
6430 if ((
b != cur)&&(
a != cur)) otherDist.push_back(abDist);
6431 else curDist.push_back(abDist);
6438 if ((
b != cur)&&(
a != cur)) otherDist.push_back(abDist);
6439 else curDist.push_back(abDist);
6447 for (
UInt_t i = 0; i<curDist.size(); i++) {
6448 for (
UInt_t j = 0; j<otherDist.size(); j++) {
6449 if ((curDist[i].fdir == otherDist[j].fdir) && (otherDist[j].fdir==
'x') && (
TMath::Abs(curDist[i].fdist-otherDist[j].fdist)<threshold)) {
6450 if (cling && (!movedX) && (!resize)) {
6456 DrawDist(curDist[i].fa->GetBBox(), curDist[i].fb->GetBBox(),
'x');
6457 DrawDist(otherDist[j].fa->GetBBox(), otherDist[j].fb->GetBBox(),
'x');
6459 if ((curDist[i].fdir == otherDist[j].fdir) && (otherDist[j].fdir==
'y') && (
TMath::Abs(curDist[i].fdist-otherDist[j].fdist)<threshold)) {
6460 if (cling && (!movedY) && (!resize)) {
6466 DrawDist(curDist[i].fa->GetBBox(), curDist[i].fb->GetBBox(),
'y');
6467 DrawDist(otherDist[j].fa->GetBBox(), otherDist[j].fb->GetBBox(),
'y');
6470 for (
UInt_t j = i; j<curDist.size(); j++) {
6472 if ((curDist[i].fdir == curDist[j].fdir) && (curDist[j].fdir==
'x') && (
TMath::Abs(curDist[i].fdist-curDist[j].fdist)<threshold)) {
6473 if (cling && (!movedX) && (!resize)) {
6478 DrawDist(curDist[i].fa->GetBBox(), curDist[i].fb->GetBBox(),
'x');
6479 DrawDist(curDist[j].fa->GetBBox(), curDist[j].fb->GetBBox(),
'x');
6482 if ((curDist[i].fdir == curDist[j].fdir) && (curDist[j].fdir==
'y') && (
TMath::Abs(curDist[i].fdist-curDist[j].fdist)<threshold)) {
6483 if (cling && (!movedY) && (!resize)) {
6488 DrawDist(curDist[i].fa->GetBBox(), curDist[i].fb->GetBBox(),
'y');
6489 DrawDist(curDist[j].fa->GetBBox(), curDist[j].fb->GetBBox(),
'y');
6496 for (
UInt_t i = 0; i<
n; i++) {
6498 if (
a && (cur !=
a)) {
6499 aBBox =
a->GetBBox();
6511 gPad->PixeltoX(aBBox.
fX+aBBox.
fWidth),
gPad->PixeltoY(aBBox.
fY-dSizeArrow-
gPad->VtoPixel(0)), 0.01,
"<|>");
6553 if (tmpGuideLinePad) {
6556 tmpGuideLinePad->
Delete();
6557 tmpGuideLinePad =
nullptr;
6643 Int_t nch, nobjects;
6646 if (
b.IsReading()) {
6665 while ((obj = next())) {
6687 b >> single;
fX1 = single;
6688 b >> single;
fY1 = single;
6689 b >> single;
fX2 = single;
6690 b >> single;
fY2 = single;
6697 b >> single;
fX1 = single;
6698 b >> single;
fY1 = single;
6699 b >> single;
fX2 = single;
6700 b >> single;
fY2 = single;
6727 b >> single;
fWNDC = single;
6728 b >> single;
fHNDC = single;
6802 char drawoption[64];
6803 for (
Int_t i = 0; i < nobjects; i++) {
6806 b.ReadFastArray(drawoption,nch);
6828 b >> single;
fPhi = single;
6892 while ((obj = next())) {
6979 if (emode && strlen(emode))
gROOT->SetEditorMode(emode);
6980 if (
gROOT->GetEditorMode() == 0 && pname && strlen(pname) > 2)
gROOT->SetEditorMode(&pname[1]);
6984 TObject *oldlast =
gPad->GetListOfPrimitives() ?
gPad->GetListOfPrimitives()->Last() :
nullptr;
6987 Bool_t hasname = pname && (strlen(pname) > 0);
6988 if ((!pname || !pname[0]) && (!emode || !emode[0])) testlast =
kTRUE;
6989 if (testlast)
gROOT->SetEditorMode();
6991 if (
gROOT->GetEditorMode() == 0) {
6994 if (obj)
return obj;
6997 if (!
gPad->GetListOfPrimitives())
return nullptr;
6998 obj =
gPad->GetListOfPrimitives()->Last();
6999 if (obj != oldlast)
return obj;
7020 if (
gPad->IsBatch())
return nullptr;
7044 (
size_t)tip,(
size_t)
this).Data());
7062 ::Info(
"TPad::x3d()",
"This function is deprecated. Use %s->GetViewer3D(\"x3d\") instead",this->
GetName());
7065 if (!type || !
type[0]) {
7106 if (!strstr(
type,
"pad")) {
7110 Warning(
"GetViewer3D",
"Cannot create 3D viewer of type: %s",
type);
7115 if (strstr(
type,
"gl") && !strstr(
type,
"ogl")) {
7120 createdExternal =
kTRUE;
7138 if (createdExternal) {
7221 p.SetX(
gPad->XtoPixel(
x));
7222 p.SetY(
gPad->YtoPixel(
y));
const Int_t kMaxPixel
Max value for an int.
short Style_t
Style number (short)
int Int_t
Signed integer 4 bytes (int)
short Color_t
Color number (short)
float Size_t
Attribute size (float)
long Longptr_t
Integer large enough to hold a pointer (platform-dependent)
short Version_t
Class version identifier (short)
long Long_t
Signed long integer 4 bytes (long). Size depends on architecture.
short Width_t
Line width (short)
float Float_t
Float 4 bytes (float)
short Short_t
Signed Short integer 2 bytes (short)
double Double_t
Double 8 bytes.
constexpr Ssiz_t kNPOS
The equivalent of std::string::npos for the ROOT class TString.
const char Option_t
Option string (const char)
winID h TVirtualViewer3D TVirtualGLPainter p
winID h TVirtualViewer3D vv
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 mask
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t cursor
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 filename
Option_t Option_t SetFillStyle
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 np
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 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 cname
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void value
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 GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void SetCursor
Option_t Option_t SetFillColor
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 button
Option_t Option_t TPoint TPoint const char text
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 mx
Option_t Option_t TPoint TPoint const char y1
Double_t pixel_boundary(Double_t v)
Check value for valid range for pixel values.
R__EXTERN TPluginManager * gPluginMgr
R__EXTERN TVirtualMutex * gROOTMutex
R__EXTERN TStyle * gStyle
R__EXTERN TSystem * gSystem
#define R__LOCKGUARD(mutex)
R__EXTERN TVirtualPS * gVirtualPS
R__EXTERN Int_t(* gThreadXAR)(const char *xact, Int_t nb, void **ar, Int_t *iret)
Draw all kinds of Arrows.
void Draw(Option_t *option="") override
Draw this arrow with its current attributes.
Abstract base class for elements drawn in the editor.
virtual void SetBBoxCenterY(const Int_t y)=0
virtual void SetBBoxCenterX(const Int_t x)=0
virtual void SetBBoxX1(const Int_t x)=0
virtual void SetBBoxY1(const Int_t y)=0
virtual void SetBBoxX2(const Int_t x)=0
virtual void SetBBoxY2(const Int_t y)=0
virtual Rectangle_t GetBBox()=0
virtual TPoint GetBBoxCenter()
virtual void Streamer(TBuffer &)
virtual Color_t GetFillColor() const
Return the fill area color.
virtual Style_t GetFillStyle() const
Return the fill area style.
virtual void SetFillColor(Color_t fcolor)
Set the fill area color.
virtual Bool_t IsTransparent() const
virtual void SetFillStyle(Style_t fstyle)
Set the fill area style.
virtual void SaveFillAttributes(std::ostream &out, const char *name, Int_t coldef=1, Int_t stydef=1001)
Save fill attributes as C++ statement(s) on output stream out.
virtual void Streamer(TBuffer &)
virtual Color_t GetLineColor() const
Return the line color.
virtual void SetLineStyle(Style_t lstyle)
Set the line style.
virtual Width_t GetLineWidth() const
Return the line width.
virtual void SetLineWidth(Width_t lwidth)
Set the line width.
Width_t fLineWidth
Line width.
virtual void ModifyOn(TVirtualPad &pad)
Change current line attributes on specified pad.
virtual void SetLineColor(Color_t lcolor)
Set the line color.
virtual Style_t GetLineStyle() const
Return the line style.
void Copy(TAttLine &attline) const
Copy this line attributes to a new TAttLine.
virtual void SetBottomMargin(Float_t bottommargin)
Set Pad bottom margin in fraction of the pad height.
Color_t GetFrameFillColor() const
virtual void SetLeftMargin(Float_t leftmargin)
Set Pad left margin in fraction of the pad width.
Color_t GetFrameLineColor() const
Style_t GetFrameLineStyle() const
Float_t fRightMargin
RightMargin.
Style_t GetFrameFillStyle() const
Float_t fLeftMargin
LeftMargin.
Float_t fTopMargin
TopMargin.
Float_t GetLeftMargin() const
Width_t GetFrameLineWidth() const
Float_t GetBottomMargin() const
virtual void SetRightMargin(Float_t rightmargin)
Set Pad right margin in fraction of the pad width.
Float_t GetRightMargin() const
Int_t GetFrameBorderMode() const
virtual void SetTopMargin(Float_t topmargin)
Set Pad top margin in fraction of the pad height.
Width_t GetFrameBorderSize() const
Float_t fBottomMargin
BottomMargin.
Float_t GetTopMargin() const
virtual void Streamer(TBuffer &)
Stream an object of class TAttPad.
virtual Float_t GetTextSize() const
Return the text size.
virtual void SetTextAlign(Short_t align=11)
Set the text alignment.
virtual Short_t GetTextAlign() const
Return the text alignment.
virtual Font_t GetTextFont() const
Return the text font.
virtual Color_t GetTextColor() const
Return the text color.
virtual void SetTextAngle(Float_t tangle=0)
Set the text angle.
virtual Float_t GetTextAngle() const
Return the text angle.
virtual void SetTextColor(Color_t tcolor=1)
Set the text color.
virtual void SetTextFont(Font_t tfont=62)
Set the text font.
virtual void SetTextSize(Float_t tsize=1)
Set the text size.
void PaintZoomBox(TPad &pad)
Class to manage histogram axis.
virtual Double_t GetBinLowEdge(Int_t bin) const
Return low edge of bin.
virtual Int_t FindFixBin(Double_t x) const
Find bin number corresponding to abscissa x
Int_t GetLast() const
Return last bin on the axis i.e.
virtual void SetLimits(Double_t xmin, Double_t xmax)
virtual TObject * GetParent() const
virtual void SetRange(Int_t first=0, Int_t last=0)
Set the viewing range for the axis using bin numbers.
virtual Double_t GetBinUpEdge(Int_t bin) const
Return up edge of bin.
Int_t GetFirst() const
Return first bin on the axis i.e.
Each class (see TClass) has a linked list of its base class(es).
TClass * GetClassPointer(Bool_t load=kTRUE)
Get pointer to the base class TClass.
void CalcPixelCoord(const TVirtualPad &parent, Double_t x1, Double_t y1, Double_t x2, Double_t y2)
Calculate pixel coordinates.
virtual void SetY2(Double_t y2)
virtual void SetX1(Double_t x1)
virtual void SetX2(Double_t x2)
virtual void SetY1(Double_t y1)
Using a TBrowser one can browse all ROOT objects.
Buffer base class used for serializing objects.
ABC describing GUI independent main window (with menubar, scrollbars and a drawing area).
virtual Int_t RequestLocator(Int_t &x, Int_t &y)
Request current mouse pointer, redirect to gVirtualX.
UInt_t GetWindowHeight() const
TObject * GetClickSelected() const
TVirtualPad * GetClickSelectedPad() const
void SetClickSelectedPad(TPad *pad)
void SetSelectedPad(TPad *pad)
void SetDoubleBuffer(Int_t mode=1) override
Set Double Buffer On/Off.
TCanvasImp * GetCanvasImp() const override
Bool_t IsRetained() const override
Int_t GetEventY() const override
Bool_t IsBatch() const override
TVirtualPadPainter * GetCanvasPainter()
Access and (probably) creation of pad painter.
Color_t GetHighLightColor() const override
Bool_t EnsurePSPainter(Bool_t create, TVirtualPadPainter *&oldp)
Replace canvas painter For internal use only - when creating PS images.
Bool_t IsGrayscale()
Check whether this canvas is to be drawn in grayscale mode.
void SaveSource(const char *filename="", Option_t *option="")
Save primitives in this canvas as a C++ macro file.
virtual void HandleInput(EEventType button, Int_t x, Int_t y)
Handle Input Events.
void UpdateAsync() override
Asynchronous canvas update.
TObject * GetSelected() const override
Int_t GetEventX() const override
void SetCanvasSize(UInt_t ww, UInt_t wh) override
Set Width and Height of canvas to ww and wh respectively.
TVirtualPad * GetSelectedPad() const override
void SetCursor(ECursor cursor) override
Set cursor.
Int_t GetCanvasID() const override
UInt_t GetWindowWidth() const
void SetClickSelected(TObject *obj)
TVirtualPad * GetPadSave() const override
void Update() override
Update canvas pad buffers.
virtual void Cleared(TVirtualPad *pad)
Emit pad Cleared signal.
UInt_t GetWw() const override
Bool_t OpaqueMoving() const override
UInt_t GetWh() const override
void FeedbackMode(Bool_t set) override
Turn rubberband feedback mode on or off.
Int_t GetDoubleBuffer() const override
void SetSelected(TObject *obj) override
Set selected canvas.
Int_t GetEvent() const override
Bool_t IsWeb() const override
Is web canvas.
void SetBatch(Bool_t batch=kTRUE) override
Toggle batch mode.
TVirtualPad * fHilightPadBorder
! pad which border will be hilghlighrt when paint canvas
Bool_t OpaqueResizing() const override
TClass instances represent classes, structs and namespaces in the ROOT type system.
TList * GetListOfMethods(Bool_t load=kTRUE)
Return list containing the TMethods of a class.
Int_t GetNmethods()
Return the number of methods of this class Note that in case the list of methods is not yet created,...
Int_t GetNdata()
Return the number of data members of this class Note that in case the list of data members is not yet...
TList * GetListOfDataMembers(Bool_t load=kTRUE)
Return list containing the TDataMembers of a class.
TList * GetListOfBases()
Return list containing the TBaseClass(es) of a class.
void ls(Option_t *option="") const override
List (ls) all objects in this collection.
void Browse(TBrowser *b) override
Browse this collection (called by TBrowser).
virtual Int_t GetSize() const
Return the capacity of the collection, i.e.
static Int_t GetColor(const char *hexcolor)
Static method returning color number for color specified by hex color string of form: "#rrggbb",...
static TString SavePrimitiveColor(Int_t ci)
Convert color in C++ statement which can be used in SetColor directives Produced statement either inc...
static void SetGrayscale(Bool_t set=kTRUE)
Set whether all colors should return grayscale values.
static void Pave(Int_t event, Int_t px, Int_t py, Int_t mode)
Create a new pavetext in gPad.
static void Line(Int_t event, Int_t px, Int_t py, Int_t mode)
Create a new line/arrow in this gPad.
static void PolyLine(Int_t event, Int_t px, Int_t py, Int_t mode)
Create a new PolyLine in gPad.
static void Text(Int_t event, Int_t px, Int_t py, Int_t mode)
Create a new TLatex at the cursor position in gPad.
static void Ellipse(Int_t event, Int_t px, Int_t py, Int_t mode)
Create a new arc/ellipse in this gPad.
static void Pad(Int_t event, Int_t px, Int_t py, Int_t)
Create a new pad in gPad.
All ROOT classes may have RTTI (run time type identification) support added.
This class stores the date and time with a precision of one second in an unsigned 32 bit word (950130...
const char * AsSQLString() const
Return the date & time in SQL compatible string format, like: 1997-01-15 20:16:28.
const char * AsString() const
Return the date & time as a string (ctime() format).
virtual Int_t GetValue(const char *name, Int_t dflt) const
Returns the integer value for a resource.
TExec is a utility class that can be used to execute a C++ command when some event happens in a pad.
void Paint(Option_t *option="") override
Paint this wbox with its current attributes.
void UseCurrentStyle() override
Replace current frame attributes by current style.
A TGraph is an object made of two arrays X and Y with npoints each.
@ kClipFrame
Clip to the frame boundary.
1-D histogram with a float per channel (see TH1 documentation)
TH1 is the base class of all histogram classes in ROOT.
virtual void SetDirectory(TDirectory *dir)
By default, when a histogram is created, it is added to the list of histogram objects in the current ...
virtual Double_t GetNormFactor() const
virtual Int_t GetDimension() const
@ kNoStats
Don't draw stats box.
@ kIsZoomed
Bit set when zooming on Y axis.
virtual Double_t GetSumOfWeights() const
Return the sum of weights across all bins excluding under/overflows.
virtual void SetMaximum(Double_t maximum=-1111)
void Draw(Option_t *option="") override
Draw this histogram with options.
virtual void SetMinimum(Double_t minimum=-1111)
virtual TH1 * DrawCopy(Option_t *option="", const char *name_postfix="_copy") const
Copy this histogram and Draw in the current pad.
virtual Double_t GetMinimum(Double_t minval=-FLT_MAX) const
Return minimum value larger than minval of bins in the range, unless the value has been overridden by...
The Histogram stack class.
TH1 * GetHistogram() const
Returns a pointer to the histogram used to draw the axis.
Option_t * GetOption() const
This class displays a legend box (TPaveText) containing several legend entries.
Use the TLine constructor to create a simple line.
Option_t * GetOption() const override
Returns the object option stored in the list.
TObject * After(const TObject *obj) const override
Returns the object after object obj.
void Clear(Option_t *option="") override
Remove all objects from the list.
virtual TObjLink * LastLink() const
TObject * FindObject(const char *name) const override
Find an object in this list using its name.
void RecursiveRemove(TObject *obj) override
Remove object from this collection and recursively remove the object from all other objects (and coll...
void Add(TObject *obj) override
TObject * Remove(TObject *obj) override
Remove object from the list.
void AddLast(TObject *obj) override
Add object at the end of the list.
TObject * Last() const override
Return the last object in the list. Returns 0 when list is empty.
TObject * First() const override
Return the first object in the list. Returns 0 when list is empty.
virtual TObjLink * FirstLink() const
TObject * At(Int_t idx) const override
Returns the object at position idx. Returns 0 if idx is out of range.
void AddFirst(TObject *obj) override
Add object at the beginning of the list.
Each ROOT class (see TClass) has a linked list of methods.
A TMultiGraph is a collection of TGraph (or derived) objects.
TH1F * GetHistogram()
Returns a pointer to the histogram used to draw the axis.
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
const char * GetName() const override
Returns name of object.
const char * GetTitle() const override
Returns title of object.
virtual void SetName(const char *name)
Set the name of the TNamed.
Wrapper around a TObject so it can be stored in a TList.
void SetObject(TObject *obj)
TObject * GetObject() const
Mother of all ROOT objects.
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
Computes distance from point (px,py) to the object.
virtual const char * GetName() const
Returns name of object.
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
virtual void Streamer(TBuffer &)
Stream an object of class TObject.
virtual const char * ClassName() const
Returns name of class to which the object belongs.
virtual void UseCurrentStyle()
Set current style settings in this object This function is called when either TCanvas::UseCurrentStyl...
virtual Option_t * GetDrawOption() const
Get option used by the graphics system to draw this object.
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
virtual TObject * FindObject(const char *name) const
Must be redefined in derived classes.
virtual void Delete(Option_t *option="")
Delete this object.
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
virtual const char * GetTitle() const
Returns title of object.
virtual void Draw(Option_t *option="")
Default Draw method for all objects.
virtual void Paint(Option_t *option="")
This method must be overridden if a class wants to paint itself.
@ kCannotPick
if object in a pad cannot be picked
@ kCanDelete
if object in a list can be deleted
@ kMustCleanup
if object destructor must call RecursiveRemove()
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
std::vector< Double_t > fX
void Draw(TPad &pad, TVirtualPadPainter *pp, Bool_t withXor)
std::vector< Double_t > fY
TPadDrawOperation(Int_t n, T *x, T *y, EKind kind, Int_t arg=1, Bool_t ndc=kFALSE)
virtual ~TPadDrawOperation()=default
The most important graphics class in the ROOT system.
Short_t GetBorderMode() const override
Bool_t OpaqueMoving() const override
Is pad moving in opaque mode ?
void PaintTextNDC(Double_t u, Double_t v, const char *text) override
Paint text in CurrentPad NDC coordinates.
Int_t GetTicky() const override
virtual Int_t Clip(Float_t *x, Float_t *y, Float_t xclipl, Float_t yclipb, Float_t xclipr, Float_t yclipt)
Clipping routine: Cohen Sutherland algorithm.
virtual void HideToolTip(Int_t event)
Hide tool tip depending on the event type.
Double_t fAbsYlowNDC
Absolute Y top left corner of pad in NDC [0,1].
std::map< std::string, std::unique_ptr< TPadDrawOperation > > fDrawOper
Double_t fXtoAbsPixelk
Conversion coefficient for X World to absolute pixel.
void SetAttMarkerPS(Color_t color, Style_t style, Size_t msize) override
Set postscript marker attributes.
virtual void DivideSquare(Int_t n, Float_t xmargin=0.01, Float_t ymargin=0.01, Int_t color=0)
"n" is the total number of sub-pads.
void AbsCoordinates(Bool_t set) override
Bool_t IsBatch() const override
Is pad in batch mode ?
Double_t GetUymax() const override
Returns the maximum y-coordinate value visible on the pad. If log axis the returned value is in decad...
void AddExec(const char *name, const char *command) override
Add a new TExec object to the list of Execs.
Double_t fWNDC
Width of pad along X in Normalized Coordinates (NDC)
Int_t NextPaletteColor() override
Get the next autocolor in the pad.
Int_t VtoPixel(Double_t v) const override
Convert Y NDC to pixel.
void PaintBorder(Color_t color, Bool_t tops)
Paint the pad border.
Double_t GetPhi() const override
std::map< std::string, std::unique_ptr< TPadDrawOperation > > fDrawOperXor
! map of draw operations performed outside of normal paint
Bool_t IsEditable() const override
void FillCollideGrid(TObject *o)
Initialise the grid used to find empty space when adding a box (Legend) in a pad.
void SetView(TView *view=nullptr) override
Set the current TView. Delete previous view if view=0.
TVirtualViewer3D * GetViewer3D(Option_t *type="") override
Create/obtain handle to 3D viewer.
Double_t fPixeltoYk
Conversion coefficient for pixel to Y World.
void PaintHatches(Double_t dy, Double_t angle, Int_t nn, Double_t *xx, Double_t *yy)
This routine draw hatches inclined with the angle "angle" and spaced of "dy" in normalized device coo...
void PaintLine3D(Float_t *p1, Float_t *p2) override
Paint 3-D line in the CurrentPad.
static Int_t fgMaxPickDistance
Maximum Pick Distance.
void ResizePad(Option_t *option="") override
Compute pad conversion coefficients.
void PaintMarker3D(Double_t x, Double_t y, Double_t z) override
Paint 3-D marker in the CurrentPad.
void PaintPolyMarker(Int_t n, Float_t *x, Float_t *y, Option_t *option="") override
Paint polymarker in CurrentPad World coordinates.
Double_t fPhi
phi angle to view as lego/surface
Double_t fPixeltoY
yworld = fPixeltoYk + fPixeltoY*ypixel
virtual void RecordLatex(const TObject *obj)
Emit RecordLatex() signal.
Double_t fAbsXlowNDC
Absolute X top left corner of pad in NDC [0,1].
Double_t fVtoPixelk
Conversion coefficient for V NDC to pixel.
Bool_t fGridx
Set to true if grid along X.
TObject * fPadView3D
! 3D View of this TPad
Double_t GetUxmax() const override
Returns the maximum x-coordinate value visible on the pad. If log axis the returned value is in decad...
void Divide(Int_t nx=1, Int_t ny=1, Float_t xmargin=0.01, Float_t ymargin=0.01, Int_t color=0) override
Automatic pad generation by division.
void SavePrimitive(std::ostream &out, Option_t *option="") override
Save primitives in this pad on the C++ source file out.
void CopyBackgroundPixmaps(TPad *stop, Int_t x, Int_t y)
Copy pixmaps of pads laying below pad "stop" into pad "stop".
Double_t fXtoPixel
xpixel = fXtoPixelk + fXtoPixel*xworld
TList * fExecs
List of commands to be executed when a pad event occurs.
Double_t PadtoY(Double_t y) const override
Convert y from pad to Y.
Int_t fTickx
Set to 1 if tick marks along X.
void PaintOperations(Bool_t withXor=kFALSE)
Perform buffered paint operations Used for interactivity functionality immediately after normal paint...
void SetBBoxY1(const Int_t y) override
Set top of BoundingBox to a value (resize in y direction on top)
Int_t fTicky
Set to 1 if tick marks along Y.
Int_t GetPixmapID() const override
Bool_t GetGridx() const override
Double_t fX2
X of upper X coordinate.
Bool_t PlaceBox(TObject *o, Double_t w, Double_t h, Double_t &xl, Double_t &yb, Option_t *option="lb") override
Place a box in NDC space.
void SetLogz(Int_t value=1) override
Set Lin/Log scale for Z.
Int_t UtoAbsPixel(Double_t u) const override
Convert X NDC to absolute pixel.
void Browse(TBrowser *b) override
Browse pad.
Int_t XtoPixel(Double_t x) const override
Convert X coordinate to pixel.
void SetAttFillPS(Color_t color, Style_t style) override
Set postscript fill area attributes.
Int_t fCGnx
! Size of the collide grid along x
void SetBBoxCenterY(const Int_t y) override
Set Y coordinate of the center of the Pad.
Double_t fPixeltoX
xworld = fPixeltoXk + fPixeltoX*xpixel
~TPad() override
Pad destructor.
Double_t fYtoPixel
ypixel = fYtoPixelk + fYtoPixel*yworld
Double_t GetY2() const override
void DeleteToolTip(TObject *tip) override
Delete tool tip object.
void Close(Option_t *option="") override
Delete all primitives in pad and pad itself.
void AbsPixeltoXY(Double_t xpixel, Double_t ypixel, Double_t &x, Double_t &y) override
Convert absolute pixel into X/Y coordinates.
Double_t fAbsWNDC
Absolute Width of pad along X in NDC.
TObject * Remove(TObject *obj, Bool_t modified=kTRUE) override
Remove object from list of primitives When.
UInt_t GetWw() const override
Get canvas width.
void PaintModified() override
Traverse pad hierarchy and (re)paint only modified pads.
void SetEditable(Bool_t mode=kTRUE) override
Set pad editable yes/no If a pad is not editable:
const char * GetTitle() const override
Returns title of object.
void PaintDate()
Paint the current date and time if the option Date is set on via gStyle->SetOptDate() Paint the curre...
static void SetMaxPickDistance(Int_t maxPick=5)
static function to set the maximum Pick Distance fgMaxPickDistance This parameter is used in TPad::Pi...
void PixeltoXY(Double_t xpixel, Double_t ypixel, Double_t &x, Double_t &y) override
Convert pixel to X/Y coordinates.
void SetBBoxX2(const Int_t x) override
Set right hand side of BoundingBox to a value (resize in x direction on right)
void SetBBoxX1(const Int_t x) override
Set lefthandside of BoundingBox to a value (resize in x direction on left)
virtual Int_t ClippingCode(Double_t x, Double_t y, Double_t xcl1, Double_t ycl1, Double_t xcl2, Double_t ycl2)
Compute the endpoint codes for TPad::Clip.
Double_t GetUymin() const override
Returns the minimum y-coordinate value visible on the pad. If log axis the returned value is in decad...
Double_t fX1
X of lower X coordinate.
TList * GetListOfPrimitives() const override
void SetFillStyle(Style_t fstyle) override
Override TAttFill::FillStyle for TPad because we want to handle style=0 as style 4000.
Double_t AbsPixeltoY(Double_t py) override
TH1F * DrawFrame(Double_t xmin, Double_t ymin, Double_t xmax, Double_t ymax, const char *title="") override
Draw an empty pad frame with X and Y axis.
Double_t fVtoPixel
ypixel = fVtoPixelk + fVtoPixel*vndc
TCanvasImp * GetCanvasImp() const override
Get canvas implementation pointer if any.
Int_t GetEvent() const override
Get Event.
Double_t PadtoX(Double_t x) const override
Convert x from pad to X.
TInteractive * Interactive(TObject *obj=nullptr, TInteractive *init=nullptr) override
Internal method to create, provide or delete TInteractive instance It is allowed the only instance of...
virtual void DrawCrosshair()
Function called to draw a crosshair in the canvas.
Double_t YtoPad(Double_t y) const override
Convert y from Y to pad.
virtual void RangeChanged()
Double_t fUymin
Minimum value on the Y axis.
void SetPad(const char *name, const char *title, Double_t xlow, Double_t ylow, Double_t xup, Double_t yup, Color_t color=35, Short_t bordersize=5, Short_t bordermode=-1) override
Set all pad parameters.
void SetCursor(ECursor cursor) override
Set cursor type.
Int_t GetCanvasID() const override
Get canvas identifier.
Int_t fLogz
(=0 if Z linear scale, =1 if log scale)
Int_t HtoAbsPixel(Double_t y1, Double_t y2) const override
Convert a vertical distance [y1,y2] to pixel.
void XYtoPixel(Double_t x, Double_t y, Int_t &xpixel, Int_t &ypixel) const override
Convert X/Y into pixel coordinates - integer.
Double_t fYtoPixelk
Conversion coefficient for Y World to pixel.
void UpdateAsync() override
Asynchronous pad update.
TPad()
Pad default constructor.
void UseCurrentStyle() override
Force a copy of current style for all objects in pad.
static Int_t GetMaxPickDistance()
Static function (see also TPad::SetMaxPickDistance)
Int_t VtoAbsPixel(Double_t v) const override
Convert Y NDC to absolute pixel.
void Range(Double_t x1, Double_t y1, Double_t x2, Double_t y2) override
Set world coordinate system for the pad.
Double_t fUtoPixelk
Conversion coefficient for U NDC to pixel.
void XYtoAbsPixel(Double_t x, Double_t y, Int_t &xpixel, Int_t &ypixel) const override
Convert X/Y into absolute pixel coordinates - integer.
Double_t fPixeltoXk
Conversion coefficient for pixel to X World.
Bool_t IsModified() const override
Double_t fY1
Y of lower Y coordinate.
Int_t GetEventY() const override
Get Y event.
Int_t fGLDevice
! OpenGL off-screen pixmap identifier
Double_t fYlowNDC
Y bottom left corner of pad in NDC [0,1].
TObject * WaitPrimitive(const char *pname="", const char *emode="") override
Loop and sleep until a primitive with name=pname is found in the pad.
void SetAttTextPS(Int_t align, Float_t angle, Color_t color, Style_t font, Float_t tsize) override
Set postscript text attributes.
Bool_t fModified
Set to true when pad is modified.
Double_t PixeltoY(Double_t py) override
Convert pixel to Y coordinate.
TLegend * BuildLegend(Double_t x1=0.3, Double_t y1=0.21, Double_t x2=0.3, Double_t y2=0.21, const char *title="", Option_t *option="") override
Build a legend from the graphical objects in the pad.
virtual TPad * Pick(Int_t px, Int_t py, TObjLink *&pickobj)
Search for an object at pixel position px,py.
void Update() override
Update pad.
virtual void SetNumber(Int_t number)
Int_t fNumber
pad number identifier
void PaintFillAreaNDC(Int_t n, Double_t *x, Double_t *y, Option_t *option="") override
Paint fill area in CurrentPad NDC coordinates.
Double_t fAbsPixeltoXk
Conversion coefficient for absolute pixel to X World.
void Clear(Option_t *option="") override
Delete all pad primitives.
Int_t YtoPixel(Double_t y) const override
Convert Y coordinate to pixel.
Int_t GetTickx() const override
void PaintLine(Double_t x1, Double_t y1, Double_t x2, Double_t y2) override
Paint line in CurrentPad World coordinates.
Int_t GetGLDevice() override
Get GL device.
Double_t fAspectRatio
ratio of w/h in case of fixed ratio
virtual void RecordPave(const TObject *obj)
Emit RecordPave() signal.
void PaintBorderPS(Double_t xl, Double_t yl, Double_t xt, Double_t yt, Int_t bmode, Int_t bsize, Int_t dark, Int_t light) override
Paint a frame border with Postscript - no longer used.
Double_t fUymax
Maximum value on the Y axis.
void SetLogy(Int_t value=1) override
Set Lin/Log scale for Y.
virtual Int_t ClipPolygon(Int_t n, Double_t *x, Double_t *y, Int_t nn, Double_t *xc, Double_t *yc, Double_t xclipl, Double_t yclipb, Double_t xclipr, Double_t yclipt)
Clip polygon using the Sutherland-Hodgman algorithm.
void ExecuteEventAxis(Int_t event, Int_t px, Int_t py, TAxis *axis) override
Execute action corresponding to one event for a TAxis object (called by TAxis::ExecuteEvent....
void HighLight(Color_t col=kRed, Bool_t set=kTRUE) override
Highlight pad.
Double_t AbsPixeltoX(Double_t px) override
void SetBatch(Bool_t batch=kTRUE) override
Set pad in batch mode.
TCanvas * fCanvas
! Pointer to mother canvas
TVirtualPad * GetMother() const override
TVirtualViewer3D * fViewer3D
! Current 3D viewer
virtual void x3d(Option_t *type="")
Deprecated: use TPad::GetViewer3D() instead.
Bool_t HasCrosshair() const override
Return kTRUE if the crosshair has been activated (via SetCrosshair).
Bool_t IsRetained() const override
Is pad retained ?
Bool_t Collide(Int_t i, Int_t j, Int_t w, Int_t h)
Check if a box of size w and h collide some primitives in the pad at position i,j.
Int_t DistancetoPrimitive(Int_t px, Int_t py) override
Compute distance from point px,py to a box.
Bool_t fFixedAspectRatio
True if fixed aspect ratio.
void PaintFillArea(Int_t n, Float_t *x, Float_t *y, Option_t *option="") override
void Modified(Bool_t flag=true) override
Mark pad modified Will be repainted when TCanvas::Update() will be called next time.
void RecursiveRemove(TObject *obj) override
Recursively remove object from a pad and its sub-pads.
void DivideRatios(Int_t nrows, Int_t ncolumns, const std::vector< double > &widthRatios={}, const std::vector< double > &heightRatios={}, const double canvasTopMargin=0., const double canvasLeftMargin=0.)
Divide the canvas according to ratios.
Bool_t HasFixedAspectRatio() const override
void CloseToolTip(TObject *tip) override
Hide tool tip.
Double_t GetUxmin() const override
Returns the minimum x-coordinate value visible on the pad. If log axis the returned value is in decad...
void SetToolTipText(const char *text, Long_t delayms=1000) override
Set tool tip text associated with this pad.
void PaintPolyLine(Int_t n, Float_t *x, Float_t *y, Option_t *option="") override
Paint polyline in CurrentPad World coordinates.
Int_t WtoAbsPixel(Double_t x1, Double_t x2) const override
Convert a horizontal distance [x1,x2] to pixel.
void ls(Option_t *option="") const override
List all primitives in pad.
TView * GetView() const override
void ModifiedUpdate() override
Short cut to call Modified() and Update() in a single call.
Double_t fVtoAbsPixelk
Conversion coefficient for V NDC to absolute pixel.
UInt_t GetPadHeight() const override
Get pad height.
TVirtualPad * GetPadSave() const override
Get save pad.
void SetAttLinePS(Color_t color, Style_t style, Width_t lwidth) override
Set postscript line attributes.
TClass * IsA() const override
TVirtualPad * GetVirtCanvas() const override
Get virtual canvas.
void DeleteExec(const char *name) override
Remove TExec name from the list of Execs.
void PaintSegments(Int_t n, Double_t *x, Double_t *y, Option_t *option="") override
Paint N individual segments Provided arrays should have 2*n elements IMPORTANT! Provided arrays can b...
void FeedbackMode(Bool_t set) override
Switch feedback mode for the canvas Only for internal use when implementing special painters.
UInt_t GetPadWidth() const override
Get pad width.
void Streamer(TBuffer &) override
Stream a class object.
void PaintSegmentsNDC(Int_t n, Double_t *u, Double_t *v) override
Paint N individual segments in NDC coordinates Provided arrays should have 2*n elements IMPORTANT!...
void CopyPixmaps() override
Copy the sub-pixmaps of the pad to the canvas.
void CopyPixmap() override
Copy the pixmap of the pad to the canvas.
Double_t GetY1() const override
Int_t UtoPixel(Double_t u) const override
Convert X NDC to pixel.
TPoint GetBBoxCenter() override
Return the center of the Pad as TPoint in pixels.
void FillCollideGridTFrame(TObject *o)
Bool_t GetGridy() const override
void LineNotFree(Int_t x1, Int_t x2, Int_t y1, Int_t y2)
Mark as "not free" the cells along a line.
Double_t fAbsHNDC
Absolute Height of pad along Y in NDC.
void ExecuteEvent(Int_t event, Int_t px, Int_t py) override
Execute action corresponding to one event.
TObject * fTip
! tool tip associated with box
void SetCanvasSize(UInt_t ww, UInt_t wh) override
Set canvas size.
Int_t GetLogz() const override
virtual void AutoExec()
Execute the list of Execs when a pad event occurs.
Bool_t fAbsCoord
Use absolute coordinates.
Int_t fNumPaletteColor
Number of objects with an automatic color.
Int_t fCrosshairPos
Position of crosshair.
void FillCollideGridTGraph(TObject *o)
void SetFixedAspectRatio(Bool_t fixed=kTRUE) override
Fix pad aspect ratio to current value if fixed is true.
Short_t GetBorderSize() const override
void RedrawAxis(Option_t *option="") override
Redraw the frame axis.
void DrawDist(Rectangle_t aBBox, Rectangle_t bBBox, char mode)
Draw Arrows to indicated equal distances of Objects with given BBoxes.
Int_t fLogx
(=0 if X linear scale, =1 if log scale)
Double_t GetAbsWNDC() const override
Int_t YtoAbsPixel(Double_t y) const override
Convert Y coordinate to absolute pixel.
Double_t fUtoPixel
xpixel = fUtoPixelk + fUtoPixel*undc
Int_t fCrosshair
Crosshair type (0 if no crosshair requested)
void PaintFillAreaHatches(Int_t n, Double_t *x, Double_t *y, Int_t FillStyle)
This function paints hatched fill area according to the FillStyle value The convention for the Hatch ...
void RangeAxis(Double_t xmin, Double_t ymin, Double_t xmax, Double_t ymax) override
Set axis coordinate system for the pad.
@ kCannotMove
Fixed position.
@ kClearAfterCR
Clear after CR.
@ kHori
Pad is horizontal.
@ kPrintingPS
PS Printing.
@ kFraming
Frame is requested.
Double_t fUtoAbsPixelk
Conversion coefficient for U NDC to absolute pixel.
void ResetToolTip(TObject *tip) override
Reset tool tip, i.e.
Double_t GetTheta() const override
TList * fPrimitives
->List of primitives (subpads)
UInt_t GetWh() const override
Get canvas height.
TCanvas * GetCanvas() const override
Short_t fBorderSize
pad bordersize in pixels
void Add(TObject *obj, Option_t *opt="", Bool_t modified=kTRUE) override
Add an object to list of primitives with specified draw option When.
TView * fView
! Pointer to 3-D view (if one exists)
Rectangle_t GetBBox() override
Return the bounding Box of the Pad.
void Paint(Option_t *option="") override
Paint all primitives in pad.
void FillCollideGridTBox(TObject *o)
Double_t fTheta
theta angle to view as lego/surface
void DrawCollideGrid()
This method draws the collide grid on top of the canvas.
void SetVertical(Bool_t vert=kTRUE) override
Set pad vertical (default) or horizontal.
void FillCollideGridTH1(TObject *o)
void GetPadPar(Double_t &xlow, Double_t &ylow, Double_t &xup, Double_t &yup) override
Return lower and upper bounds of the pad in NDC coordinates.
void PaintText(Double_t x, Double_t y, const char *text) override
Paint text in CurrentPad World coordinates.
Int_t fPadPaint
Set to 1 while painting the pad.
static void DrawColorTable()
Static function to Display Color Table in a pad.
Double_t GetXlowNDC() const override
void SaveAs(const char *filename="", Option_t *option="") const override
Save the pad content in a file.
Int_t fPixmapID
! Off-screen pixmap identifier
Bool_t fEditable
True if canvas is editable.
Double_t GetYlowNDC() const override
TObject * FindObject(const char *name) const override
Search if object named name is inside this pad or in pads inside this pad.
Color_t GetHighLightColor() const override
Get highlight color.
Bool_t OpaqueResizing() const override
Is pad resizing in opaque mode ?
std::vector< Bool_t > fCollideGrid
! Grid used to find empty space when adding a box (Legend) in a pad
Int_t IsAnyNeedRepaint() const
Check if pad or any subpads need to be repaint Returns flag with following mask: 1 - some pad is modi...
TVirtualPad * cd(Int_t subpadnumber=0) override
Set Current pad.
Int_t GetLogy() const override
void PaintLineNDC(Double_t u1, Double_t v1, Double_t u2, Double_t v2) override
Paint line in normalized coordinates.
void Print(const char *filename="") const override
This method is equivalent to SaveAs("filename"). See TPad::SaveAs for details.
Int_t GetEventX() const override
Get X event.
TFrame * GetFrame() override
Get frame.
Double_t fYtoAbsPixelk
Conversion coefficient for Y World to absolute pixel.
Double_t fXtoPixelk
Conversion coefficient for X World to pixel.
Int_t fLogy
(=0 if Y linear scale, =1 if log scale)
TFrame * fFrame
! Pointer to 2-D frame (if one exists)
TVirtualPadPainter * GetPainter() override
Get pad painter from TCanvas.
void Draw(Option_t *option="") override
Draw Pad in Current pad (re-parent pad if necessary).
Double_t fHNDC
Height of pad along Y in Normalized Coordinates (NDC)
void ShowGuidelines(TObject *object, const Int_t event, const char mode='i', const bool cling=true) override
Shows lines to indicate if a TAttBBox2D object is aligned to the center or to another object,...
Int_t GetCrosshair() const
Return the crosshair type (from the mother canvas) crosshair type = 0 means no crosshair.
void GetRangeAxis(Double_t &xmin, Double_t &ymin, Double_t &xmax, Double_t &ymax) override
Return pad axis coordinates range.
void SetBorderMode(Short_t bordermode) override
void PaintBox(Double_t x1, Double_t y1, Double_t x2, Double_t y2, Option_t *option="") override
Paint box in CurrentPad World coordinates.
void DrawClassObject(const TObject *obj, Option_t *option="") override
Draw class inheritance tree of the class to which obj belongs.
Int_t fCGny
! Size of the collide grid along y
Double_t fXlowNDC
X bottom left corner of pad in NDC [0,1].
TObject * GetPrimitive(const char *name) const override
Get primitive.
Double_t fUxmin
Minimum value on the X axis.
Double_t GetAbsHNDC() const override
Int_t GetDoubleBuffer() const override
Get doublebuffer mode - 1 by default.
std::unique_ptr< TInteractive > fInteractive
! current interactive object
void SetBBoxCenter(const TPoint &p) override
Set center of the Pad.
Bool_t IsWeb() const override
Is web ?
void SetSelected(TObject *obj) override
Set selected.
TObject * GetSelected() const override
Get selected.
void GetRange(Double_t &x1, Double_t &y1, Double_t &x2, Double_t &y2) override
Return pad world coordinates range.
Double_t PixeltoX(Double_t px) override
Convert pixel to X coordinate.
void PaintPolyLineNDC(Int_t n, Double_t *x, Double_t *y, Option_t *option="") override
Paint polyline in CurrentPad NDC coordinates.
Bool_t IsVertical() const override
void PaintPadFrame(Double_t xmin, Double_t ymin, Double_t xmax, Double_t ymax) override
Paint histogram/graph frame.
Double_t GetAbsYlowNDC() const override
Double_t fUxmax
Maximum value on the X axis.
void AddFirst(TObject *obj, Option_t *opt="", Bool_t modified=kTRUE) override
Add an object as first in list of primitives with specified draw option When.
Double_t fY2
Y of upper Y coordinate.
void PaintTextUrl(Double_t x, Double_t y, const char *text, const char *url) override
Paint text with URL in CurrentPad World coordinates.
Double_t fAbsPixeltoYk
Conversion coefficient for absolute pixel to Y World.
TVirtualPad * GetSelectedPad() const override
Get selected pad.
void PaintPolyLine3D(Int_t n, Double_t *p) override
Paint 3-D polyline in the CurrentPad.
TVirtualPad * GetPad(Int_t subpadnumber) const override
Get a pointer to subpadnumber of this pad.
Short_t fBorderMode
Bordermode (-1=down, 0 = no border, 1=up)
void SetLogx(Int_t value=1) override
Set Lin/Log scale for X.
void ReleaseViewer3D(Option_t *type="") override
Release current (external) viewer.
void SetCrosshair(Int_t crhair=1) override
Set crosshair active/inactive.
void SetDoubleBuffer(Int_t mode=1) override
Set double buffer mode ON or OFF.
Int_t fNextPaletteColor
Next automatic color.
void SetBBoxCenterX(const Int_t x) override
Set X coordinate of the center of the Pad.
Int_t GetLogx() const override
TObject * fPadPointer
! free pointer
Double_t GetX2() const override
TObject * CreateToolTip(const TBox *b, const char *text, Long_t delayms) override
Create a tool tip and return its pointer.
Double_t GetWNDC() const override
Get width of pad along X in Normalized Coordinates (NDC)
void Pop() override
Pop pad to the top of the stack.
Double_t GetAbsXlowNDC() const override
Int_t IncrementPaletteColor(Int_t i, const TString &opt) override
Increment (i==1) or set (i>1) the number of autocolor in the pad.
Double_t GetX1() const override
Double_t GetHNDC() const override
Get height of pad along Y in Normalized Coordinates (NDC)
TPad * fMother
! pointer to mother of the list
const char * GetName() const override
Returns name of object.
Int_t XtoAbsPixel(Double_t x) const override
Convert X coordinate to absolute pixel.
Bool_t fGridy
Set to true if grid along Y.
void SetBBoxY2(const Int_t y) override
Set bottom of BoundingBox to a value (resize in y direction on bottom)
Double_t XtoPad(Double_t x) const override
Convert x from X to pad.
The histogram statistics painter class.
A Pave (see TPave) with text, lines or/and boxes inside.
virtual TText * AddText(Double_t x1, Double_t y1, const char *label)
Add a new Text line to this pavetext at given coordinates.
virtual TLine * AddLine(Double_t x1=0, Double_t y1=0, Double_t x2=0, Double_t y2=0)
Add a new graphics line to this pavetext.
virtual TBox * AddBox(Double_t x1, Double_t y1, Double_t x2, Double_t y2)
Add a new graphics box to this pavetext.
void Draw(Option_t *option="") override
Draw this pavetext with its current attributes.
Int_t GetBorderSize() const
virtual void SetBorderSize(Int_t bordersize=4)
Sets the border size of the TPave box and shadow.
TPluginHandler * FindHandler(const char *base, const char *uri=nullptr)
Returns the handler if there exists a handler for the specified URI.
void Emit(const char *signal, const T &arg)
Activate signal with single parameter.
static Int_t IncreaseDirLevel()
Increase the indentation level for ls().
static void IndentLevel()
Functions used by ls() to indent an object hierarchy.
static Int_t DecreaseDirLevel()
Decrease the indentation level for ls().
void ToLower()
Change string to lower-case.
Bool_t EndsWith(const char *pat, ECaseCompare cmp=kExact) const
Return true if string ends with the specified string.
TString & ReplaceSpecialCppChars()
Find special characters which are typically used in printf() calls and replace them by appropriate es...
TString & Replace(Ssiz_t pos, Ssiz_t n, const char *s)
const char * Data() const
TString & ReplaceAll(const TString &s1, const TString &s2)
void Resize(Ssiz_t n)
Resize the string. Truncate or add blanks as necessary.
Bool_t BeginsWith(const char *s, ECaseCompare cmp=kExact) const
TString & Prepend(const char *cs)
virtual void Streamer(TBuffer &)
Stream a string object.
TString & Append(const char *cs)
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
void Form(const char *fmt,...)
Formats a string using a printf style format descriptor.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
void SetPadBorderMode(Int_t mode=1)
void SetPadTopMargin(Float_t margin=0.1)
void SetOptLogx(Int_t logx=1)
void SetPadBottomMargin(Float_t margin=0.1)
Int_t GetOptTitle() const
Int_t GetPadTickX() const
Color_t GetPadColor() const
void SetPadRightMargin(Float_t margin=0.1)
void SetTitleFont(Style_t font=62, Option_t *axis="X")
Float_t GetPadRightMargin() const
void SetTitleBorderSize(Width_t size=2)
Style_t GetTitleFont(Option_t *axis="X") const
Return title font.
void SetPadTickY(Int_t ticky)
Color_t GetTitleFillColor() const
void SetPadTickX(Int_t tickx)
Bool_t GetPadGridY() const
void SetPadGridX(Bool_t gridx)
void SetTitleTextColor(Color_t color=1)
Float_t GetPadLeftMargin() const
Double_t GetHatchesSpacing() const
Bool_t GetPadGridX() const
void SetPadLeftMargin(Float_t margin=0.1)
void SetPadGridY(Bool_t gridy)
void SetOptLogy(Int_t logy=1)
Int_t GetPadTickY() const
Width_t GetPadBorderSize() const
Width_t GetTitleBorderSize() const
Int_t GetColorPalette(Int_t i) const
Return color number i in current palette.
void SetTitleFillColor(Color_t color=1)
Float_t GetPadBottomMargin() const
void SetOptLogz(Int_t logz=1)
void SetPadColor(Color_t color=19)
Color_t GetTitleTextColor() const
Int_t GetPadBorderMode() const
Int_t GetNumberOfColors() const
Return number of colors in the color palette.
void SetPadBorderSize(Width_t size=1)
Int_t GetHatchesLineWidth() const
Float_t GetPadTopMargin() const
virtual Bool_t ExpandPathName(TString &path)
Expand a pathname getting rid of special shell characters like ~.
virtual Int_t Exec(const char *shellcmd)
Execute a command.
virtual Bool_t AccessPathName(const char *path, EAccessMode mode=kFileExists)
Returns FALSE if one can access a file using the specified access mode.
virtual int Rename(const char *from, const char *to)
Rename a file.
virtual void Sleep(UInt_t milliSec)
Sleep milliSec milli seconds.
virtual Bool_t ProcessEvents()
Process pending events (GUI, timers, sockets).
Base class for several text objects.
void Paint(Option_t *option="") override
Paint this text with its current attributes.
virtual void SetNDC(Bool_t isNDC=kTRUE)
Set NDC mode on if isNDC = kTRUE, off otherwise.
virtual void WCtoNDC(const Float_t *pw, Float_t *pn)=0
virtual Int_t GetDistancetoAxis(Int_t axis, Int_t px, Int_t py, Double_t &ratio)=0
virtual void ResizePad()=0
virtual void GetRange(Float_t *min, Float_t *max)=0
Provides 3D viewer interface (TVirtualViewer3D) support on a pad.
TVirtualPS is an abstract interface to Postscript, PDF, SVG.
virtual void Open(const char *filename, Int_t type=-111)=0
virtual void DrawFrame(Double_t xl, Double_t yl, Double_t xt, Double_t yt, Int_t mode, Int_t border, Int_t dark, Int_t light)=0
To make it possible to use GL for 2D graphic in a TPad/TCanvas.
virtual void SetAttFill(const TAttFill &att)
Set fill attributes.
virtual void DrawPolyLine(Int_t n, const Double_t *x, const Double_t *y)=0
virtual void DestroyDrawable(Int_t device)=0
virtual void DrawFillArea(Int_t n, const Double_t *x, const Double_t *y)=0
virtual void SetAttLine(const TAttLine &att)
Set line attributes.
virtual void DrawPolyLineNDC(Int_t n, const Double_t *u, const Double_t *v)=0
virtual void SelectDrawable(Int_t device)=0
virtual void InvalidateCS()
Empty definition.
small helper class to store/restore gPad context in TPad methods
void PadDeleted(TVirtualPad *pad)
Inform context that pad deleted or will be deleted soon Reference on that pad should be cleared.
Helper class to store interactive parameters for individual objects Should be used via MakeInteractiv...
void SetObject(TObject *obj)
TVirtualPad is an abstract base class for the Pad and Canvas classes.
virtual Int_t YtoAbsPixel(Double_t y) const =0
virtual Double_t GetX2() const =0
virtual TVirtualPad * cd(Int_t subpadnumber=0)=0
virtual Int_t XtoAbsPixel(Double_t x) const =0
virtual Double_t GetY1() const =0
virtual Int_t GetNumber() const =0
T * GetInteractive(TObject *obj)
void Streamer(TBuffer &) override
Stream an object of class TVirtualPad.
T * MakeInteractive(TObject *obj, Rest &&... rest)
virtual void ShowGuidelines(TObject *object, const Int_t event, const char mode='i', const bool cling=true)=0
virtual void RangeAxisChanged()
virtual Double_t GetY2() const =0
virtual void GetRange(Double_t &x1, Double_t &y1, Double_t &x2, Double_t &y2)=0
Bool_t fResizing
!true when resizing the pad
virtual Bool_t IsEditable() const =0
void FreeInteractive(TObject *obj)
Release interactive instance for specified object.
virtual Double_t GetX1() const =0
Abstract 3D shapes viewer.
virtual Bool_t BuildingScene() const =0
virtual void EndScene()=0
static TVirtualViewer3D * Viewer3D(TVirtualPad *pad=nullptr, Option_t *type="")
Create a Viewer 3D of specified type.
virtual void PadPaint(TVirtualPad *)
virtual void BeginScene()=0
virtual Bool_t CanLoopOnPrimitives() const
A TBox with a bordersize and a bordermode.
Short_t GetBorderSize() const
Short_t GetBorderMode() const
virtual void SetBorderMode(Short_t bordermode)
virtual void SetBorderSize(Short_t bordersize)
void box(Int_t pat, Double_t x1, Double_t y1, Double_t x2, Double_t y2)
R__ALWAYS_INLINE bool HasBeenDeleted(const TObject *obj)
Check if the TObject's memory has been deleted.
void CallRecursiveRemoveIfNeeded(TObject &obj)
call RecursiveRemove for obj if gROOT is valid and obj.TestBit(kMustCleanup) is true.
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 Exp(Double_t x)
Returns the base-e exponential function of x, which is e raised to the power x.
Double_t Floor(Double_t x)
Rounds x downward, returning the largest integral value that is not greater than x.
Double_t Ceil(Double_t x)
Rounds x upward, returning the smallest integral value that is not less than x.
Int_t Finite(Double_t x)
Check if it is finite with a mask in order to be consistent in presence of fast math.
Double_t Log(Double_t x)
Returns the natural logarithm of x.
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.
Double_t Log10(Double_t x)
Returns the common (base-10) logarithm of x.
Short_t Abs(Short_t d)
Returns the absolute value of parameter Short_t d.
Rectangle structure (maps to the X11 XRectangle structure)
struct used by ShowGuidelines to store the distance Field between objects in the canvas.
dField(TAttBBox2D *a, TAttBBox2D *b, Int_t dist, char direction)