133 fPadPointer =
nullptr;
134 fPrimitives =
nullptr;
149 fPadView3D =
nullptr;
179 fFixedAspectRatio =
kFALSE;
182 fNumPaletteColor = 0;
183 fNextPaletteColor = 0;
184 fCollideGrid =
nullptr;
198 fUxmin = fUymin = fUxmax = fUymax = 0;
247 :
TVirtualPad(
name,title,xlow,ylow,xup,yup,color,bordersize,bordermode)
331 Error(
"TPad",
"You must create a TCanvas before creating a TPad");
338 if ((xlow < 0) || (xlow > 1) || (ylow < 0) || (ylow > 1)) {
339 Error(
"TPad",
"illegal bottom left position: x=%f, y=%f", xlow, ylow);
342 if ((xup < 0) || (xup > 1) || (yup < 0) || (yup > 1)) {
343 Error(
"TPad",
"illegal top right position: x=%f, y=%f", xup, yup);
347 Error(
"TPad",
"illegal width: %f", xup-xlow);
351 Error(
"TPad",
"illegal height: %f", yup-ylow);
362 SetPad(
name, title, xlow, ylow, xup, yup, color, bordersize, bordermode);
463 while ((exec = (
TExec*)next())) {
504 const char* title,
Option_t *option)
513 while( (o=next()) ) {
519 mes = ((
TNamed *)o)->GetTitle();
524 if (strlen(option)) {
535 TIter nextgraph(grlist);
538 while ((obj = nextgraph())) {
543 if (strlen(option)) opt = option;
545 leg->AddEntry( obj, mes.
Data(), opt );
550 TIter nexthist(hlist);
553 while ((obj = nexthist())) {
558 if (strlen(option)) opt = option;
560 leg->AddEntry( obj, mes.
Data(), opt );
572 Info(
"BuildLegend(void)",
"No object to build a TLegend.");
616 while ((obj = next())) {
619 if (
n == subpadnumber) {
620 return ((
TPad*)obj)->
cd();
689 for (
Int_t i=0;i<2;i++) {
702 while(code1 + code2) {
713 if (ic == 0) ic = code2;
715 yt =
y[0] + (
y[1]-
y[0])*(xclipl-
x[0])/(
x[1]-
x[0]);
719 yt =
y[0] + (
y[1]-
y[0])*(xclipr-
x[0])/(
x[1]-
x[0]);
723 xt =
x[0] + (
x[1]-
x[0])*(yclipb-
y[0])/(
y[1]-
y[0]);
727 xt =
x[0] + (
x[1]-
x[0])*(yclipt-
y[0])/(
y[1]-
y[0]);
733 code1 =
ClippingCode(xt,yt,xclipl,yclipb,xclipr,yclipt);
737 code2 =
ClippingCode(xt,yt,xclipl,yclipb,xclipr,yclipt);
760 for (
Int_t i=0;i<2;i++) {
769 if (
x[0] < xclipl) code1 = code1 | 0x1;
770 if (
x[0] > xclipr) code1 = code1 | 0x2;
771 if (
y[0] < yclipb) code1 = code1 | 0x4;
772 if (
y[0] > yclipt) code1 = code1 | 0x8;
774 if (
x[1] < xclipl) code2 = code2 | 0x1;
775 if (
x[1] > xclipr) code2 = code2 | 0x2;
776 if (
y[1] < yclipb) code2 = code2 | 0x4;
777 if (
y[1] > yclipt) code2 = code2 | 0x8;
781 while(code1 + code2) {
792 if (ic == 0) ic = code2;
794 yt =
y[0] + (
y[1]-
y[0])*(xclipl-
x[0])/(
x[1]-
x[0]);
798 yt =
y[0] + (
y[1]-
y[0])*(xclipr-
x[0])/(
x[1]-
x[0]);
802 xt =
x[0] + (
x[1]-
x[0])*(yclipb-
y[0])/(
y[1]-
y[0]);
806 xt =
x[0] + (
x[1]-
x[0])*(yclipt-
y[0])/(
y[1]-
y[0]);
812 code1 =
ClippingCode(xt,yt,xclipl,yclipb,xclipr,yclipt);
816 code2 =
ClippingCode(xt,yt,xclipl,yclipb,xclipr,yclipt);
829 if (
x < xcl1) code = code | 0x1;
830 if (
x > xcl2) code = code | 0x2;
831 if (
y < ycl1) code = code | 0x4;
832 if (
y > ycl2) code = code | 0x8;
887 for (i=0; i<
n; i++) {
888 x2 =
x[i]; y2 =
y[i];
892 slope = (y2-y1)/(
x2-
x1);
896 xc2[nc2] = xclipl; yc2[nc2++] = slope*(xclipl-
x1)+y1;
898 xc2[nc2] =
x2; yc2[nc2++] = y2;
902 xc2[nc2] = xclipl; yc2[nc2++] = slope*(xclipl-
x1)+y1;
903 xc2[nc2] =
x2; yc2[nc2++] = y2;
910 x1 = xc2[nc2-1]; y1 = yc2[nc2-1];
912 for (i=0; i<nc2; i++) {
913 x2 = xc2[i]; y2 = yc2[i];
917 slope = (
x2-
x1)/(y2-y1);
921 xc[nc] =
x1+(yclipt-y1)*slope; yc[nc++] = yclipt;
923 xc[nc] =
x2; yc[nc++] = y2;
927 xc[nc] =
x1+(yclipt-y1)*slope; yc[nc++] = yclipt;
928 xc[nc] =
x2; yc[nc++] = y2;
937 x1 = xc[nc-1]; y1 = yc[nc-1];
939 for (i=0; i<nc; i++) {
940 x2 = xc[i]; y2 = yc[i];
944 slope = (y2-y1)/(
x2-
x1);
948 xc2[nc2] = xclipr; yc2[nc2++] = slope*(xclipr-
x1)+y1;
950 xc2[nc2] =
x2; yc2[nc2++] = y2;
954 xc2[nc2] = xclipr; yc2[nc2++] = slope*(xclipr-
x1)+y1;
955 xc2[nc2] =
x2; yc2[nc2++] = y2;
962 x1 = xc2[nc2-1]; y1 = yc2[nc2-1];
964 for (i=0; i<nc2; i++) {
965 x2 = xc2[i]; y2 = yc2[i];
969 slope = (
x2-
x1)/(y2-y1);
973 xc[nc] =
x1+(yclipb-y1)*slope; yc[nc++] = yclipb;
975 xc[nc] =
x2; yc[nc++] = y2;
979 xc[nc] =
x1+(yclipb-y1)*slope; yc[nc++] = yclipb;
980 xc[nc] =
x2; yc[nc++] = y2;
1017 if (IsA() != TCanvas::Class())
1027 if (!
gROOT->GetListOfCanvases())
return;
1029 gROOT->GetListOfCanvases()->Remove(
this);
1051 if (
gROOT->GetSelectedPad() ==
this)
gROOT->SetSelectedPad(
nullptr);
1076 while ((obj = next())) {
1078 ((
TPad*)obj)->CopyPixmap();
1079 ((
TPad*)obj)->CopyPixmaps();
1105 Int_t pxl, pyl, pxt, pyt;
1110 if (px1 < px2) {pxl = px1; pxt = px2;}
1111 else {pxl = px2; pxt = px1;}
1112 if (py1 < py2) {pyl = py1; pyt = py2;}
1113 else {pyl = py2; pyt = py1;}
1117 if ( (px > pxl && px < pxt) && (py > pyl && py < pyt) ) {
1124 if (py < pyl) dxl += pyl - py;
1125 if (py > pyt) dxl += py - pyt;
1127 if (py < pyl) dxt += pyl - py;
1128 if (py > pyt) dxt += py - pyt;
1130 if (px < pxl) dyl += pxl - px;
1131 if (px > pxt) dyl += px - pxt;
1133 if (px < pxl) dyt += pxl - px;
1134 if (px > pxt) dyt += px - pxt;
1136 Int_t distance = dxl;
1137 if (dxt < distance) distance = dxt;
1138 if (dyl < distance) distance = dyl;
1139 if (dyt < distance) distance = dyt;
1185 arr[1] =
this; arr[2] = (
void*)&nx;arr[3] = (
void*)& ny;
1186 arr[4] = (
void*)&xmargin; arr[5] = (
void *)& ymargin; arr[6] = (
void *)&color;
1187 if ((*
gThreadXAR)(
"PDCD", 7, arr, 0))
return;
1192 if (nx <= 0) nx = 1;
1193 if (ny <= 0) ny = 1;
1200 char *
name =
new char [nchname];
1201 char *title =
new char [nchtitle];
1204 if (xmargin > 0 && ymargin > 0) {
1208 for (iy=0;iy<ny;iy++) {
1209 y2 = 1 - iy*dy - ymargin;
1210 y1 = y2 - dy + 2*ymargin;
1212 if (y1 > y2)
continue;
1213 for (ix=0;ix<nx;ix++) {
1214 x1 = ix*dx + xmargin;
1215 x2 =
x1 +dx -2*xmargin;
1216 if (
x1 >
x2)
continue;
1241 for (
Int_t i=0;i<nx;i++) {
1245 if (i == nx-1)
x2 = 1-xr;
1246 for (
Int_t j=0;j<ny;j++) {
1247 number = j*nx + i +1;
1250 if (j == 0) y2 = 1-yt;
1251 if (j == ny-1) y1 = 0;
1270 if (padsav) padsav->
cd();
1281 Error(
"DivideSquare",
"No canvas associated with this pad.");
1294 Divide( w,
h, xmargin, ymargin, color);
1304 gROOT->MakeDefCanvas();
1336 if (!classobj)
return;
1344 Int_t nd,nf,nc,nkd,nkf,i,j;
1357 Range(0,0,xpad,ypad);
1362 clevel[nlevel] = obj;
1371 if (nlevel >= maxlev-1)
break;
1375 Int_t ilevel, nelem;
1376 for (ilevel=nlevel;ilevel>=0;ilevel--) {
1377 cl = clevel[ilevel];
1379 if (nelem > maxelem) maxelem = nelem;
1380 nc = (nelem/50) + 1;
1390 if (dx < 1.3) dx = 1.3;
1391 tsizcm = tsizcm - 0.03*
Double_t(ncdraw-5);
1392 if (tsizcm < 0.27) tsizcm = 0.27;
1397 for (ilevel=nlevel;ilevel>=0;ilevel--) {
1398 cl = clevel[ilevel];
1400 if (nelem > maxelem) maxelem = nelem;
1401 nc = (nelem/50) + 1;
1403 if (ilevel < nlevel)
x1 =
x2 + 0.5;
1447 if (i >= nkd) { i = 1;
y = y1 - 0.5*dy;
x += 1/
Double_t(nc); }
1448 else { i++;
y -= dy; }
1452 Int_t dim =
d->GetArrayDim();
1456 while (indx < dim ){
1457 ldname = strlen(dname);
1458 snprintf(&dname[ldname],256-ldname,
"[%d]",
d->GetMaxIndex(indx));
1479 while ((
m = (
TMethod *) nextm())) {
1481 !strcmp(
m->GetName(),
"Dictionary" ) ||
1482 !strcmp(
m->GetName(),
"Class_Version" ) ||
1483 !strcmp(
m->GetName(),
"DeclFileName" ) ||
1484 !strcmp(
m->GetName(),
"DeclFileLine" ) ||
1485 !strcmp(
m->GetName(),
"ImplFileName" ) ||
1486 !strcmp(
m->GetName(),
"ImplFileLine" )
1489 if (fcount > nf)
break;
1490 if (i >= nkf) { i = 1;
y = ysep - 0.5*dy;
x += 1/
Double_t(nc); }
1491 else { i++;
y -= dy; }
1496 for (j=ilevel-1;j>=0;j--) {
1497 if (cl == clevel[ilevel]) {
1498 if (clevel[j]->GetMethodAny((
char*)
m->GetName())) {
1545 Int_t pxmin,pxmax,pymin,pymax,px,py;
1559 pxmax = canvas->
GetWw();
1561 pymax = cpad->
GetWh();
1565 if(pxold)
gVirtualX->DrawLine(pxold,pymin,pxold,pymax);
1566 if(pyold)
gVirtualX->DrawLine(pxmin,pyold,pxmax,pyold);
1613 if (
this != padsav) {
1614 Warning(
"DrawFrame",
"Must be called for the current pad only");
1621 if (hframe)
delete hframe;
1631 for (
Int_t i=1;i<=nbins;i++) {
1634 hframe =
new TH1F(
"hframe",title,nbins,xbins);
1647 if (padsav) padsav->
cd();
1663 gPad->SetFillColor(0);
1677 for (i=0;i<10;i++) {
1684 box->SetFillStyle(1001);
1685 box->SetFillColor(color);
1686 box->DrawBox(xlow, ylow, xup, yup);
1687 box->SetFillStyle(0);
1688 box->SetLineColor(1);
1689 box->DrawBox(xlow, ylow, xup, yup);
1719 const Int_t kMaxDiff = 5;
1720 const Int_t kMinSize = 20;
1721 static Int_t pxorg, pyorg;
1722 static Int_t px1, px2, py1, py2, pxl, pyl, pxt, pyt, pxold, pyold;
1723 static Int_t px1p, px2p, py1p, py2p, pxlp, pylp, pxtp, pytp;
1724 static Bool_t pA, pB, pC, pD, pTop, pL, pR, pBot, pINSIDE;
1747 pA = pB = pC = pD = pTop = pL = pR = pBot = pINSIDE =
kFALSE;
1791 if (newcode)
return;
1858 pA = pB = pC = pD = pTop = pL = pR = pBot = pINSIDE =
kFALSE;
1862 pxold = pxl; pyold = pyl; pA =
kTRUE;
1867 pxold = pxt; pyold = pyl; pB =
kTRUE;
1872 pxold = pxt; pyold = pyt; pC =
kTRUE;
1877 pxold = pxl; pyold = pyt; pD =
kTRUE;
1881 if ((px > pxl+kMaxDiff && px < pxt-kMaxDiff) &&
1883 pxold = pxl; pyold = pyl; pTop =
kTRUE;
1887 if ((px > pxl+kMaxDiff && px < pxt-kMaxDiff) &&
1889 pxold = pxt; pyold = pyt; pBot =
kTRUE;
1893 if ((py > pyl+kMaxDiff && py < pyt-kMaxDiff) &&
1895 pxold = pxl; pyold = pyl; pL =
kTRUE;
1899 if ((py > pyl+kMaxDiff && py < pyt-kMaxDiff) &&
1901 pxold = pxt; pyold = pyt; pR =
kTRUE;
1905 if ((px > pxl+kMaxDiff && px < pxt-kMaxDiff) &&
1906 (py > pyl+kMaxDiff && py < pyt-kMaxDiff)) {
1907 pxold = px; pyold = py; pINSIDE =
kTRUE;
1915 if (pA || pB || pC || pD || pTop || pL || pR || pBot)
1918 if (!pA && !pB && !pC && !pD && !pTop && !pL && !pR && !pBot && !pINSIDE)
1931 if (px > pxt-kMinSize) { px = pxt-kMinSize; wx = px; }
1932 if (py > pyt-kMinSize) { py = pyt-kMinSize; wy = py; }
1933 if (px < pxlp) { px = pxlp; wx = px; }
1934 if (py < pylp) { py = pylp; wy = py; }
1952 if (px < pxl+kMinSize) { px = pxl+kMinSize; wx = px; }
1953 if (py > pyt-kMinSize) { py = pyt-kMinSize; wy = py; }
1954 if (px > pxtp) { px = pxtp; wx = px; }
1955 if (py < pylp) { py = pylp; wy = py; }
1973 if (px < pxl+kMinSize) { px = pxl+kMinSize; wx = px; }
1974 if (py < pyl+kMinSize) { py = pyl+kMinSize; wy = py; }
1975 if (px > pxtp) { px = pxtp; wx = px; }
1976 if (py > pytp) { py = pytp; wy = py; }
1994 if (px > pxt-kMinSize) { px = pxt-kMinSize; wx = px; }
1995 if (py < pyl+kMinSize) { py = pyl+kMinSize; wy = py; }
1996 if (px < pxlp) { px = pxlp; wx = px; }
1997 if (py > pytp) { py = pytp; wy = py; }
2016 if (py2 > py1-kMinSize) { py2 = py1-kMinSize; wy = py2; }
2017 if (py2 < py2p) { py2 = py2p; wy = py2; }
2032 if (py1 < py2+kMinSize) { py1 = py2+kMinSize; wy = py1; }
2033 if (py1 > py1p) { py1 = py1p; wy = py1; }
2048 if (px1 > px2-kMinSize) { px1 = px2-kMinSize; wx = px1; }
2049 if (px1 < px1p) { px1 = px1p; wx = px1; }
2065 if (px2 < px1+kMinSize) { px2 = px1+kMinSize; wx = px2; }
2066 if (px2 > px2p) { px2 = px2p; wx = px2; }
2081 Int_t dx = px - pxold;
2082 Int_t dy = py - pyold;
2083 px1 += dx; py1 += dy; px2 += dx; py2 += dy;
2084 if (px1 < px1p) { dx = px1p - px1; px1 += dx; px2 += dx; wx = px+dx; }
2085 if (px2 > px2p) { dx = px2 - px2p; px1 -= dx; px2 -= dx; wx = px-dx; }
2086 if (py1 > py1p) { dy = py1 - py1p; py1 -= dy; py2 -= dy; wy = py-dy; }
2087 if (py2 < py2p) { dy = py2p - py2; py1 += dy; py2 += dy; wy = py+dy; }
2101 x1 =
x2 = y1 = y2 = 0;
2128 if (pTop || pBot || pL || pR || pINSIDE) {
2135 if (px != pxorg || py != pyorg) {
2159 if (pINSIDE)
gPad->ShowGuidelines(
this,
event);
2160 if (pTop)
gPad->ShowGuidelines(
this,
event,
't',
true);
2161 if (pBot)
gPad->ShowGuidelines(
this,
event,
'b',
true);
2162 if (pL)
gPad->ShowGuidelines(
this,
event,
'l',
true);
2163 if (pR)
gPad->ShowGuidelines(
this,
event,
'r',
true);
2164 if (pA)
gPad->ShowGuidelines(
this,
event,
'1',
true);
2165 if (pB)
gPad->ShowGuidelines(
this,
event,
'2',
true);
2166 if (pC)
gPad->ShowGuidelines(
this,
event,
'3',
true);
2167 if (pD)
gPad->ShowGuidelines(
this,
event,
'4',
true);
2176 if (
gROOT->IsEscaped()) {
2181 if (opaque||ropaque) {
2184 x1 =
x2 = y1 = y2 = 0;
2210 if (pTop || pBot || pL || pR || pINSIDE) {
2217 if (pA || pB || pC || pD || pTop || pL || pR || pBot)
2223 if (px != pxorg || py != pyorg) {
2260 event =
gVirtualX->RequestLocator(1, 1, px, py);
2299 static Int_t axisNumber;
2301 static Int_t px1old, py1old, px2old, py2old;
2305 static TBox *zoombox;
2306 Double_t zbx1=0,zbx2=0,zby1=0,zby2=0;
2313 if (strstr(opt,
"cont4")) {
2322 if (!strcmp(axis->
GetName(),
"xaxis")) {
2326 if (!strcmp(axis->
GetName(),
"yaxis")) {
2330 if (!strcmp(axis->
GetName(),
"zaxis")) {
2336 if (axisNumber == 1) {
2342 }
else if (axisNumber == 2) {
2358 if (axisNumber == 1) {
2363 }
else if (axisNumber == 2) {
2377 zoombox =
new TBox(zbx1, zby1, zbx2, zby2);
2388 if (!opaque)
gVirtualX->SetLineColor(-1);
2396 if (axisNumber == 1) {
2406 if (axisNumber == 1) {
2411 }
else if (axisNumber == 2) {
2426 zoombox->
SetX1(zbx1);
2427 zoombox->
SetY1(zby1);
2428 zoombox->
SetX2(zbx2);
2429 zoombox->
SetY2(zby2);
2462 if (
gROOT->IsEscaped()) {
2464 if (opaque && zoombox) {
2473 if (ratio1 > ratio2) {
2478 if (ratio2 - ratio1 > 0.05) {
2480 if (axisNumber == 3 && hobj && hobj->
GetDimension() != 3) {
2489 Float_t newmin = zmin + (zmax-zmin)*ratio1;
2490 Float_t newmax = zmin + (zmax-zmin)*ratio2;
2514 if (axisNumber == 1) {
2522 }
else if (axisNumber == 2) {
2550 xmin = ((
xmin-xmi)/(xma-xmi))*(up-low)+low;
2551 xmax = ((
xmax-xmi)/(xma-xmi))*(up-low)+low;
2554 if (!strcmp(axis->
GetName(),
"xaxis")) axisNumber = 1;
2555 if (!strcmp(axis->
GetName(),
"yaxis")) axisNumber = 2;
2556 if (ratio2 - ratio1 > 0.05) {
2563 if (axisNumber == 1) axis->
SetRange(bin1,bin2);
2564 if (axisNumber == 2 && hobj1) {
2581 while ((obj= next())) {
2584 if (hobj == hobj1)
continue;
2587 if (axisNumber == 1) {
2589 }
else if (axisNumber == 2) {
2632 if (found)
return found;
2635 while ((cur = next())) {
2638 if (found)
return found;
2653 if (found)
return found;
2656 while ((cur = next())) {
2659 if (found)
return found;
2734 if (
fCanvas ==
this)
return nullptr;
2743 if (
fCanvas ==
this)
return nullptr;
2752 if (
fCanvas ==
this)
return nullptr;
2899 while ((obj=next())) {
2903 if (found)
return found;
2913 if (!subpadnumber) {
2920 while ((obj = next())) {
2923 if (pad->
GetNumber() == subpadnumber)
return pad;
2970 if (color <= 0)
return;
2988 gROOT->SetSelectedPad(
this);
3005 <<
" Name= "<<
GetName()<<
" Title= "<<
GetTitle()<<
" Option="<<option<<std::endl;
3017 if (opt.
Index(
"pfc")>=0 || opt.
Index(
"plc")>=0 || opt.
Index(
"pmc")>=0) {
3035 if (i>=ncolors) i = ncolors-1;
3047 Int_t const cellSize = 10;
3066 for (
int i = 0; i<
fCGnx; i++) {
3067 for (
int j = 0; j<
fCGny; j++) {
3079 for (
int i=0; i<np; i++) {
3088 TIter nextgraph(grlist);
3094 TIter nexthist(hlist);
3096 while ((oh = nexthist())) {
3110 for (
int r=i;
r<w+i;
r++) {
3111 for (
int c=j;
c<
h+j;
c++) {
3139 for (
Int_t i = 0; i<nxmax; i++) {
3140 for (
Int_t j = 0; j<=nymax; j++) {
3153#define NotFree(i, j) fCollideGrid[TMath::Max(TMath::Min(i+j*fCGnx,fCGnx*fCGny),0)] = kFALSE;
3180 yt = y1; y1 = y2; y2 = yt;
3182 for (i=
x1+1; i<
x2; i++) {
3189 yt = y1; y1 = y2; y2 = yt;
3192 for (j=y1+1; j<y2; j++) {
3212 for (
int i =
x1; i<=
x2; i++) {
3213 for (
int j = y1; j<=y2; j++)
NotFree(i, j);
3231 for (i =
x1; i<=
x2; i++) {
3236 for (i = y1; i<=y2; i++) {
3254 for (
Int_t i=s; i<
n; i=i+s) {
3256 g->GetPoint(i ,
x2,y2);
3270 (
int)((y1-
fY1)/ys), (
int)((y2-
fY1)/ys));
3283 if (
name.Index(
"hframe") >= 0)
return;
3288 bool haserrors =
false;
3289 TString drawOption =
h->GetDrawOption();
3293 if (drawOption.
Index(
"hist") < 0) {
3294 if (drawOption.
Index(
"e") >= 0) haserrors =
true;
3297 Int_t nx =
h->GetNbinsX();
3302 for (i = 1; i<nx; i++) {
3304 x1l =
h->GetBinCenter(i);
3310 y1l =
h->GetBinContent(i)-
h->GetBinErrorLow(i);
3316 y2l =
h->GetBinContent(i)+
h->GetBinErrorUp(i);
3322 for (j=y1; j<=y2; j++) {
3326 x1l =
h->GetBinLowEdge(i);
3332 y1l =
h->GetBinContent(i);
3339 x1l =
h->GetBinLowEdge(i)+
h->GetBinWidth(i);
3361 box->SetFillColorAlpha(
kRed,0.5);
3372 for (
int i = 0; i<
fCGnx; i++) {
3375 for (
int j = 0; j<
fCGny; j++) {
3376 if (
gPad->GetLogx()) {
3383 if (
gPad->GetLogy()) {
3392 box->DrawBox(X1L, Y1L, X2L, Y2L);
3394 box->SetFillColorAlpha(
kRed,t);
3395 box->DrawBox(X1L, Y1L, X2L, Y2L);
3399 if (t==0.15) t = 0.1;
3493 began3DScene =
kTRUE;
3500 if (padsav) padsav->
cd();
3529 if (color < 0) color = -color;
3536 if (bordersize <= 0) bordersize = 2;
3557 if (px1 < px2) {xl =
fX1; xt =
fX2; }
3558 else {xl =
fX2; xt =
fX1;}
3559 if (py1 > py2) {yl =
fY1; yt =
fY2;}
3560 else {yl =
fY2; yt =
fY1;}
3562 Double_t frameXs[7] = {}, frameYs[7] = {};
3566 frameXs[0] = xl; frameYs[0] = yl;
3567 frameXs[1] = xl + realBsX; frameYs[1] = yl + realBsY;
3568 frameXs[2] = frameXs[1]; frameYs[2] = yt - realBsY;
3569 frameXs[3] = xt - realBsX; frameYs[3] = frameYs[2];
3570 frameXs[4] = xt; frameYs[4] = yt;
3571 frameXs[5] = xl; frameYs[5] = yt;
3572 frameXs[6] = xl; frameYs[6] = yl;
3579 frameXs[0] = xl; frameYs[0] = yl;
3580 frameXs[1] = xl + realBsX; frameYs[1] = yl + realBsY;
3581 frameXs[2] = xt - realBsX; frameYs[2] = frameYs[1];
3582 frameXs[3] = frameXs[2]; frameYs[3] = yt - realBsY;
3583 frameXs[4] = xt; frameYs[4] = yt;
3584 frameXs[5] = xt; frameYs[5] = yl;
3585 frameXs[6] = xl; frameYs[6] = yl;
3718 ((
TPad*)obj)->PaintModified();
3730 began3DScene =
kTRUE;
3738 if (padsav) padsav->
cd();
3762 if (option[0] ==
's') {
3775 xb[0] =
x1; xb[1] =
x1; xb[2] =
x2; xb[3] =
x2;
3776 yb[0] = y1; yb[1] = y2; yb[2] = y2; yb[3] = y1;
3825 if (option[0] ==
's') {
3828 if (style0 >= 3100 && style0 < 4000) {
3830 xb[0] =
x1; xb[1] =
x1; xb[2] =
x2; xb[3] =
x2;
3831 yb[0] = y1; yb[1] = y2; yb[2] = y2; yb[3] = y1;
3837 if (option[0] ==
'l') {
3857 while ((obj = next())) {
3859 if (obj == stop)
break;
3860 ((
TPad*)obj)->CopyBackgroundPixmap(
x,
y);
3861 ((
TPad*)obj)->CopyBackgroundPixmaps((
TPad*)obj, stop,
x,
y);
3880 Warning(
"TPad::PaintFillArea",
"Float_t signature is obsolete. Use Double_t signature.");
3898 std::vector<Double_t>
x(nc, 0.);
3899 std::vector<Double_t>
y(nc, 0.);
3908 if (fillstyle >= 3100 && fillstyle < 4000) {
3930 for (
int i=0; i<
n; i++) {
3974 static Double_t ang1[10] = { 0., 10., 20., 30., 45.,5., 60., 70., 80., 89.99};
3975 static Double_t ang2[10] = {180.,170.,160.,150.,135.,5.,120.,110.,100., 89.99};
3977 Int_t fasi = FillStyle%1000;
3980 Int_t iAng1 = fasi%10;
4013 if (ang1[iAng1] != 5.)
PaintHatches(dy, ang1[iAng1], nn, xx, yy);
4014 if (ang2[iAng2] != 5.)
PaintHatches(dy, ang2[iAng2], nn, xx, yy);
4041 const Int_t maxnbi = 100;
4042 Double_t xli[maxnbi], xlh[2], ylh[2], xt1, xt2, yt1, yt2;
4043 Double_t ll,
x,
y,
x1,
x2, y1, y2,
a,
b, xi, xip, xin, yi, yip;
4049 ratiox = 1./(rwxmax-rwxmin);
4050 ratioy = 1./(rwymax-rwymin);
4063 gPad->GetPadPar(x1p,y1p,x2p,y2p);
4072 for (i=1; i<=nn; i++) {
4073 x = wndc*ratiox*(xx[i-1]-rwxmin);
4074 y = hndc*ratioy*(yy[i-1]-rwymin);
4075 yrot = sina*
x+cosa*
y;
4081 for (ycur=
ymax; ycur>=
ymin; ycur=ycur-dy) {
4083 for (i=2; i<=nn+1; i++) {
4086 if (i == nn+1) i2=1;
4087 x1 = wndc*ratiox*(xx[i1-1]-rwxmin);
4088 y1 = hndc*ratioy*(yy[i1-1]-rwymin);
4089 x2 = wndc*ratiox*(xx[i2-1]-rwxmin);
4090 y2 = hndc*ratioy*(yy[i2-1]-rwymin);
4091 xt1 = cosa*
x1-sina*y1;
4092 yt1 = sina*
x1+cosa*y1;
4093 xt2 = cosa*
x2-sina*y2;
4094 yt2 = sina*
x2+cosa*y2;
4105 if ((yi <= ycur) && (ycur < yip)) {
4107 if (nbi >= maxnbi)
return;
4117 if (nbi >= maxnbi)
return;
4120 if (nbi >= maxnbi)
return;
4127 a = (yt1-yt2)/(xt1-xt2);
4128 b = (yt2*xt1-xt2*yt1)/(xt1-xt2);
4137 if ((xi <= xin) && (xin < xip) &&
4141 if (nbi >= maxnbi)
return;
4150 for (i=1; i<=
m; i++) {
4151 if (xli[i] < xli[i-1]) {
4159 if (
inv == 0)
goto L50;
4165 if (nbi%2 != 0)
continue;
4167 for (i=1; i<=nbi; i=i+2) {
4169 xlh[0] = cosb*xli[i-1]-sinb*ycur;
4170 ylh[0] = sinb*xli[i-1]+cosb*ycur;
4171 xlh[1] = cosb*xli[i] -sinb*ycur;
4172 ylh[1] = sinb*xli[i] +cosb*ycur;
4174 xlh[0] = (xlh[0]/wndc)*(rwxmax-rwxmin)+rwxmin;
4175 ylh[0] = (ylh[0]/hndc)*(rwymax-rwymin)+rwymin;
4176 xlh[1] = (xlh[1]/wndc)*(rwxmax-rwxmin)+rwxmin;
4177 ylh[1] = (ylh[1]/hndc)*(rwymax-rwymin)+rwymin;
4178 gPad->PaintLine(xlh[0], ylh[0], xlh[1], ylh[1]);
4189 x[0] =
x1;
x[1] =
x2;
y[0] = y1;
y[1] = y2;
4239 for (i=0;i<3;i++) temp[i] = p1[i];
4241 for (i=0;i<3;i++) temp[i] = p2[i];
4243 PaintLine(xpad[0],xpad[1],xpad[3],xpad[4]);
4257 for (i=0;i<3;i++) temp[i] = p1[i];
4259 for (i=0;i<3;i++) temp[i] = p2[i];
4261 PaintLine(xpad[0],xpad[1],xpad[3],xpad[4]);
4277 Int_t i, i1=-1,np=1;
4278 for (i=0; i<
n-1; i++) {
4290 if (iclip == 0 && i <
n-2)
continue;
4324 if (option && (option[0] ==
'C')) mustClip =
kFALSE;
4327 Int_t i, i1=-1, np=1, iclip=0;
4329 for (i=0; i <
n-1; i++) {
4343 if (iclip == 0 && i <
n-2)
continue;
4375 for (
Int_t i=0; i<
n; i++) {
4394 for (
Int_t i = 1; i <
n; i++)
4413 for (i=0; i<
n; i++) {
4417 if (i <
n-1)
continue;
4419 if (np == 0)
continue;
4444 for (i=0; i<
n; i++) {
4448 if (i <
n-1)
continue;
4450 if (np == 0)
continue;
4540 if (
gPad == 0)
return 0;
4547 if (
this !=
gPad->GetCanvas()) {
4556 TPad *picked =
this;
4560 pickobj = &dummyLink;
4589 pick = ((
TPad*)obj)->
Pick(px, py, pickobj);
4594 }
else if (!
gROOT->GetEditorMode()) {
4601 if (dist == 0)
break;
4616 if (
fView && !gotPrim) {
4640 if (picked ==
this) {
4663 while ((obj = next()))
4678 ((
TPad*)
this)->SaveAs(filename);
4690 while ((obj = next())) {
4860 TString psname, fs1 = filename;
4877 const char *opt_default =
"ps";
4879 TString opt = !option ? opt_default : option;
4901 if (strstr(opt,
"gif+")) {
4904 }
else if (strstr(opt,
"gif")) {
4907 }
else if (strstr(opt,
"png")) {
4910 }
else if (strstr(opt,
"jpg")) {
4913 }
else if (strstr(opt,
"tiff")) {
4916 }
else if (strstr(opt,
"xpm")) {
4919 }
else if (strstr(opt,
"bmp")) {
4926 if (!
gROOT->IsBatch() && image) {
4929 Color_t hc =
gPad->GetCanvas()->GetHighLightColor();
4930 gPad->GetCanvas()->SetHighLightColor(-1);
4938 Info(
"Print",
"GIF file %s has been created", psname.
Data());
4940 gPad->GetCanvas()->SetHighLightColor(hc);
4944 Color_t hc =
gPad->GetCanvas()->GetHighLightColor();
4945 gPad->GetCanvas()->SetHighLightColor(-1);
4952 Info(
"Print",
"file %s has been created", psname.
Data());
4954 gPad->GetCanvas()->SetHighLightColor(hc);
4956 Warning(
"Print",
"Unsupported image format %s", psname.
Data());
4962 if (strstr(opt,
"cxx")) {
4968 if (strstr(opt,
"root")) {
4974 if (strstr(opt,
"xml")) {
4981 if (strstr(opt,
"json")) {
4987 if (strstr(opt,
"svg")) {
5002 if ((
h =
gROOT->GetPluginManager()->FindHandler(
"TVirtualPS",
"svg"))) {
5003 if (
h->LoadPlugin() == -1)
5029 if (strstr(opt,
"tex") || strstr(opt,
"Standalone")) {
5044 if ((
h =
gROOT->GetPluginManager()->FindHandler(
"TVirtualPS",
"tex"))) {
5045 if (
h->LoadPlugin() == -1)
5052 if (strstr(opt,
"Standalone")) standalone =
kTRUE;
5067 Info(
"Print",
"Standalone TeX file %s has been created", psname.
Data());
5069 Info(
"Print",
"TeX file %s has been created", psname.
Data());
5090 copen = psname.
EndsWith(
"(");
if (copen) psname[psname.
Length()-1] = 0;
5091 cclose = psname.
EndsWith(
")");
if (cclose) psname[psname.
Length()-1] = 0;
5092 copenb = psname.
EndsWith(
"[");
if (copenb) psname[psname.
Length()-1] = 0;
5093 ccloseb = psname.
EndsWith(
"]");
if (ccloseb) psname[psname.
Length()-1] = 0;
5097 if (copen || copenb) mustClose =
kFALSE;
5098 if (cclose || ccloseb) mustClose =
kTRUE;
5109 if (ratio < 1) pstype = 112;
5110 if (strstr(opt,
"Portrait")) pstype = 111;
5111 if (strstr(opt,
"Landscape")) pstype = 112;
5112 if (strstr(opt,
"eps")) pstype = 113;
5113 if (strstr(opt,
"Preview")) pstype = 113;
5121 if (strstr(opt,
"pdf") || strstr(opt,
"Title:") || strstr(opt,
"EmbedFonts")) {
5122 if ((
h =
gROOT->GetPluginManager()->FindHandler(
"TVirtualPS",
"pdf"))) {
5123 if (
h->LoadPlugin() == -1)
return;
5128 if ((
h =
gROOT->GetPluginManager()->FindHandler(
"TVirtualPS",
"image"))) {
5129 if (
h->LoadPlugin() == -1)
return;
5133 if ((
h =
gROOT->GetPluginManager()->FindHandler(
"TVirtualPS",
"ps"))) {
5134 if (
h->LoadPlugin() == -1)
return;
5142 if (titlePos !=
kNPOS) {
5149 if (!strstr(opt,
"pdf") || image) {
5166 if (!copen)
Info(
"Print",
"%s file %s has been created", opt.
Data(), psname.
Data());
5167 else Info(
"Print",
"%s file %s has been created using the current canvas", opt.
Data(), psname.
Data());
5176 if (titlePos !=
kNPOS) {
5183 if (cclose)
Info(
"Print",
"Current canvas added to %s file %s and file closed", opt.
Data(), psname.
Data());
5184 else Info(
"Print",
"%s file %s has been closed", opt.
Data(), psname.
Data());
5189 Info(
"Print",
"Current canvas added to %s file %s", opt.
Data(), psname.
Data());
5195 if (strstr(opt,
"EmbedFonts")) {
5196 gSystem->
Exec(
Form(
"gs -quiet -dSAFER -dNOPLATFONTS -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dUseCIEColor -dCompatibilityLevel=1.4 -dPDFSETTINGS=/printer -dCompatibilityLevel=1.4 -dMaxSubsetPct=100 -dSubsetFonts=true -dEmbedAllFonts=true -sOutputFile=pdf_temp.pdf -f %s",
5211 if ((
x1 >=
x2) || (y1 >= y2)) {
5212 Error(
"Range",
"illegal world coordinates range: x1=%f, y1=%f, x2=%f, y2=%f",
x1,y1,
x2,y2);
5250 Error(
"RangeAxis",
"illegal axis coordinates range: xmin=%f, ymin=%f, xmax=%f, ymax=%f",
5321 TH1 *hobj =
nullptr;
5327 while ((obj = next())) {
5339 if (
g) hobj =
g->GetHistogram();
5356 gPad->GetUxmax(),
gPad->GetUymax());
5358 b->SetLineStyle(
gPad->GetFrameLineStyle());
5359 b->SetLineWidth(
gPad->GetFrameLineWidth());
5360 b->SetLineColor(
gPad->GetFrameLineColor());
5364 if (padsav) padsav->
cd();
5494 Error(
"ResizePad",
"Cannot resize pad. No current pad available.");
5497 if (
gPad->GetWw()==0.0||
gPad->GetWh()==0.0) {
5498 Warning(
"ResizePad",
"gPad has at least one zero dimension.");
5502 Warning(
"ResizePad",
"The pad has at least one zero dimension.");
5507 if (
this ==
gPad->GetCanvas()) {
5515 Warning(
"ResizePad",
"The parent pad has at least one zero dimension.");
5564 while ((obj = next())) {
5566 ((
TPad*)obj)->ResizePad(option);
5570 if (
gPad->IsBatch())
5589 Warning(
"ResizePad",
"Inf/NaN propagated to the pad. Check drawn objects.");
5590 if (w <= 0 || w > 10000) {
5591 Warning(
"ResizePad",
"%s width changed from %d to %d\n",
GetName(),w,10);
5594 if (h <= 0 || h > 10000) {
5595 Warning(
"ResizePad",
"%s height changed from %d to %d\n",
GetName(),
h,10);
5612 if (padsav ==
this) {
5655 Int_t lenfil = filename ? strlen(filename) : 0;
5658 else psname = filename;
5669 ((
TPad*)
this)->Print(psname,
"gif");
5721 const char *cname =
GetName();
5722 size_t nch = strlen(cname);
5723 if (nch <
sizeof(lcname)) {
5724 strlcpy(lcname, cname,
sizeof(lcname));
5725 for(
size_t k = 0; k < nch; k++)
5726 if (lcname[k] ==
' ')
5730 else if (
this ==
gPad->GetCanvas())
5737 if (
this !=
gPad->GetCanvas()) {
5738 out <<
" "<<std::endl;
5739 out <<
"// ------------>Primitives in pad: "<<
GetName()<<std::endl;
5741 out<<
" TPad *"<<cname<<
" = new TPad("<<quote<<
GetName()<<quote<<
", "<<quote<<
GetTitle()
5748 out<<
" "<<cname<<
"->Draw();"<<std::endl;
5749 out<<
" "<<cname<<
"->cd();"<<std::endl;
5751 out<<
" "<<cname<<
"->Range("<<
fX1<<
","<<
fY1<<
","<<
fX2<<
","<<
fY2<<
");"<<std::endl;
5756 static Int_t viewNumber = 0;
5757 out<<
" TView *view"<<++viewNumber<<
" = TView::CreateView(1);"<<std::endl;
5758 out<<
" view"<<viewNumber<<
"->SetRange("<<rmin[0]<<
","<<rmin[1]<<
","<<rmin[2]<<
","
5759 <<rmax[0]<<
","<<rmax[1]<<
","<<rmax[2]<<
");"<<std::endl;
5764 out<<
" "<<cname<<
"->SetFillColor(ci);" << std::endl;
5766 out<<
" "<<cname<<
"->SetFillColor("<<
GetFillColor()<<
");"<<std::endl;
5769 out<<
" "<<cname<<
"->SetFillStyle("<<
GetFillStyle()<<
");"<<std::endl;
5772 out<<
" "<<cname<<
"->SetBorderMode("<<
GetBorderMode()<<
");"<<std::endl;
5775 out<<
" "<<cname<<
"->SetBorderSize("<<
GetBorderSize()<<
");"<<std::endl;
5778 out<<
" "<<cname<<
"->SetLogx();"<<std::endl;
5781 out<<
" "<<cname<<
"->SetLogy();"<<std::endl;
5784 out<<
" "<<cname<<
"->SetLogz();"<<std::endl;
5787 out<<
" "<<cname<<
"->SetGridx();"<<std::endl;
5790 out<<
" "<<cname<<
"->SetGridy();"<<std::endl;
5793 out<<
" "<<cname<<
"->SetTickx("<<
GetTickx()<<
");"<<std::endl;
5796 out<<
" "<<cname<<
"->SetTicky("<<
GetTicky()<<
");"<<std::endl;
5799 out<<
" "<<cname<<
"->SetTheta("<<
GetTheta()<<
");"<<std::endl;
5802 out<<
" "<<cname<<
"->SetPhi("<<
GetPhi()<<
");"<<std::endl;
5805 out<<
" "<<cname<<
"->SetLeftMargin("<<
GetLeftMargin()<<
");"<<std::endl;
5808 out<<
" "<<cname<<
"->SetRightMargin("<<
GetRightMargin()<<
");"<<std::endl;
5811 out<<
" "<<cname<<
"->SetTopMargin("<<
GetTopMargin()<<
");"<<std::endl;
5814 out<<
" "<<cname<<
"->SetBottomMargin("<<
GetBottomMargin()<<
");"<<std::endl;
5820 out<<
" "<<cname<<
"->SetFrameFillColor(ci);" << std::endl;
5833 out<<
" "<<cname<<
"->SetFrameLineColor(ci);" << std::endl;
5853 out<<
" "<<cname<<
"->SetFrameFillColor(ci);" << std::endl;
5855 out<<
" "<<cname<<
"->SetFrameFillColor("<<frame->
GetFillColor()<<
");"<<std::endl;
5858 out<<
" "<<cname<<
"->SetFrameFillStyle("<<frame->
GetFillStyle()<<
");"<<std::endl;
5861 out<<
" "<<cname<<
"->SetFrameLineStyle("<<frame->
GetLineStyle()<<
");"<<std::endl;
5866 out<<
" "<<cname<<
"->SetFrameLineColor(ci);" << std::endl;
5868 out<<
" "<<cname<<
"->SetFrameLineColor("<<frame->
GetLineColor()<<
");"<<std::endl;
5871 out<<
" "<<cname<<
"->SetFrameLineWidth("<<frame->
GetLineWidth()<<
");"<<std::endl;
5874 out<<
" "<<cname<<
"->SetFrameBorderMode("<<frame->
GetBorderMode()<<
");"<<std::endl;
5877 out<<
" "<<cname<<
"->SetFrameBorderSize("<<frame->
GetBorderSize()<<
");"<<std::endl;
5885 while ((obj = next())) {
5887 if (!strcmp(obj->
GetName(),
"Graph")) ((
TGraph*)obj)->SetName(
Form(
"Graph%d",grnum++));
5890 out<<
" "<<cname<<
"->Modified();"<<std::endl;
5892 if (padsav) padsav->
cd();
5905 Error(
"SetAspectRatio",
"cannot fix aspect ratio, height of pad is 0");
5929 while ((obj = next())) {
5943 if (fstyle == 0) fstyle = 4000;
6006 if ((xlow < 0) || (xlow > 1) || (ylow < 0) || (ylow > 1)) {
6007 Error(
"TPad",
"illegal bottom left position: x=%f, y=%f", xlow, ylow);
6010 if ((xup < 0) || (xup > 1) || (yup < 0) || (yup > 1)) {
6011 Error(
"TPad",
"illegal top right position: x=%f, y=%f", xup, yup);
6014 if (xup-xlow <= 0) {
6015 Error(
"TPad",
"illegal width: %f", xup-xlow);
6018 if (yup-ylow <= 0) {
6019 Error(
"TPad",
"illegal height: %f", yup-ylow);
6056 SetPad(xlow, ylow, xup, yup);
6064 if (!view)
delete fView;
6137 x1 =
x2 = y1 = y2 = 0;
6139 if (aBBox.
fX<bBBox.
fX) {
6155 else if (mode ==
'y') {
6156 if (aBBox.
fY<bBBox.
fY) {
6224 std::vector<dField> curDist;
6225 std::vector<dField> otherDist;
6235 Int_t dSizeArrow = 12;
6237 movedX = movedY =
false;
6240 if (mode !=
'i') resize =
true;
6247 static TPad *tmpGuideLinePad = 0;
6250 if (tmpGuideLinePad) {
6251 if (padSave == tmpGuideLinePad)
6253 if (
object == tmpGuideLinePad) {
6254 tmpGuideLinePad->
Delete();
6255 tmpGuideLinePad = 0;
6258 tmpGuideLinePad->
Delete();
6259 tmpGuideLinePad = 0;
6263 prims =
gPad->GetListOfPrimitives();
6270 if (!tmpGuideLinePad){
6271 tmpGuideLinePad =
new TPad(
"tmpGuideLinePad",
"tmpGuideLinePad", 0, 0, 1, 1);
6277 tmpGuideLinePad->
Draw();
6278 tmpGuideLinePad->
cd();
6281 if (cling && !log) threshold = 7;
6294 MX =
gPad->GetX1() + 0.5 * (
gPad->GetX2()-
gPad->GetX1());
6295 MY =
gPad->GetY1() + 0.5 * (
gPad->GetY2()-
gPad->GetY1());
6296 pMX =
gPad->XtoPixel(MX);
6297 pMY =
gPad->YtoPixel(MY);
6300 if (cling && (!resize)) {
6308 L->SetLineColor(lineColor);
6312 if (cling && (!resize)) {
6320 L->SetLineColor(lineColor);
6324 for (
UInt_t i = 0; i<
n; i++) {
6330 if (cling && (!resize)) {
6337 L->SetLineColor(lineColor);
6342 if (cling && (!resize)) {
6350 L->SetLineColor(lineColor);
6357 for (
UInt_t i = 0; i<
n; i++) {
6360 aBBox =
a->GetBBox();
6361 for (
UInt_t j = i+1; j<
n; j++) {
6364 bBBox =
b->GetBBox();
6372 if ((
b != cur)&&(
a != cur)) otherDist.push_back(abDist);
6373 else curDist.push_back(abDist);
6380 if ((
b != cur)&&(
a != cur)) otherDist.push_back(abDist);
6381 else curDist.push_back(abDist);
6389 for (
UInt_t i = 0; i<curDist.size(); i++) {
6390 for (
UInt_t j = 0; j<otherDist.size(); j++) {
6391 if ((curDist[i].fdir == otherDist[j].fdir) && (otherDist[j].fdir==
'x') && (
TMath::Abs(curDist[i].fdist-otherDist[j].fdist)<threshold)) {
6392 if (cling && (!movedX) && (!resize)) {
6398 DrawDist(curDist[i].fa->GetBBox(), curDist[i].fb->GetBBox(),
'x');
6399 DrawDist(otherDist[j].fa->GetBBox(), otherDist[j].fb->GetBBox(),
'x');
6401 if ((curDist[i].fdir == otherDist[j].fdir) && (otherDist[j].fdir==
'y') && (
TMath::Abs(curDist[i].fdist-otherDist[j].fdist)<threshold)) {
6402 if (cling && (!movedY) && (!resize)) {
6408 DrawDist(curDist[i].fa->GetBBox(), curDist[i].fb->GetBBox(),
'y');
6409 DrawDist(otherDist[j].fa->GetBBox(), otherDist[j].fb->GetBBox(),
'y');
6412 for (
UInt_t j = i; j<curDist.size(); j++) {
6414 if ((curDist[i].fdir == curDist[j].fdir) && (curDist[j].fdir==
'x') && (
TMath::Abs(curDist[i].fdist-curDist[j].fdist)<threshold)) {
6415 if (cling && (!movedX) && (!resize)) {
6420 DrawDist(curDist[i].fa->GetBBox(), curDist[i].fb->GetBBox(),
'x');
6421 DrawDist(curDist[j].fa->GetBBox(), curDist[j].fb->GetBBox(),
'x');
6424 if ((curDist[i].fdir == curDist[j].fdir) && (curDist[j].fdir==
'y') && (
TMath::Abs(curDist[i].fdist-curDist[j].fdist)<threshold)) {
6425 if (cling && (!movedY) && (!resize)) {
6430 DrawDist(curDist[i].fa->GetBBox(), curDist[i].fb->GetBBox(),
'y');
6431 DrawDist(curDist[j].fa->GetBBox(), curDist[j].fb->GetBBox(),
'y');
6438 for (
UInt_t i = 0; i<
n; i++) {
6440 if (
a && (cur !=
a)) {
6441 aBBox =
a->GetBBox();
6453 gPad->PixeltoX(aBBox.
fX+aBBox.
fWidth),
gPad->PixeltoY(aBBox.
fY-dSizeArrow-
gPad->VtoPixel(0)), 0.01,
"<|>");
6495 if (tmpGuideLinePad) {
6498 tmpGuideLinePad->
Delete();
6499 tmpGuideLinePad = 0;
6506 if (padSave) padSave->
cd();
6586 Int_t nch, nobjects;
6589 if (
b.IsReading()) {
6601 b.ReadClassBuffer(TPad::Class(),
this,
v, R__s, R__c);
6606 while ((obj = next())) {
6625 TObject::Streamer(
b);
6626 TAttLine::Streamer(
b);
6627 TAttFill::Streamer(
b);
6628 b >> single;
fX1 = single;
6629 b >> single;
fY1 = single;
6630 b >> single;
fX2 = single;
6631 b >> single;
fY2 = single;
6634 TAttPad::Streamer(
b);
6636 TVirtualPad::Streamer(
b);
6637 TAttPad::Streamer(
b);
6638 b >> single;
fX1 = single;
6639 b >> single;
fY1 = single;
6640 b >> single;
fX2 = single;
6641 b >> single;
fY2 = single;
6668 b >> single;
fWNDC = single;
6669 b >> single;
fHNDC = single;
6679 TVirtualPad::Streamer(
b);
6680 TAttPad::Streamer(
b);
6739 char drawoption[64];
6740 for (
Int_t i = 0; i < nobjects; i++) {
6743 b.ReadFastArray(drawoption,nch);
6766 b >> single;
fPhi = single;
6781 b.CheckByteCount(R__s, R__c, TPad::IsA());
6785 b.WriteClassBuffer(TPad::Class(),
this);
6830 while ((obj = next())) {
6914 if (!
gPad)
return nullptr;
6916 if (strlen(emode))
gROOT->SetEditorMode(emode);
6917 if (
gROOT->GetEditorMode() == 0 && strlen(pname) > 2)
gROOT->SetEditorMode(&pname[1]);
6921 TObject *oldlast =
gPad->GetListOfPrimitives() ?
gPad->GetListOfPrimitives()->Last() :
nullptr;
6924 Bool_t hasname = strlen(pname) > 0;
6925 if (!pname[0] && !emode[0]) testlast =
kTRUE;
6926 if (testlast)
gROOT->SetEditorMode();
6928 if (
gROOT->GetEditorMode() == 0) {
6931 if (obj)
return obj;
6934 if (!
gPad->GetListOfPrimitives())
return nullptr;
6935 obj =
gPad->GetListOfPrimitives()->Last();
6936 if (obj != oldlast)
return obj;
6957 if (
gPad->IsBatch())
return 0;
6958 return (
TObject*)
gROOT->ProcessLineFast(
Form(
"new TGToolTip((TBox*)0x%zx,\"%s\",%d)",
6969 gROOT->ProcessLineFast(
Form(
"delete (TGToolTip*)0x%zx", (
size_t)tip));
6980 gROOT->ProcessLineFast(
Form(
"((TGToolTip*)0x%zx)->Reset((TPad*)0x%zx)",
6981 (
size_t)tip,(
size_t)
this));
6991 gROOT->ProcessLineFast(
Form(
"((TGToolTip*)0x%zx)->Hide()",(
size_t)tip));
6999 ::Info(
"TPad::x3d()",
"This function is deprecated. Use %s->GetViewer3D(\"x3d\") instead",this->
GetName());
7002 if (!type || !
type[0]) {
7047 if (!strstr(
type,
"pad")) {
7051 Warning(
"TPad::CreateViewer3D",
"Cannot create 3D viewer of type: %s",
type);
7057 if (strstr(
type,
"gl") && !strstr(
type,
"ogl"))
7060 createdExternal =
kTRUE;
7076 if (createdExternal) {
static const double x2[5]
static const double x1[5]
static Bool_t ContainsTImage(TList *li)
Auxiliary function.
R__EXTERN TPluginManager * gPluginMgr
R__EXTERN TVirtualMutex * gROOTMutex
char * Form(const char *fmt,...)
char * StrDup(const char *str)
Duplicate the string str.
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.
virtual void Draw(Option_t *option="")
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 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 Bool_t IsTransparent() const
virtual void SetFillStyle(Style_t fstyle)
Set the fill area style.
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 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 Draw(Option_t *option="")
Draw this box with its current attributes.
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.
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
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.
virtual void ls(Option_t *option="") const
List (ls) all objects in this collection.
void Browse(TBrowser *b)
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 Int_t GetColor(const char *hexcolor)
Static method returning color number for color specified by hex color string of form: "#rrggbb",...
static void 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 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.
virtual void Exec(const char *command="")
Execute the command referenced by this object.
virtual void Paint(Option_t *option="")
Paint this wbox with its current attributes.
virtual void UseCurrentStyle()
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.
TAxis * GetXaxis()
Get the behaviour adopted by the object about the statoverflows. See EStatOverflows for more informat...
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)
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 void Draw(Option_t *option="")
Draw this histogram with options.
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.
virtual void Draw(Option_t *option="")
Draw this legend with its current attributes.
Use the TLine constructor to create a simple line.
Option_t * GetOption() const
Returns the object option stored in the list.
virtual void Add(TObject *obj)
virtual TObject * After(const TObject *obj) const
Returns the object after object obj.
virtual TObjLink * LastLink() const
virtual TObject * Remove(TObject *obj)
Remove object from the list.
virtual void AddFirst(TObject *obj)
Add object at the beginning of the list.
virtual TObject * FindObject(const char *name) const
Find an object in this list using its name.
virtual TObjLink * FirstLink() const
virtual TObject * At(Int_t idx) const
Returns the object at position idx. Returns 0 if idx is out of range.
virtual TObject * Last() const
Return the last object in the list. Returns 0 when list is empty.
virtual void RecursiveRemove(TObject *obj)
Remove object from this collection and recursively remove the object from all other objects (and coll...
virtual TObject * First() const
Return the first object in the list. Returns 0 when list is empty.
virtual void AddLast(TObject *obj)
Add object at the end of the list.
virtual void Clear(Option_t *option="")
Remove all objects from 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.
The TNamed class is the base class for all named ROOT classes.
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
virtual void SetName(const char *name)
Set the name of the TNamed.
virtual const char * GetTitle() const
Returns title of object.
virtual const char * GetName() const
Returns name of object.
Wrapper around a TObject so it can be stored in a TList.
void SetObject(TObject *obj)
TObject * GetObject() const
Option_t * GetOption() 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 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 SavePrimitive(std::ostream &out, Option_t *option="")
Save a primitive as a C++ statement(s) on output stream "out".
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 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.
void PaintBorder(Color_t color, Bool_t tops)
Paint the pad border.
Double_t GetPhi() 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
Bool_t GetGridx() const override
Double_t fX2
X of upper X coordinate.
void SetLogz(Int_t value=1) override
Set Lin/Log scale for Z.
void Browse(TBrowser *b) override
Browse pad.
Int_t XtoPixel(Double_t x) const override
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.
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 on.
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 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.
Bool_t PlaceBox(TObject *o, Double_t w, Double_t h, Double_t &xl, Double_t &yb) override
Place a box in NDC space.
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)
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 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
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 Modified(Bool_t flag=1) override
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 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.
virtual ~TPad()
Pad destructor.
TView * GetView() const override
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.
TVirtualPad * GetVirtCanvas() const override
Get virtual canvas.
void DeleteExec(const char *name) override
Remove TExec name from the list of Execs.
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
TPoint GetBBoxCenter() override
Return the center of the Pad as TPoint in pixels.
void FillCollideGridTFrame(TObject *o)
Bool_t GetGridy() const override
void LineNotFree(Int_t x1, Int_t x2, Int_t y1, Int_t y2)
Mark as "not free" the cells along a line.
Double_t fAbsHNDC
Absolute Height of pad along Y in NDC.
void ExecuteEvent(Int_t event, Int_t px, Int_t py) override
Execute action corresponding to one event.
TObject * fTip
! tool tip associated with box
void SetCanvasSize(UInt_t ww, UInt_t wh) override
Set canvas size.
Int_t GetLogz() const override
virtual void AutoExec()
Execute the list of Execs when a pad event occurs.
Bool_t fAbsCoord
Use absolute coordinates.
Int_t fNumPaletteColor
Number of objects with an automatic color.
Int_t fCrosshairPos
Position of crosshair.
void FillCollideGridTGraph(TObject *o)
void SetFixedAspectRatio(Bool_t fixed=kTRUE) override
Fix pad aspect ratio to current value if fixed is true.
Short_t GetBorderSize() const override
void RedrawAxis(Option_t *option="") override
Redraw the frame axis.
void DrawDist(Rectangle_t aBBox, Rectangle_t bBBox, char mode)
Draw Arrows to indicated equal distances of Objects with given BBoxes.
Int_t fLogx
(=0 if X linear scale, =1 if log scale)
Double_t GetAbsWNDC() const override
Int_t YtoAbsPixel(Double_t y) const override
Double_t fUtoPixel
xpixel = fUtoPixelk + fUtoPixel*undc
Int_t fCrosshair
Crosshair type (0 if no crosshair requested)
void PaintFillAreaHatches(Int_t n, Double_t *x, Double_t *y, Int_t FillStyle)
This function paints hatched fill area according to the FillStyle value The convention for the Hatch ...
void RangeAxis(Double_t xmin, Double_t ymin, Double_t xmax, Double_t ymax) override
Set axis coordinate system for the pad.
@ kCannotMove
Fixed position.
@ kClearAfterCR
Clear after CR.
@ kHori
Pad is horizontal.
@ kPrintingPS
PS Printing.
@ kFraming
Frame is requested.
Double_t fUtoAbsPixelk
Conversion coefficient for U NDC to absolute pixel.
void ResetToolTip(TObject *tip) override
Reset tool tip, i.e.
Double_t GetTheta() const override
TList * fPrimitives
->List of primitives (subpads)
UInt_t GetWh() const override
Get 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.
Bool_t * fCollideGrid
! Grid used to find empty space when adding a box (Legend) in a 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 ?
TVirtualPad * cd(Int_t subpadnumber=0) override
Set Current pad.
Int_t GetLogy() const override
void PaintLineNDC(Double_t u1, Double_t v1, Double_t u2, Double_t v2) override
Paint line in normalized coordinates.
void Print(const char *filename="") const override
This method is equivalent to SaveAs("filename"). See TPad::SaveAs for details.
Int_t GetEventX() const override
Get X event.
TFrame * GetFrame() override
Get frame.
Double_t fYtoAbsPixelk
Conversion coefficient for Y World to absolute pixel.
Double_t fXtoPixelk
Conversion coefficient for X World to pixel.
Int_t fLogy
(=0 if Y linear scale, =1 if log scale)
TFrame * fFrame
! Pointer to 2-D frame (if one exists)
TVirtualPadPainter * GetPainter() override
Get pad painter from TCanvas.
void Draw(Option_t *option="") override
Draw Pad in Current pad (re-parent pad if necessary).
Double_t fHNDC
Height of pad along Y in Normalized Coordinates (NDC)
void ShowGuidelines(TObject *object, const Int_t event, const char mode='i', const bool cling=true) override
Shows lines to indicate if a TAttBBox2D object is aligned to the center or to another object,...
virtual Bool_t IsEditable() const override
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.
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.
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
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 void Draw(Option_t *option="")
Draw this pavetext with its current attributes.
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.
Int_t GetBorderSize() const
virtual void SetBorderSize(Int_t bordersize=4)
Longptr_t ExecPlugin(int nargs, const T &... params)
TPluginHandler * FindHandler(const char *base, const char *uri=0)
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)
Bool_t BeginsWith(const char *s, ECaseCompare cmp=kExact) const
TString & Prepend(const char *cs)
TString & Append(const char *cs)
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.
virtual TText * DrawText(Double_t x, Double_t y, const char *text)
Draw this text with new coordinates.
virtual void SetNDC(Bool_t isNDC=kTRUE)
Set NDC mode on if isNDC = kTRUE, off otherwise.
virtual void Paint(Option_t *option="")
Paint this text with its current attributes.
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.
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
const char * GetName() const override=0
Returns name of object.
virtual Int_t GetNumber() const =0
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.
static TVirtualViewer3D * Viewer3D(TVirtualPad *pad=0, Option_t *type="")
Create a Viewer 3D of specified type.
virtual Bool_t BuildingScene() const =0
virtual void EndScene()=0
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)
Double_t Floor(Double_t x)
Double_t Ceil(Double_t 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 Sqrt(Double_t x)
LongDouble_t Power(LongDouble_t x, LongDouble_t y)
Short_t Min(Short_t a, Short_t b)
Double_t Log10(Double_t x)
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)