136 fPadPointer =
nullptr;
137 fPrimitives =
nullptr;
152 fPadView3D =
nullptr;
182 fFixedAspectRatio =
kFALSE;
185 fNumPaletteColor = 0;
186 fNextPaletteColor = 0;
200 fUxmin = fUymin = fUxmax = fUymax = 0;
249 :
TVirtualPad(
name,title,xlow,ylow,xup,yup,color,bordersize,bordermode)
332 Error(
"TPad",
"You must create a TCanvas before creating a TPad");
341 if ((xlow < 0) || (xlow > 1) || (ylow < 0) || (ylow > 1)) {
342 Error(
"TPad",
"illegal bottom left position: x=%f, y=%f", xlow, ylow);
344 }
else if ((xup < 0) || (xup > 1) || (yup < 0) || (yup > 1)) {
345 Error(
"TPad",
"illegal top right position: x=%f, y=%f", xup, yup);
347 }
else if (xup-xlow <= 0) {
348 Error(
"TPad",
"illegal width: %f", xup-xlow);
350 }
else if (yup-ylow <= 0) {
351 Error(
"TPad",
"illegal height: %f", yup-ylow);
369 SetPad(
name, title, xlow, ylow, xup, yup, color, bordersize, bordermode);
516 while (
auto exec = (
TExec*)next())
559 if (!lop)
return nullptr;
560 TList *lof =
nullptr;
567 auto AddEntryFromListOfFunctions = [&]() {
569 while ((obj = nextobj())) {
578 leg->AddEntry(obj, mes.
Data(),
"lpf");
582 while(
auto o = next()) {
588 if (o->InheritsFrom(
TNamed::Class()) && strlen(o->GetTitle()))
590 else if (strlen(o->GetName()))
593 mes = o->ClassName();
606 lof = ((
TH1 *)o)->GetListOfFunctions();
607 AddEntryFromListOfFunctions();
610 lof = ((
TGraph *)o)->GetListOfFunctions();
611 AddEntryFromListOfFunctions();
617 TIter nextgraph(grlist);
619 while ((obj = nextgraph())) {
631 leg->AddEntry(obj, mes.
Data(), opt);
634 AddEntryFromListOfFunctions();
639 TIter nexthist(hlist);
640 while ((obj = nexthist())) {
644 else if (strlen(hist->
GetName()))
652 leg->AddEntry( obj, mes.
Data(), opt );
661 Info(
"BuildLegend",
"No object(s) to build a TLegend.");
704 while (
auto obj = next()) {
707 if (
n == subpadnumber) {
708 return ((
TPad*)obj)->
cd();
773 for (
Int_t i=0;i<2;i++) {
786 while(code1 + code2) {
797 if (ic == 0) ic = code2;
799 yt =
y[0] + (
y[1]-
y[0])*(xclipl-
x[0])/(
x[1]-
x[0]);
803 yt =
y[0] + (
y[1]-
y[0])*(xclipr-
x[0])/(
x[1]-
x[0]);
807 xt =
x[0] + (
x[1]-
x[0])*(yclipb-
y[0])/(
y[1]-
y[0]);
811 xt =
x[0] + (
x[1]-
x[0])*(yclipt-
y[0])/(
y[1]-
y[0]);
817 code1 =
ClippingCode(xt,yt,xclipl,yclipb,xclipr,yclipt);
821 code2 =
ClippingCode(xt,yt,xclipl,yclipb,xclipr,yclipt);
835 for (
Int_t i=0;i<2;i++) {
844 if (
x[0] < xclipl) code1 = code1 | 0x1;
845 if (
x[0] > xclipr) code1 = code1 | 0x2;
846 if (
y[0] < yclipb) code1 = code1 | 0x4;
847 if (
y[0] > yclipt) code1 = code1 | 0x8;
849 if (
x[1] < xclipl) code2 = code2 | 0x1;
850 if (
x[1] > xclipr) code2 = code2 | 0x2;
851 if (
y[1] < yclipb) code2 = code2 | 0x4;
852 if (
y[1] > yclipt) code2 = code2 | 0x8;
856 while(code1 + code2) {
867 if (ic == 0) ic = code2;
869 yt =
y[0] + (
y[1]-
y[0])*(xclipl-
x[0])/(
x[1]-
x[0]);
873 yt =
y[0] + (
y[1]-
y[0])*(xclipr-
x[0])/(
x[1]-
x[0]);
877 xt =
x[0] + (
x[1]-
x[0])*(yclipb-
y[0])/(
y[1]-
y[0]);
881 xt =
x[0] + (
x[1]-
x[0])*(yclipt-
y[0])/(
y[1]-
y[0]);
887 code1 =
ClippingCode(xt,yt,xclipl,yclipb,xclipr,yclipt);
891 code2 =
ClippingCode(xt,yt,xclipl,yclipb,xclipr,yclipt);
904 if (
x < xcl1) code = code | 0x1;
905 if (
x > xcl2) code = code | 0x2;
906 if (
y < ycl1) code = code | 0x4;
907 if (
y > ycl2) code = code | 0x8;
955 std::vector<Double_t> xc2(nn), yc2(nn);
961 for (i=0; i<
n; i++) {
970 xc2[nc2] = xclipl; yc2[nc2++] = slope*(xclipl-
x1)+
y1;
972 xc2[nc2] =
x2; yc2[nc2++] =
y2;
976 xc2[nc2] = xclipl; yc2[nc2++] = slope*(xclipl-
x1)+
y1;
977 xc2[nc2] =
x2; yc2[nc2++] =
y2;
984 x1 = xc2[nc2-1];
y1 = yc2[nc2-1];
986 for (i=0; i<nc2; i++) {
987 x2 = xc2[i];
y2 = yc2[i];
995 xc[nc] =
x1+(yclipt-
y1)*slope; yc[nc++] = yclipt;
997 xc[nc] =
x2; yc[nc++] =
y2;
1001 xc[nc] =
x1+(yclipt-
y1)*slope; yc[nc++] = yclipt;
1002 xc[nc] =
x2; yc[nc++] =
y2;
1011 x1 = xc[nc-1];
y1 = yc[nc-1];
1013 for (i=0; i<nc; i++) {
1014 x2 = xc[i];
y2 = yc[i];
1022 xc2[nc2] = xclipr; yc2[nc2++] = slope*(xclipr-
x1)+
y1;
1024 xc2[nc2] =
x2; yc2[nc2++] =
y2;
1028 xc2[nc2] = xclipr; yc2[nc2++] = slope*(xclipr-
x1)+
y1;
1029 xc2[nc2] =
x2; yc2[nc2++] =
y2;
1036 x1 = xc2[nc2-1];
y1 = yc2[nc2-1];
1038 for (i=0; i<nc2; i++) {
1039 x2 = xc2[i];
y2 = yc2[i];
1047 xc[nc] =
x1+(yclipb-
y1)*slope; yc[nc++] = yclipb;
1049 xc[nc] =
x2; yc[nc++] =
y2;
1053 xc[nc] =
x1+(yclipb-
y1)*slope; yc[nc++] = yclipb;
1054 xc[nc] =
x2; yc[nc++] =
y2;
1098 if (!
gROOT->GetListOfCanvases())
return;
1100 gROOT->GetListOfCanvases()->Remove(
this);
1122 if (
gROOT->GetSelectedPad() ==
this)
1123 gROOT->SetSelectedPad(
nullptr);
1147 while (
auto obj = next()) {
1149 ((
TPad*)obj)->CopyPixmap();
1150 ((
TPad*)obj)->CopyPixmaps();
1176 Int_t pxl, pyl, pxt, pyt;
1181 if (px1 < px2) {pxl = px1; pxt = px2;}
1182 else {pxl = px2; pxt = px1;}
1183 if (py1 < py2) {pyl = py1; pyt = py2;}
1184 else {pyl = py2; pyt = py1;}
1188 if ( (px > pxl && px < pxt) && (py > pyl && py < pyt) ) {
1195 if (py < pyl) dxl += pyl - py;
1196 if (py > pyt) dxl += py - pyt;
1198 if (py < pyl) dxt += pyl - py;
1199 if (py > pyt) dxt += py - pyt;
1201 if (px < pxl) dyl += pxl - px;
1202 if (px > pxt) dyl += px - pxt;
1204 if (px < pxl) dyt += pxl - px;
1205 if (px > pxt) dyt += px - pxt;
1207 Int_t distance = dxl;
1208 if (dxt < distance) distance = dxt;
1209 if (dyl < distance) distance = dyl;
1210 if (dyt < distance) distance = dyt;
1255 arr[1] =
this; arr[2] = (
void*)&nx;arr[3] = (
void*)& ny;
1256 arr[4] = (
void*)&xmargin; arr[5] = (
void *)& ymargin; arr[6] = (
void *)&color;
1257 if ((*
gThreadXAR)(
"PDCD", 7, arr,
nullptr))
return;
1263 if (nx <= 0) nx = 1;
1264 if (ny <= 0) ny = 1;
1271 if (xmargin > 0 && ymargin > 0) {
1275 for (iy=0;iy<ny;iy++) {
1276 y2 = 1 - iy*dy - ymargin;
1277 y1 =
y2 - dy + 2*ymargin;
1279 if (
y1 >
y2)
continue;
1280 for (ix=0;ix<nx;ix++) {
1281 x1 = ix*dx + xmargin;
1282 x2 =
x1 +dx -2*xmargin;
1283 if (
x1 >
x2)
continue;
1308 for (
Int_t i=0;i<nx;i++) {
1312 if (i == nx-1)
x2 = 1-xr;
1313 for (
Int_t j=0;j<ny;j++) {
1314 number = j*nx + i +1;
1317 if (j == 0)
y2 = 1-yt;
1318 if (j == ny-1)
y1 = 0;
1345 Error(
"DivideSquare",
"No canvas associated with this pad.");
1358 Divide(
w,
h, xmargin, ymargin, color);
1368 gROOT->MakeDefCanvas();
1405 if (!classobj)
return;
1410 TText *ptext =
nullptr;
1413 Int_t nd,nf,nc,nkd,nkf,i,j;
1426 Range(0,0,xpad,ypad);
1431 clevel[nlevel] = obj;
1440 if (nlevel >= maxlev-1)
break;
1444 Int_t ilevel, nelem;
1445 for (ilevel=nlevel;ilevel>=0;ilevel--) {
1446 cl = clevel[ilevel];
1448 if (nelem > maxelem) maxelem = nelem;
1449 nc = (nelem/50) + 1;
1459 if (dx < 1.3) dx = 1.3;
1460 tsizcm = tsizcm - 0.03*
Double_t(ncdraw-5);
1461 if (tsizcm < 0.27) tsizcm = 0.27;
1466 for (ilevel=nlevel;ilevel>=0;ilevel--) {
1467 cl = clevel[ilevel];
1469 if (nelem > maxelem) maxelem = nelem;
1470 nc = (nelem/50) + 1;
1472 if (ilevel < nlevel)
x1 =
x2 + 0.5;
1516 if (i >= nkd) { i = 1;
y =
y1 - 0.5*dy;
x += 1/
Double_t(nc); }
1517 else { i++;
y -= dy; }
1521 Int_t dim =
d->GetArrayDim();
1525 while (indx < dim ){
1526 ldname = strlen(dname);
1527 snprintf(&dname[ldname],256-ldname,
"[%d]",
d->GetMaxIndex(indx));
1548 while ((
m = (
TMethod *) nextm())) {
1550 !strcmp(
m->
GetName(),
"Dictionary" ) ||
1551 !strcmp(
m->
GetName(),
"Class_Version" ) ||
1552 !strcmp(
m->
GetName(),
"DeclFileName" ) ||
1553 !strcmp(
m->
GetName(),
"DeclFileLine" ) ||
1554 !strcmp(
m->
GetName(),
"ImplFileName" ) ||
1555 !strcmp(
m->
GetName(),
"ImplFileLine" )
1558 if (fcount > nf)
break;
1559 if (i >= nkf) { i = 1;
y = ysep - 0.5*dy;
x += 1/
Double_t(nc); }
1560 else { i++;
y -= dy; }
1565 for (j=ilevel-1;j>=0;j--) {
1566 if (cl == clevel[ilevel]) {
1567 if (clevel[j]->GetMethodAny((
char*)
m->
GetName())) {
1614 Int_t pxmin,pxmax,pymin,pymax,px,py;
1628 pxmax = canvas->
GetWw();
1630 pymax = cpad->
GetWh();
1634 if(pxold)
gVirtualX->DrawLine(pxold,pymin,pxold,pymax);
1635 if(pyold)
gVirtualX->DrawLine(pxmin,pyold,pxmax,pyold);
1684 Warning(
"DrawFrame",
"Must be called for the current pad only");
1691 if (hframe)
delete hframe;
1699 std::vector<Double_t> xbins(nbins+1);
1701 for (
Int_t i=1;i<=nbins;i++) {
1704 hframe =
new TH1F(
"hframe",title,nbins,xbins.data());
1727 Double_t xlow, ylow, xup, yup, hs, ws;
1732 gPad->SetFillColor(0);
1737 text.SetTextFont(61);
1738 text.SetTextSize(0.07);
1739 text.SetTextAlign(22);
1746 for (i=0;i<10;i++) {
1753 box.SetFillStyle(1001);
1754 box.SetFillColor(color);
1755 box.DrawBox(xlow, ylow, xup, yup);
1756 box.SetFillStyle(0);
1757 box.SetLineColor(1);
1758 box.DrawBox(xlow, ylow, xup, yup);
1759 if (color == 1)
text.SetTextColor(0);
1760 else text.SetTextColor(1);
1788 const Int_t kMaxDiff = 5;
1789 const Int_t kMinSize = 20;
1790 static Int_t pxorg, pyorg;
1791 static Int_t px1, px2, py1, py2, pxl, pyl, pxt, pyt, pxold, pyold;
1792 static Int_t px1p, px2p, py1p, py2p, pxlp, pylp, pxtp, pytp;
1793 static Bool_t pA, pB, pC, pD, pTop, pL, pR, pBot, pINSIDE;
1816 pA = pB = pC = pD = pTop = pL = pR = pBot = pINSIDE =
kFALSE;
1860 if (newcode)
return;
1927 pA = pB = pC = pD = pTop = pL = pR = pBot = pINSIDE =
kFALSE;
1931 pxold = pxl; pyold = pyl; pA =
kTRUE;
1936 pxold = pxt; pyold = pyl; pB =
kTRUE;
1941 pxold = pxt; pyold = pyt; pC =
kTRUE;
1946 pxold = pxl; pyold = pyt; pD =
kTRUE;
1950 if ((px > pxl+kMaxDiff && px < pxt-kMaxDiff) &&
1952 pxold = pxl; pyold = pyl; pTop =
kTRUE;
1956 if ((px > pxl+kMaxDiff && px < pxt-kMaxDiff) &&
1958 pxold = pxt; pyold = pyt; pBot =
kTRUE;
1962 if ((py > pyl+kMaxDiff && py < pyt-kMaxDiff) &&
1964 pxold = pxl; pyold = pyl; pL =
kTRUE;
1968 if ((py > pyl+kMaxDiff && py < pyt-kMaxDiff) &&
1970 pxold = pxt; pyold = pyt; pR =
kTRUE;
1974 if ((px > pxl+kMaxDiff && px < pxt-kMaxDiff) &&
1975 (py > pyl+kMaxDiff && py < pyt-kMaxDiff)) {
1976 pxold = px; pyold = py; pINSIDE =
kTRUE;
1984 if (pA || pB || pC || pD || pTop || pL || pR || pBot)
1987 if (!pA && !pB && !pC && !pD && !pTop && !pL && !pR && !pBot && !pINSIDE)
2000 if (px > pxt-kMinSize) { px = pxt-kMinSize; wx = px; }
2001 if (py > pyt-kMinSize) { py = pyt-kMinSize; wy = py; }
2002 if (px < pxlp) { px = pxlp; wx = px; }
2003 if (py < pylp) { py = pylp; wy = py; }
2021 if (px < pxl+kMinSize) { px = pxl+kMinSize; wx = px; }
2022 if (py > pyt-kMinSize) { py = pyt-kMinSize; wy = py; }
2023 if (px > pxtp) { px = pxtp; wx = px; }
2024 if (py < pylp) { py = pylp; wy = py; }
2042 if (px < pxl+kMinSize) { px = pxl+kMinSize; wx = px; }
2043 if (py < pyl+kMinSize) { py = pyl+kMinSize; wy = py; }
2044 if (px > pxtp) { px = pxtp; wx = px; }
2045 if (py > pytp) { py = pytp; wy = py; }
2063 if (px > pxt-kMinSize) { px = pxt-kMinSize; wx = px; }
2064 if (py < pyl+kMinSize) { py = pyl+kMinSize; wy = py; }
2065 if (px < pxlp) { px = pxlp; wx = px; }
2066 if (py > pytp) { py = pytp; wy = py; }
2085 if (py2 > py1-kMinSize) { py2 = py1-kMinSize; wy = py2; }
2086 if (py2 < py2p) { py2 = py2p; wy = py2; }
2101 if (py1 < py2+kMinSize) { py1 = py2+kMinSize; wy = py1; }
2102 if (py1 > py1p) { py1 = py1p; wy = py1; }
2117 if (px1 > px2-kMinSize) { px1 = px2-kMinSize; wx = px1; }
2118 if (px1 < px1p) { px1 = px1p; wx = px1; }
2134 if (px2 < px1+kMinSize) { px2 = px1+kMinSize; wx = px2; }
2135 if (px2 > px2p) { px2 = px2p; wx = px2; }
2150 Int_t dx = px - pxold;
2151 Int_t dy = py - pyold;
2152 px1 += dx; py1 += dy; px2 += dx; py2 += dy;
2153 if (px1 < px1p) { dx = px1p - px1; px1 += dx; px2 += dx; wx = px+dx; }
2154 if (px2 > px2p) { dx = px2 - px2p; px1 -= dx; px2 -= dx; wx = px-dx; }
2155 if (py1 > py1p) { dy = py1 - py1p; py1 -= dy; py2 -= dy; wy = py-dy; }
2156 if (py2 < py2p) { dy = py2p - py2; py1 += dy; py2 += dy; wy = py+dy; }
2197 if (pTop || pBot || pL || pR || pINSIDE) {
2204 if (px != pxorg || py != pyorg) {
2228 if (pINSIDE)
gPad->ShowGuidelines(
this, event);
2229 if (pTop)
gPad->ShowGuidelines(
this, event,
't',
true);
2230 if (pBot)
gPad->ShowGuidelines(
this, event,
'b',
true);
2231 if (pL)
gPad->ShowGuidelines(
this, event,
'l',
true);
2232 if (pR)
gPad->ShowGuidelines(
this, event,
'r',
true);
2233 if (pA)
gPad->ShowGuidelines(
this, event,
'1',
true);
2234 if (pB)
gPad->ShowGuidelines(
this, event,
'2',
true);
2235 if (pC)
gPad->ShowGuidelines(
this, event,
'3',
true);
2236 if (pD)
gPad->ShowGuidelines(
this, event,
'4',
true);
2245 if (
gROOT->IsEscaped()) {
2250 if (opaque||ropaque) {
2279 if (pTop || pBot || pL || pR || pINSIDE) {
2286 if (pA || pB || pC || pD || pTop || pL || pR || pBot)
2292 if (px != pxorg || py != pyorg) {
2329 event =
gVirtualX->RequestLocator(1, 1, px, py);
2368 static Int_t axisNumber;
2370 static Int_t px1old, py1old, px2old, py2old;
2371 Int_t nbd, inc, bin1, bin2, first, last;
2374 static std::unique_ptr<TBox> zoombox;
2375 Double_t zbx1=0,zbx2=0,zby1=0,zby2=0;
2382 if (strstr(opt,
"cont4")) {
2391 if (!strcmp(axis->
GetName(),
"xaxis")) {
2395 if (!strcmp(axis->
GetName(),
"yaxis")) {
2399 if (!strcmp(axis->
GetName(),
"zaxis")) {
2405 if (axisNumber == 1) {
2411 }
else if (axisNumber == 2) {
2427 if (axisNumber == 1) {
2432 }
else if (axisNumber == 2) {
2446 zoombox = std::make_unique<TBox>(zbx1, zby1, zbx2, zby2);
2451 zoombox->SetFillColor(ci);
2457 if (!opaque)
gVirtualX->SetLineColor(-1);
2465 if (axisNumber == 1) {
2475 if (axisNumber == 1) {
2480 }
else if (axisNumber == 2) {
2495 zoombox->SetX1(zbx1);
2496 zoombox->SetY1(zby1);
2497 zoombox->SetX2(zbx2);
2498 zoombox->SetY2(zby2);
2535 if (
gROOT->IsEscaped()) {
2537 if (opaque && zoombox)
2544 if (ratio1 > ratio2) {
2549 if (ratio2 - ratio1 > 0.05) {
2551 if (axisNumber == 3 && hobj && hobj->
GetDimension() != 3) {
2560 Float_t newmin = zmin + (zmax-zmin)*ratio1;
2561 Float_t newmax = zmin + (zmax-zmin)*ratio2;
2574 bin1 = first +
Int_t((last-first+1)*ratio1);
2575 bin2 = first +
Int_t((last-first+1)*ratio2);
2585 if (axisNumber == 1) {
2593 }
else if (axisNumber == 2) {
2621 xmin = ((
xmin-xmi)/(xma-xmi))*(up-low)+low;
2622 xmax = ((
xmax-xmi)/(xma-xmi))*(up-low)+low;
2625 if (!strcmp(axis->
GetName(),
"xaxis")) axisNumber = 1;
2626 if (!strcmp(axis->
GetName(),
"yaxis")) axisNumber = 2;
2627 if (ratio2 - ratio1 > 0.05) {
2634 if (axisNumber == 1) axis->
SetRange(bin1,bin2);
2635 if (axisNumber == 2 && hobj1) {
2652 while ((obj= next())) {
2655 if (hobj == hobj1)
continue;
2658 if (axisNumber == 1) {
2660 }
else if (axisNumber == 2) {
2704 if (found)
return found;
2706 while (
auto cur = next()) {
2709 if (found)
return found;
2724 if (found)
return found;
2726 while (
auto cur = next()) {
2729 if (found)
return found;
2804 if (
fCanvas ==
this)
return nullptr;
2813 if (
fCanvas ==
this)
return nullptr;
2822 if (
fCanvas ==
this)
return nullptr;
2988 while ((obj=next())) {
2992 if (found)
return found;
3002 if (!subpadnumber) {
3009 while ((obj = next())) {
3012 if (pad->
GetNumber() == subpadnumber)
return pad;
3059 if (color <= 0)
return;
3077 gROOT->SetSelectedPad(
this);
3106 if (opt.
Index(
"pfc")>=0 || opt.
Index(
"plc")>=0 || opt.
Index(
"pmc")>=0) {
3124 if (i>=ncolors) i = ncolors-1;
3136 Int_t const cellSize = 10;
3143 for (
int i = 0; i <
fCGnx; i++)
3144 for (
int j = 0; j <
fCGny; j++)
3150 while(
auto o = iter()) {
3163 while (
auto og = nextgraph())
3167 while (
auto oh = nexthist()) {
3181 for (
int r = i;
r <
w + i;
r++) {
3182 for (
int c = j;
c <
h + j;
c++) {
3217 bool isFirstVertical =
false;
3218 bool isFirstHorizontal =
false;
3220 for (std::size_t i = 0;
option[i] !=
'\0'; ++i) {
3221 char letter = std::tolower(
option[i]);
3222 if (letter ==
'w') {
3227 }
else if (letter ==
't' || letter ==
'b') {
3228 isFirstVertical = !isFirstHorizontal;
3230 dy = letter ==
't' ? -1 : 1;
3231 }
else if (letter ==
'l' || letter ==
'r') {
3232 isFirstHorizontal = !isFirstVertical;
3234 dx = letter ==
'r' ? -1 : 1;
3238 if(dx < 0) std::swap(nxbeg, nxend);
3239 if(dy < 0) std::swap(nybeg, nyend);
3241 auto attemptPlacement = [&](
Int_t i,
Int_t j) {
3251 if(!isFirstVertical) {
3252 for (
Int_t i = nxbeg; i != nxend; i += dx) {
3253 for (
Int_t j = nybeg; j != nyend; j += dy) {
3254 if (attemptPlacement(i, j))
return true;
3259 for (
Int_t j = nybeg; j != nyend; j += dy) {
3260 for (
Int_t i = nxbeg; i != nxend; i += dx) {
3261 if (attemptPlacement(i, j))
return true;
3269#define NotFree(i, j) fCollideGrid[TMath::Max(TMath::Min(i+j*fCGnx,fCGnx*fCGny),0)] = kFALSE;
3298 for (i=
x1+1; i<
x2; i++) {
3308 for (j=
y1+1; j<
y2; j++) {
3328 for (
int i =
x1; i<=
x2; i++) {
3347 for (i =
x1; i<=
x2; i++) {
3352 for (i =
y1; i<=
y2; i++) {
3370 for (
Int_t i=s; i<
n; i=i+s) {
3372 g->GetPoint(i ,
x2,
y2);
3399 if (
name.Index(
"hframe") >= 0)
return;
3404 bool haserrors =
false;
3405 TString drawOption =
h->GetDrawOption();
3409 if (drawOption.
Index(
"hist") < 0) {
3410 if (drawOption.
Index(
"e") >= 0) haserrors =
true;
3413 Int_t nx =
h->GetNbinsX();
3418 for (i = 1; i<nx; i++) {
3420 x1l =
h->GetBinCenter(i);
3426 y1l =
h->GetBinContent(i)-
h->GetBinErrorLow(i);
3432 y2l =
h->GetBinContent(i)+
h->GetBinErrorUp(i);
3438 for (j=
y1; j<=
y2; j++) {
3442 x1l =
h->GetBinLowEdge(i);
3448 y1l =
h->GetBinContent(i);
3455 x1l =
h->GetBinLowEdge(i)+
h->GetBinWidth(i);
3491 for (
int i = 0; i<
fCGnx; i++) {
3494 for (
int j = 0; j<
fCGny; j++) {
3511 box.DrawBox(X1L, Y1L, X2L, Y2L);
3513 box.SetFillColorAlpha(
kRed,t);
3514 box.DrawBox(X1L, Y1L, X2L, Y2L);
3518 if (t==0.15) t = 0.1;
3612 TObject *obj = lnk->GetObject();
3622 began3DScene =
kTRUE;
3625 obj->
Paint(lnk->GetOption());
3658 if (color < 0) color = -color;
3665 if (bordersize <= 0) bordersize = 2;
3686 if (px1 < px2) {xl =
fX1; xt =
fX2; }
3687 else {xl =
fX2; xt =
fX1;}
3688 if (py1 > py2) {yl =
fY1; yt =
fY2;}
3689 else {yl =
fY2; yt =
fY1;}
3691 Double_t frameXs[7] = {}, frameYs[7] = {};
3695 frameXs[0] = xl; frameYs[0] = yl;
3696 frameXs[1] = xl + realBsX; frameYs[1] = yl + realBsY;
3697 frameXs[2] = frameXs[1]; frameYs[2] = yt - realBsY;
3698 frameXs[3] = xt - realBsX; frameYs[3] = frameYs[2];
3699 frameXs[4] = xt; frameYs[4] = yt;
3700 frameXs[5] = xl; frameYs[5] = yt;
3701 frameXs[6] = xl; frameYs[6] = yl;
3708 frameXs[0] = xl; frameYs[0] = yl;
3709 frameXs[1] = xl + realBsX; frameYs[1] = yl + realBsY;
3710 frameXs[2] = xt - realBsX; frameYs[2] = frameYs[1];
3711 frameXs[3] = frameXs[2]; frameYs[3] = yt - realBsY;
3712 frameXs[4] = xt; frameYs[4] = yt;
3713 frameXs[5] = xt; frameYs[5] = yl;
3714 frameXs[6] = xl; frameYs[6] = yl;
3820 auto lnk = pList ? pList->
FirstLink() :
nullptr;
3824 ((
TPad*)obj)->PaintModified();
3852 auto lnk = pList ? pList->
FirstLink() :
nullptr;
3855 TObject *obj = lnk->GetObject();
3857 ((
TPad*)obj)->PaintModified();
3869 began3DScene =
kTRUE;
3872 obj->
Paint(lnk->GetOption());
3914 xb[0] =
x1; xb[1] =
x1; xb[2] =
x2; xb[3] =
x2;
3915 yb[0] =
y1; yb[1] =
y2; yb[2] =
y2; yb[3] =
y1;
3967 if (style0 >= 3100 && style0 < 4000) {
3969 xb[0] =
x1; xb[1] =
x1; xb[2] =
x2; xb[3] =
x2;
3970 yb[0] =
y1; yb[1] =
y2; yb[2] =
y2; yb[3] =
y1;
3995 TIter next(start->GetListOfPrimitives());
3996 while ((obj = next())) {
3998 if (obj == stop)
break;
3999 ((
TPad*)obj)->CopyBackgroundPixmap(
x,
y);
4000 ((
TPad*)obj)->CopyBackgroundPixmaps((
TPad*)obj, stop,
x,
y);
4019 Warning(
"TPad::PaintFillArea",
"Float_t signature is obsolete. Use Double_t signature.");
4037 std::vector<Double_t>
x(nc, 0.);
4038 std::vector<Double_t>
y(nc, 0.);
4047 if (fillstyle >= 3100 && fillstyle < 4000) {
4067 std::vector<Double_t> xw(
n), yw(
n);
4068 for (
int i=0; i<
n; i++) {
4110 static Double_t ang1[10] = { 0., 10., 20., 30., 45.,5., 60., 70., 80., 89.99};
4111 static Double_t ang2[10] = {180.,170.,160.,150.,135.,5.,120.,110.,100., 89.99};
4113 Int_t fasi = FillStyle % 1000;
4114 Int_t idSPA = fasi / 100;
4115 Int_t iAng2 = (fasi - 100 * idSPA) / 10;
4116 Int_t iAng1 = fasi % 10;
4119 Int_t lss = 0, lss2 = 0, lcs = 0, lcs2 = 0;
4140 if (ang1[iAng1] != 5.)
PaintHatches(dy, ang1[iAng1], nn, xx, yy);
4141 if (ang2[iAng2] != 5.)
PaintHatches(dy, ang2[iAng2], nn, xx, yy);
4168 const Int_t maxnbi = 100;
4169 Double_t xli[maxnbi], xlh[2], ylh[2], xt1, xt2, yt1, yt2;
4170 Double_t ll,
x,
y,
x1,
x2,
y1,
y2,
a,
b, xi, xip, xin, yi, yip;
4176 ratiox = 1./(rwxmax-rwxmin);
4177 ratioy = 1./(rwymax-rwymin);
4190 gPad->GetPadPar(x1p,y1p,x2p,y2p);
4199 for (i=1; i<=nn; i++) {
4200 x = wndc*ratiox*(xx[i-1]-rwxmin);
4201 y = hndc*ratioy*(yy[i-1]-rwymin);
4202 yrot = sina*
x+cosa*
y;
4208 for (ycur=
ymax; ycur>=
ymin; ycur=ycur-dy) {
4210 for (i=2; i<=nn+1; i++) {
4213 if (i == nn+1) i2=1;
4214 x1 = wndc*ratiox*(xx[i1-1]-rwxmin);
4215 y1 = hndc*ratioy*(yy[i1-1]-rwymin);
4216 x2 = wndc*ratiox*(xx[i2-1]-rwxmin);
4217 y2 = hndc*ratioy*(yy[i2-1]-rwymin);
4218 xt1 = cosa*
x1-sina*
y1;
4219 yt1 = sina*
x1+cosa*
y1;
4220 xt2 = cosa*
x2-sina*
y2;
4221 yt2 = sina*
x2+cosa*
y2;
4232 if ((yi <= ycur) && (ycur < yip)) {
4234 if (nbi >= maxnbi)
return;
4244 if (nbi >= maxnbi)
return;
4247 if (nbi >= maxnbi)
return;
4254 a = (yt1-yt2)/(xt1-xt2);
4255 b = (yt2*xt1-xt2*yt1)/(xt1-xt2);
4264 if ((xi <= xin) && (xin < xip) &&
4268 if (nbi >= maxnbi)
return;
4277 for (i=1; i<=
m; i++) {
4278 if (xli[i] < xli[i-1]) {
4286 if (
inv == 0)
goto L50;
4292 if (nbi%2 != 0)
continue;
4294 for (i=1; i<=nbi; i=i+2) {
4296 xlh[0] = cosb*xli[i-1]-sinb*ycur;
4297 ylh[0] = sinb*xli[i-1]+cosb*ycur;
4298 xlh[1] = cosb*xli[i] -sinb*ycur;
4299 ylh[1] = sinb*xli[i] +cosb*ycur;
4301 xlh[0] = (xlh[0]/wndc)*(rwxmax-rwxmin)+rwxmin;
4302 ylh[0] = (ylh[0]/hndc)*(rwymax-rwymin)+rwymin;
4303 xlh[1] = (xlh[1]/wndc)*(rwxmax-rwxmin)+rwxmin;
4304 ylh[1] = (ylh[1]/hndc)*(rwymax-rwymin)+rwymin;
4305 gPad->PaintLine(xlh[0], ylh[0], xlh[1], ylh[1]);
4364 for (i=0;i<3;i++) temp[i] = p1[i];
4366 for (i=0;i<3;i++) temp[i] = p2[i];
4368 PaintLine(xpad[0],xpad[1],xpad[3],xpad[4]);
4382 for (i=0;i<3;i++) temp[i] = p1[i];
4384 for (i=0;i<3;i++) temp[i] = p2[i];
4386 PaintLine(xpad[0],xpad[1],xpad[3],xpad[4]);
4403 for (i=0; i<
n-1; i++) {
4415 if (iclip == 0 && i <
n-2)
continue;
4452 Int_t i, i1=-1,
np=1, iclip=0;
4454 for (i=0; i <
n-1; i++) {
4468 if (iclip == 0 && i <
n-2)
continue;
4498 std::vector<Double_t> xw(
n), yw(
n);
4499 for (
Int_t i=0; i<
n; i++) {
4516 for (
Int_t i = 1; i <
n; i++)
4535 for (i=0; i<
n; i++) {
4539 if (i <
n-1)
continue;
4541 if (
np == 0)
continue;
4566 for (i=0; i<
n; i++) {
4570 if (i <
n-1)
continue;
4572 if (
np == 0)
continue;
4662 if (!
gPad)
return nullptr;
4669 if (
this !=
gPad->GetCanvas()) {
4678 TPad *pick =
nullptr;
4679 TPad *picked =
this;
4683 pickobj = &dummyLink;
4712 pick = ((
TPad*)obj)->
Pick(px, py, pickobj);
4717 }
else if (!
gROOT->GetEditorMode()) {
4724 if (dist == 0)
break;
4739 if (
fView && !gotPrim) {
4758 if (!
button->IsEditable()) pickobj =
nullptr;
4763 if (picked ==
this) {
4786 while (
auto obj = next())
4811 while (
auto obj = next()) {
5001 const char *opt_default =
"ps";
5023 if (strstr(opt,
"gif+")) {
5026 }
else if (strstr(opt,
"gif")) {
5029 }
else if (strstr(opt,
"png")) {
5032 }
else if (strstr(opt,
"jpg")) {
5035 }
else if (strstr(opt,
"tiff")) {
5038 }
else if (strstr(opt,
"xpm")) {
5041 }
else if (strstr(opt,
"bmp")) {
5056 if (!
gROOT->IsBatch() && image) {
5059 Color_t hc =
gPad->GetCanvas()->GetHighLightColor();
5060 gPad->GetCanvas()->SetHighLightColor(-1);
5068 Info(
"Print",
"GIF file %s has been created", psname.
Data());
5070 gPad->GetCanvas()->SetHighLightColor(hc);
5074 Color_t hc =
gPad->GetCanvas()->GetHighLightColor();
5075 gPad->GetCanvas()->SetHighLightColor(-1);
5082 Info(
"Print",
"file %s has been created", psname.
Data());
5084 gPad->GetCanvas()->SetHighLightColor(hc);
5086 Warning(
"Print",
"Unsupported image format %s", psname.
Data());
5092 if (strstr(opt,
"cxx")) {
5098 if (strstr(opt,
"root")) {
5104 if (strstr(opt,
"xml")) {
5111 if (strstr(opt,
"json")) {
5117 if (strstr(opt,
"svg")) {
5130 if (
auto h =
gROOT->GetPluginManager()->FindHandler(
"TVirtualPS",
"svg")) {
5131 if (
h->LoadPlugin() == -1)
5149 Info(
"Print",
"SVG file %s has been created", psname.
Data());
5158 if (strstr(opt,
"tex") || strstr(opt,
"Standalone")) {
5171 if (
auto h =
gROOT->GetPluginManager()->FindHandler(
"TVirtualPS",
"tex")) {
5172 if (
h->LoadPlugin() == -1)
5179 if (strstr(opt,
"Standalone")) standalone =
kTRUE;
5194 Info(
"Print",
"Standalone TeX file %s has been created", psname.
Data());
5196 Info(
"Print",
"TeX file %s has been created", psname.
Data());
5215 copen = psname.
EndsWith(
"(");
if (copen) psname[psname.
Length()-1] = 0;
5216 cclose = psname.
EndsWith(
")");
if (cclose) psname[psname.
Length()-1] = 0;
5217 copenb = psname.
EndsWith(
"[");
if (copenb) psname[psname.
Length()-1] = 0;
5218 ccloseb = psname.
EndsWith(
"]");
if (ccloseb) psname[psname.
Length()-1] = 0;
5222 if (copen || copenb) mustClose =
kFALSE;
5223 if (cclose || ccloseb) mustClose =
kTRUE;
5234 if (ratio < 1) pstype = 112;
5235 if (strstr(opt,
"Portrait")) pstype = 111;
5236 if (strstr(opt,
"Landscape")) pstype = 112;
5237 if (strstr(opt,
"eps")) pstype = 113;
5238 if (strstr(opt,
"Preview")) pstype = 113;
5245 const char *pluginName =
"ps";
5246 if (strstr(opt,
"pdf") || strstr(opt,
"Title:") || strstr(opt,
"EmbedFonts"))
5249 pluginName =
"image";
5251 if (
auto h =
gROOT->GetPluginManager()->FindHandler(
"TVirtualPS", pluginName)) {
5252 if (
h->LoadPlugin() == -1)
5261 if (titlePos !=
kNPOS) {
5271 if (!strstr(opt,
"pdf") || image) {
5288 if (!copen)
Info(
"Print",
"%s file %s has been created", opt.
Data(), psname.
Data());
5289 else Info(
"Print",
"%s file %s has been created using the current canvas", opt.
Data(), psname.
Data());
5298 if (titlePos !=
kNPOS) {
5305 if (cclose)
Info(
"Print",
"Current canvas added to %s file %s and file closed", opt.
Data(), psname.
Data());
5306 else Info(
"Print",
"%s file %s has been closed", opt.
Data(), psname.
Data());
5311 Info(
"Print",
"Current canvas added to %s file %s", opt.
Data(), psname.
Data());
5316 if (strstr(opt,
"Preview"))
5318 if (strstr(opt,
"EmbedFonts")) {
5319 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",
5334 Error(
"Range",
"illegal world coordinates range: x1=%f, y1=%f, x2=%f, y2=%f",
x1,
y1,
x2,
y2);
5372 Error(
"RangeAxis",
"illegal axis coordinates range: xmin=%f, ymin=%f, xmax=%f, ymax=%f",
5412 if (res && modified)
5457 TH1 *hobj =
nullptr;
5463 while ((obj = next())) {
5475 if (
g) hobj =
g->GetHistogram();
5492 gPad->GetUxmax(),
gPad->GetUymax());
5494 b->SetLineStyle(
gPad->GetFrameLineStyle());
5495 b->SetLineWidth(
gPad->GetFrameLineWidth());
5496 b->SetLineColor(
gPad->GetFrameLineColor());
5628 Error(
"ResizePad",
"Cannot resize pad. No current pad available.");
5631 if (
gPad->GetWw()==0.0||
gPad->GetWh()==0.0) {
5632 Warning(
"ResizePad",
"gPad has at least one zero dimension.");
5636 Warning(
"ResizePad",
"The pad has at least one zero dimension.");
5641 if (
this ==
gPad->GetCanvas()) {
5649 Warning(
"ResizePad",
"The parent pad has at least one zero dimension.");
5698 while ((obj = next())) {
5704 if (
gPad->IsBatch())
5723 Warning(
"ResizePad",
"Inf/NaN propagated to the pad. Check drawn objects.");
5724 if (w <= 0 || w > 10000) {
5725 Warning(
"ResizePad",
"%s width changed from %d to %d\n",
GetName(),
w,10);
5728 if (h <= 0 || h > 10000) {
5729 Warning(
"ResizePad",
"%s height changed from %d to %d\n",
GetName(),
h,10);
5801 ((
TPad*)
this)->Print(psname,
"gif");
5856 auto p = padName.
Index(
" ");
5861 static Int_t pcounter = 0;
5866 const char *pname = padName.
Data();
5869 if (padName.
Length() == 0) {
5871 if (
this ==
gPad->GetCanvas())
5878 if (
this !=
gPad->GetCanvas()) {
5879 out <<
" "<<std::endl;
5880 out <<
"// ------------>Primitives in pad: "<<
GetName()<<std::endl;
5888 out<<
" "<<
cname<<
"->Draw();"<<std::endl;
5889 out<<
" "<<
cname<<
"->cd();"<<std::endl;
5891 out<<
" "<<
cname<<
"->Range("<<
fX1<<
","<<
fY1<<
","<<
fX2<<
","<<
fY2<<
");"<<std::endl;
5896 static Int_t viewNumber = 0;
5897 out<<
" TView *view"<<++viewNumber<<
" = TView::CreateView(1);"<<std::endl;
5898 out<<
" view"<<viewNumber<<
"->SetRange("<<rmin[0]<<
","<<rmin[1]<<
","<<rmin[2]<<
","
5899 <<rmax[0]<<
","<<rmax[1]<<
","<<rmax[2]<<
");"<<std::endl;
5911 out<<
" "<<
cname<<
"->SetLogx();"<<std::endl;
5914 out<<
" "<<
cname<<
"->SetLogy();"<<std::endl;
5917 out<<
" "<<
cname<<
"->SetLogz();"<<std::endl;
5920 out<<
" "<<
cname<<
"->SetGridx();"<<std::endl;
5923 out<<
" "<<
cname<<
"->SetGridy();"<<std::endl;
5926 out<<
" "<<
cname<<
"->SetTickx("<<
GetTickx()<<
");"<<std::endl;
5929 out<<
" "<<
cname<<
"->SetTicky("<<
GetTicky()<<
");"<<std::endl;
5932 out<<
" "<<
cname<<
"->SetTheta("<<
GetTheta()<<
");"<<std::endl;
5935 out<<
" "<<
cname<<
"->SetPhi("<<
GetPhi()<<
");"<<std::endl;
5952 out<<
" "<<
cname<<
"->SetFrameFillColor(ci);" << std::endl;
5964 out<<
" "<<
cname<<
"->SetFrameLineColor(ci);" << std::endl;
5983 out<<
" "<<
cname<<
"->SetFrameFillColor(ci);" << std::endl;
5985 out<<
" "<<
cname<<
"->SetFrameFillColor("<<frame->
GetFillColor()<<
");"<<std::endl;
5988 out<<
" "<<
cname<<
"->SetFrameFillStyle("<<frame->
GetFillStyle()<<
");"<<std::endl;
5991 out<<
" "<<
cname<<
"->SetFrameLineStyle("<<frame->
GetLineStyle()<<
");"<<std::endl;
5995 out<<
" "<<
cname<<
"->SetFrameLineColor(ci);" << std::endl;
5997 out<<
" "<<
cname<<
"->SetFrameLineColor("<<frame->
GetLineColor()<<
");"<<std::endl;
6000 out<<
" "<<
cname<<
"->SetFrameLineWidth("<<frame->
GetLineWidth()<<
");"<<std::endl;
6013 while (
auto obj = next()) {
6015 if (!strcmp(obj->GetName(),
"Graph"))
6020 out<<
" "<<pname<<
"->cd();"<<std::endl;
6022 out<<
" "<<
cname<<
"->cd();"<<std::endl;
6025 out<<
" "<<
cname<<
"->Modified();"<<std::endl;
6038 Error(
"SetAspectRatio",
"cannot fix aspect ratio, height of pad is 0");
6062 while ((obj = next())) {
6076 if (fstyle == 0) fstyle = 4000;
6139 if ((xlow < 0) || (xlow > 1) || (ylow < 0) || (ylow > 1)) {
6140 Error(
"TPad",
"illegal bottom left position: x=%f, y=%f", xlow, ylow);
6143 if ((xup < 0) || (xup > 1) || (yup < 0) || (yup > 1)) {
6144 Error(
"TPad",
"illegal top right position: x=%f, y=%f", xup, yup);
6147 if (xup-xlow <= 0) {
6148 Error(
"TPad",
"illegal width: %f", xup-xlow);
6151 if (yup-ylow <= 0) {
6152 Error(
"TPad",
"illegal height: %f", yup-ylow);
6189 SetPad(xlow, ylow, xup, yup);
6197 if (!view)
delete fView;
6272 if (aBBox.
fX<bBBox.
fX) {
6288 else if (
mode ==
'y') {
6289 if (aBBox.
fY<bBBox.
fY) {
6357 std::vector<dField> curDist;
6358 std::vector<dField> otherDist;
6368 Int_t dSizeArrow = 12;
6370 movedX = movedY =
false;
6373 if (
mode !=
'i') resize =
true;
6382 static TPad *tmpGuideLinePad =
nullptr;
6385 if (tmpGuideLinePad) {
6387 auto guidePadClicked = (
object == tmpGuideLinePad);
6388 tmpGuideLinePad->
Delete();
6389 tmpGuideLinePad =
nullptr;
6390 if (guidePadClicked)
return;
6394 prims =
gPad->GetListOfPrimitives();
6401 if (!tmpGuideLinePad){
6402 tmpGuideLinePad =
new TPad(
"tmpGuideLinePad",
"tmpGuideLinePad", 0, 0, 1, 1);
6408 tmpGuideLinePad->
Draw();
6409 tmpGuideLinePad->
cd();
6412 if (cling && !log) threshold = 7;
6425 MX =
gPad->GetX1() + 0.5 * (
gPad->GetX2()-
gPad->GetX1());
6426 MY =
gPad->GetY1() + 0.5 * (
gPad->GetY2()-
gPad->GetY1());
6427 pMX =
gPad->XtoPixel(MX);
6428 pMY =
gPad->YtoPixel(MY);
6431 if (cling && (!resize)) {
6439 L->SetLineColor(lineColor);
6443 if (cling && (!resize)) {
6451 L->SetLineColor(lineColor);
6455 for (
UInt_t i = 0; i<
n; i++) {
6461 if (cling && (!resize)) {
6468 L->SetLineColor(lineColor);
6473 if (cling && (!resize)) {
6481 L->SetLineColor(lineColor);
6488 for (
UInt_t i = 0; i<
n; i++) {
6491 aBBox =
a->GetBBox();
6492 for (
UInt_t j = i+1; j<
n; j++) {
6495 bBBox =
b->GetBBox();
6503 if ((
b != cur)&&(
a != cur)) otherDist.push_back(abDist);
6504 else curDist.push_back(abDist);
6511 if ((
b != cur)&&(
a != cur)) otherDist.push_back(abDist);
6512 else curDist.push_back(abDist);
6520 for (
UInt_t i = 0; i<curDist.size(); i++) {
6521 for (
UInt_t j = 0; j<otherDist.size(); j++) {
6522 if ((curDist[i].fdir == otherDist[j].fdir) && (otherDist[j].fdir==
'x') && (
TMath::Abs(curDist[i].fdist-otherDist[j].fdist)<threshold)) {
6523 if (cling && (!movedX) && (!resize)) {
6529 DrawDist(curDist[i].fa->GetBBox(), curDist[i].fb->GetBBox(),
'x');
6530 DrawDist(otherDist[j].fa->GetBBox(), otherDist[j].fb->GetBBox(),
'x');
6532 if ((curDist[i].fdir == otherDist[j].fdir) && (otherDist[j].fdir==
'y') && (
TMath::Abs(curDist[i].fdist-otherDist[j].fdist)<threshold)) {
6533 if (cling && (!movedY) && (!resize)) {
6539 DrawDist(curDist[i].fa->GetBBox(), curDist[i].fb->GetBBox(),
'y');
6540 DrawDist(otherDist[j].fa->GetBBox(), otherDist[j].fb->GetBBox(),
'y');
6543 for (
UInt_t j = i; j<curDist.size(); j++) {
6545 if ((curDist[i].fdir == curDist[j].fdir) && (curDist[j].fdir==
'x') && (
TMath::Abs(curDist[i].fdist-curDist[j].fdist)<threshold)) {
6546 if (cling && (!movedX) && (!resize)) {
6551 DrawDist(curDist[i].fa->GetBBox(), curDist[i].fb->GetBBox(),
'x');
6552 DrawDist(curDist[j].fa->GetBBox(), curDist[j].fb->GetBBox(),
'x');
6555 if ((curDist[i].fdir == curDist[j].fdir) && (curDist[j].fdir==
'y') && (
TMath::Abs(curDist[i].fdist-curDist[j].fdist)<threshold)) {
6556 if (cling && (!movedY) && (!resize)) {
6561 DrawDist(curDist[i].fa->GetBBox(), curDist[i].fb->GetBBox(),
'y');
6562 DrawDist(curDist[j].fa->GetBBox(), curDist[j].fb->GetBBox(),
'y');
6569 for (
UInt_t i = 0; i<
n; i++) {
6571 if (
a && (cur !=
a)) {
6572 aBBox =
a->GetBBox();
6584 gPad->PixeltoX(aBBox.
fX+aBBox.
fWidth),
gPad->PixeltoY(aBBox.
fY-dSizeArrow-
gPad->VtoPixel(0)), 0.01,
"<|>");
6626 if (tmpGuideLinePad) {
6629 tmpGuideLinePad->
Delete();
6630 tmpGuideLinePad =
nullptr;
6716 Int_t nch, nobjects;
6719 if (
b.IsReading()) {
6738 while ((obj = next())) {
6760 b >> single;
fX1 = single;
6761 b >> single;
fY1 = single;
6762 b >> single;
fX2 = single;
6763 b >> single;
fY2 = single;
6770 b >> single;
fX1 = single;
6771 b >> single;
fY1 = single;
6772 b >> single;
fX2 = single;
6773 b >> single;
fY2 = single;
6800 b >> single;
fWNDC = single;
6801 b >> single;
fHNDC = single;
6875 char drawoption[64];
6876 for (
Int_t i = 0; i < nobjects; i++) {
6879 b.ReadFastArray(drawoption,nch);
6901 b >> single;
fPhi = single;
6965 while ((obj = next())) {
7052 if (emode && strlen(emode))
gROOT->SetEditorMode(emode);
7053 if (
gROOT->GetEditorMode() == 0 && pname && strlen(pname) > 2)
gROOT->SetEditorMode(&pname[1]);
7057 TObject *oldlast =
gPad->GetListOfPrimitives() ?
gPad->GetListOfPrimitives()->Last() :
nullptr;
7060 Bool_t hasname = pname && (strlen(pname) > 0);
7061 if (!pname[0] && !emode[0]) testlast =
kTRUE;
7062 if (testlast)
gROOT->SetEditorMode();
7064 if (
gROOT->GetEditorMode() == 0) {
7067 if (obj)
return obj;
7070 if (!
gPad->GetListOfPrimitives())
return nullptr;
7071 obj =
gPad->GetListOfPrimitives()->Last();
7072 if (obj != oldlast)
return obj;
7093 if (
gPad->IsBatch())
return nullptr;
7117 (
size_t)tip,(
size_t)
this).Data());
7135 ::Info(
"TPad::x3d()",
"This function is deprecated. Use %s->GetViewer3D(\"x3d\") instead",this->
GetName());
7138 if (!type || !
type[0]) {
7179 if (!strstr(
type,
"pad")) {
7183 Warning(
"GetViewer3D",
"Cannot create 3D viewer of type: %s",
type);
7188 if (strstr(
type,
"gl") && !strstr(
type,
"ogl")) {
7193 createdExternal =
kTRUE;
7211 if (createdExternal) {
7291 p.SetX(
gPad->XtoPixel(
x));
7292 p.SetY(
gPad->YtoPixel(
y));
const Int_t kMaxPixel
Max value for an int.
winID h TVirtualViewer3D TVirtualGLPainter p
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 y1
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()=0
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 Modify()
Change current fill area attributes if necessary.
Style_t fFillStyle
Fill area style.
virtual void SetFillColor(Color_t fcolor)
Set the fill area color.
virtual void SetFillColorAlpha(Color_t fcolor, Float_t falpha)
Set a transparent fill 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 SetLineColor(Color_t lcolor)
Set the line color.
virtual Style_t GetLineStyle() const
Return the line style.
virtual void Modify()
Change current line attributes if necessary.
virtual void SetMarkerColor(Color_t mcolor=1)
Set the marker color.
virtual void SetMarkerStyle(Style_t mstyle=1)
Set the marker style.
virtual void SetMarkerSize(Size_t msize=1)
Set the marker size.
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.
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.
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).
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
static Bool_t SupportAlpha()
Static function returning "true" if transparency is supported.
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 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 pad 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 FeedbackMode(Bool_t set)
Turn rubberband feedback mode on or off.
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 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.
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.
The color creation and management class.
static Bool_t SaveColor(std::ostream &out, Int_t ci)
Save a color with index > 228 as a C++ statement(s) on output stream out.
static Int_t GetColor(const char *hexcolor)
Static method returning color number for color specified by hex color string of form: "#rrggbb",...
static Int_t GetColorBright(Int_t color)
Static function: Returns the bright color number corresponding to n If the TColor object does not exi...
static Int_t GetColorDark(Int_t color)
Static function: Returns the dark color number corresponding to n If the TColor object does not exist...
virtual void SetAlpha(Float_t a)
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 GetMaximum(Double_t maxval=FLT_MAX) const
Return maximum value smaller than maxval of bins in the range, unless the value has been overridden b...
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 Int_t GetMaximumBin() const
Return location of bin with maximum value in the range.
virtual Double_t GetBinContent(Int_t bin) const
Return content of bin number bin.
virtual Int_t GetMinimumBin() const
Return location of bin with minimum value in the range.
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...
virtual Double_t GetSumOfWeights() const
Return the sum of weights excluding under/overflows.
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.
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].
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
Double_t AbsPixeltoY(Int_t py) 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
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 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
void CopyBackgroundPixmaps(TPad *start, TPad *stop, Int_t x, Int_t y)
Copy pixmaps of pads laying below pad "stop" into pad "stop".
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.
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 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
virtual void XYtoAbsPixel(Double_t x, Double_t y, Int_t &xpixel, Int_t &ypixel) const
Convert X/Y into absolute pixel coordinates.
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
void CopyBackgroundPixmap(Int_t x, Int_t y)
Copy pixmap of this pad as background of the current pad.
~TPad() override
Pad destructor.
Double_t fYtoPixel
ypixel = fYtoPixelk + fYtoPixel*yworld
void DeleteToolTip(TObject *tip) override
Delete tool tip object.
void Close(Option_t *option="") override
Delete all primitives in pad and pad itself.
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 Ww.
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 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.
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.
virtual void PixeltoXY(Int_t xpixel, Int_t ypixel, Double_t &x, Double_t &y)
Convert pixel to X/Y coordinates.
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)
Double_t fYtoPixelk
Conversion coefficient for Y World to pixel.
void UpdateAsync() override
Asynchronous pad update.
TPad()
Pad default constructor.
Double_t AbsPixeltoX(Int_t px) override
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.
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.
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 PixeltoX(Int_t px) override
Convert pixel to X coordinate.
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.
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.
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.
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.
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.
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 Streamer(TBuffer &) override
Stream a class object.
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.
virtual void AbsPixeltoXY(Int_t xpixel, Int_t ypixel, Double_t &x, Double_t &y)
Convert absolute pixel into X/Y coordinates.
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 XYtoPixel(Double_t x, Double_t y, Int_t &xpixel, Int_t &ypixel) const
Convert X/Y into pixel coordinates.
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.
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 Wh.
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 speicified 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
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.
Double_t PixeltoY(Int_t py) override
Convert pixel to Y coordinate.
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
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.
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
Int_t IncrementPaletteColor(Int_t i, TString opt) override
Increment (i==1) or set (i>1) the number of autocolor in the pad.
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 speicified draw option When.
Double_t fY2
Y of upper Y coordinate.
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.
@ kCannotMove
Fixed position.
@ kClearAfterCR
Clear after CR.
@ kHori
Pad is horizontal.
@ kPrintingPS
PS Printing.
@ kFraming
Frame is requested.
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
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 & 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 Text(Double_t x, Double_t y, const char *string)=0
virtual void DrawPS(Int_t n, Float_t *xw, Float_t *yw)=0
virtual void DrawBox(Double_t x1, Double_t y1, Double_t x2, Double_t y2)=0
virtual void DrawPolyMarker(Int_t n, Float_t *x, Float_t *y)=0
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 DrawBox(Double_t x1, Double_t y1, Double_t x2, Double_t y2, EBoxMode mode)=0
virtual void ClearDrawable()=0
virtual void SetOpacity(Int_t percent)=0
virtual void DrawPolyLine(Int_t n, const Double_t *x, const Double_t *y)=0
virtual Color_t GetLineColor() const =0
virtual void SetLineStyle(Style_t lstyle)=0
virtual void SetFillColor(Color_t fcolor)=0
virtual void DestroyDrawable(Int_t device)=0
virtual void CopyDrawable(Int_t device, Int_t px, Int_t py)=0
virtual void DrawLine(Double_t x1, Double_t y1, Double_t x2, Double_t y2)=0
virtual void DrawFillArea(Int_t n, const Double_t *x, const Double_t *y)=0
virtual Int_t CreateDrawable(UInt_t w, UInt_t h)=0
virtual void SetLineColor(Color_t lcolor)=0
virtual Style_t GetLineStyle() const =0
virtual void SaveImage(TVirtualPad *pad, const char *fileName, Int_t type) const =0
virtual void DrawLineNDC(Double_t u1, Double_t v1, Double_t u2, Double_t v2)=0
virtual void SetFillStyle(Style_t fstyle)=0
virtual void SetTextSize(Float_t tsize=1)=0
virtual void SetLineWidth(Width_t lwidth)=0
virtual void DrawPolyLineNDC(Int_t n, const Double_t *u, const Double_t *v)=0
virtual void DrawTextNDC(Double_t u, Double_t v, const char *text, ETextMode mode)=0
virtual Width_t GetLineWidth() const =0
virtual void SelectDrawable(Int_t device)=0
virtual void DrawPolyMarker(Int_t n, const Double_t *x, const Double_t *y)=0
virtual void DrawText(Double_t x, Double_t y, const char *text, ETextMode mode)=0
virtual Style_t GetFillStyle() const =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.
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
void Streamer(TBuffer &) override
Stream an object of class TVirtualPad.
virtual Int_t VtoPixel(Double_t v) const =0
virtual Int_t VtoAbsPixel(Double_t v) const =0
virtual void RangeAxisChanged()
virtual Double_t GetY2() const =0
virtual Int_t UtoPixel(Double_t u) const =0
virtual void GetRange(Double_t &x1, Double_t &y1, Double_t &x2, Double_t &y2)=0
virtual Short_t GetBorderSize() const =0
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
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.
void inv(rsa_NUMBER *, rsa_NUMBER *, rsa_NUMBER *)
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)