132 fPadPointer =
nullptr;
133 fPrimitives =
nullptr;
148 fPadView3D =
nullptr;
178 fFixedAspectRatio =
kFALSE;
181 fNumPaletteColor = 0;
182 fNextPaletteColor = 0;
183 fCollideGrid =
nullptr;
197 fUxmin = fUymin = fUxmax = fUymax = 0;
246 :
TVirtualPad(
name,title,xlow,ylow,xup,yup,color,bordersize,bordermode)
330 Error(
"TPad",
"You must create a TCanvas before creating a TPad");
337 if ((xlow < 0) || (xlow > 1) || (ylow < 0) || (ylow > 1)) {
338 Error(
"TPad",
"illegal bottom left position: x=%f, y=%f", xlow, ylow);
341 if ((xup < 0) || (xup > 1) || (yup < 0) || (yup > 1)) {
342 Error(
"TPad",
"illegal top right position: x=%f, y=%f", xup, yup);
353 SetPad(
name, title, xlow, ylow, xup, yup, color, bordersize, bordermode);
453 while ((exec = (
TExec*)next())) {
494 const char* title,
Option_t *option)
503 while( (o=next()) ) {
509 mes = ((
TNamed *)o)->GetTitle();
514 if (strlen(option)) {
525 TIter nextgraph(grlist);
528 while ((obj = nextgraph())) {
533 if (strlen(option)) opt = option;
535 leg->AddEntry( obj, mes.
Data(), opt );
540 TIter nexthist(hlist);
543 while ((obj = nexthist())) {
548 if (strlen(option)) opt = option;
550 leg->AddEntry( obj, mes.
Data(), opt );
561 Info(
"BuildLegend(void)",
"No object to build a TLegend.");
604 while ((obj = next())) {
607 if (
n == subpadnumber) {
608 return ((
TPad*)obj)->
cd();
677 for (
Int_t i=0;i<2;i++) {
690 while(code1 + code2) {
701 if (ic == 0) ic = code2;
703 yt =
y[0] + (
y[1]-
y[0])*(xclipl-
x[0])/(
x[1]-
x[0]);
707 yt =
y[0] + (
y[1]-
y[0])*(xclipr-
x[0])/(
x[1]-
x[0]);
711 xt =
x[0] + (
x[1]-
x[0])*(yclipb-
y[0])/(
y[1]-
y[0]);
715 xt =
x[0] + (
x[1]-
x[0])*(yclipt-
y[0])/(
y[1]-
y[0]);
721 code1 =
ClippingCode(xt,yt,xclipl,yclipb,xclipr,yclipt);
725 code2 =
ClippingCode(xt,yt,xclipl,yclipb,xclipr,yclipt);
748 for (
Int_t i=0;i<2;i++) {
757 if (
x[0] < xclipl) code1 = code1 | 0x1;
758 if (
x[0] > xclipr) code1 = code1 | 0x2;
759 if (
y[0] < yclipb) code1 = code1 | 0x4;
760 if (
y[0] > yclipt) code1 = code1 | 0x8;
762 if (
x[1] < xclipl) code2 = code2 | 0x1;
763 if (
x[1] > xclipr) code2 = code2 | 0x2;
764 if (
y[1] < yclipb) code2 = code2 | 0x4;
765 if (
y[1] > yclipt) code2 = code2 | 0x8;
769 while(code1 + code2) {
780 if (ic == 0) ic = code2;
782 yt =
y[0] + (
y[1]-
y[0])*(xclipl-
x[0])/(
x[1]-
x[0]);
786 yt =
y[0] + (
y[1]-
y[0])*(xclipr-
x[0])/(
x[1]-
x[0]);
790 xt =
x[0] + (
x[1]-
x[0])*(yclipb-
y[0])/(
y[1]-
y[0]);
794 xt =
x[0] + (
x[1]-
x[0])*(yclipt-
y[0])/(
y[1]-
y[0]);
800 code1 =
ClippingCode(xt,yt,xclipl,yclipb,xclipr,yclipt);
804 code2 =
ClippingCode(xt,yt,xclipl,yclipb,xclipr,yclipt);
817 if (
x < xcl1) code = code | 0x1;
818 if (
x > xcl2) code = code | 0x2;
819 if (
y < ycl1) code = code | 0x4;
820 if (
y > ycl2) code = code | 0x8;
875 for (i=0; i<
n; i++) {
876 x2 =
x[i]; y2 =
y[i];
880 slope = (y2-y1)/(
x2-
x1);
884 xc2[nc2] = xclipl; yc2[nc2++] = slope*(xclipl-
x1)+y1;
886 xc2[nc2] =
x2; yc2[nc2++] = y2;
890 xc2[nc2] = xclipl; yc2[nc2++] = slope*(xclipl-
x1)+y1;
891 xc2[nc2] =
x2; yc2[nc2++] = y2;
898 x1 = xc2[nc2-1]; y1 = yc2[nc2-1];
900 for (i=0; i<nc2; i++) {
901 x2 = xc2[i]; y2 = yc2[i];
905 slope = (
x2-
x1)/(y2-y1);
909 xc[nc] =
x1+(yclipt-y1)*slope; yc[nc++] = yclipt;
911 xc[nc] =
x2; yc[nc++] = y2;
915 xc[nc] =
x1+(yclipt-y1)*slope; yc[nc++] = yclipt;
916 xc[nc] =
x2; yc[nc++] = y2;
925 x1 = xc[nc-1]; y1 = yc[nc-1];
927 for (i=0; i<nc; i++) {
928 x2 = xc[i]; y2 = yc[i];
932 slope = (y2-y1)/(
x2-
x1);
936 xc2[nc2] = xclipr; yc2[nc2++] = slope*(xclipr-
x1)+y1;
938 xc2[nc2] =
x2; yc2[nc2++] = y2;
942 xc2[nc2] = xclipr; yc2[nc2++] = slope*(xclipr-
x1)+y1;
943 xc2[nc2] =
x2; yc2[nc2++] = y2;
950 x1 = xc2[nc2-1]; y1 = yc2[nc2-1];
952 for (i=0; i<nc2; i++) {
953 x2 = xc2[i]; y2 = yc2[i];
957 slope = (
x2-
x1)/(y2-y1);
961 xc[nc] =
x1+(yclipb-y1)*slope; yc[nc++] = yclipb;
963 xc[nc] =
x2; yc[nc++] = y2;
967 xc[nc] =
x1+(yclipb-y1)*slope; yc[nc++] = yclipb;
968 xc[nc] =
x2; yc[nc++] = y2;
1010 if (!
gPad->IsBatch())
1015 if (!
gROOT->GetListOfCanvases())
return;
1017 gROOT->GetListOfCanvases()->Remove(
this);
1038 if (
gROOT->GetSelectedPad() ==
this)
gROOT->SetSelectedPad(
nullptr);
1063 while ((obj = next())) {
1065 ((
TPad*)obj)->CopyPixmap();
1066 ((
TPad*)obj)->CopyPixmaps();
1092 Int_t pxl, pyl, pxt, pyt;
1097 if (px1 < px2) {pxl = px1; pxt = px2;}
1098 else {pxl = px2; pxt = px1;}
1099 if (py1 < py2) {pyl = py1; pyt = py2;}
1100 else {pyl = py2; pyt = py1;}
1104 if ( (px > pxl && px < pxt) && (py > pyl && py < pyt) ) {
1111 if (py < pyl) dxl += pyl - py;
1112 if (py > pyt) dxl += py - pyt;
1114 if (py < pyl) dxt += pyl - py;
1115 if (py > pyt) dxt += py - pyt;
1117 if (px < pxl) dyl += pxl - px;
1118 if (px > pxt) dyl += px - pxt;
1120 if (px < pxl) dyt += pxl - px;
1121 if (px > pxt) dyt += px - pxt;
1123 Int_t distance = dxl;
1124 if (dxt < distance) distance = dxt;
1125 if (dyl < distance) distance = dyl;
1126 if (dyt < distance) distance = dyt;
1172 arr[1] =
this; arr[2] = (
void*)&nx;arr[3] = (
void*)& ny;
1173 arr[4] = (
void*)&xmargin; arr[5] = (
void *)& ymargin; arr[6] = (
void *)&color;
1174 if ((*
gThreadXAR)(
"PDCD", 7, arr, 0))
return;
1179 if (nx <= 0) nx = 1;
1180 if (ny <= 0) ny = 1;
1187 char *
name =
new char [nchname];
1188 char *title =
new char [nchtitle];
1191 if (xmargin > 0 && ymargin > 0) {
1195 for (iy=0;iy<ny;iy++) {
1196 y2 = 1 - iy*dy - ymargin;
1197 y1 = y2 - dy + 2*ymargin;
1199 if (y1 > y2)
continue;
1200 for (ix=0;ix<nx;ix++) {
1201 x1 = ix*dx + xmargin;
1202 x2 =
x1 +dx -2*xmargin;
1203 if (
x1 >
x2)
continue;
1228 for (
Int_t i=0;i<nx;i++) {
1232 if (i == nx-1)
x2 = 1-xr;
1233 for (
Int_t j=0;j<ny;j++) {
1234 number = j*nx + i +1;
1237 if (j == 0) y2 = 1-yt;
1238 if (j == ny-1) y1 = 0;
1257 if (padsav) padsav->
cd();
1278 Divide( w,
h, xmargin, ymargin, color);
1288 gROOT->MakeDefCanvas();
1326 Int_t nd,nf,nc,nkd,nkf,i,j;
1339 Range(0,0,xpad,ypad);
1344 clevel[nlevel] = obj;
1353 if (nlevel >= maxlev-1)
break;
1357 Int_t ilevel, nelem;
1358 for (ilevel=nlevel;ilevel>=0;ilevel--) {
1359 cl = clevel[ilevel];
1361 if (nelem > maxelem) maxelem = nelem;
1362 nc = (nelem/50) + 1;
1372 if (dx < 1.3) dx = 1.3;
1373 tsizcm = tsizcm - 0.03*
Double_t(ncdraw-5);
1374 if (tsizcm < 0.27) tsizcm = 0.27;
1379 for (ilevel=nlevel;ilevel>=0;ilevel--) {
1380 cl = clevel[ilevel];
1382 if (nelem > maxelem) maxelem = nelem;
1383 nc = (nelem/50) + 1;
1385 if (ilevel < nlevel)
x1 =
x2 + 0.5;
1416 if (
box)
box->SetFillColor(17);
1429 if (i >= nkd) { i = 1;
y = y1 - 0.5*dy;
x += 1/
Double_t(nc); }
1430 else { i++;
y -= dy; }
1434 Int_t dim =
d->GetArrayDim();
1438 while (indx < dim ){
1439 ldname = strlen(dname);
1440 snprintf(&dname[ldname],256-ldname,
"[%d]",
d->GetMaxIndex(indx));
1461 while ((
m = (
TMethod *) nextm())) {
1463 !strcmp(
m->GetName(),
"Dictionary" ) ||
1464 !strcmp(
m->GetName(),
"Class_Version" ) ||
1465 !strcmp(
m->GetName(),
"DeclFileName" ) ||
1466 !strcmp(
m->GetName(),
"DeclFileLine" ) ||
1467 !strcmp(
m->GetName(),
"ImplFileName" ) ||
1468 !strcmp(
m->GetName(),
"ImplFileLine" )
1471 if (fcount > nf)
break;
1472 if (i >= nkf) { i = 1;
y = ysep - 0.5*dy;
x += 1/
Double_t(nc); }
1473 else { i++;
y -= dy; }
1478 for (j=ilevel-1;j>=0;j--) {
1479 if (cl == clevel[ilevel]) {
1480 if (clevel[j]->GetMethodAny((
char*)
m->GetName())) {
1527 Int_t pxmin,pxmax,pymin,pymax,pxold,pyold,px,py;
1539 pxmax = canvas->
GetWw();
1541 pymax = cpad->
GetWh();
1545 if(pxold)
gVirtualX->DrawLine(pxold,pymin,pxold,pymax);
1546 if(pyold)
gVirtualX->DrawLine(pxmin,pyold,pxmax,pyold);
1593 if (
this != padsav) {
1594 Warning(
"DrawFrame",
"Must be called for the current pad only");
1601 if (hframe)
delete hframe;
1611 for (
Int_t i=1;i<=nbins;i++) {
1614 hframe =
new TH1F(
"hframe",title,nbins,xbins);
1627 if (padsav) padsav->
cd();
1643 gPad->SetFillColor(0);
1657 for (i=0;i<10;i++) {
1664 box->SetFillStyle(1001);
1665 box->SetFillColor(color);
1666 box->DrawBox(xlow, ylow, xup, yup);
1667 box->SetFillStyle(0);
1668 box->SetLineColor(1);
1669 box->DrawBox(xlow, ylow, xup, yup);
1699 const Int_t kMaxDiff = 5;
1700 const Int_t kMinSize = 20;
1701 static Int_t pxorg, pyorg;
1702 static Int_t px1, px2, py1, py2, pxl, pyl, pxt, pyt, pxold, pyold;
1703 static Int_t px1p, px2p, py1p, py2p, pxlp, pylp, pxtp, pytp;
1704 static Bool_t pA, pB, pC, pD, pTop, pL, pR, pBot, pINSIDE;
1727 pA = pB = pC = pD = pTop = pL = pR = pBot = pINSIDE =
kFALSE;
1771 if (newcode)
return;
1838 pA = pB = pC = pD = pTop = pL = pR = pBot = pINSIDE =
kFALSE;
1842 pxold = pxl; pyold = pyl; pA =
kTRUE;
1847 pxold = pxt; pyold = pyl; pB =
kTRUE;
1852 pxold = pxt; pyold = pyt; pC =
kTRUE;
1857 pxold = pxl; pyold = pyt; pD =
kTRUE;
1861 if ((px > pxl+kMaxDiff && px < pxt-kMaxDiff) &&
1863 pxold = pxl; pyold = pyl; pTop =
kTRUE;
1867 if ((px > pxl+kMaxDiff && px < pxt-kMaxDiff) &&
1869 pxold = pxt; pyold = pyt; pBot =
kTRUE;
1873 if ((py > pyl+kMaxDiff && py < pyt-kMaxDiff) &&
1875 pxold = pxl; pyold = pyl; pL =
kTRUE;
1879 if ((py > pyl+kMaxDiff && py < pyt-kMaxDiff) &&
1881 pxold = pxt; pyold = pyt; pR =
kTRUE;
1885 if ((px > pxl+kMaxDiff && px < pxt-kMaxDiff) &&
1886 (py > pyl+kMaxDiff && py < pyt-kMaxDiff)) {
1887 pxold = px; pyold = py; pINSIDE =
kTRUE;
1895 if (pA || pB || pC || pD || pTop || pL || pR || pBot)
1898 if (!pA && !pB && !pC && !pD && !pTop && !pL && !pR && !pBot && !pINSIDE)
1911 if (px > pxt-kMinSize) { px = pxt-kMinSize; wx = px; }
1912 if (py > pyt-kMinSize) { py = pyt-kMinSize; wy = py; }
1913 if (px < pxlp) { px = pxlp; wx = px; }
1914 if (py < pylp) { py = pylp; wy = py; }
1932 if (px < pxl+kMinSize) { px = pxl+kMinSize; wx = px; }
1933 if (py > pyt-kMinSize) { py = pyt-kMinSize; wy = py; }
1934 if (px > pxtp) { px = pxtp; wx = px; }
1935 if (py < pylp) { py = pylp; wy = py; }
1953 if (px < pxl+kMinSize) { px = pxl+kMinSize; wx = px; }
1954 if (py < pyl+kMinSize) { py = pyl+kMinSize; wy = py; }
1955 if (px > pxtp) { px = pxtp; wx = px; }
1956 if (py > pytp) { py = pytp; wy = py; }
1974 if (px > pxt-kMinSize) { px = pxt-kMinSize; wx = px; }
1975 if (py < pyl+kMinSize) { py = pyl+kMinSize; wy = py; }
1976 if (px < pxlp) { px = pxlp; wx = px; }
1977 if (py > pytp) { py = pytp; wy = py; }
1996 if (py2 > py1-kMinSize) { py2 = py1-kMinSize; wy = py2; }
1997 if (py2 < py2p) { py2 = py2p; wy = py2; }
2012 if (py1 < py2+kMinSize) { py1 = py2+kMinSize; wy = py1; }
2013 if (py1 > py1p) { py1 = py1p; wy = py1; }
2028 if (px1 > px2-kMinSize) { px1 = px2-kMinSize; wx = px1; }
2029 if (px1 < px1p) { px1 = px1p; wx = px1; }
2045 if (px2 < px1+kMinSize) { px2 = px1+kMinSize; wx = px2; }
2046 if (px2 > px2p) { px2 = px2p; wx = px2; }
2061 Int_t dx = px - pxold;
2062 Int_t dy = py - pyold;
2063 px1 += dx; py1 += dy; px2 += dx; py2 += dy;
2064 if (px1 < px1p) { dx = px1p - px1; px1 += dx; px2 += dx; wx = px+dx; }
2065 if (px2 > px2p) { dx = px2 - px2p; px1 -= dx; px2 -= dx; wx = px-dx; }
2066 if (py1 > py1p) { dy = py1 - py1p; py1 -= dy; py2 -= dy; wy = py-dy; }
2067 if (py2 < py2p) { dy = py2p - py2; py1 += dy; py2 += dy; wy = py+dy; }
2081 x1 =
x2 = y1 = y2 = 0;
2108 if (pTop || pBot || pL || pR || pINSIDE) {
2115 if (px != pxorg || py != pyorg) {
2139 if (pINSIDE)
gPad->ShowGuidelines(
this, event);
2140 if (pTop)
gPad->ShowGuidelines(
this, event,
't',
true);
2141 if (pBot)
gPad->ShowGuidelines(
this, event,
'b',
true);
2142 if (pL)
gPad->ShowGuidelines(
this, event,
'l',
true);
2143 if (pR)
gPad->ShowGuidelines(
this, event,
'r',
true);
2144 if (pA)
gPad->ShowGuidelines(
this, event,
'1',
true);
2145 if (pB)
gPad->ShowGuidelines(
this, event,
'2',
true);
2146 if (pC)
gPad->ShowGuidelines(
this, event,
'3',
true);
2147 if (pD)
gPad->ShowGuidelines(
this, event,
'4',
true);
2156 if (
gROOT->IsEscaped()) {
2161 if (opaque||ropaque) {
2164 x1 =
x2 = y1 = y2 = 0;
2190 if (pTop || pBot || pL || pR || pINSIDE) {
2197 if (pA || pB || pC || pD || pTop || pL || pR || pBot)
2203 if (px != pxorg || py != pyorg) {
2240 event =
gVirtualX->RequestLocator(1, 1, px, py);
2279 static Int_t axisNumber;
2281 static Int_t px1old, py1old, px2old, py2old;
2285 static TBox *zoombox;
2286 Double_t zbx1=0,zbx2=0,zby1=0,zby2=0;
2293 if (strstr(opt,
"cont4")) {
2302 if (!strcmp(axis->
GetName(),
"xaxis")) {
2306 if (!strcmp(axis->
GetName(),
"yaxis")) {
2310 if (!strcmp(axis->
GetName(),
"zaxis")) {
2316 if (axisNumber == 1) {
2322 }
else if (axisNumber == 2) {
2338 if (axisNumber == 1) {
2343 }
else if (axisNumber == 2) {
2357 zoombox =
new TBox(zbx1, zby1, zbx2, zby2);
2368 if (!opaque)
gVirtualX->SetLineColor(-1);
2376 if (axisNumber == 1) {
2386 if (axisNumber == 1) {
2391 }
else if (axisNumber == 2) {
2406 zoombox->
SetX1(zbx1);
2407 zoombox->
SetY1(zby1);
2408 zoombox->
SetX2(zbx2);
2409 zoombox->
SetY2(zby2);
2442 if (
gROOT->IsEscaped()) {
2444 if (opaque && zoombox) {
2453 if (ratio1 > ratio2) {
2458 if (ratio2 - ratio1 > 0.05) {
2460 if (axisNumber == 3 && hobj && hobj->
GetDimension() != 3) {
2469 Float_t newmin = zmin + (zmax-zmin)*ratio1;
2470 Float_t newmax = zmin + (zmax-zmin)*ratio2;
2494 if (axisNumber == 1) {
2502 }
else if (axisNumber == 2) {
2530 xmin = ((
xmin-xmi)/(xma-xmi))*(up-low)+low;
2531 xmax = ((
xmax-xmi)/(xma-xmi))*(up-low)+low;
2534 if (!strcmp(axis->
GetName(),
"xaxis")) axisNumber = 1;
2535 if (!strcmp(axis->
GetName(),
"yaxis")) axisNumber = 2;
2536 if (ratio2 - ratio1 > 0.05) {
2543 if (axisNumber == 1) axis->
SetRange(bin1,bin2);
2544 if (axisNumber == 2 && hobj1) {
2561 while ((obj= next())) {
2564 if (hobj == hobj1)
continue;
2567 if (axisNumber == 1) {
2569 }
else if (axisNumber == 2) {
2612 if (found)
return found;
2615 while ((cur = next())) {
2618 if (found)
return found;
2633 if (found)
return found;
2636 while ((cur = next())) {
2639 if (found)
return found;
2714 if (
fCanvas ==
this)
return nullptr;
2723 if (
fCanvas ==
this)
return nullptr;
2732 if (
fCanvas ==
this)
return nullptr;
2875 while ((obj=next())) {
2879 if (found)
return found;
2889 if (!subpadnumber) {
2896 while ((obj = next())) {
2899 if (pad->
GetNumber() == subpadnumber)
return pad;
2946 if (color <= 0)
return;
2964 gROOT->SetSelectedPad(
this);
2981 <<
" Name= "<<
GetName()<<
" Title= "<<
GetTitle()<<
" Option="<<option<<std::endl;
2993 if (opt.
Index(
"pfc")>=0 || opt.
Index(
"plc")>=0 || opt.
Index(
"pmc")>=0) {
3011 if (i>=ncolors) i = ncolors-1;
3023 Int_t const cellSize = 10;
3042 for (
int i = 0; i<
fCGnx; i++) {
3043 for (
int j = 0; j<
fCGny; j++) {
3054 for (
int i=0; i<np; i++) {
3063 TIter nextgraph(grlist);
3069 TIter nexthist(hlist);
3071 while ((oh = nexthist())) {
3085 for (
int r=i;
r<w+i;
r++) {
3086 for (
int c=j;
c<
h+j;
c++) {
3113 for (
Int_t i = 0; i<nxmax; i++) {
3114 for (
Int_t j = 0; j<=nymax; j++) {
3127#define NotFree(i, j) fCollideGrid[TMath::Max(TMath::Min(i+j*fCGnx,fCGnx*fCGny),0)] = kFALSE;
3154 yt = y1; y1 = y2; y2 = yt;
3156 for (i=
x1+1; i<
x2; i++) {
3163 yt = y1; y1 = y2; y2 = yt;
3166 for (j=y1+1; j<y2; j++) {
3186 for (
int i =
x1; i<=
x2; i++) {
3187 for (
int j = y1; j<=y2; j++)
NotFree(i, j);
3205 for (i =
x1; i<=
x2; i++) {
3210 for (i = y1; i<=y2; i++) {
3228 for (
Int_t i=1; i<
n; i++) {
3229 g->GetPoint(i-1,
x1,y1);
3230 g->GetPoint(i ,
x2,y2);
3244 (
int)((y1-
fY1)/ys), (
int)((y2-
fY1)/ys));
3257 if (
name.Index(
"hframe") >= 0)
return;
3262 bool haserrors =
false;
3263 TString drawOption =
h->GetDrawOption();
3267 if (drawOption.
Index(
"hist") < 0) {
3268 if (drawOption.
Index(
"e") >= 0) haserrors =
true;
3271 Int_t nx =
h->GetNbinsX();
3276 for (i = 1; i<nx; i++) {
3278 x1l =
h->GetBinCenter(i);
3284 y1l =
h->GetBinContent(i)-
h->GetBinErrorLow(i);
3290 y2l =
h->GetBinContent(i)+
h->GetBinErrorUp(i);
3296 for (j=y1; j<=y2; j++) {
3300 x1l =
h->GetBinLowEdge(i);
3306 y1l =
h->GetBinContent(i);
3313 x1l =
h->GetBinLowEdge(i)+
h->GetBinWidth(i);
3334 box->SetFillColorAlpha(
kRed,0.5);
3345 for (
int i = 0; i<
fCGnx; i++) {
3348 for (
int j = 0; j<
fCGny; j++) {
3349 if (
gPad->GetLogx()) {
3356 if (
gPad->GetLogy()) {
3365 box->DrawBox(X1L, Y1L, X2L, Y2L);
3367 box->SetFillColorAlpha(
kRed,t);
3368 box->DrawBox(X1L, Y1L, X2L, Y2L);
3372 if (t==0.15) t = 0.1;
3466 began3DScene =
kTRUE;
3473 if (padsav) padsav->
cd();
3502 if (color < 0) color = -color;
3509 if (bordersize <= 0) bordersize = 2;
3530 if (px1 < px2) {xl =
fX1; xt =
fX2; }
3531 else {xl =
fX2; xt =
fX1;}
3532 if (py1 > py2) {yl =
fY1; yt =
fY2;}
3533 else {yl =
fY2; yt =
fY1;}
3535 Double_t frameXs[7] = {}, frameYs[7] = {};
3539 frameXs[0] = xl; frameYs[0] = yl;
3540 frameXs[1] = xl + realBsX; frameYs[1] = yl + realBsY;
3541 frameXs[2] = frameXs[1]; frameYs[2] = yt - realBsY;
3542 frameXs[3] = xt - realBsX; frameYs[3] = frameYs[2];
3543 frameXs[4] = xt; frameYs[4] = yt;
3544 frameXs[5] = xl; frameYs[5] = yt;
3545 frameXs[6] = xl; frameYs[6] = yl;
3552 frameXs[0] = xl; frameYs[0] = yl;
3553 frameXs[1] = xl + realBsX; frameYs[1] = yl + realBsY;
3554 frameXs[2] = xt - realBsX; frameYs[2] = frameYs[1];
3555 frameXs[3] = frameXs[2]; frameYs[3] = yt - realBsY;
3556 frameXs[4] = xt; frameYs[4] = yt;
3557 frameXs[5] = xt; frameYs[5] = yl;
3558 frameXs[6] = xl; frameYs[6] = yl;
3691 ((
TPad*)obj)->PaintModified();
3703 began3DScene =
kTRUE;
3711 if (padsav) padsav->
cd();
3732 if (!
gPad->IsBatch()) {
3735 if (option[0] ==
's') {
3748 xb[0] =
x1; xb[1] =
x1; xb[2] =
x2; xb[3] =
x2;
3749 yb[0] = y1; yb[1] = y2; yb[2] = y2; yb[3] = y1;
3798 if (option[0] ==
's') {
3801 if (style0 >= 3100 && style0 < 4000) {
3803 xb[0] =
x1; xb[1] =
x1; xb[2] =
x2; xb[3] =
x2;
3804 yb[0] = y1; yb[1] = y2; yb[2] = y2; yb[3] = y1;
3810 if (option[0] ==
'l') {
3829 while ((obj = next())) {
3831 if (obj == stop)
break;
3832 ((
TPad*)obj)->CopyBackgroundPixmap(
x,
y);
3833 ((
TPad*)obj)->CopyBackgroundPixmaps((
TPad*)obj, stop,
x,
y);
3852 Warning(
"TPad::PaintFillArea",
"Float_t signature is obsolete. Use Double_t signature.");
3870 std::vector<Double_t>
x(nc, 0.);
3871 std::vector<Double_t>
y(nc, 0.);
3880 if (fillstyle >= 3100 && fillstyle < 4000) {
3885 if (!
gPad->IsBatch())
3902 for (
int i=0; i<
n; i++) {
3946 static Double_t ang1[10] = { 0., 10., 20., 30., 45.,5., 60., 70., 80., 89.99};
3947 static Double_t ang2[10] = {180.,170.,160.,150.,135.,5.,120.,110.,100., 89.99};
3952 Int_t iAng1 = fasi%10;
3960 if (!
gPad->IsBatch()) {
3973 if (!
gPad->IsBatch()) {
3985 if (ang1[iAng1] != 5.)
PaintHatches(dy, ang1[iAng1], nn, xx, yy);
3986 if (ang2[iAng2] != 5.)
PaintHatches(dy, ang2[iAng2], nn, xx, yy);
3989 if (!
gPad->IsBatch()) {
4013 const Int_t maxnbi = 100;
4014 Double_t xli[maxnbi], xlh[2], ylh[2], xt1, xt2, yt1, yt2;
4015 Double_t ll,
x,
y,
x1,
x2, y1, y2,
a,
b, xi, xip, xin, yi, yip;
4021 ratiox = 1./(rwxmax-rwxmin);
4022 ratioy = 1./(rwymax-rwymin);
4035 gPad->GetPadPar(x1p,y1p,x2p,y2p);
4044 for (i=1; i<=nn; i++) {
4045 x = wndc*ratiox*(xx[i-1]-rwxmin);
4046 y = hndc*ratioy*(yy[i-1]-rwymin);
4047 yrot = sina*
x+cosa*
y;
4053 for (ycur=
ymax; ycur>=
ymin; ycur=ycur-dy) {
4055 for (i=2; i<=nn+1; i++) {
4058 if (i == nn+1) i2=1;
4059 x1 = wndc*ratiox*(xx[i1-1]-rwxmin);
4060 y1 = hndc*ratioy*(yy[i1-1]-rwymin);
4061 x2 = wndc*ratiox*(xx[i2-1]-rwxmin);
4062 y2 = hndc*ratioy*(yy[i2-1]-rwymin);
4063 xt1 = cosa*
x1-sina*y1;
4064 yt1 = sina*
x1+cosa*y1;
4065 xt2 = cosa*
x2-sina*y2;
4066 yt2 = sina*
x2+cosa*y2;
4077 if ((yi <= ycur) && (ycur < yip)) {
4079 if (nbi >= maxnbi)
return;
4089 if (nbi >= maxnbi)
return;
4092 if (nbi >= maxnbi)
return;
4099 a = (yt1-yt2)/(xt1-xt2);
4100 b = (yt2*xt1-xt2*yt1)/(xt1-xt2);
4109 if ((xi <= xin) && (xin < xip) &&
4113 if (nbi >= maxnbi)
return;
4122 for (i=1; i<=
m; i++) {
4123 if (xli[i] < xli[i-1]) {
4131 if (
inv == 0)
goto L50;
4137 if (nbi%2 != 0)
continue;
4139 for (i=1; i<=nbi; i=i+2) {
4141 xlh[0] = cosb*xli[i-1]-sinb*ycur;
4142 ylh[0] = sinb*xli[i-1]+cosb*ycur;
4143 xlh[1] = cosb*xli[i] -sinb*ycur;
4144 ylh[1] = sinb*xli[i] +cosb*ycur;
4146 xlh[0] = (xlh[0]/wndc)*(rwxmax-rwxmin)+rwxmin;
4147 ylh[0] = (ylh[0]/hndc)*(rwymax-rwymin)+rwymin;
4148 xlh[1] = (xlh[1]/wndc)*(rwxmax-rwxmin)+rwxmin;
4149 ylh[1] = (ylh[1]/hndc)*(rwymax-rwymin)+rwymin;
4150 gPad->PaintLine(xlh[0], ylh[0], xlh[1], ylh[1]);
4161 x[0] =
x1;
x[1] =
x2;
y[0] = y1;
y[1] = y2;
4170 if (!
gPad->IsBatch())
4186 if (!
gPad->IsBatch())
4211 for (i=0;i<3;i++) temp[i] = p1[i];
4213 for (i=0;i<3;i++) temp[i] = p2[i];
4215 PaintLine(xpad[0],xpad[1],xpad[3],xpad[4]);
4229 for (i=0;i<3;i++) temp[i] = p1[i];
4231 for (i=0;i<3;i++) temp[i] = p2[i];
4233 PaintLine(xpad[0],xpad[1],xpad[3],xpad[4]);
4249 Int_t i, i1=-1,np=1;
4250 for (i=0; i<
n-1; i++) {
4262 if (iclip == 0 && i <
n-2)
continue;
4263 if (!
gPad->IsBatch())
4296 if (option && (option[0] ==
'C')) mustClip =
kFALSE;
4299 Int_t i, i1=-1, np=1, iclip=0;
4301 for (i=0; i <
n-1; i++) {
4315 if (iclip == 0 && i <
n-2)
continue;
4316 if (!
gPad->IsBatch())
4341 if (!
gPad->IsBatch())
4347 for (
Int_t i=0; i<
n; i++) {
4366 for (
Int_t i = 1; i <
n; i++)
4385 for (i=0; i<
n; i++) {
4389 if (i <
n-1)
continue;
4391 if (np == 0)
continue;
4392 if (!
gPad->IsBatch())
4416 for (i=0; i<
n; i++) {
4420 if (i <
n-1)
continue;
4422 if (np == 0)
continue;
4423 if (!
gPad->IsBatch())
4441 if (!
gPad->IsBatch())
4454 if (!
gPad->IsBatch())
4467 if (!
gPad->IsBatch())
4484 if (!
gPad->IsBatch())
4512 if (
gPad == 0)
return 0;
4519 if (
this !=
gPad->GetCanvas()) {
4528 TPad *picked =
this;
4532 pickobj = &dummyLink;
4561 pick = ((
TPad*)obj)->
Pick(px, py, pickobj);
4566 }
else if (!
gROOT->GetEditorMode()) {
4573 if (
dist == 0)
break;
4588 if (
fView && !gotPrim) {
4612 if (picked ==
this) {
4635 while ((obj = next()))
4669 ((
TPad*)
this)->SaveAs(filename);
4681 while ((obj = next())) {
4836 TString psname, fs1 = filenam;
4853 const char *opt_default =
"ps";
4855 TString opt = !option ? opt_default : option;
4877 if (strstr(opt,
"gif+")) {
4880 }
else if (strstr(opt,
"gif")) {
4883 }
else if (strstr(opt,
"png")) {
4886 }
else if (strstr(opt,
"jpg")) {
4889 }
else if (strstr(opt,
"tiff")) {
4892 }
else if (strstr(opt,
"xpm")) {
4895 }
else if (strstr(opt,
"bmp")) {
4902 if (!
gROOT->IsBatch() && image) {
4905 Color_t hc =
gPad->GetCanvas()->GetHighLightColor();
4906 gPad->GetCanvas()->SetHighLightColor(-1);
4912 Info(
"Print",
"GIF file %s has been created", psname.
Data());
4914 gPad->GetCanvas()->SetHighLightColor(hc);
4918 Color_t hc =
gPad->GetCanvas()->GetHighLightColor();
4919 gPad->GetCanvas()->SetHighLightColor(-1);
4926 Info(
"Print",
"file %s has been created", psname.
Data());
4928 gPad->GetCanvas()->SetHighLightColor(hc);
4930 Warning(
"Print",
"Unsupported image format %s", psname.
Data());
4936 if (strstr(opt,
"cxx")) {
4942 if (strstr(opt,
"root")) {
4948 if (strstr(opt,
"xml")) {
4955 if (strstr(opt,
"json")) {
4961 if (strstr(opt,
"svg")) {
4976 if ((
h =
gROOT->GetPluginManager()->FindHandler(
"TVirtualPS",
"svg"))) {
4977 if (
h->LoadPlugin() == -1)
5003 if (strstr(opt,
"tex")) {
5018 if ((
h =
gROOT->GetPluginManager()->FindHandler(
"TVirtualPS",
"tex"))) {
5019 if (
h->LoadPlugin() == -1)
5054 copen = psname.
EndsWith(
"(");
if (copen) psname[psname.
Length()-1] = 0;
5055 cclose = psname.
EndsWith(
")");
if (cclose) psname[psname.
Length()-1] = 0;
5056 copenb = psname.
EndsWith(
"[");
if (copenb) psname[psname.
Length()-1] = 0;
5057 ccloseb = psname.
EndsWith(
"]");
if (ccloseb) psname[psname.
Length()-1] = 0;
5061 if (copen || copenb) mustClose =
kFALSE;
5062 if (cclose || ccloseb) mustClose =
kTRUE;
5073 if (ratio < 1) pstype = 112;
5074 if (strstr(opt,
"Portrait")) pstype = 111;
5075 if (strstr(opt,
"Landscape")) pstype = 112;
5076 if (strstr(opt,
"eps")) pstype = 113;
5077 if (strstr(opt,
"Preview")) pstype = 113;
5085 if (strstr(opt,
"pdf") || strstr(opt,
"Title:") || strstr(opt,
"EmbedFonts")) {
5086 if ((
h =
gROOT->GetPluginManager()->FindHandler(
"TVirtualPS",
"pdf"))) {
5087 if (
h->LoadPlugin() == -1)
return;
5092 if ((
h =
gROOT->GetPluginManager()->FindHandler(
"TVirtualPS",
"image"))) {
5093 if (
h->LoadPlugin() == -1)
return;
5097 if ((
h =
gROOT->GetPluginManager()->FindHandler(
"TVirtualPS",
"ps"))) {
5098 if (
h->LoadPlugin() == -1)
return;
5106 if (titlePos !=
kNPOS) {
5113 if (!strstr(opt,
"pdf") || image) {
5130 if (!copen)
Info(
"Print",
"%s file %s has been created", opt.
Data(), psname.
Data());
5131 else Info(
"Print",
"%s file %s has been created using the current canvas", opt.
Data(), psname.
Data());
5140 if (titlePos !=
kNPOS) {
5147 if (cclose)
Info(
"Print",
"Current canvas added to %s file %s and file closed", opt.
Data(), psname.
Data());
5148 else Info(
"Print",
"%s file %s has been closed", opt.
Data(), psname.
Data());
5153 Info(
"Print",
"Current canvas added to %s file %s", opt.
Data(), psname.
Data());
5159 if (strstr(opt,
"EmbedFonts")) {
5160 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",
5175 if ((
x1 >=
x2) || (y1 >= y2)) {
5176 Error(
"Range",
"illegal world coordinates range: x1=%f, y1=%f, x2=%f, y2=%f",
x1,y1,
x2,y2);
5214 Error(
"RangeAxis",
"illegal axis coordinates range: xmin=%f, ymin=%f, xmax=%f, ymax=%f",
5283 TH1 *hobj =
nullptr;
5289 while ((obj = next())) {
5296 if (
mg) hobj =
mg->GetHistogram();
5301 if (
g) hobj =
g->GetHistogram();
5318 gPad->GetUxmax(),
gPad->GetUymax());
5320 b->SetLineStyle(
gPad->GetFrameLineStyle());
5321 b->SetLineWidth(
gPad->GetFrameLineWidth());
5322 b->SetLineColor(
gPad->GetFrameLineColor());
5326 if (padsav) padsav->
cd();
5456 Error(
"ResizePad",
"Cannot resize pad. No current pad available.");
5462 if (
this ==
gPad->GetCanvas()) {
5515 while ((obj = next())) {
5517 ((
TPad*)obj)->ResizePad(option);
5521 if (
gPad->IsBatch())
5539 Warning(
"ResizePad",
"Inf/NaN propagated to the pad. Check drawn objects.");
5540 if (w <= 0 || w > 10000) {
5541 Warning(
"ResizePad",
"%s width changed from %d to %d\n",
GetName(),w,10);
5544 if (h <= 0 || h > 10000) {
5545 Warning(
"ResizePad",
"%s height changed from %d to %d\n",
GetName(),
h,10);
5560 if (padsav ==
this) {
5595 Int_t lenfil = filename ? strlen(filename) : 0;
5598 else psname = filename;
5609 ((
TPad*)
this)->Print(psname,
"gif");
5661 const char *cname =
GetName();
5662 Int_t nch = strlen(cname);
5664 strlcpy(lcname,cname,10);
5665 for (
Int_t k=1;k<=nch;k++) {
if (lcname[nch-k] ==
' ') lcname[nch-k] = 0;}
5666 if (lcname[0] == 0) {
5667 if (
this ==
gPad->GetCanvas()) {strlcpy(lcname,
"c1",10); nch = 2;}
5668 else {strlcpy(lcname,
"pad",10); nch = 3;}
5674 if (
this !=
gPad->GetCanvas()) {
5675 out <<
" "<<std::endl;
5676 out <<
"// ------------>Primitives in pad: "<<
GetName()<<std::endl;
5678 out<<
" TPad *"<<cname<<
" = new TPad("<<quote<<
GetName()<<quote<<
", "<<quote<<
GetTitle()
5685 out<<
" "<<cname<<
"->Draw();"<<std::endl;
5686 out<<
" "<<cname<<
"->cd();"<<std::endl;
5688 out<<
" "<<cname<<
"->Range("<<
fX1<<
","<<
fY1<<
","<<
fX2<<
","<<
fY2<<
");"<<std::endl;
5693 static Int_t viewNumber = 0;
5694 out<<
" TView *view"<<++viewNumber<<
" = TView::CreateView(1);"<<std::endl;
5695 out<<
" view"<<viewNumber<<
"->SetRange("<<rmin[0]<<
","<<rmin[1]<<
","<<rmin[2]<<
","
5696 <<rmax[0]<<
","<<rmax[1]<<
","<<rmax[2]<<
");"<<std::endl;
5701 out<<
" "<<cname<<
"->SetFillColor(ci);" << std::endl;
5703 out<<
" "<<cname<<
"->SetFillColor("<<
GetFillColor()<<
");"<<std::endl;
5706 out<<
" "<<cname<<
"->SetFillStyle("<<
GetFillStyle()<<
");"<<std::endl;
5709 out<<
" "<<cname<<
"->SetBorderMode("<<
GetBorderMode()<<
");"<<std::endl;
5712 out<<
" "<<cname<<
"->SetBorderSize("<<
GetBorderSize()<<
");"<<std::endl;
5715 out<<
" "<<cname<<
"->SetLogx();"<<std::endl;
5718 out<<
" "<<cname<<
"->SetLogy();"<<std::endl;
5721 out<<
" "<<cname<<
"->SetLogz();"<<std::endl;
5724 out<<
" "<<cname<<
"->SetGridx();"<<std::endl;
5727 out<<
" "<<cname<<
"->SetGridy();"<<std::endl;
5730 out<<
" "<<cname<<
"->SetTickx("<<
GetTickx()<<
");"<<std::endl;
5733 out<<
" "<<cname<<
"->SetTicky("<<
GetTicky()<<
");"<<std::endl;
5736 out<<
" "<<cname<<
"->SetTheta("<<
GetTheta()<<
");"<<std::endl;
5739 out<<
" "<<cname<<
"->SetPhi("<<
GetPhi()<<
");"<<std::endl;
5742 out<<
" "<<cname<<
"->SetLeftMargin("<<
GetLeftMargin()<<
");"<<std::endl;
5745 out<<
" "<<cname<<
"->SetRightMargin("<<
GetRightMargin()<<
");"<<std::endl;
5748 out<<
" "<<cname<<
"->SetTopMargin("<<
GetTopMargin()<<
");"<<std::endl;
5751 out<<
" "<<cname<<
"->SetBottomMargin("<<
GetBottomMargin()<<
");"<<std::endl;
5757 out<<
" "<<cname<<
"->SetFrameFillColor(ci);" << std::endl;
5770 out<<
" "<<cname<<
"->SetFrameLineColor(ci);" << std::endl;
5790 out<<
" "<<cname<<
"->SetFrameFillColor(ci);" << std::endl;
5792 out<<
" "<<cname<<
"->SetFrameFillColor("<<frame->
GetFillColor()<<
");"<<std::endl;
5795 out<<
" "<<cname<<
"->SetFrameFillStyle("<<frame->
GetFillStyle()<<
");"<<std::endl;
5798 out<<
" "<<cname<<
"->SetFrameLineStyle("<<frame->
GetLineStyle()<<
");"<<std::endl;
5803 out<<
" "<<cname<<
"->SetFrameLineColor(ci);" << std::endl;
5805 out<<
" "<<cname<<
"->SetFrameLineColor("<<frame->
GetLineColor()<<
");"<<std::endl;
5808 out<<
" "<<cname<<
"->SetFrameLineWidth("<<frame->
GetLineWidth()<<
");"<<std::endl;
5811 out<<
" "<<cname<<
"->SetFrameBorderMode("<<frame->
GetBorderMode()<<
");"<<std::endl;
5814 out<<
" "<<cname<<
"->SetFrameBorderSize("<<frame->
GetBorderSize()<<
");"<<std::endl;
5822 while ((obj = next())) {
5824 if (!strcmp(obj->
GetName(),
"Graph")) ((
TGraph*)obj)->SetName(
Form(
"Graph%d",grnum++));
5827 out<<
" "<<cname<<
"->Modified();"<<std::endl;
5829 if (padsav) padsav->
cd();
5842 Error(
"SetAspectRatio",
"cannot fix aspect ratio, height of pad is 0");
5866 while ((obj = next())) {
5880 if (fstyle == 0) fstyle = 4000;
5975 SetPad(xlow, ylow, xup, yup);
5983 if (!view)
delete fView;
6056 x1 =
x2 = y1 = y2 = 0;
6058 if (aBBox.
fX<bBBox.
fX) {
6074 else if (mode ==
'y') {
6075 if (aBBox.
fY<bBBox.
fY) {
6093 A->SetFillColor(lineColor);
6095 A->SetLineColor(lineColor);
6113 : fa(0), fb(0), fdist(0), fdir(
' ')
6117 : fa(
a), fb(
b), fdist(
dist), fdir(direction)
6143 std::vector<dField> curDist;
6144 std::vector<dField> otherDist;
6154 Int_t dSizeArrow = 12;
6156 movedX = movedY =
false;
6159 if (mode !=
'i') resize =
true;
6166 static TPad * tmpGuideLinePad;
6169 if (tmpGuideLinePad) {
6170 if (
object == tmpGuideLinePad) {
6171 tmpGuideLinePad->
Delete();
6172 tmpGuideLinePad = 0;
6175 tmpGuideLinePad->
Delete();
6176 tmpGuideLinePad = 0;
6180 prims =
gPad->GetListOfPrimitives();
6187 if (!tmpGuideLinePad){
6188 tmpGuideLinePad =
new TPad(
"tmpGuideLinePad",
"tmpGuideLinePad", 0, 0, 1, 1);
6194 tmpGuideLinePad->
Draw();
6195 tmpGuideLinePad->
cd();
6198 if (cling && !
log) threshold = 7;
6211 MX =
gPad->GetX1() + 0.5 * (
gPad->GetX2()-
gPad->GetX1());
6212 MY =
gPad->GetY1() + 0.5 * (
gPad->GetY2()-
gPad->GetY1());
6213 pMX =
gPad->XtoPixel(MX);
6214 pMY =
gPad->YtoPixel(MY);
6217 if (cling && (!resize)) {
6225 L->SetLineColor(lineColor);
6229 if (cling && (!resize)) {
6237 L->SetLineColor(lineColor);
6241 for (
UInt_t i = 0; i<
n; i++) {
6247 if (cling && (!resize)) {
6254 L->SetLineColor(lineColor);
6259 if (cling && (!resize)) {
6267 L->SetLineColor(lineColor);
6274 for (
UInt_t i = 0; i<
n; i++) {
6277 aBBox =
a->GetBBox();
6278 for (
UInt_t j = i+1; j<
n; j++) {
6281 bBBox =
b->GetBBox();
6286 dField abDist = dField();
6289 if ((
b != cur)&&(
a != cur)) otherDist.push_back(abDist);
6290 else curDist.push_back(abDist);
6294 dField abDist = dField();
6297 if ((
b != cur)&&(
a != cur)) otherDist.push_back(abDist);
6298 else curDist.push_back(abDist);
6306 for (
UInt_t i = 0; i<curDist.size(); i++) {
6307 for (
UInt_t j = 0; j<otherDist.size(); j++) {
6308 if ((curDist[i].fdir == otherDist[j].fdir)&&(otherDist[j].fdir==
'x')&&(
TMath::Abs(curDist[i].fdist-otherDist[j].fdist)<threshold)) {
6309 if (cling && (!movedX) && (!resize)) {
6315 DrawDist(curDist[i].fa->GetBBox(), curDist[i].fb->GetBBox(),
'x');
6316 DrawDist(otherDist[j].fa->GetBBox(), otherDist[j].fb->GetBBox(),
'x');
6318 if ((curDist[i].fdir == otherDist[j].fdir)&&(otherDist[j].fdir==
'y')&&(
TMath::Abs(curDist[i].fdist-otherDist[j].fdist)<threshold)) {
6319 if (cling && (!movedY) && (!resize)) {
6325 DrawDist(curDist[i].fa->GetBBox(), curDist[i].fb->GetBBox(),
'y');
6326 DrawDist(otherDist[j].fa->GetBBox(), otherDist[j].fb->GetBBox(),
'y');
6329 for (
UInt_t j = i; j<curDist.size(); j++) {
6331 if ((curDist[i].fdir == curDist[j].fdir)&&(curDist[j].fdir==
'x')&&(
TMath::Abs(curDist[i].fdist-curDist[j].fdist)<threshold)) {
6332 if (cling && (!movedX) && (!resize)) {
6337 DrawDist(curDist[i].fa->GetBBox(), curDist[i].fb->GetBBox(),
'x');
6338 DrawDist(curDist[j].fa->GetBBox(), curDist[j].fb->GetBBox(),
'x');
6341 if ((curDist[i].fdir == curDist[j].fdir)&&(curDist[j].fdir==
'y')&&(
TMath::Abs(curDist[i].fdist-curDist[j].fdist)<threshold)) {
6342 if (cling && (!movedY) && (!resize)) {
6347 DrawDist(curDist[i].fa->GetBBox(), curDist[i].fb->GetBBox(),
'y');
6348 DrawDist(curDist[j].fa->GetBBox(), curDist[j].fb->GetBBox(),
'y');
6355 for (
UInt_t i = 0; i<
n; i++) {
6357 if (
a && (cur !=
a)) {
6358 aBBox =
a->GetBBox();
6370 gPad->PixeltoX(aBBox.
fX+aBBox.
fWidth),
gPad->PixeltoY(aBBox.
fY-dSizeArrow-
gPad->VtoPixel(0)), 0.01,
"<|>");
6372 A->SetLineColor(lineColor);
6373 A->SetFillColor(lineColor);
6379 A->SetLineColor(lineColor);
6380 A->SetFillColor(lineColor);
6394 A->SetLineColor(lineColor);
6395 A->SetFillColor(lineColor);
6401 A->SetLineColor(lineColor);
6402 A->SetFillColor(lineColor);
6412 if (tmpGuideLinePad) {
6415 tmpGuideLinePad->
Delete();
6416 tmpGuideLinePad = 0;
6502 Int_t nch, nobjects;
6505 if (
b.IsReading()) {
6522 while ((obj = next())) {
6541 TObject::Streamer(
b);
6542 TAttLine::Streamer(
b);
6543 TAttFill::Streamer(
b);
6544 b >> single;
fX1 = single;
6545 b >> single;
fY1 = single;
6546 b >> single;
fX2 = single;
6547 b >> single;
fY2 = single;
6550 TAttPad::Streamer(
b);
6552 TVirtualPad::Streamer(
b);
6553 TAttPad::Streamer(
b);
6554 b >> single;
fX1 = single;
6555 b >> single;
fY1 = single;
6556 b >> single;
fX2 = single;
6557 b >> single;
fY2 = single;
6584 b >> single;
fWNDC = single;
6585 b >> single;
fHNDC = single;
6595 TVirtualPad::Streamer(
b);
6596 TAttPad::Streamer(
b);
6655 char drawoption[64];
6656 for (
Int_t i = 0; i < nobjects; i++) {
6659 b.ReadFastArray(drawoption,nch);
6682 b >> single;
fPhi = single;
6697 b.CheckByteCount(R__s, R__c, TPad::IsA());
6746 while ((obj = next())) {
6830 if (!
gPad)
return 0;
6832 if (strlen(emode))
gROOT->SetEditorMode(emode);
6833 if (
gROOT->GetEditorMode() == 0 && strlen(pname) > 2)
gROOT->SetEditorMode(&pname[1]);
6837 TObject *oldlast =
gPad->GetListOfPrimitives() ?
gPad->GetListOfPrimitives()->Last() :
nullptr;
6840 Bool_t hasname = strlen(pname) > 0;
6841 if (!pname[0] && !emode[0]) testlast =
kTRUE;
6842 if (testlast)
gROOT->SetEditorMode();
6844 if (
gROOT->GetEditorMode() == 0) {
6847 if (obj)
return obj;
6850 if (!
gPad->GetListOfPrimitives())
return nullptr;
6851 obj =
gPad->GetListOfPrimitives()->Last();
6852 if (obj != oldlast)
return obj;
6873 if (
gPad->IsBatch())
return 0;
6874 return (
TObject*)
gROOT->ProcessLineFast(
Form(
"new TGToolTip((TBox*)0x%lx,\"%s\",%d)",
6885 gROOT->ProcessLineFast(
Form(
"delete (TGToolTip*)0x%lx", (
Long_t)tip));
6896 gROOT->ProcessLineFast(
Form(
"((TGToolTip*)0x%lx)->Reset((TPad*)0x%lx)",
6907 gROOT->ProcessLineFast(
Form(
"((TGToolTip*)0x%lx)->Hide()",(
Long_t)tip));
6915 ::Info(
"TPad::x3d()",
"This function is deprecated. Use %s->GetViewer3D(\"x3d\") instead",this->
GetName());
6918 if (!type || !
type[0]) {
6963 if (!strstr(
type,
"pad")) {
6967 Warning(
"TPad::CreateViewer3D",
"Cannot create 3D viewer of type: %s",
type);
6973 if (strstr(
type,
"gl") && !strstr(
type,
"ogl"))
6976 createdExternal =
kTRUE;
6992 if (createdExternal) {
7029 Emit(
"RecordPave(const TObject*)", (
Long_t)obj);
7037 Emit(
"RecordLatex(const TObject*)", (
Long_t)obj);
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.
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 from bin first to last.
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).
Bool_t IsRetained() const
Is pad retained ?
UInt_t GetWindowHeight() const
TObject * GetClickSelected() const
TVirtualPad * GetClickSelectedPad() const
UInt_t GetWh() const
Get Wh.
void SetClickSelectedPad(TPad *pad)
void SetCanvasSize(UInt_t ww, UInt_t wh)
Set Width and Height of canvas to ww and wh respectively.
void SetSelectedPad(TPad *pad)
Bool_t OpaqueResizing() const
Is pad resizing in opaque mode ?
virtual void SetDoubleBuffer(Int_t mode=1)
Set Double Buffer On/Off.
static Bool_t SupportAlpha()
Static function returning "true" if transparency is supported.
TVirtualPadPainter * GetCanvasPainter()
Access and (probably) creation of pad painter.
Int_t GetEventY() const
Get Y event.
Color_t GetHighLightColor() const
Get highlight color.
Bool_t IsGrayscale()
Check whether this canvas is to be drawn in grayscale mode.
void SetSelected(TObject *obj)
Set selected canvas.
void SaveSource(const char *filename="", Option_t *option="")
Save primitives in this canvas as a C++ macro file.
Int_t GetEvent() const
Get Event.
virtual void HandleInput(EEventType button, Int_t x, Int_t y)
Handle Input Events.
Int_t GetEventX() const
Get X event.
Bool_t IsBatch() const
Is pad in batch mode ?
TCanvasImp * GetCanvasImp() const
Get canvas implementation pointer if any.
Int_t GetCanvasID() const
Get canvas identifier.
Bool_t OpaqueMoving() const
Is pad moving in opaque mode ?
virtual void Update()
Update canvas pad buffers.
TVirtualPad * GetSelectedPad() const
virtual void SetCursor(ECursor cursor)
Set cursor.
TVirtualPad * GetPadSave() const
UInt_t GetWindowWidth() const
void FeedbackMode(Bool_t set)
Turn rubberband feedback mode on or off.
UInt_t GetWw() const
Get Ww.
void SetClickSelected(TObject *obj)
TObject * GetSelected() const
Get selected.
virtual void Cleared(TVirtualPad *pad)
Emit pad Cleared signal.
void SetBatch(Bool_t batch=kTRUE)
Toggle batch mode.
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)}
virtual void SetDirectory(TDirectory *dir)
By default when an 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.
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.
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
@ kNotDeleted
object has not been deleted
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 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.
Bool_t PlaceBox(TObject *o, Double_t w, Double_t h, Double_t &xl, Double_t &yb)
Place a box in NDC space.
void HighLight(Color_t col=kRed, Bool_t set=kTRUE)
Highlight pad.
virtual void Divide(Int_t nx=1, Int_t ny=1, Float_t xmargin=0.01, Float_t ymargin=0.01, Int_t color=0)
Automatic pad generation by division.
void PaintLine3D(Float_t *p1, Float_t *p2)
Paint 3-D line in the CurrentPad.
virtual void Pop()
Pop pad to the top of the stack.
TVirtualPad * GetSelectedPad() const
Get selected pad.
virtual void CloseToolTip(TObject *tip)
Hide tool tip.
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.
void PaintPolyLineNDC(Int_t n, Double_t *x, Double_t *y, Option_t *option="")
Paint polyline in CurrentPad NDC coordinates.
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.
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.
virtual void DrawClassObject(const TObject *obj, Option_t *option="")
Draw class inheritance tree of the class to which obj belongs.
virtual Bool_t IsBatch() const
Is pad in batch mode ?
void PaintPadFrame(Double_t xmin, Double_t ymin, Double_t xmax, Double_t ymax)
Paint histogram/graph frame.
virtual void SetBBoxX2(const Int_t x)
Set right hand side of BoundingBox to a value (resize in x direction on right)
void PaintFillAreaNDC(Int_t n, Double_t *x, Double_t *y, Option_t *option="")
Paint fill area in CurrentPad NDC coordinates.
Double_t fWNDC
Width of pad along X in Normalized Coordinates (NDC)
virtual void SetLogy(Int_t value=1)
Set Lin/Log scale for Y.
void PaintBorder(Color_t color, Bool_t tops)
Paint the pad border.
virtual Bool_t OpaqueResizing() const
Is pad resizing in opaque mode ?
Double_t YtoPad(Double_t y) const
Convert y from Y to pad.
void FillCollideGrid(TObject *o)
Initialise the grid used to find empty space when adding a box (Legend) in a pad.
void PaintPolyLine(Int_t n, Float_t *x, Float_t *y, Option_t *option="")
Paint polyline in CurrentPad World coordinates.
Double_t fPixeltoYk
Conversion coefficient for pixel to Y World.
Double_t PadtoY(Double_t y) const
Convert y from pad to Y.
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...
virtual void RedrawAxis(Option_t *option="")
Redraw the frame axis.
static Int_t fgMaxPickDistance
Maximum Pick Distance.
virtual void Close(Option_t *option="")
Delete all primitives in pad and pad itself.
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.
virtual void DeleteExec(const char *name)
Remove TExec name from the list of Execs.
void PaintLineNDC(Double_t u1, Double_t v1, Double_t u2, Double_t v2)
Paint line in normalized coordinates.
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
virtual TObject * GetSelected() const
Get selected.
void CopyBackgroundPixmaps(TPad *start, TPad *stop, Int_t x, Int_t y)
Copy pixmaps of pads laying below pad "stop" into pad "stop".
virtual void AddExec(const char *name, const char *command)
Add a new TExec object to the list of Execs.
Double_t GetYlowNDC() const
Double_t GetUymin() const
Returns the minimum y-coordinate value visible on the pad. If log axis the returned value is in decad...
virtual void ShowGuidelines(TObject *object, const Int_t event, const char mode='i', const bool cling=true)
Shows lines to indicate if a TAttBBox2D object is aligned to the center or to another object,...
virtual void GetPadPar(Double_t &xlow, Double_t &ylow, Double_t &xup, Double_t &yup)
Return lower and upper bounds of the pad in NDC coordinates.
Double_t fXtoPixel
xpixel = fXtoPixelk + fXtoPixel*xworld
TList * fExecs
List of commands to be executed when a pad event occurs.
virtual void CopyPixmaps()
Copy the sub-pixmaps of the pad to the canvas.
Int_t fTickx
Set to 1 if tick marks along X.
Int_t fTicky
Set to 1 if tick marks along Y.
virtual void SetBBoxCenterY(const Int_t y)
Set Y coordinate of the center of the Pad.
void AbsCoordinates(Bool_t set)
virtual void ReleaseViewer3D(Option_t *type="")
Release current (external) viewer.
virtual void XYtoAbsPixel(Double_t x, Double_t y, Int_t &xpixel, Int_t &ypixel) const
Double_t fX2
X of upper X coordinate.
virtual Bool_t HasCrosshair() const
Return kTRUE if the crosshair has been activated (via SetCrosshair).
TH1F * DrawFrame(Double_t xmin, Double_t ymin, Double_t xmax, Double_t ymax, const char *title="")
Draw an empty pad frame with X and Y axis.
Bool_t IsModified() const
Int_t GetPixmapID() const
Int_t fCGnx
! Size of the collide grid along x
virtual void SetLogx(Int_t value=1)
Set Lin/Log scale for X.
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
virtual void ls(Option_t *option="") const
List all primitives in pad.
Int_t YtoPixel(Double_t y) const
Double_t GetTheta() const
virtual Color_t GetHighLightColor() const
Get highlight color.
virtual TPoint GetBBoxCenter()
Return the center of the Pad as TPoint in pixels.
Double_t fAbsWNDC
Absolute Width of pad along X in NDC.
TVirtualPad * GetPadSave() const
Get save pad.
virtual Int_t GetEvent() const
Get Event.
Double_t GetUymax() const
Returns the maximum y-coordinate value visible on the pad. If log axis the returned value is in decad...
void PaintDate()
Paint the current date and time if the option date is on.
virtual TVirtualViewer3D * GetViewer3D(Option_t *type="")
Create/obtain handle to 3D viewer.
static void SetMaxPickDistance(Int_t maxPick=5)
static function to set the maximum Pick Distance fgMaxPickDistance This parameter is used in TPad::Pi...
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 fX1
X of lower X coordinate.
Int_t GetGLDevice()
Get GL device.
Double_t fVtoPixel
ypixel = fVtoPixelk + fVtoPixel*vndc
Double_t GetHNDC() const
Get height of pad along Y in Normalized Coordinates (NDC)
virtual void SetSelected(TObject *obj)
Set selected.
virtual Rectangle_t GetBBox()
Return the bounding Box of the Pad.
virtual void DrawCrosshair()
Function called to draw a crosshair in the canvas.
virtual void RangeChanged()
Double_t fUymin
Minimum value on the Y axis.
virtual void GetRangeAxis(Double_t &xmin, Double_t &ymin, Double_t &xmax, Double_t &ymax)
Return pad axis coordinates range.
virtual void SetAttFillPS(Color_t color, Style_t style)
Set postscript fill area attributes.
Int_t fLogz
(=0 if Z linear scale, =1 if log scale)
Double_t fYtoPixelk
Conversion coefficient for Y World to pixel.
virtual void CopyPixmap()
Copy the pixmap of the pad to the canvas.
virtual void SetToolTipText(const char *text, Long_t delayms=1000)
Set tool tip text associated with this pad.
TPad()
Pad default constructor.
virtual Int_t GetCanvasID() const
Get canvas identifier.
Int_t YtoAbsPixel(Double_t y) const
virtual void SetDoubleBuffer(Int_t mode=1)
Set double buffer mode ON or OFF.
static Int_t GetMaxPickDistance()
Static function (see also TPad::SetMaxPickDistance)
Double_t AbsPixeltoY(Int_t py)
Int_t XtoAbsPixel(Double_t x) const
Double_t fUtoPixelk
Conversion coefficient for U NDC to pixel.
Double_t fPixeltoXk
Conversion coefficient for pixel to X World.
Double_t fY1
Y of lower Y coordinate.
Double_t GetWNDC() const
Get width of pad along X in Normalized Coordinates (NDC)
Double_t GetAbsWNDC() const
Int_t fGLDevice
! OpenGL off-screen pixmap identifier
const char * GetTitle() const
Returns title of object.
Double_t fYlowNDC
Y bottom left corner of pad in NDC [0,1].
const char * GetName() const
Returns name of object.
virtual Bool_t IsEditable() const
virtual Int_t GetEventX() const
Get X event.
Bool_t fModified
Set to true when pad is modified.
virtual 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)
Set all pad parameters.
virtual TPad * Pick(Int_t px, Int_t py, TObjLink *&pickobj)
Search for an object at pixel position px,py.
virtual void SetNumber(Int_t number)
Int_t fNumber
pad number identifier
virtual void SetAttLinePS(Color_t color, Style_t style, Width_t lwidth)
Set postscript line attributes.
virtual void SetBatch(Bool_t batch=kTRUE)
Set pad in batch mode.
virtual Bool_t OpaqueMoving() const
Is pad moving in opaque mode ?
Double_t fAbsPixeltoXk
Conversion coefficient for absolute pixel to X World.
virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py)
Execute action corresponding to one event.
Double_t GetAbsHNDC() const
Double_t fAspectRatio
ratio of w/h in case of fixed ratio
virtual void RecordPave(const TObject *obj)
Emit RecordPave() signal.
virtual void Browse(TBrowser *b)
Browse pad.
Double_t fUymax
Maximum value on the Y axis.
Double_t GetUxmax() const
Returns the maximum x-coordinate value visible on the pad. If log axis the returned value is in decad...
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.
TCanvas * fCanvas
! Pointer to mother canvas
TVirtualViewer3D * fViewer3D
! Current 3D viewer
virtual void x3d(Option_t *type="")
Deprecated: use TPad::GetViewer3D() instead.
virtual void SetCrosshair(Int_t crhair=1)
Set crosshair active/inactive.
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.
virtual UInt_t GetWw() const
Get Ww.
void Clear(Option_t *option="")
Delete all pad primitives.
Bool_t fFixedAspectRatio
True if fixed aspect ratio.
virtual void UseCurrentStyle()
Force a copy of current style for all objects in pad.
virtual ~TPad()
Pad destructor.
virtual void RecursiveRemove(TObject *obj)
Recursively remove object from a pad and its sub-pads.
Double_t fVtoAbsPixelk
Conversion coefficient for V NDC to absolute pixel.
virtual void SetBBoxX1(const Int_t x)
Set lefthandside of BoundingBox to a value (resize in x direction on left)
Int_t IncrementPaletteColor(Int_t i, TString opt)
Increment (i==1) or set (i>1) the number of autocolor in the pad.
void PaintPolyMarker(Int_t n, Float_t *x, Float_t *y, Option_t *option="")
Paint polymarker in CurrentPad World coordinates.
virtual void GetRange(Double_t &x1, Double_t &y1, Double_t &x2, Double_t &y2)
Return pad world coordinates range.
Double_t XtoPad(Double_t x) const
Convert x from X to pad.
virtual void ExecuteEventAxis(Int_t event, Int_t px, Int_t py, TAxis *axis)
Execute action corresponding to one event for a TAxis object (called by TAxis::ExecuteEvent....
virtual void ResetToolTip(TObject *tip)
Reset tool tip, i.e.
virtual void SetBorderMode(Short_t bordermode)
virtual TObject * FindObject(const char *name) const
Search if object named name is inside this pad or in pads inside this pad.
virtual TObject * CreateToolTip(const TBox *b, const char *text, Long_t delayms)
Create a tool tip and return its pointer.
virtual void PaintModified()
Traverse pad hierarchy and (re)paint only modified pads.
virtual void SetBBoxY1(const Int_t y)
Set top of BoundingBox to a value (resize in y direction on top)
void FillCollideGridTFrame(TObject *o)
virtual void SetAttMarkerPS(Color_t color, Style_t style, Size_t msize)
Set postscript marker attributes.
virtual void SetBBoxY2(const Int_t y)
Set bottom of BoundingBox to a value (resize in y direction on bottom)
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.
virtual void RangeAxisChanged()
virtual void SetBBoxCenter(const TPoint &p)
Set center of the Pad.
TObject * fTip
! tool tip associated with box
void Modified(Bool_t flag=1)
virtual void SetCursor(ECursor cursor)
Set cursor type.
virtual void SetVertical(Bool_t vert=kTRUE)
Set pad vertical (default) or horizontal.
virtual TVirtualPad * GetVirtCanvas() const
Get virtual canvas.
Double_t AbsPixeltoX(Int_t px)
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)
virtual void SetFixedAspectRatio(Bool_t fixed=kTRUE)
Fix pad aspect ratio to current value if fixed is true.
virtual 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="")
Build a legend from the graphical objects in the pad.
virtual void Paint(Option_t *option="")
Paint all primitives in pad.
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 fUtoPixel
xpixel = fUtoPixelk + fUtoPixel*undc
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
Compute distance from point px,py to a box.
void PaintBox(Double_t x1, Double_t y1, Double_t x2, Double_t y2, Option_t *option="")
Paint box in CurrentPad World coordinates.
virtual TVirtualPad * GetMother() const
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 ...
@ kCannotMove
Fixed position.
@ kClearAfterCR
Clear after CR.
@ kHori
Pad is horizontal.
@ kPrintingPS
PS Printing.
@ kFraming
Frame is requested.
virtual TCanvas * GetCanvas() const
Double_t fUtoAbsPixelk
Conversion coefficient for U NDC to absolute pixel.
Double_t GetUxmin() const
Returns the minimum x-coordinate value visible on the pad. If log axis the returned value is in decad...
virtual TObject * WaitPrimitive(const char *pname="", const char *emode="")
Loop and sleep until a primitive with name=pname is found in the pad.
TList * fPrimitives
->List of primitives (subpads)
Short_t fBorderSize
pad bordersize in pixels
virtual void Update()
Update pad.
TView * fView
! Pointer to 3-D view (if one exists)
virtual Short_t GetBorderMode() const
Bool_t * fCollideGrid
! Grid used to find empty space when adding a box (Legend) in a pad
virtual void Print(const char *filename="") const
Save Pad contents in a file in one of various formats.
Int_t NextPaletteColor()
Get the next autocolor in the pad.
virtual TVirtualPadPainter * GetPainter()
Get pad painter from TCanvas.
virtual Bool_t IsRetained() const
Is pad retained ?
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 FillCollideGridTH1(TObject *o)
Int_t fPadPaint
Set to 1 while painting the pad.
static void DrawColorTable()
Static function to Display Color Table in a pad.
virtual void SaveAs(const char *filename="", Option_t *option="") const
Save Pad contents in a file in one of various formats.
void PaintPolyLine3D(Int_t n, Double_t *p)
Paint 3-D polyline in the CurrentPad.
TList * GetListOfPrimitives() const
Int_t fPixmapID
! Off-screen pixmap identifier
Bool_t fEditable
True if canvas is editable.
Double_t GetAbsYlowNDC() const
void PaintText(Double_t x, Double_t y, const char *text)
Paint text in CurrentPad World coordinates.
virtual void RangeAxis(Double_t xmin, Double_t ymin, Double_t xmax, Double_t ymax)
Set axis coordinate system for the pad.
virtual Short_t GetBorderSize() const
Double_t PadtoX(Double_t x) const
Convert x from pad to X.
Double_t GetAbsXlowNDC() const
virtual Int_t GetEventY() const
Get Y event.
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)
virtual void ResizePad(Option_t *option="")
Compute pad conversion coefficients.
TFrame * fFrame
! Pointer to 2-D frame (if one exists)
virtual void SetView(TView *view=0)
Set the current TView. Delete previous view if view=0.
virtual void Draw(Option_t *option="")
Draw Pad in Current pad (re-parent pad if necessary).
Double_t fHNDC
Height of pad along Y in Normalized Coordinates (NDC)
void PaintLine(Double_t x1, Double_t y1, Double_t x2, Double_t y2)
Paint line in CurrentPad World coordinates.
Int_t GetCrosshair() const
Return the crosshair type (from the mother canvas) crosshair type = 0 means no crosshair.
virtual 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)
Paint a frame border with Postscript.
Int_t fCGny
! Size of the collide grid along y
Double_t fXlowNDC
X bottom left corner of pad in NDC [0,1].
Double_t GetXlowNDC() const
Double_t fUxmin
Minimum value on the X axis.
virtual void SetAttTextPS(Int_t align, Float_t angle, Color_t color, Style_t font, Float_t tsize)
Set postscript text attributes.
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save primitives in this pad on the C++ source file out.
Int_t XtoPixel(Double_t x) const
virtual void SetLogz(Int_t value=1)
Set Lin/Log scale for Z.
Double_t fUxmax
Maximum value on the X axis.
virtual void SetEditable(Bool_t mode=kTRUE)
Set pad editable yes/no If a pad is not editable:
Bool_t HasFixedAspectRatio() const
Double_t fY2
Y of upper Y coordinate.
Double_t fAbsPixeltoYk
Conversion coefficient for absolute pixel to Y World.
virtual void Range(Double_t x1, Double_t y1, Double_t x2, Double_t y2)
Set world coordinate system for the pad.
Short_t fBorderMode
Bordermode (-1=down, 0 = no border, 1=up)
virtual void SetBBoxCenterX(const Int_t x)
Set X coordinate of the center of the Pad.
Int_t fNextPaletteColor
Next automatic color.
TVirtualPad * cd(Int_t subpadnumber=0)
Set Current pad.
TFrame * GetFrame()
Get frame.
virtual Bool_t IsVertical() const
virtual TVirtualPad * GetPad(Int_t subpadnumber) const
Get a pointer to subpadnumber of this pad.
virtual void DeleteToolTip(TObject *tip)
Delete tool tip object.
TObject * fPadPointer
! free pointer
void PaintTextNDC(Double_t u, Double_t v, const char *text)
Paint text in CurrentPad NDC coordinates.
virtual UInt_t GetWh() const
Get Wh.
virtual void SetFillStyle(Style_t fstyle)
Override TAttFill::FillStyle for TPad because we want to handle style=0 as style 4000.
TPad * fMother
! pointer to mother of the list
virtual TObject * GetPrimitive(const char *name) const
Get primitive.
virtual void SetCanvasSize(UInt_t ww, UInt_t wh)
Set canvas size.
void PaintFillArea(Int_t n, Float_t *x, Float_t *y, Option_t *option="")
Bool_t fGridy
Set to true if grid along Y.
virtual TCanvasImp * GetCanvasImp() const
Get canvas implementation pointer if any.
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)
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
virtual Int_t GetNumber() const =0
virtual Int_t VtoPixel(Double_t v) const =0
virtual const char * GetName() const =0
Returns name of object.
virtual Int_t VtoAbsPixel(Double_t v) const =0
virtual Double_t GetY2() const =0
virtual Int_t UtoPixel(Double_t u) const =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)
RooCmdArg FillStyle(Style_t style)
double dist(Rotation3D const &r1, Rotation3D const &r2)
void CallRecursiveRemoveIfNeeded(TObject &obj)
call RecursiveRemove for obj if gROOT is valid and obj.TestBit(kMustCleanup) is true.
static constexpr double L
static constexpr double ps
static constexpr double mg
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 *)