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);
463 while (
auto exec = (
TExec*)next())
506 if (!lop)
return nullptr;
507 TList *lof =
nullptr;
514 auto AddEntryFromListOfFunctions = [&]() {
516 while ((obj = nextobj())) {
525 leg->AddEntry(obj, mes.
Data(),
"lpf");
529 while(
auto o = next()) {
535 if (o->InheritsFrom(
TNamed::Class()) && strlen(o->GetTitle()))
537 else if (strlen(o->GetName()))
540 mes = o->ClassName();
553 lof = ((
TH1 *)o)->GetListOfFunctions();
554 AddEntryFromListOfFunctions();
557 lof = ((
TGraph *)o)->GetListOfFunctions();
558 AddEntryFromListOfFunctions();
564 TIter nextgraph(grlist);
566 while ((obj = nextgraph())) {
578 leg->AddEntry(obj, mes.
Data(), opt);
581 AddEntryFromListOfFunctions();
586 TIter nexthist(hlist);
587 while (
auto obj = nexthist()) {
591 else if (strlen(hist->
GetName()))
599 leg->AddEntry( obj, mes.
Data(), opt );
608 Info(
"BuildLegend",
"No object(s) to build a TLegend.");
651 while (
auto obj = next()) {
654 if (
n == subpadnumber) {
655 return ((
TPad*)obj)->
cd();
720 for (
Int_t i=0;i<2;i++) {
733 while(code1 + code2) {
744 if (ic == 0) ic = code2;
746 yt =
y[0] + (
y[1]-
y[0])*(xclipl-
x[0])/(
x[1]-
x[0]);
750 yt =
y[0] + (
y[1]-
y[0])*(xclipr-
x[0])/(
x[1]-
x[0]);
754 xt =
x[0] + (
x[1]-
x[0])*(yclipb-
y[0])/(
y[1]-
y[0]);
758 xt =
x[0] + (
x[1]-
x[0])*(yclipt-
y[0])/(
y[1]-
y[0]);
764 code1 =
ClippingCode(xt,yt,xclipl,yclipb,xclipr,yclipt);
768 code2 =
ClippingCode(xt,yt,xclipl,yclipb,xclipr,yclipt);
782 for (
Int_t i=0;i<2;i++) {
791 if (
x[0] < xclipl) code1 = code1 | 0x1;
792 if (
x[0] > xclipr) code1 = code1 | 0x2;
793 if (
y[0] < yclipb) code1 = code1 | 0x4;
794 if (
y[0] > yclipt) code1 = code1 | 0x8;
796 if (
x[1] < xclipl) code2 = code2 | 0x1;
797 if (
x[1] > xclipr) code2 = code2 | 0x2;
798 if (
y[1] < yclipb) code2 = code2 | 0x4;
799 if (
y[1] > yclipt) code2 = code2 | 0x8;
803 while(code1 + code2) {
814 if (ic == 0) ic = code2;
816 yt =
y[0] + (
y[1]-
y[0])*(xclipl-
x[0])/(
x[1]-
x[0]);
820 yt =
y[0] + (
y[1]-
y[0])*(xclipr-
x[0])/(
x[1]-
x[0]);
824 xt =
x[0] + (
x[1]-
x[0])*(yclipb-
y[0])/(
y[1]-
y[0]);
828 xt =
x[0] + (
x[1]-
x[0])*(yclipt-
y[0])/(
y[1]-
y[0]);
834 code1 =
ClippingCode(xt,yt,xclipl,yclipb,xclipr,yclipt);
838 code2 =
ClippingCode(xt,yt,xclipl,yclipb,xclipr,yclipt);
851 if (
x < xcl1) code = code | 0x1;
852 if (
x > xcl2) code = code | 0x2;
853 if (
y < ycl1) code = code | 0x4;
854 if (
y > ycl2) code = code | 0x8;
902 std::vector<Double_t> xc2(nn), yc2(nn);
908 for (i=0; i<
n; i++) {
917 xc2[nc2] = xclipl; yc2[nc2++] = slope*(xclipl-
x1)+
y1;
919 xc2[nc2] =
x2; yc2[nc2++] =
y2;
923 xc2[nc2] = xclipl; yc2[nc2++] = slope*(xclipl-
x1)+
y1;
924 xc2[nc2] =
x2; yc2[nc2++] =
y2;
931 x1 = xc2[nc2-1];
y1 = yc2[nc2-1];
933 for (i=0; i<nc2; i++) {
934 x2 = xc2[i];
y2 = yc2[i];
942 xc[nc] =
x1+(yclipt-
y1)*slope; yc[nc++] = yclipt;
944 xc[nc] =
x2; yc[nc++] =
y2;
948 xc[nc] =
x1+(yclipt-
y1)*slope; yc[nc++] = yclipt;
949 xc[nc] =
x2; yc[nc++] =
y2;
958 x1 = xc[nc-1];
y1 = yc[nc-1];
960 for (i=0; i<nc; i++) {
961 x2 = xc[i];
y2 = yc[i];
969 xc2[nc2] = xclipr; yc2[nc2++] = slope*(xclipr-
x1)+
y1;
971 xc2[nc2] =
x2; yc2[nc2++] =
y2;
975 xc2[nc2] = xclipr; yc2[nc2++] = slope*(xclipr-
x1)+
y1;
976 xc2[nc2] =
x2; yc2[nc2++] =
y2;
983 x1 = xc2[nc2-1];
y1 = yc2[nc2-1];
985 for (i=0; i<nc2; i++) {
986 x2 = xc2[i];
y2 = yc2[i];
994 xc[nc] =
x1+(yclipb-
y1)*slope; yc[nc++] = yclipb;
996 xc[nc] =
x2; yc[nc++] =
y2;
1000 xc[nc] =
x1+(yclipb-
y1)*slope; yc[nc++] = yclipb;
1001 xc[nc] =
x2; yc[nc++] =
y2;
1045 if (!
gROOT->GetListOfCanvases())
return;
1047 gROOT->GetListOfCanvases()->Remove(
this);
1069 if (
gROOT->GetSelectedPad() ==
this)
1070 gROOT->SetSelectedPad(
nullptr);
1094 while (
auto obj = next()) {
1096 ((
TPad*)obj)->CopyPixmap();
1097 ((
TPad*)obj)->CopyPixmaps();
1123 Int_t pxl, pyl, pxt, pyt;
1128 if (px1 < px2) {pxl = px1; pxt = px2;}
1129 else {pxl = px2; pxt = px1;}
1130 if (py1 < py2) {pyl = py1; pyt = py2;}
1131 else {pyl = py2; pyt = py1;}
1135 if ( (px > pxl && px < pxt) && (py > pyl && py < pyt) ) {
1142 if (py < pyl) dxl += pyl - py;
1143 if (py > pyt) dxl += py - pyt;
1145 if (py < pyl) dxt += pyl - py;
1146 if (py > pyt) dxt += py - pyt;
1148 if (px < pxl) dyl += pxl - px;
1149 if (px > pxt) dyl += px - pxt;
1151 if (px < pxl) dyt += pxl - px;
1152 if (px > pxt) dyt += px - pxt;
1154 Int_t distance = dxl;
1155 if (dxt < distance) distance = dxt;
1156 if (dyl < distance) distance = dyl;
1157 if (dyt < distance) distance = dyt;
1202 arr[1] =
this; arr[2] = (
void*)&nx;arr[3] = (
void*)& ny;
1203 arr[4] = (
void*)&xmargin; arr[5] = (
void *)& ymargin; arr[6] = (
void *)&color;
1204 if ((*
gThreadXAR)(
"PDCD", 7, arr,
nullptr))
return;
1210 if (nx <= 0) nx = 1;
1211 if (ny <= 0) ny = 1;
1218 if (xmargin > 0 && ymargin > 0) {
1222 for (iy=0;iy<ny;iy++) {
1223 y2 = 1 - iy*dy - ymargin;
1224 y1 =
y2 - dy + 2*ymargin;
1226 if (
y1 >
y2)
continue;
1227 for (ix=0;ix<nx;ix++) {
1228 x1 = ix*dx + xmargin;
1229 x2 =
x1 +dx -2*xmargin;
1230 if (
x1 >
x2)
continue;
1255 for (
Int_t i=0;i<nx;i++) {
1259 if (i == nx-1)
x2 = 1-xr;
1260 for (
Int_t j=0;j<ny;j++) {
1261 number = j*nx + i +1;
1264 if (j == 0)
y2 = 1-yt;
1265 if (j == ny-1)
y1 = 0;
1292 Error(
"DivideSquare",
"No canvas associated with this pad.");
1305 Divide(
w,
h, xmargin, ymargin, color);
1315 gROOT->MakeDefCanvas();
1352 if (!classobj)
return;
1357 TText *ptext =
nullptr;
1360 Int_t nd,nf,nc,nkd,nkf,i,j;
1373 Range(0,0,xpad,ypad);
1378 clevel[nlevel] = obj;
1387 if (nlevel >= maxlev-1)
break;
1391 Int_t ilevel, nelem;
1392 for (ilevel=nlevel;ilevel>=0;ilevel--) {
1393 cl = clevel[ilevel];
1395 if (nelem > maxelem) maxelem = nelem;
1396 nc = (nelem/50) + 1;
1406 if (dx < 1.3) dx = 1.3;
1407 tsizcm = tsizcm - 0.03*
Double_t(ncdraw-5);
1408 if (tsizcm < 0.27) tsizcm = 0.27;
1413 for (ilevel=nlevel;ilevel>=0;ilevel--) {
1414 cl = clevel[ilevel];
1416 if (nelem > maxelem) maxelem = nelem;
1417 nc = (nelem/50) + 1;
1419 if (ilevel < nlevel)
x1 =
x2 + 0.5;
1463 if (i >= nkd) { i = 1;
y =
y1 - 0.5*dy;
x += 1/
Double_t(nc); }
1464 else { i++;
y -= dy; }
1468 Int_t dim =
d->GetArrayDim();
1472 while (indx < dim ){
1473 ldname = strlen(dname);
1474 snprintf(&dname[ldname],256-ldname,
"[%d]",
d->GetMaxIndex(indx));
1495 while ((
m = (
TMethod *) nextm())) {
1497 !strcmp(
m->
GetName(),
"Dictionary" ) ||
1498 !strcmp(
m->
GetName(),
"Class_Version" ) ||
1499 !strcmp(
m->
GetName(),
"DeclFileName" ) ||
1500 !strcmp(
m->
GetName(),
"DeclFileLine" ) ||
1501 !strcmp(
m->
GetName(),
"ImplFileName" ) ||
1502 !strcmp(
m->
GetName(),
"ImplFileLine" )
1505 if (fcount > nf)
break;
1506 if (i >= nkf) { i = 1;
y = ysep - 0.5*dy;
x += 1/
Double_t(nc); }
1507 else { i++;
y -= dy; }
1512 for (j=ilevel-1;j>=0;j--) {
1513 if (cl == clevel[ilevel]) {
1514 if (clevel[j]->GetMethodAny((
char*)
m->
GetName())) {
1561 Int_t pxmin,pxmax,pymin,pymax,px,py;
1575 pxmax = canvas->
GetWw();
1577 pymax = cpad->
GetWh();
1581 if(pxold)
gVirtualX->DrawLine(pxold,pymin,pxold,pymax);
1582 if(pyold)
gVirtualX->DrawLine(pxmin,pyold,pxmax,pyold);
1631 Warning(
"DrawFrame",
"Must be called for the current pad only");
1638 if (hframe)
delete hframe;
1646 std::vector<Double_t> xbins(nbins+1);
1648 for (
Int_t i=1;i<=nbins;i++) {
1651 hframe =
new TH1F(
"hframe",title,nbins,xbins.data());
1674 Double_t xlow, ylow, xup, yup, hs, ws;
1679 gPad->SetFillColor(0);
1684 text.SetTextFont(61);
1685 text.SetTextSize(0.07);
1686 text.SetTextAlign(22);
1693 for (i=0;i<10;i++) {
1700 box.SetFillStyle(1001);
1701 box.SetFillColor(color);
1702 box.DrawBox(xlow, ylow, xup, yup);
1703 box.SetFillStyle(0);
1704 box.SetLineColor(1);
1705 box.DrawBox(xlow, ylow, xup, yup);
1706 if (color == 1)
text.SetTextColor(0);
1707 else text.SetTextColor(1);
1735 const Int_t kMaxDiff = 5;
1736 const Int_t kMinSize = 20;
1737 static Int_t pxorg, pyorg;
1738 static Int_t px1, px2, py1, py2, pxl, pyl, pxt, pyt, pxold, pyold;
1739 static Int_t px1p, px2p, py1p, py2p, pxlp, pylp, pxtp, pytp;
1740 static Bool_t pA, pB, pC, pD, pTop, pL, pR, pBot, pINSIDE;
1763 pA = pB = pC = pD = pTop = pL = pR = pBot = pINSIDE =
kFALSE;
1807 if (newcode)
return;
1874 pA = pB = pC = pD = pTop = pL = pR = pBot = pINSIDE =
kFALSE;
1878 pxold = pxl; pyold = pyl; pA =
kTRUE;
1883 pxold = pxt; pyold = pyl; pB =
kTRUE;
1888 pxold = pxt; pyold = pyt; pC =
kTRUE;
1893 pxold = pxl; pyold = pyt; pD =
kTRUE;
1897 if ((px > pxl+kMaxDiff && px < pxt-kMaxDiff) &&
1899 pxold = pxl; pyold = pyl; pTop =
kTRUE;
1903 if ((px > pxl+kMaxDiff && px < pxt-kMaxDiff) &&
1905 pxold = pxt; pyold = pyt; pBot =
kTRUE;
1909 if ((py > pyl+kMaxDiff && py < pyt-kMaxDiff) &&
1911 pxold = pxl; pyold = pyl; pL =
kTRUE;
1915 if ((py > pyl+kMaxDiff && py < pyt-kMaxDiff) &&
1917 pxold = pxt; pyold = pyt; pR =
kTRUE;
1921 if ((px > pxl+kMaxDiff && px < pxt-kMaxDiff) &&
1922 (py > pyl+kMaxDiff && py < pyt-kMaxDiff)) {
1923 pxold = px; pyold = py; pINSIDE =
kTRUE;
1931 if (pA || pB || pC || pD || pTop || pL || pR || pBot)
1934 if (!pA && !pB && !pC && !pD && !pTop && !pL && !pR && !pBot && !pINSIDE)
1947 if (px > pxt-kMinSize) { px = pxt-kMinSize; wx = px; }
1948 if (py > pyt-kMinSize) { py = pyt-kMinSize; wy = py; }
1949 if (px < pxlp) { px = pxlp; wx = px; }
1950 if (py < pylp) { py = pylp; wy = py; }
1968 if (px < pxl+kMinSize) { px = pxl+kMinSize; wx = px; }
1969 if (py > pyt-kMinSize) { py = pyt-kMinSize; wy = py; }
1970 if (px > pxtp) { px = pxtp; wx = px; }
1971 if (py < pylp) { py = pylp; wy = py; }
1989 if (px < pxl+kMinSize) { px = pxl+kMinSize; wx = px; }
1990 if (py < pyl+kMinSize) { py = pyl+kMinSize; wy = py; }
1991 if (px > pxtp) { px = pxtp; wx = px; }
1992 if (py > pytp) { py = pytp; wy = py; }
2010 if (px > pxt-kMinSize) { px = pxt-kMinSize; wx = px; }
2011 if (py < pyl+kMinSize) { py = pyl+kMinSize; wy = py; }
2012 if (px < pxlp) { px = pxlp; wx = px; }
2013 if (py > pytp) { py = pytp; wy = py; }
2032 if (py2 > py1-kMinSize) { py2 = py1-kMinSize; wy = py2; }
2033 if (py2 < py2p) { py2 = py2p; wy = py2; }
2048 if (py1 < py2+kMinSize) { py1 = py2+kMinSize; wy = py1; }
2049 if (py1 > py1p) { py1 = py1p; wy = py1; }
2064 if (px1 > px2-kMinSize) { px1 = px2-kMinSize; wx = px1; }
2065 if (px1 < px1p) { px1 = px1p; wx = px1; }
2081 if (px2 < px1+kMinSize) { px2 = px1+kMinSize; wx = px2; }
2082 if (px2 > px2p) { px2 = px2p; wx = px2; }
2097 Int_t dx = px - pxold;
2098 Int_t dy = py - pyold;
2099 px1 += dx; py1 += dy; px2 += dx; py2 += dy;
2100 if (px1 < px1p) { dx = px1p - px1; px1 += dx; px2 += dx; wx = px+dx; }
2101 if (px2 > px2p) { dx = px2 - px2p; px1 -= dx; px2 -= dx; wx = px-dx; }
2102 if (py1 > py1p) { dy = py1 - py1p; py1 -= dy; py2 -= dy; wy = py-dy; }
2103 if (py2 < py2p) { dy = py2p - py2; py1 += dy; py2 += dy; wy = py+dy; }
2144 if (pTop || pBot || pL || pR || pINSIDE) {
2151 if (px != pxorg || py != pyorg) {
2175 if (pINSIDE)
gPad->ShowGuidelines(
this, event);
2176 if (pTop)
gPad->ShowGuidelines(
this, event,
't',
true);
2177 if (pBot)
gPad->ShowGuidelines(
this, event,
'b',
true);
2178 if (pL)
gPad->ShowGuidelines(
this, event,
'l',
true);
2179 if (pR)
gPad->ShowGuidelines(
this, event,
'r',
true);
2180 if (pA)
gPad->ShowGuidelines(
this, event,
'1',
true);
2181 if (pB)
gPad->ShowGuidelines(
this, event,
'2',
true);
2182 if (pC)
gPad->ShowGuidelines(
this, event,
'3',
true);
2183 if (pD)
gPad->ShowGuidelines(
this, event,
'4',
true);
2192 if (
gROOT->IsEscaped()) {
2197 if (opaque||ropaque) {
2226 if (pTop || pBot || pL || pR || pINSIDE) {
2233 if (pA || pB || pC || pD || pTop || pL || pR || pBot)
2239 if (px != pxorg || py != pyorg) {
2276 event =
gVirtualX->RequestLocator(1, 1, px, py);
2315 static Int_t axisNumber;
2317 static Int_t px1old, py1old, px2old, py2old;
2318 Int_t nbd, inc, bin1, bin2, first, last;
2321 static std::unique_ptr<TBox> zoombox;
2322 Double_t zbx1=0,zbx2=0,zby1=0,zby2=0;
2329 if (strstr(opt,
"cont4")) {
2338 if (!strcmp(axis->
GetName(),
"xaxis")) {
2342 if (!strcmp(axis->
GetName(),
"yaxis")) {
2346 if (!strcmp(axis->
GetName(),
"zaxis")) {
2352 if (axisNumber == 1) {
2358 }
else if (axisNumber == 2) {
2374 if (axisNumber == 1) {
2379 }
else if (axisNumber == 2) {
2393 zoombox = std::make_unique<TBox>(zbx1, zby1, zbx2, zby2);
2398 zoombox->SetFillColor(ci);
2404 if (!opaque)
gVirtualX->SetLineColor(-1);
2412 if (axisNumber == 1) {
2422 if (axisNumber == 1) {
2427 }
else if (axisNumber == 2) {
2442 zoombox->SetX1(zbx1);
2443 zoombox->SetY1(zby1);
2444 zoombox->SetX2(zbx2);
2445 zoombox->SetY2(zby2);
2482 if (
gROOT->IsEscaped()) {
2484 if (opaque && zoombox)
2491 if (ratio1 > ratio2) {
2496 if (ratio2 - ratio1 > 0.05) {
2498 if (axisNumber == 3 && hobj && hobj->
GetDimension() != 3) {
2507 Float_t newmin = zmin + (zmax-zmin)*ratio1;
2508 Float_t newmax = zmin + (zmax-zmin)*ratio2;
2521 bin1 = first +
Int_t((last-first+1)*ratio1);
2522 bin2 = first +
Int_t((last-first+1)*ratio2);
2532 if (axisNumber == 1) {
2540 }
else if (axisNumber == 2) {
2568 xmin = ((
xmin-xmi)/(xma-xmi))*(up-low)+low;
2569 xmax = ((
xmax-xmi)/(xma-xmi))*(up-low)+low;
2572 if (!strcmp(axis->
GetName(),
"xaxis")) axisNumber = 1;
2573 if (!strcmp(axis->
GetName(),
"yaxis")) axisNumber = 2;
2574 if (ratio2 - ratio1 > 0.05) {
2581 if (axisNumber == 1) axis->
SetRange(bin1,bin2);
2582 if (axisNumber == 2 && hobj1) {
2599 while ((obj= next())) {
2602 if (hobj == hobj1)
continue;
2605 if (axisNumber == 1) {
2607 }
else if (axisNumber == 2) {
2651 if (found)
return found;
2653 while (
auto cur = next()) {
2656 if (found)
return found;
2671 if (found)
return found;
2673 while (
auto cur = next()) {
2676 if (found)
return found;
2751 if (
fCanvas ==
this)
return nullptr;
2760 if (
fCanvas ==
this)
return nullptr;
2769 if (
fCanvas ==
this)
return nullptr;
2935 while ((obj=next())) {
2939 if (found)
return found;
2949 if (!subpadnumber) {
2956 while ((obj = next())) {
2959 if (pad->
GetNumber() == subpadnumber)
return pad;
3006 if (color <= 0)
return;
3024 gROOT->SetSelectedPad(
this);
3053 if (opt.
Index(
"pfc")>=0 || opt.
Index(
"plc")>=0 || opt.
Index(
"pmc")>=0) {
3071 if (i>=ncolors) i = ncolors-1;
3083 Int_t const cellSize = 10;
3090 for (
int i = 0; i <
fCGnx; i++)
3091 for (
int j = 0; j <
fCGny; j++)
3097 while(
auto o = iter()) {
3110 while (
auto og = nextgraph())
3114 while (
auto oh = nexthist()) {
3128 for (
int r = i;
r <
w + i;
r++) {
3129 for (
int c = j;
c <
h + j;
c++) {
3164 bool isFirstVertical =
false;
3165 bool isFirstHorizontal =
false;
3167 for (std::size_t i = 0;
option[i] !=
'\0'; ++i) {
3168 char letter = std::tolower(
option[i]);
3169 if (letter ==
'w') {
3174 }
else if (letter ==
't' || letter ==
'b') {
3175 isFirstVertical = !isFirstHorizontal;
3177 dy = letter ==
't' ? -1 : 1;
3178 }
else if (letter ==
'l' || letter ==
'r') {
3179 isFirstHorizontal = !isFirstVertical;
3181 dx = letter ==
'r' ? -1 : 1;
3185 if(dx < 0) std::swap(nxbeg, nxend);
3186 if(dy < 0) std::swap(nybeg, nyend);
3188 auto attemptPlacement = [&](
Int_t i,
Int_t j) {
3198 if(!isFirstVertical) {
3199 for (
Int_t i = nxbeg; i != nxend; i += dx) {
3200 for (
Int_t j = nybeg; j != nyend; j += dy) {
3201 if (attemptPlacement(i, j))
return true;
3206 for (
Int_t j = nybeg; j != nyend; j += dy) {
3207 for (
Int_t i = nxbeg; i != nxend; i += dx) {
3208 if (attemptPlacement(i, j))
return true;
3216#define NotFree(i, j) fCollideGrid[TMath::Max(TMath::Min(i+j*fCGnx,fCGnx*fCGny),0)] = kFALSE;
3245 for (i=
x1+1; i<
x2; i++) {
3255 for (j=
y1+1; j<
y2; j++) {
3275 for (
int i =
x1; i<=
x2; i++) {
3294 for (i =
x1; i<=
x2; i++) {
3299 for (i =
y1; i<=
y2; i++) {
3317 for (
Int_t i=s; i<
n; i=i+s) {
3319 g->GetPoint(i ,
x2,
y2);
3346 if (
name.Index(
"hframe") >= 0)
return;
3351 bool haserrors =
false;
3352 TString drawOption =
h->GetDrawOption();
3356 if (drawOption.
Index(
"hist") < 0) {
3357 if (drawOption.
Index(
"e") >= 0) haserrors =
true;
3360 Int_t nx =
h->GetNbinsX();
3365 for (i = 1; i<nx; i++) {
3367 x1l =
h->GetBinCenter(i);
3373 y1l =
h->GetBinContent(i)-
h->GetBinErrorLow(i);
3379 y2l =
h->GetBinContent(i)+
h->GetBinErrorUp(i);
3385 for (j=
y1; j<=
y2; j++) {
3389 x1l =
h->GetBinLowEdge(i);
3395 y1l =
h->GetBinContent(i);
3402 x1l =
h->GetBinLowEdge(i)+
h->GetBinWidth(i);
3438 for (
int i = 0; i<
fCGnx; i++) {
3441 for (
int j = 0; j<
fCGny; j++) {
3458 box.DrawBox(X1L, Y1L, X2L, Y2L);
3460 box.SetFillColorAlpha(
kRed,t);
3461 box.DrawBox(X1L, Y1L, X2L, Y2L);
3465 if (t==0.15) t = 0.1;
3559 TObject *obj = lnk->GetObject();
3569 began3DScene =
kTRUE;
3572 obj->
Paint(lnk->GetOption());
3605 if (color < 0) color = -color;
3612 if (bordersize <= 0) bordersize = 2;
3633 if (px1 < px2) {xl =
fX1; xt =
fX2; }
3634 else {xl =
fX2; xt =
fX1;}
3635 if (py1 > py2) {yl =
fY1; yt =
fY2;}
3636 else {yl =
fY2; yt =
fY1;}
3638 Double_t frameXs[7] = {}, frameYs[7] = {};
3642 frameXs[0] = xl; frameYs[0] = yl;
3643 frameXs[1] = xl + realBsX; frameYs[1] = yl + realBsY;
3644 frameXs[2] = frameXs[1]; frameYs[2] = yt - realBsY;
3645 frameXs[3] = xt - realBsX; frameYs[3] = frameYs[2];
3646 frameXs[4] = xt; frameYs[4] = yt;
3647 frameXs[5] = xl; frameYs[5] = yt;
3648 frameXs[6] = xl; frameYs[6] = yl;
3655 frameXs[0] = xl; frameYs[0] = yl;
3656 frameXs[1] = xl + realBsX; frameYs[1] = yl + realBsY;
3657 frameXs[2] = xt - realBsX; frameYs[2] = frameYs[1];
3658 frameXs[3] = frameXs[2]; frameYs[3] = yt - realBsY;
3659 frameXs[4] = xt; frameYs[4] = yt;
3660 frameXs[5] = xt; frameYs[5] = yl;
3661 frameXs[6] = xl; frameYs[6] = yl;
3767 auto lnk = pList ? pList->
FirstLink() :
nullptr;
3771 ((
TPad*)obj)->PaintModified();
3799 auto lnk = pList ? pList->
FirstLink() :
nullptr;
3802 TObject *obj = lnk->GetObject();
3804 ((
TPad*)obj)->PaintModified();
3816 began3DScene =
kTRUE;
3819 obj->
Paint(lnk->GetOption());
3861 xb[0] =
x1; xb[1] =
x1; xb[2] =
x2; xb[3] =
x2;
3862 yb[0] =
y1; yb[1] =
y2; yb[2] =
y2; yb[3] =
y1;
3914 if (style0 >= 3100 && style0 < 4000) {
3916 xb[0] =
x1; xb[1] =
x1; xb[2] =
x2; xb[3] =
x2;
3917 yb[0] =
y1; yb[1] =
y2; yb[2] =
y2; yb[3] =
y1;
3942 TIter next(start->GetListOfPrimitives());
3943 while ((obj = next())) {
3945 if (obj == stop)
break;
3946 ((
TPad*)obj)->CopyBackgroundPixmap(
x,
y);
3947 ((
TPad*)obj)->CopyBackgroundPixmaps((
TPad*)obj, stop,
x,
y);
3966 Warning(
"TPad::PaintFillArea",
"Float_t signature is obsolete. Use Double_t signature.");
3984 std::vector<Double_t>
x(nc, 0.);
3985 std::vector<Double_t>
y(nc, 0.);
3994 if (fillstyle >= 3100 && fillstyle < 4000) {
4014 std::vector<Double_t> xw(
n), yw(
n);
4015 for (
int i=0; i<
n; i++) {
4057 static Double_t ang1[10] = { 0., 10., 20., 30., 45.,5., 60., 70., 80., 89.99};
4058 static Double_t ang2[10] = {180.,170.,160.,150.,135.,5.,120.,110.,100., 89.99};
4060 Int_t fasi = FillStyle % 1000;
4061 Int_t idSPA = fasi / 100;
4062 Int_t iAng2 = (fasi - 100 * idSPA) / 10;
4063 Int_t iAng1 = fasi % 10;
4066 Int_t lss = 0, lss2 = 0, lcs = 0, lcs2 = 0;
4087 if (ang1[iAng1] != 5.)
PaintHatches(dy, ang1[iAng1], nn, xx, yy);
4088 if (ang2[iAng2] != 5.)
PaintHatches(dy, ang2[iAng2], nn, xx, yy);
4115 const Int_t maxnbi = 100;
4116 Double_t xli[maxnbi], xlh[2], ylh[2], xt1, xt2, yt1, yt2;
4117 Double_t ll,
x,
y,
x1,
x2,
y1,
y2,
a,
b, xi, xip, xin, yi, yip;
4123 ratiox = 1./(rwxmax-rwxmin);
4124 ratioy = 1./(rwymax-rwymin);
4137 gPad->GetPadPar(x1p,y1p,x2p,y2p);
4146 for (i=1; i<=nn; i++) {
4147 x = wndc*ratiox*(xx[i-1]-rwxmin);
4148 y = hndc*ratioy*(yy[i-1]-rwymin);
4149 yrot = sina*
x+cosa*
y;
4155 for (ycur=
ymax; ycur>=
ymin; ycur=ycur-dy) {
4157 for (i=2; i<=nn+1; i++) {
4160 if (i == nn+1) i2=1;
4161 x1 = wndc*ratiox*(xx[i1-1]-rwxmin);
4162 y1 = hndc*ratioy*(yy[i1-1]-rwymin);
4163 x2 = wndc*ratiox*(xx[i2-1]-rwxmin);
4164 y2 = hndc*ratioy*(yy[i2-1]-rwymin);
4165 xt1 = cosa*
x1-sina*
y1;
4166 yt1 = sina*
x1+cosa*
y1;
4167 xt2 = cosa*
x2-sina*
y2;
4168 yt2 = sina*
x2+cosa*
y2;
4179 if ((yi <= ycur) && (ycur < yip)) {
4181 if (nbi >= maxnbi)
return;
4191 if (nbi >= maxnbi)
return;
4194 if (nbi >= maxnbi)
return;
4201 a = (yt1-yt2)/(xt1-xt2);
4202 b = (yt2*xt1-xt2*yt1)/(xt1-xt2);
4211 if ((xi <= xin) && (xin < xip) &&
4215 if (nbi >= maxnbi)
return;
4224 for (i=1; i<=
m; i++) {
4225 if (xli[i] < xli[i-1]) {
4233 if (
inv == 0)
goto L50;
4239 if (nbi%2 != 0)
continue;
4241 for (i=1; i<=nbi; i=i+2) {
4243 xlh[0] = cosb*xli[i-1]-sinb*ycur;
4244 ylh[0] = sinb*xli[i-1]+cosb*ycur;
4245 xlh[1] = cosb*xli[i] -sinb*ycur;
4246 ylh[1] = sinb*xli[i] +cosb*ycur;
4248 xlh[0] = (xlh[0]/wndc)*(rwxmax-rwxmin)+rwxmin;
4249 ylh[0] = (ylh[0]/hndc)*(rwymax-rwymin)+rwymin;
4250 xlh[1] = (xlh[1]/wndc)*(rwxmax-rwxmin)+rwxmin;
4251 ylh[1] = (ylh[1]/hndc)*(rwymax-rwymin)+rwymin;
4252 gPad->PaintLine(xlh[0], ylh[0], xlh[1], ylh[1]);
4311 for (i=0;i<3;i++) temp[i] = p1[i];
4313 for (i=0;i<3;i++) temp[i] = p2[i];
4315 PaintLine(xpad[0],xpad[1],xpad[3],xpad[4]);
4329 for (i=0;i<3;i++) temp[i] = p1[i];
4331 for (i=0;i<3;i++) temp[i] = p2[i];
4333 PaintLine(xpad[0],xpad[1],xpad[3],xpad[4]);
4350 for (i=0; i<
n-1; i++) {
4362 if (iclip == 0 && i <
n-2)
continue;
4399 Int_t i, i1=-1,
np=1, iclip=0;
4401 for (i=0; i <
n-1; i++) {
4415 if (iclip == 0 && i <
n-2)
continue;
4445 std::vector<Double_t> xw(
n), yw(
n);
4446 for (
Int_t i=0; i<
n; i++) {
4463 for (
Int_t i = 1; i <
n; i++)
4482 for (i=0; i<
n; i++) {
4486 if (i <
n-1)
continue;
4488 if (
np == 0)
continue;
4513 for (i=0; i<
n; i++) {
4517 if (i <
n-1)
continue;
4519 if (
np == 0)
continue;
4609 if (!
gPad)
return nullptr;
4616 if (
this !=
gPad->GetCanvas()) {
4625 TPad *pick =
nullptr;
4626 TPad *picked =
this;
4630 pickobj = &dummyLink;
4659 pick = ((
TPad*)obj)->
Pick(px, py, pickobj);
4664 }
else if (!
gROOT->GetEditorMode()) {
4671 if (dist == 0)
break;
4686 if (
fView && !gotPrim) {
4705 if (!
button->IsEditable()) pickobj =
nullptr;
4710 if (picked ==
this) {
4731 while (
auto obj = next())
4756 while (
auto obj = next()) {
4946 const char *opt_default =
"ps";
4968 if (strstr(opt,
"gif+")) {
4971 }
else if (strstr(opt,
"gif")) {
4974 }
else if (strstr(opt,
"png")) {
4977 }
else if (strstr(opt,
"jpg")) {
4980 }
else if (strstr(opt,
"tiff")) {
4983 }
else if (strstr(opt,
"xpm")) {
4986 }
else if (strstr(opt,
"bmp")) {
5001 if (!
gROOT->IsBatch() && image) {
5004 Color_t hc =
gPad->GetCanvas()->GetHighLightColor();
5005 gPad->GetCanvas()->SetHighLightColor(-1);
5013 Info(
"Print",
"GIF file %s has been created", psname.
Data());
5015 gPad->GetCanvas()->SetHighLightColor(hc);
5019 Color_t hc =
gPad->GetCanvas()->GetHighLightColor();
5020 gPad->GetCanvas()->SetHighLightColor(-1);
5027 Info(
"Print",
"file %s has been created", psname.
Data());
5029 gPad->GetCanvas()->SetHighLightColor(hc);
5031 Warning(
"Print",
"Unsupported image format %s", psname.
Data());
5037 if (strstr(opt,
"cxx")) {
5043 if (strstr(opt,
"root")) {
5049 if (strstr(opt,
"xml")) {
5056 if (strstr(opt,
"json")) {
5062 if (strstr(opt,
"svg")) {
5075 if (
auto h =
gROOT->GetPluginManager()->FindHandler(
"TVirtualPS",
"svg")) {
5076 if (
h->LoadPlugin() == -1)
5094 Info(
"Print",
"SVG file %s has been created", psname.
Data());
5103 if (strstr(opt,
"tex") || strstr(opt,
"Standalone")) {
5116 if (
auto h =
gROOT->GetPluginManager()->FindHandler(
"TVirtualPS",
"tex")) {
5117 if (
h->LoadPlugin() == -1)
5124 if (strstr(opt,
"Standalone")) standalone =
kTRUE;
5139 Info(
"Print",
"Standalone TeX file %s has been created", psname.
Data());
5141 Info(
"Print",
"TeX file %s has been created", psname.
Data());
5160 copen = psname.
EndsWith(
"(");
if (copen) psname[psname.
Length()-1] = 0;
5161 cclose = psname.
EndsWith(
")");
if (cclose) psname[psname.
Length()-1] = 0;
5162 copenb = psname.
EndsWith(
"[");
if (copenb) psname[psname.
Length()-1] = 0;
5163 ccloseb = psname.
EndsWith(
"]");
if (ccloseb) psname[psname.
Length()-1] = 0;
5167 if (copen || copenb) mustClose =
kFALSE;
5168 if (cclose || ccloseb) mustClose =
kTRUE;
5179 if (ratio < 1) pstype = 112;
5180 if (strstr(opt,
"Portrait")) pstype = 111;
5181 if (strstr(opt,
"Landscape")) pstype = 112;
5182 if (strstr(opt,
"eps")) pstype = 113;
5183 if (strstr(opt,
"Preview")) pstype = 113;
5190 const char *pluginName =
"ps";
5191 if (strstr(opt,
"pdf") || strstr(opt,
"Title:") || strstr(opt,
"EmbedFonts"))
5194 pluginName =
"image";
5196 if (
auto h =
gROOT->GetPluginManager()->FindHandler(
"TVirtualPS", pluginName)) {
5197 if (
h->LoadPlugin() == -1)
5206 if (titlePos !=
kNPOS) {
5216 if (!strstr(opt,
"pdf") || image) {
5233 if (!copen)
Info(
"Print",
"%s file %s has been created", opt.
Data(), psname.
Data());
5234 else Info(
"Print",
"%s file %s has been created using the current canvas", opt.
Data(), psname.
Data());
5243 if (titlePos !=
kNPOS) {
5250 if (cclose)
Info(
"Print",
"Current canvas added to %s file %s and file closed", opt.
Data(), psname.
Data());
5251 else Info(
"Print",
"%s file %s has been closed", opt.
Data(), psname.
Data());
5256 Info(
"Print",
"Current canvas added to %s file %s", opt.
Data(), psname.
Data());
5261 if (strstr(opt,
"Preview"))
5263 if (strstr(opt,
"EmbedFonts")) {
5264 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",
5279 Error(
"Range",
"illegal world coordinates range: x1=%f, y1=%f, x2=%f, y2=%f",
x1,
y1,
x2,
y2);
5317 Error(
"RangeAxis",
"illegal axis coordinates range: xmin=%f, ymin=%f, xmax=%f, ymax=%f",
5387 TH1 *hobj =
nullptr;
5393 while ((obj = next())) {
5405 if (
g) hobj =
g->GetHistogram();
5422 gPad->GetUxmax(),
gPad->GetUymax());
5424 b->SetLineStyle(
gPad->GetFrameLineStyle());
5425 b->SetLineWidth(
gPad->GetFrameLineWidth());
5426 b->SetLineColor(
gPad->GetFrameLineColor());
5558 Error(
"ResizePad",
"Cannot resize pad. No current pad available.");
5561 if (
gPad->GetWw()==0.0||
gPad->GetWh()==0.0) {
5562 Warning(
"ResizePad",
"gPad has at least one zero dimension.");
5566 Warning(
"ResizePad",
"The pad has at least one zero dimension.");
5571 if (
this ==
gPad->GetCanvas()) {
5579 Warning(
"ResizePad",
"The parent pad has at least one zero dimension.");
5628 while ((obj = next())) {
5634 if (
gPad->IsBatch())
5653 Warning(
"ResizePad",
"Inf/NaN propagated to the pad. Check drawn objects.");
5654 if (w <= 0 || w > 10000) {
5655 Warning(
"ResizePad",
"%s width changed from %d to %d\n",
GetName(),
w,10);
5658 if (h <= 0 || h > 10000) {
5659 Warning(
"ResizePad",
"%s height changed from %d to %d\n",
GetName(),
h,10);
5731 ((
TPad*)
this)->Print(psname,
"gif");
5786 auto p = padName.
Index(
" ");
5791 static Int_t pcounter = 0;
5796 const char *pname = padName.
Data();
5799 if (padName.
Length() == 0) {
5801 if (
this ==
gPad->GetCanvas())
5808 if (
this !=
gPad->GetCanvas()) {
5809 out <<
" "<<std::endl;
5810 out <<
"// ------------>Primitives in pad: "<<
GetName()<<std::endl;
5818 out<<
" "<<
cname<<
"->Draw();"<<std::endl;
5819 out<<
" "<<
cname<<
"->cd();"<<std::endl;
5821 out<<
" "<<
cname<<
"->Range("<<
fX1<<
","<<
fY1<<
","<<
fX2<<
","<<
fY2<<
");"<<std::endl;
5826 static Int_t viewNumber = 0;
5827 out<<
" TView *view"<<++viewNumber<<
" = TView::CreateView(1);"<<std::endl;
5828 out<<
" view"<<viewNumber<<
"->SetRange("<<rmin[0]<<
","<<rmin[1]<<
","<<rmin[2]<<
","
5829 <<rmax[0]<<
","<<rmax[1]<<
","<<rmax[2]<<
");"<<std::endl;
5841 out<<
" "<<
cname<<
"->SetLogx();"<<std::endl;
5844 out<<
" "<<
cname<<
"->SetLogy();"<<std::endl;
5847 out<<
" "<<
cname<<
"->SetLogz();"<<std::endl;
5850 out<<
" "<<
cname<<
"->SetGridx();"<<std::endl;
5853 out<<
" "<<
cname<<
"->SetGridy();"<<std::endl;
5856 out<<
" "<<
cname<<
"->SetTickx("<<
GetTickx()<<
");"<<std::endl;
5859 out<<
" "<<
cname<<
"->SetTicky("<<
GetTicky()<<
");"<<std::endl;
5862 out<<
" "<<
cname<<
"->SetTheta("<<
GetTheta()<<
");"<<std::endl;
5865 out<<
" "<<
cname<<
"->SetPhi("<<
GetPhi()<<
");"<<std::endl;
5882 out<<
" "<<
cname<<
"->SetFrameFillColor(ci);" << std::endl;
5894 out<<
" "<<
cname<<
"->SetFrameLineColor(ci);" << std::endl;
5913 out<<
" "<<
cname<<
"->SetFrameFillColor(ci);" << std::endl;
5915 out<<
" "<<
cname<<
"->SetFrameFillColor("<<frame->
GetFillColor()<<
");"<<std::endl;
5918 out<<
" "<<
cname<<
"->SetFrameFillStyle("<<frame->
GetFillStyle()<<
");"<<std::endl;
5921 out<<
" "<<
cname<<
"->SetFrameLineStyle("<<frame->
GetLineStyle()<<
");"<<std::endl;
5925 out<<
" "<<
cname<<
"->SetFrameLineColor(ci);" << std::endl;
5927 out<<
" "<<
cname<<
"->SetFrameLineColor("<<frame->
GetLineColor()<<
");"<<std::endl;
5930 out<<
" "<<
cname<<
"->SetFrameLineWidth("<<frame->
GetLineWidth()<<
");"<<std::endl;
5943 while (
auto obj = next()) {
5945 if (!strcmp(obj->GetName(),
"Graph"))
5950 out<<
" "<<pname<<
"->cd();"<<std::endl;
5952 out<<
" "<<
cname<<
"->cd();"<<std::endl;
5955 out<<
" "<<
cname<<
"->Modified();"<<std::endl;
5968 Error(
"SetAspectRatio",
"cannot fix aspect ratio, height of pad is 0");
5992 while ((obj = next())) {
6006 if (fstyle == 0) fstyle = 4000;
6069 if ((xlow < 0) || (xlow > 1) || (ylow < 0) || (ylow > 1)) {
6070 Error(
"TPad",
"illegal bottom left position: x=%f, y=%f", xlow, ylow);
6073 if ((xup < 0) || (xup > 1) || (yup < 0) || (yup > 1)) {
6074 Error(
"TPad",
"illegal top right position: x=%f, y=%f", xup, yup);
6077 if (xup-xlow <= 0) {
6078 Error(
"TPad",
"illegal width: %f", xup-xlow);
6081 if (yup-ylow <= 0) {
6082 Error(
"TPad",
"illegal height: %f", yup-ylow);
6119 SetPad(xlow, ylow, xup, yup);
6127 if (!view)
delete fView;
6202 if (aBBox.
fX<bBBox.
fX) {
6218 else if (
mode ==
'y') {
6219 if (aBBox.
fY<bBBox.
fY) {
6287 std::vector<dField> curDist;
6288 std::vector<dField> otherDist;
6298 Int_t dSizeArrow = 12;
6300 movedX = movedY =
false;
6303 if (
mode !=
'i') resize =
true;
6312 static TPad *tmpGuideLinePad =
nullptr;
6315 if (tmpGuideLinePad) {
6317 auto guidePadClicked = (
object == tmpGuideLinePad);
6318 tmpGuideLinePad->
Delete();
6319 tmpGuideLinePad =
nullptr;
6320 if (guidePadClicked)
return;
6324 prims =
gPad->GetListOfPrimitives();
6331 if (!tmpGuideLinePad){
6332 tmpGuideLinePad =
new TPad(
"tmpGuideLinePad",
"tmpGuideLinePad", 0, 0, 1, 1);
6338 tmpGuideLinePad->
Draw();
6339 tmpGuideLinePad->
cd();
6342 if (cling && !log) threshold = 7;
6355 MX =
gPad->GetX1() + 0.5 * (
gPad->GetX2()-
gPad->GetX1());
6356 MY =
gPad->GetY1() + 0.5 * (
gPad->GetY2()-
gPad->GetY1());
6357 pMX =
gPad->XtoPixel(MX);
6358 pMY =
gPad->YtoPixel(MY);
6361 if (cling && (!resize)) {
6369 L->SetLineColor(lineColor);
6373 if (cling && (!resize)) {
6381 L->SetLineColor(lineColor);
6385 for (
UInt_t i = 0; i<
n; i++) {
6391 if (cling && (!resize)) {
6398 L->SetLineColor(lineColor);
6403 if (cling && (!resize)) {
6411 L->SetLineColor(lineColor);
6418 for (
UInt_t i = 0; i<
n; i++) {
6421 aBBox =
a->GetBBox();
6422 for (
UInt_t j = i+1; j<
n; j++) {
6425 bBBox =
b->GetBBox();
6433 if ((
b != cur)&&(
a != cur)) otherDist.push_back(abDist);
6434 else curDist.push_back(abDist);
6441 if ((
b != cur)&&(
a != cur)) otherDist.push_back(abDist);
6442 else curDist.push_back(abDist);
6450 for (
UInt_t i = 0; i<curDist.size(); i++) {
6451 for (
UInt_t j = 0; j<otherDist.size(); j++) {
6452 if ((curDist[i].fdir == otherDist[j].fdir) && (otherDist[j].fdir==
'x') && (
TMath::Abs(curDist[i].fdist-otherDist[j].fdist)<threshold)) {
6453 if (cling && (!movedX) && (!resize)) {
6459 DrawDist(curDist[i].fa->GetBBox(), curDist[i].fb->GetBBox(),
'x');
6460 DrawDist(otherDist[j].fa->GetBBox(), otherDist[j].fb->GetBBox(),
'x');
6462 if ((curDist[i].fdir == otherDist[j].fdir) && (otherDist[j].fdir==
'y') && (
TMath::Abs(curDist[i].fdist-otherDist[j].fdist)<threshold)) {
6463 if (cling && (!movedY) && (!resize)) {
6469 DrawDist(curDist[i].fa->GetBBox(), curDist[i].fb->GetBBox(),
'y');
6470 DrawDist(otherDist[j].fa->GetBBox(), otherDist[j].fb->GetBBox(),
'y');
6473 for (
UInt_t j = i; j<curDist.size(); j++) {
6475 if ((curDist[i].fdir == curDist[j].fdir) && (curDist[j].fdir==
'x') && (
TMath::Abs(curDist[i].fdist-curDist[j].fdist)<threshold)) {
6476 if (cling && (!movedX) && (!resize)) {
6481 DrawDist(curDist[i].fa->GetBBox(), curDist[i].fb->GetBBox(),
'x');
6482 DrawDist(curDist[j].fa->GetBBox(), curDist[j].fb->GetBBox(),
'x');
6485 if ((curDist[i].fdir == curDist[j].fdir) && (curDist[j].fdir==
'y') && (
TMath::Abs(curDist[i].fdist-curDist[j].fdist)<threshold)) {
6486 if (cling && (!movedY) && (!resize)) {
6491 DrawDist(curDist[i].fa->GetBBox(), curDist[i].fb->GetBBox(),
'y');
6492 DrawDist(curDist[j].fa->GetBBox(), curDist[j].fb->GetBBox(),
'y');
6499 for (
UInt_t i = 0; i<
n; i++) {
6501 if (
a && (cur !=
a)) {
6502 aBBox =
a->GetBBox();
6514 gPad->PixeltoX(aBBox.
fX+aBBox.
fWidth),
gPad->PixeltoY(aBBox.
fY-dSizeArrow-
gPad->VtoPixel(0)), 0.01,
"<|>");
6556 if (tmpGuideLinePad) {
6559 tmpGuideLinePad->
Delete();
6560 tmpGuideLinePad =
nullptr;
6646 Int_t nch, nobjects;
6649 if (
b.IsReading()) {
6668 while ((obj = next())) {
6690 b >> single;
fX1 = single;
6691 b >> single;
fY1 = single;
6692 b >> single;
fX2 = single;
6693 b >> single;
fY2 = single;
6700 b >> single;
fX1 = single;
6701 b >> single;
fY1 = single;
6702 b >> single;
fX2 = single;
6703 b >> single;
fY2 = single;
6730 b >> single;
fWNDC = single;
6731 b >> single;
fHNDC = single;
6805 char drawoption[64];
6806 for (
Int_t i = 0; i < nobjects; i++) {
6809 b.ReadFastArray(drawoption,nch);
6831 b >> single;
fPhi = single;
6895 while ((obj = next())) {
6979 if (!
gPad)
return nullptr;
6981 if (emode && strlen(emode))
gROOT->SetEditorMode(emode);
6982 if (
gROOT->GetEditorMode() == 0 && pname && strlen(pname) > 2)
gROOT->SetEditorMode(&pname[1]);
6986 TObject *oldlast =
gPad->GetListOfPrimitives() ?
gPad->GetListOfPrimitives()->Last() :
nullptr;
6989 Bool_t hasname = pname && (strlen(pname) > 0);
6990 if (!pname[0] && !emode[0]) testlast =
kTRUE;
6991 if (testlast)
gROOT->SetEditorMode();
6993 if (
gROOT->GetEditorMode() == 0) {
6996 if (obj)
return obj;
6999 if (!
gPad->GetListOfPrimitives())
return nullptr;
7000 obj =
gPad->GetListOfPrimitives()->Last();
7001 if (obj != oldlast)
return obj;
7022 if (
gPad->IsBatch())
return nullptr;
7046 (
size_t)tip,(
size_t)
this).Data());
7064 ::Info(
"TPad::x3d()",
"This function is deprecated. Use %s->GetViewer3D(\"x3d\") instead",this->
GetName());
7067 if (!type || !
type[0]) {
7108 if (!strstr(
type,
"pad")) {
7112 Warning(
"GetViewer3D",
"Cannot create 3D viewer of type: %s",
type);
7117 if (strstr(
type,
"gl") && !strstr(
type,
"ogl")) {
7122 createdExternal =
kTRUE;
7140 if (createdExternal) {
7220 p.SetX(
gPad->XtoPixel(
x));
7221 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 Takes into account the two following cases.
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.
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
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.
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)