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);
2066 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);
3026 if (i>=ncolors) i = ncolors-1;
3038 Int_t const cellSize = 10;
3045 for (
int i = 0; i <
fCGnx; i++)
3046 for (
int j = 0; j <
fCGny; j++)
3052 while(
auto o = iter()) {
3065 while (
auto og = nextgraph())
3069 while (
auto oh = nexthist()) {
3083 for (
int r = i;
r <
w + i;
r++) {
3084 for (
int c = j;
c <
h + j;
c++) {
3119 bool isFirstVertical =
false;
3120 bool isFirstHorizontal =
false;
3122 for (std::size_t i = 0;
option[i] !=
'\0'; ++i) {
3123 char letter = std::tolower(
option[i]);
3124 if (letter ==
'w') {
3129 }
else if (letter ==
't' || letter ==
'b') {
3130 isFirstVertical = !isFirstHorizontal;
3132 dy = letter ==
't' ? -1 : 1;
3133 }
else if (letter ==
'l' || letter ==
'r') {
3134 isFirstHorizontal = !isFirstVertical;
3136 dx = letter ==
'r' ? -1 : 1;
3140 if(dx < 0) std::swap(nxbeg, nxend);
3141 if(dy < 0) std::swap(nybeg, nyend);
3143 auto attemptPlacement = [&](
Int_t i,
Int_t j) {
3153 if(!isFirstVertical) {
3154 for (
Int_t i = nxbeg; i != nxend; i += dx) {
3155 for (
Int_t j = nybeg; j != nyend; j += dy) {
3156 if (attemptPlacement(i, j))
return true;
3161 for (
Int_t j = nybeg; j != nyend; j += dy) {
3162 for (
Int_t i = nxbeg; i != nxend; i += dx) {
3163 if (attemptPlacement(i, j))
return true;
3171#define NotFree(i, j) fCollideGrid[TMath::Max(TMath::Min(i+j*fCGnx,fCGnx*fCGny),0)] = kFALSE;
3200 for (i=
x1+1; i<
x2; i++) {
3210 for (j=
y1+1; j<
y2; j++) {
3230 for (
int i =
x1; i<=
x2; i++) {
3249 for (i =
x1; i<=
x2; i++) {
3254 for (i =
y1; i<=
y2; i++) {
3272 for (
Int_t i=s; i<
n; i=i+s) {
3274 g->GetPoint(i ,
x2,
y2);
3301 if (
name.Index(
"hframe") >= 0)
return;
3306 bool haserrors =
false;
3307 TString drawOption =
h->GetDrawOption();
3311 if (drawOption.
Index(
"hist") < 0) {
3312 if (drawOption.
Index(
"e") >= 0) haserrors =
true;
3315 Int_t nx =
h->GetNbinsX();
3320 for (i = 1; i<nx; i++) {
3322 x1l =
h->GetBinCenter(i);
3328 y1l =
h->GetBinContent(i)-
h->GetBinErrorLow(i);
3334 y2l =
h->GetBinContent(i)+
h->GetBinErrorUp(i);
3340 for (j=
y1; j<
y2; j++) {
3344 x1l =
h->GetBinLowEdge(i);
3350 y1l =
h->GetBinContent(i);
3357 x1l =
h->GetBinLowEdge(i)+
h->GetBinWidth(i);
3382 box.SetFillColorAlpha(
kRed,0.5);
3393 for (
int i = 0; i<
fCGnx; i++) {
3396 for (
int j = 0; j<
fCGny; j++) {
3413 box.DrawBox(X1L, Y1L, X2L, Y2L);
3415 box.SetFillColorAlpha(
kRed,t);
3416 box.DrawBox(X1L, Y1L, X2L, Y2L);
3420 if (t==0.15) t = 0.1;
3522 TObject *obj = lnk->GetObject();
3532 began3DScene =
kTRUE;
3535 obj->
Paint(lnk->GetOption());
3577 if (!
IsBatch() && (pp->IsCocoa() || (pp->IsNative() && (
style > 3000) && (
style < 3026))))
3578 pp->ClearDrawable();
3592 pp->SetAttFill({color, 1001});
3593 pp->SetOpacity(
style - 4000);
3595 }
else if ((
style >= 4000) && (
style <= 4100) && pp->IsCocoa() && (
this ==
fMother))
3597 else if ((color == 10) && (
style > 3000) && (
style < 3100))
3601 pp->SetAttFill({color,
style});
3602 pp->SetAttLine(*
this);
3615 box.SetFillColor(color);
3707 auto lnk = pList ? pList->
FirstLink() :
nullptr;
3711 ((
TPad*)obj)->PaintModified();
3736 Bool_t useXor = pp && pp->IsNative() && !pp->IsCocoa();
3745 auto lnk = pList ? pList->
FirstLink() :
nullptr;
3748 TObject *obj = lnk->GetObject();
3750 ((
TPad*)obj)->PaintModified();
3751 }
else if (needRepaint) {
3762 began3DScene =
kTRUE;
3765 obj->
Paint(lnk->GetOption());
3771 if (!useXor && needRepaint)
3803 auto savepad =
gPad;
3811 oper.second->Draw(*
this, pp, withXor);
3816 oper.second->Draw(*
this, pp, withXor);
3827 while (
auto obj = next()) {
3828 if (
auto pad =
dynamic_cast<TPad *
>(obj))
3829 pad->PaintOperations(withXor);
3851 fDrawOper[
option] = std::make_unique<TPadDrawOperation>(5,
x,
y, drawKind, pp->GetLineWidth());
3860 skip_fill = draw_border =
kTRUE;
3862 draw_border =
kTRUE;
3869 draw_border =
kTRUE;
3873 draw_fill =
style < 3026;
3876 draw_fill =
style > 4000;
3877 }
else if (
style > 0)
3878 draw_border =
kTRUE;
3880 if (draw_fill && !skip_fill)
3902 while (
auto obj = next()) {
3905 if (
auto pad =
dynamic_cast<TPad *
>(obj))
3906 pad->CopyBackgroundPixmaps(stop,
x,
y);
3914 Warning(
"PaintFillArea",
"Float_t signature is obsolete. Use Double_t signature.");
3936 std::vector<Double_t> xclip, yclip;
3940 xclip.resize(nc, 0.);
3941 yclip.resize(nc, 0.);
3962 Int_t fillstyle = pp->GetFillStyle();
3963 if (fillstyle >= 3100 && fillstyle < 4000)
3966 pp->DrawFillArea(nn, xx, yy);
3976 std::vector<Double_t> xw(
n), yw(
n);
3977 for (
int i=0; i<
n; i++) {
4019 static Double_t ang1[10] = { 0., 10., 20., 30., 45.,5., 60., 70., 80., 89.99};
4020 static Double_t ang2[10] = {180.,170.,160.,150.,135.,5.,120.,110.,100., 89.99};
4022 Int_t fasi = FillStyle % 1000;
4023 Int_t idSPA = fasi / 100;
4024 Int_t iAng2 = (fasi - 100 * idSPA) / 10;
4025 Int_t iAng1 = fasi % 10;
4033 TAttLine saveatt = pp->GetAttLine();
4035 pp->SetAttLine({ pp->GetAttFill().
GetFillColor(), 1, lw });
4038 if (ang1[iAng1] != 5.)
4040 if (ang2[iAng2] != 5.)
4043 pp->SetAttLine(saveatt);
4054 Int_t i, i1, i2, nbi;
4059 std::vector<Double_t> xli;
4060 std::vector<Double_t> yli;
4063 Double_t x,
y,
x1,
x2,
y1,
y2,
a,
b, xi, xip, xin, yi, yip;
4069 ratiox = 1./(rwxmax-rwxmin);
4070 ratioy = 1./(rwymax-rwymin);
4083 gPad->GetPadPar(x1p,y1p,x2p,y2p);
4092 for (i=1; i<=nn; i++) {
4093 x = wndc*ratiox*(xx[i-1]-rwxmin);
4094 y = hndc*ratioy*(yy[i-1]-rwymin);
4095 yrot = sina*
x+cosa*
y;
4102 while (dy * yindx >=
ymin) {
4103 ycur = dy * yindx--;
4109 for (i=2; i<=nn+1; i++) {
4112 if (i == nn+1) i2=1;
4114 x1 = wndc*ratiox*(xx[i1-1]-rwxmin);
4115 y1 = hndc*ratioy*(yy[i1-1]-rwymin);
4116 x2 = wndc*ratiox*(xx[i2-1]-rwxmin);
4117 y2 = hndc*ratioy*(yy[i2-1]-rwymin);
4119 xt1 = cosa*
x1-sina*
y1;
4120 yt1 = sina*
x1+cosa*
y1;
4121 xt2 = cosa*
x2-sina*
y2;
4122 yt2 = sina*
x2+cosa*
y2;
4133 if ((yi <= ycur) && (ycur < yip)) {
4152 a = (yt1-yt2)/(xt1-xt2);
4153 b = (yt2*xt1-xt2*yt1)/(xt1-xt2);
4165 if ((xi <= xin) && (xin < xip) &&
4174 std::sort(xli.begin(), xli.end());
4177 if ((nbi%2 != 0) || (nbi == 0))
4180 for (i=0; i<nbi; ++i) {
4182 Double_t ytmp = sinb*xli[i] + cosb*ycur;
4183 xli[i] = cosb*xli[i] - sinb*ycur;
4185 xli[i] = (xli[i]/wndc)*(rwxmax-rwxmin)+rwxmin;
4186 ytmp = (ytmp/hndc)*(rwymax-rwymin)+rwymin;
4187 yli.push_back(ytmp);
4190 gPad->PaintSegments(nbi/2, xli.data(), yli.data());
4210 pp->DrawLine(
x[0],
y[0],
x[1],
y[1]);
4223 pp->DrawLineNDC(u1,
v1, u2,
v2);
4240 for (i=0;i<3;i++) temp[i] = p1[i];
4242 for (i=0;i<3;i++) temp[i] = p2[i];
4244 PaintLine(xpad[0],xpad[1],xpad[3],xpad[4]);
4258 for (i=0;i<3;i++) temp[i] = p1[i];
4260 for (i=0;i<3;i++) temp[i] = p2[i];
4262 PaintLine(xpad[0],xpad[1],xpad[3],xpad[4]);
4281 if (
x<rmin[0] ||
x>rmax[0])
return;
4282 if (
y<rmin[1] ||
y>rmax[1])
return;
4283 if (z<rmin[2] || z>rmax[2])
return;
4308 Int_t i1 = -1,
np = 1, iclip = 0;
4309 for (
Int_t i = 0; i <
n - 1; i++) {
4324 if (iclip == 0 && i <
n-2)
4330 pp->DrawPolyLine(
np, &
x[i1], &
y[i1]);
4367 Int_t i1 = -1,
np = 1, iclip = 0;
4369 for (
Int_t i = 0; i <
n-1; i++) {
4384 if (iclip == 0 && i <
n-2)
4390 pp->DrawPolyLine(
np, &
x[i1], &
y[i1]);
4421 pp->DrawPolyLineNDC(
n,
x,
y);
4434 for (
Int_t i = 1; i <
n; i++)
4455 for (i=0; i<
n; i++) {
4459 if (i <
n-1)
continue;
4467 pp->DrawPolyMarker(
np, &
x[i1], &
y[i1]);
4490 for (i=0; i<
n; i++) {
4494 if (i <
n-1)
continue;
4503 pp->DrawPolyMarker(
np, &
x[i1], &
y[i1]);
4533 for (
Int_t i = 0; i < 2*
n; i+=2) {
4536 x[i] =
y[i] =
x[i+1] =
y[i+1] = 0;
4545 pp->DrawSegments(
n,
x,
y);
4561 pp->DrawSegmentsNDC(
n, u,
v);
4603 pp->DrawTextUrl(
x,
y,
text, url);
4651 if (!
gPad)
return nullptr;
4658 if (
this !=
gPad->GetCanvas()) {
4667 TPad *pick =
nullptr;
4668 TPad *picked =
this;
4672 pickobj = &dummyLink;
4701 pick = ((
TPad*)obj)->
Pick(px, py, pickobj);
4706 }
else if (!
gROOT->GetEditorMode()) {
4713 if (dist == 0)
break;
4728 if (
fView && !gotPrim) {
4747 if (!
button->IsEditable()) pickobj =
nullptr;
4752 if (picked ==
this) {
4775 while (
auto obj = next())
4800 while (
auto obj = next()) {
4991 const char *opt_default =
"ps";
4997 if (strstr(opt,
"Title:")) title =
kTRUE;
5016 if (!title && strstr(opt,
"gif+")) {
5019 }
else if (!title && strstr(opt,
"gif")) {
5022 }
else if (!title && strstr(opt,
"png")) {
5025 }
else if (!title && strstr(opt,
"jpg")) {
5028 }
else if (!title && strstr(opt,
"tiff")) {
5031 }
else if (!title && strstr(opt,
"xpm")) {
5034 }
else if (!title && strstr(opt,
"bmp")) {
5040 (strstr(opt,
"svg") || strstr(opt,
"html") || strstr(opt,
"pdf") || (gtype ==
TImage::kJpeg) || (gtype ==
TImage::kPng))) {
5046 if (strstr(opt,
"html")) {
5047 auto cmd =
TString::Format(
"TWebCanvas::ProduceImage((TPad *) 0x%zx, \"%s\");", (
size_t)
this, psname.
Data());
5048 gROOT->ProcessLine(cmd);
5056 if (!
gROOT->IsBatch() && image) {
5059 Color_t hc =
gPad->GetCanvas()->GetHighLightColor();
5060 gPad->GetCanvas()->SetHighLightColor(-1);
5061 gPad->ModifiedUpdate();
5063 pp->SelectDrawable(
wid);
5064 pp->SaveImage(
this, psname.
Data(), gtype);
5067 Info(
"Print",
"GIF file %s has been created", psname.
Data());
5069 gPad->GetCanvas()->SetHighLightColor(hc);
5073 Color_t hc =
gPad->GetCanvas()->GetHighLightColor();
5074 gPad->GetCanvas()->SetHighLightColor(-1);
5075 gPad->ModifiedUpdate();
5077 if (
gPad->GetCanvas()->UseGL())
5078 gPad->UpdateAsync();
5079 gPad->GetCanvasImp()->UpdateDisplay(1,
kTRUE);
5081 pp->SaveImage(
this, psname, gtype);
5083 Info(
"Print",
"file %s has been created", psname.
Data());
5085 gPad->GetCanvas()->SetHighLightColor(hc);
5087 Warning(
"Print",
"Unsupported image format %s", psname.
Data());
5093 if (!title && strstr(opt,
"cxx")) {
5099 if (!title && strstr(opt,
"root")) {
5105 if (!title && strstr(opt,
"xml")) {
5112 if (!title && strstr(opt,
"json")) {
5118 if (!title && strstr(opt,
"svg")) {
5131 if (
auto h =
gROOT->GetPluginManager()->FindHandler(
"TVirtualPS",
"svg")) {
5132 if (
h->LoadPlugin() == -1)
5149 if (wasModified && !
IsBatch())
5153 Info(
"Print",
"SVG file %s has been created", psname.
Data());
5162 if (!title && (strstr(opt,
"tex") || strstr(opt,
"Standalone"))) {
5175 if (
auto h =
gROOT->GetPluginManager()->FindHandler(
"TVirtualPS",
"tex")) {
5176 if (
h->LoadPlugin() == -1)
5183 if (strstr(opt,
"Standalone")) standalone =
kTRUE;
5196 if (wasModified && !
IsBatch())
5201 Info(
"Print",
"Standalone TeX file %s has been created", psname.
Data());
5203 Info(
"Print",
"TeX file %s has been created", psname.
Data());
5222 copen = psname.
EndsWith(
"(");
if (copen) psname[psname.
Length()-1] = 0;
5223 cclose = psname.
EndsWith(
")");
if (cclose) psname[psname.
Length()-1] = 0;
5224 copenb = psname.
EndsWith(
"[");
if (copenb) psname[psname.
Length()-1] = 0;
5225 ccloseb = psname.
EndsWith(
"]");
if (ccloseb) psname[psname.
Length()-1] = 0;
5229 if (copen || copenb) mustClose =
kFALSE;
5230 if (cclose || ccloseb) mustClose =
kTRUE;
5241 if (ratio < 1) pstype = 112;
5242 if (strstr(opt,
"Portrait")) pstype = 111;
5243 if (strstr(opt,
"Landscape")) pstype = 112;
5244 if (strstr(opt,
"eps")) pstype = 113;
5245 if (strstr(opt,
"Preview")) pstype = 113;
5252 const char *pluginName =
"ps";
5253 if (strstr(opt,
"pdf") || title || strstr(opt,
"EmbedFonts"))
5256 pluginName =
"image";
5258 if (
auto h =
gROOT->GetPluginManager()->FindHandler(
"TVirtualPS", pluginName)) {
5259 if (
h->LoadPlugin() == -1)
5268 if (titlePos !=
kNPOS) {
5278 if (!strstr(opt,
"pdf") || image) {
5295 if (!copen)
Info(
"Print",
"%s file %s has been created", opt.
Data(), psname.
Data());
5296 else Info(
"Print",
"%s file %s has been created using the current canvas", opt.
Data(), psname.
Data());
5305 if (titlePos !=
kNPOS) {
5308 }
else if (!ccloseb) {
5312 if (cclose)
Info(
"Print",
"Current canvas added to %s file %s and file closed", opt.
Data(), psname.
Data());
5313 else Info(
"Print",
"%s file %s has been closed", opt.
Data(), psname.
Data());
5318 Info(
"Print",
"Current canvas added to %s file %s", opt.
Data(), psname.
Data());
5323 if (wasModified && !
IsBatch())
5326 if (strstr(opt,
"Preview"))
5328 if (strstr(opt,
"EmbedFonts")) {
5329 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",
5344 Error(
"Range",
"illegal world coordinates range: x1=%f, y1=%f, x2=%f, y2=%f",
x1,
y1,
x2,
y2);
5382 Error(
"RangeAxis",
"illegal axis coordinates range: xmin=%f, ymin=%f, xmax=%f, ymax=%f",
5422 if (res && modified)
5467 TH1 *hobj =
nullptr;
5473 while ((obj = next())) {
5485 if (
g) hobj =
g->GetHistogram();
5502 gPad->GetUxmax(),
gPad->GetUymax());
5504 b->SetLineStyle(
gPad->GetFrameLineStyle());
5505 b->SetLineWidth(
gPad->GetFrameLineWidth());
5506 b->SetLineColor(
gPad->GetFrameLineColor());
5638 Error(
"ResizePad",
"Cannot resize pad. No current pad available.");
5641 if (
gPad->GetWw()==0.0||
gPad->GetWh()==0.0) {
5642 Warning(
"ResizePad",
"gPad has at least one zero dimension.");
5646 Warning(
"ResizePad",
"The pad has at least one zero dimension.");
5651 if (
this ==
gPad->GetCanvas()) {
5659 Warning(
"ResizePad",
"The parent pad has at least one zero dimension.");
5708 while (
auto obj = next()) {
5714 if (
gPad->IsBatch())
5717 if (pp->IsNative()) {
5719 auto attl = pp->GetAttLine();
5720 attl.SetLineColor(-1);
5721 pp->SetAttLine(attl);
5722 auto attt = pp->GetAttText();
5723 attt.SetTextSize(-1);
5725 pp->SetAttText(attt);
5736 Warning(
"ResizePad",
"Inf/NaN propagated to the pad. Check drawn objects.");
5737 if (w <= 0 || w > 10000) {
5738 Warning(
"ResizePad",
"%s width changed from %d to %d\n",
GetName(),
w,10);
5741 if (h <= 0 || h > 10000) {
5742 Warning(
"ResizePad",
"%s height changed from %d to %d\n",
GetName(),
h,10);
5811 ((
TPad*)
this)->Print(psname,
"gif");
5856 auto p = padName.
Index(
" ");
5862 static Int_t pcounter = 0;
5867 const char *pname = padName.
Data();
5870 if (padName.
Length() == 0) {
5872 if (
this ==
gPad->GetCanvas())
5879 if (
this !=
gPad->GetCanvas()) {
5881 out <<
"// ------------>Primitives in pad: " <<
GetName() <<
"\n";
5882 out <<
" TPad *" <<
cname <<
" = new TPad(\"" <<
GetName() <<
"\", \""
5885 out <<
" " <<
cname <<
"->Draw();\n";
5886 out <<
" " <<
cname <<
"->cd();\n";
5888 out <<
" " <<
cname <<
"->Range(" <<
fX1 <<
"," <<
fY1 <<
"," <<
fX2 <<
"," <<
fY2 <<
");\n";
5893 out <<
" TView::CreateView(1)->SetRange(" << rmin[0] <<
", " << rmin[1] <<
", " << rmin[2] <<
", " << rmax[0]
5894 <<
", " << rmax[1] <<
", " << rmax[2] <<
");\n";
5904 out <<
" " <<
cname <<
"->SetLogx();\n";
5906 out <<
" " <<
cname <<
"->SetLogy();\n";
5908 out <<
" " <<
cname <<
"->SetLogz();\n";
5910 out <<
" " <<
cname <<
"->SetGridx();\n";
5912 out <<
" " <<
cname <<
"->SetGridy();\n";
5914 out <<
" " <<
cname <<
"->SetTickx(" <<
GetTickx() <<
");\n";
5916 out <<
" " <<
cname <<
"->SetTicky(" <<
GetTicky() <<
");\n";
5918 out <<
" " <<
cname <<
"->SetTheta(" <<
GetTheta() <<
");\n";
5920 out <<
" " <<
cname <<
"->SetPhi(" <<
GetPhi() <<
");\n";
5952 out <<
" " <<
cname <<
"->SetFrameFillStyle(" << frame->
GetFillStyle() <<
");\n";
5954 out <<
" " <<
cname <<
"->SetFrameLineStyle(" << frame->
GetLineStyle() <<
");\n";
5958 out <<
" " <<
cname <<
"->SetFrameLineWidth(" << frame->
GetLineWidth() <<
");\n";
5967 while (
auto obj = next()) {
5971 out <<
" " << pname <<
"->cd();\n";
5973 out <<
" " <<
cname <<
"->cd();\n";
5976 out <<
" " <<
cname <<
"->Modified();\n";
5989 Error(
"SetAspectRatio",
"cannot fix aspect ratio, height of pad is 0");
6013 while ((obj = next())) {
6027 if (fstyle == 0) fstyle = 4000;
6090 if ((xlow < 0) || (xlow > 1) || (ylow < 0) || (ylow > 1)) {
6091 Error(
"TPad",
"illegal bottom left position: x=%f, y=%f", xlow, ylow);
6094 if ((xup < 0) || (xup > 1) || (yup < 0) || (yup > 1)) {
6095 Error(
"TPad",
"illegal top right position: x=%f, y=%f", xup, yup);
6098 if (xup-xlow <= 0) {
6099 Error(
"TPad",
"illegal width: %f", xup-xlow);
6102 if (yup-ylow <= 0) {
6103 Error(
"TPad",
"illegal height: %f", yup-ylow);
6140 SetPad(xlow, ylow, xup, yup);
6148 if (!view)
delete fView;
6161 pp->SetAttFill({color,
style});
6173 pp->SetAttLine({color,
style, lwidth});
6185 pp->SetAttMarker({color,
style, msize});
6197 if (font % 10 > 2) {
6210 pp->SetAttText({align,
angle, color, font, tsize});
6224 if (aBBox.
fX<bBBox.
fX) {
6240 else if (
mode ==
'y') {
6241 if (aBBox.
fY<bBBox.
fY) {
6309 std::vector<dField> curDist;
6310 std::vector<dField> otherDist;
6320 Int_t dSizeArrow = 12;
6322 movedX = movedY =
false;
6325 if (
mode !=
'i') resize =
true;
6334 static TPad *tmpGuideLinePad =
nullptr;
6337 if (tmpGuideLinePad) {
6339 auto guidePadClicked = (
object == tmpGuideLinePad);
6340 tmpGuideLinePad->
Delete();
6341 tmpGuideLinePad =
nullptr;
6342 if (guidePadClicked)
return;
6346 prims =
gPad->GetListOfPrimitives();
6353 if (!tmpGuideLinePad){
6354 tmpGuideLinePad =
new TPad(
"tmpGuideLinePad",
"tmpGuideLinePad", 0, 0, 1, 1);
6360 tmpGuideLinePad->
Draw();
6361 tmpGuideLinePad->
cd();
6364 if (cling && !log) threshold = 7;
6377 MX =
gPad->GetX1() + 0.5 * (
gPad->GetX2()-
gPad->GetX1());
6378 MY =
gPad->GetY1() + 0.5 * (
gPad->GetY2()-
gPad->GetY1());
6379 pMX =
gPad->XtoPixel(MX);
6380 pMY =
gPad->YtoPixel(MY);
6383 if (cling && (!resize)) {
6391 L->SetLineColor(lineColor);
6395 if (cling && (!resize)) {
6403 L->SetLineColor(lineColor);
6407 for (
UInt_t i = 0; i<
n; i++) {
6413 if (cling && (!resize)) {
6420 L->SetLineColor(lineColor);
6425 if (cling && (!resize)) {
6433 L->SetLineColor(lineColor);
6440 for (
UInt_t i = 0; i<
n; i++) {
6443 aBBox =
a->GetBBox();
6444 for (
UInt_t j = i+1; j<
n; j++) {
6447 bBBox =
b->GetBBox();
6455 if ((
b != cur)&&(
a != cur)) otherDist.push_back(abDist);
6456 else curDist.push_back(abDist);
6463 if ((
b != cur)&&(
a != cur)) otherDist.push_back(abDist);
6464 else curDist.push_back(abDist);
6472 for (
UInt_t i = 0; i<curDist.size(); i++) {
6473 for (
UInt_t j = 0; j<otherDist.size(); j++) {
6474 if ((curDist[i].fdir == otherDist[j].fdir) && (otherDist[j].fdir==
'x') && (
TMath::Abs(curDist[i].fdist-otherDist[j].fdist)<threshold)) {
6475 if (cling && (!movedX) && (!resize)) {
6481 DrawDist(curDist[i].fa->GetBBox(), curDist[i].fb->GetBBox(),
'x');
6482 DrawDist(otherDist[j].fa->GetBBox(), otherDist[j].fb->GetBBox(),
'x');
6484 if ((curDist[i].fdir == otherDist[j].fdir) && (otherDist[j].fdir==
'y') && (
TMath::Abs(curDist[i].fdist-otherDist[j].fdist)<threshold)) {
6485 if (cling && (!movedY) && (!resize)) {
6491 DrawDist(curDist[i].fa->GetBBox(), curDist[i].fb->GetBBox(),
'y');
6492 DrawDist(otherDist[j].fa->GetBBox(), otherDist[j].fb->GetBBox(),
'y');
6495 for (
UInt_t j = i; j<curDist.size(); j++) {
6497 if ((curDist[i].fdir == curDist[j].fdir) && (curDist[j].fdir==
'x') && (
TMath::Abs(curDist[i].fdist-curDist[j].fdist)<threshold)) {
6498 if (cling && (!movedX) && (!resize)) {
6503 DrawDist(curDist[i].fa->GetBBox(), curDist[i].fb->GetBBox(),
'x');
6504 DrawDist(curDist[j].fa->GetBBox(), curDist[j].fb->GetBBox(),
'x');
6507 if ((curDist[i].fdir == curDist[j].fdir) && (curDist[j].fdir==
'y') && (
TMath::Abs(curDist[i].fdist-curDist[j].fdist)<threshold)) {
6508 if (cling && (!movedY) && (!resize)) {
6513 DrawDist(curDist[i].fa->GetBBox(), curDist[i].fb->GetBBox(),
'y');
6514 DrawDist(curDist[j].fa->GetBBox(), curDist[j].fb->GetBBox(),
'y');
6521 for (
UInt_t i = 0; i<
n; i++) {
6523 if (
a && (cur !=
a)) {
6524 aBBox =
a->GetBBox();
6536 gPad->PixeltoX(aBBox.
fX+aBBox.
fWidth),
gPad->PixeltoY(aBBox.
fY-dSizeArrow-
gPad->VtoPixel(0)), 0.01,
"<|>");
6578 if (tmpGuideLinePad) {
6581 tmpGuideLinePad->
Delete();
6582 tmpGuideLinePad =
nullptr;
6668 Int_t nch, nobjects;
6671 if (
b.IsReading()) {
6690 while ((obj = next())) {
6712 b >> single;
fX1 = single;
6713 b >> single;
fY1 = single;
6714 b >> single;
fX2 = single;
6715 b >> single;
fY2 = single;
6722 b >> single;
fX1 = single;
6723 b >> single;
fY1 = single;
6724 b >> single;
fX2 = single;
6725 b >> single;
fY2 = single;
6752 b >> single;
fWNDC = single;
6753 b >> single;
fHNDC = single;
6827 char drawoption[64];
6828 for (
Int_t i = 0; i < nobjects; i++) {
6831 b.ReadFastArray(drawoption,nch);
6853 b >> single;
fPhi = single;
6917 while ((obj = next())) {
7004 if (emode && strlen(emode))
gROOT->SetEditorMode(emode);
7005 if (
gROOT->GetEditorMode() == 0 && pname && strlen(pname) > 2)
gROOT->SetEditorMode(&pname[1]);
7009 TObject *oldlast =
gPad->GetListOfPrimitives() ?
gPad->GetListOfPrimitives()->Last() :
nullptr;
7012 Bool_t hasname = pname && (strlen(pname) > 0);
7013 if ((!pname || !pname[0]) && (!emode || !emode[0])) testlast =
kTRUE;
7014 if (testlast)
gROOT->SetEditorMode();
7016 if (
gROOT->GetEditorMode() == 0) {
7019 if (obj)
return obj;
7022 if (!
gPad->GetListOfPrimitives())
return nullptr;
7023 obj =
gPad->GetListOfPrimitives()->Last();
7024 if (obj != oldlast)
return obj;
7045 if (
gPad->IsBatch())
return nullptr;
7069 (
size_t)tip,(
size_t)
this).Data());
7087 ::Info(
"TPad::x3d()",
"This function is deprecated. Use %s->GetViewer3D(\"x3d\") instead",this->
GetName());
7090 if (!type || !
type[0]) {
7131 if (!strstr(
type,
"pad")) {
7135 Warning(
"GetViewer3D",
"Cannot create 3D viewer of type: %s",
type);
7140 if (strstr(
type,
"gl") && !strstr(
type,
"ogl")) {
7145 createdExternal =
kTRUE;
7163 if (createdExternal) {
7246 p.SetX(
gPad->XtoPixel(
x));
7247 p.SetY(
gPad->YtoPixel(
y));
const Int_t kMaxPixel
Max value for an int.
short Style_t
Style number (short)
bool Bool_t
Boolean (0=false, 1=true) (bool)
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 wid
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.
static Bool_t ContainsTImage(TList *li)
Auxiliary function.
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
Create or provide interactive instance It is allowed the only instance of TInteractive per pad It can...
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 SaveImage(TVirtualPad *pad, const char *fileName, Int_t type) const =0
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 gPad->Interact...
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 TInteractive * Interactive(TObject *=nullptr, TInteractive *=nullptr)=0
virtual Int_t GetNumber() const =0
void Streamer(TBuffer &) override
Stream an object of class TVirtualPad.
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
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)