152 fMother = (TPad*)
gPad;
181 fFixedAspectRatio =
kFALSE;
184 fNumPaletteColor = 0;
185 fNextPaletteColor = 0;
200 fUxmin = fUymin = fUxmax = fUymax = 0;
249 :
TVirtualPad(name,title,xlow,ylow,xup,yup,color,bordersize,bordermode)
333 Error(
"TPad",
"You must create a TCanvas before creating a TPad");
340 if ((xlow < 0) || (xlow > 1) || (ylow < 0) || (ylow > 1)) {
341 Error(
"TPad",
"illegal bottom left position: x=%f, y=%f", xlow, ylow);
344 if ((xup < 0) || (xup > 1) || (yup < 0) || (yup > 1)) {
345 Error(
"TPad",
"illegal top right position: x=%f, y=%f", xup, yup);
356 SetPad(name, title, xlow, ylow, xup, yup, color, bordersize, bordermode);
454 while ((exec = (
TExec*)next())) {
486 const char* title,
Option_t *option)
495 while( (o=next()) ) {
499 if (!leg) leg =
new TLegend(x1, y1, x2, y2, title);
506 if (strlen(option)) {
515 if (!leg) leg =
new TLegend(x1, y1, x2, y2, title);
517 TIter nextgraph(grlist);
520 while ((obj = nextgraph())) {
525 if (strlen(option)) opt = option;
530 if (!leg) leg =
new TLegend(x1, y1, x2, y2, title);
532 TIter nexthist(hlist);
535 while ((obj = nexthist())) {
540 if (strlen(option)) opt = option;
553 Info(
"BuildLegend(void)",
"No object to build a TLegend.");
596 while ((obj = next())) {
599 if (n == subpadnumber) {
600 return ((
TPad*)obj)->cd();
669 for (
Int_t i=0;i<2;i++) {
682 while(code1 + code2) {
693 if (ic == 0) ic = code2;
695 yt = y[0] + (y[1]-y[0])*(xclipl-x[0])/(x[1]-x[0]);
699 yt = y[0] + (y[1]-y[0])*(xclipr-x[0])/(x[1]-x[0]);
703 xt = x[0] + (x[1]-x[0])*(yclipb-y[0])/(y[1]-y[0]);
707 xt = x[0] + (x[1]-x[0])*(yclipt-y[0])/(y[1]-y[0]);
713 code1 =
ClippingCode(xt,yt,xclipl,yclipb,xclipr,yclipt);
717 code2 =
ClippingCode(xt,yt,xclipl,yclipb,xclipr,yclipt);
740 for (
Int_t i=0;i<2;i++) {
749 if (x[0] < xclipl) code1 = code1 | 0x1;
750 if (x[0] > xclipr) code1 = code1 | 0x2;
751 if (y[0] < yclipb) code1 = code1 | 0x4;
752 if (y[0] > yclipt) code1 = code1 | 0x8;
754 if (x[1] < xclipl) code2 = code2 | 0x1;
755 if (x[1] > xclipr) code2 = code2 | 0x2;
756 if (y[1] < yclipb) code2 = code2 | 0x4;
757 if (y[1] > yclipt) code2 = code2 | 0x8;
761 while(code1 + code2) {
772 if (ic == 0) ic = code2;
774 yt = y[0] + (y[1]-y[0])*(xclipl-x[0])/(x[1]-x[0]);
778 yt = y[0] + (y[1]-y[0])*(xclipr-x[0])/(x[1]-x[0]);
782 xt = x[0] + (x[1]-x[0])*(yclipb-y[0])/(y[1]-y[0]);
786 xt = x[0] + (x[1]-x[0])*(yclipt-y[0])/(y[1]-y[0]);
792 code1 =
ClippingCode(xt,yt,xclipl,yclipb,xclipr,yclipt);
796 code2 =
ClippingCode(xt,yt,xclipl,yclipb,xclipr,yclipt);
809 if (x < xcl1) code = code | 0x1;
810 if (x > xcl2) code = code | 0x2;
811 if (y < ycl1) code = code | 0x4;
812 if (y > ycl2) code = code | 0x8;
864 x1 = x[n-1]; y1 = y[n-1];
867 for (i=0; i<
n; i++) {
868 x2 = x[i]; y2 = y[i];
872 slope = (y2-y1)/(x2-x1);
876 xc2[nc2] = xclipl; yc2[nc2++] = slope*(xclipl-
x1)+y1;
878 xc2[nc2] =
x2; yc2[nc2++] = y2;
882 xc2[nc2] = xclipl; yc2[nc2++] = slope*(xclipl-
x1)+y1;
883 xc2[nc2] =
x2; yc2[nc2++] = y2;
890 x1 = xc2[nc2-1]; y1 = yc2[nc2-1];
892 for (i=0; i<nc2; i++) {
893 x2 = xc2[i]; y2 = yc2[i];
897 slope = (x2-
x1)/(y2-y1);
901 xc[nc] = x1+(yclipt-y1)*slope; yc[nc++] = yclipt;
903 xc[nc] =
x2; yc[nc++] = y2;
907 xc[nc] = x1+(yclipt-y1)*slope; yc[nc++] = yclipt;
908 xc[nc] =
x2; yc[nc++] = y2;
915 x1 = xc[nc-1]; y1 = yc[nc-1];
917 for (i=0; i<nc; i++) {
918 x2 = xc[i]; y2 = yc[i];
922 slope = (y2-y1)/(x2-x1);
926 xc2[nc2] = xclipr; yc2[nc2++] = slope*(xclipr-
x1)+y1;
928 xc2[nc2] =
x2; yc2[nc2++] = y2;
932 xc2[nc2] = xclipr; yc2[nc2++] = slope*(xclipr-
x1)+y1;
933 xc2[nc2] =
x2; yc2[nc2++] = y2;
940 x1 = xc2[nc2-1]; y1 = yc2[nc2-1];
942 for (i=0; i<nc2; i++) {
943 x2 = xc2[i]; y2 = yc2[i];
947 slope = (x2-
x1)/(y2-y1);
951 xc[nc] = x1+(yclipb-y1)*slope; yc[nc++] = yclipb;
953 xc[nc] =
x2; yc[nc++] = y2;
957 xc[nc] = x1+(yclipb-y1)*slope; yc[nc++] = yclipb;
958 xc[nc] =
x2; yc[nc++] = y2;
998 if (!
gPad->IsBatch())
1003 if (!
gROOT->GetListOfCanvases())
return;
1005 gROOT->GetListOfCanvases()->Remove(
this);
1026 if (
gROOT->GetSelectedPad() ==
this)
gROOT->SetSelectedPad(0);
1051 while ((obj = next())) {
1053 ((
TPad*)obj)->CopyPixmap();
1054 ((
TPad*)obj)->CopyPixmaps();
1080 Int_t pxl, pyl, pxt, pyt;
1085 if (px1 < px2) {pxl = px1; pxt = px2;}
1086 else {pxl = px2; pxt = px1;}
1087 if (py1 < py2) {pyl = py1; pyt = py2;}
1088 else {pyl = py2; pyt = py1;}
1092 if ( (px > pxl && px < pxt) && (py > pyl && py < pyt) ) {
1099 if (py < pyl) dxl += pyl - py;
1100 if (py > pyt) dxl += py - pyt;
1102 if (py < pyl) dxt += pyl - py;
1103 if (py > pyt) dxt += py - pyt;
1105 if (px < pxl) dyl += pxl - px;
1106 if (px > pxt) dyl += px - pxt;
1108 if (px < pxl) dyt += pxl - px;
1109 if (px > pxt) dyt += px - pxt;
1111 Int_t distance = dxl;
1112 if (dxt < distance) distance = dxt;
1113 if (dyl < distance) distance = dyl;
1114 if (dyt < distance) distance = dyt;
1160 arr[1] =
this; arr[2] = (
void*)&nx;arr[3] = (
void*)& ny;
1161 arr[4] = (
void*)&xmargin; arr[5] = (
void *)& ymargin; arr[6] = (
void *)&color;
1162 if ((*
gThreadXAR)(
"PDCD", 7, arr, 0))
return;
1167 if (nx <= 0) nx = 1;
1168 if (ny <= 0) ny = 1;
1175 char *
name =
new char [nchname];
1176 char *title =
new char [nchtitle];
1179 if (xmargin > 0 && ymargin > 0) {
1183 for (iy=0;iy<ny;iy++) {
1184 y2 = 1 - iy*dy - ymargin;
1185 y1 = y2 - dy + 2*ymargin;
1187 if (y1 > y2)
continue;
1188 for (ix=0;ix<nx;ix++) {
1189 x1 = ix*dx + xmargin;
1190 x2 = x1 +dx -2*xmargin;
1191 if (x1 > x2)
continue;
1194 pad =
new TPad(name,name,x1,y1,x2,y2,color);
1216 for (
Int_t i=0;i<nx;i++) {
1220 if (i == nx-1) x2 = 1-xr;
1221 for (
Int_t j=0;j<ny;j++) {
1222 number = j*nx + i +1;
1225 if (j == 0) y2 = 1-yt;
1226 if (j == ny-1) y1 = 0;
1229 pad =
new TPad(name,title,x1,y1,x2,y2);
1245 if (padsav) padsav->
cd();
1266 Divide( w,
h, xmargin, ymargin, color);
1276 gROOT->MakeDefCanvas();
1314 Int_t nd,nf,nc,nkd,nkf,i,j;
1327 Range(0,0,xpad,ypad);
1332 clevel[nlevel] = obj;
1341 if (nlevel >= maxlev-1)
break;
1345 Int_t ilevel, nelem;
1346 for (ilevel=nlevel;ilevel>=0;ilevel--) {
1347 cl = clevel[ilevel];
1349 if (nelem > maxelem) maxelem = nelem;
1350 nc = (nelem/50) + 1;
1360 if (dx < 1.3) dx = 1.3;
1361 tsizcm = tsizcm - 0.03*
Double_t(ncdraw-5);
1362 if (tsizcm < 0.27) tsizcm = 0.27;
1367 for (ilevel=nlevel;ilevel>=0;ilevel--) {
1368 cl = clevel[ilevel];
1370 if (nelem > maxelem) maxelem = nelem;
1371 nc = (nelem/50) + 1;
1373 if (ilevel < nlevel) x1 = x2 + 0.5;
1391 v1 = y1 -
Double_t(nkf+nkd+nc-1)*dy;
1403 TBox *
box = pt->
AddBox(0,(y1+0.01-v1)/dv,0,(v2-0.01-v1)/dv);
1405 pt->
AddLine(0,(y1-v1)/dv,0,(y1-v1)/dv);
1417 if (i >= nkd) { i = 1; y = y1 - 0.5*dy; x += 1/
Double_t(nc); }
1418 else { i++; y -= dy; }
1426 while (indx < dim ){
1427 ldname = strlen(dname);
1431 pt->
AddText(x,(y-v1)/dv,dname);
1438 pt->
AddLine(0,(ysep-v1)/dv,0,(ysep-v1)/dv);
1449 while ((m = (
TMethod *) nextm())) {
1451 !strcmp( m->
GetName(),
"Dictionary" ) ||
1452 !strcmp( m->
GetName(),
"Class_Version" ) ||
1453 !strcmp( m->
GetName(),
"DeclFileName" ) ||
1454 !strcmp( m->
GetName(),
"DeclFileLine" ) ||
1455 !strcmp( m->
GetName(),
"ImplFileName" ) ||
1456 !strcmp( m->
GetName(),
"ImplFileLine" )
1459 if (fcount > nf)
break;
1460 if (i >= nkf) { i = 1; y = ysep - 0.5*dy; x += 1/
Double_t(nc); }
1461 else { i++; y -= dy; }
1466 for (j=ilevel-1;j>=0;j--) {
1467 if (cl == clevel[ilevel]) {
1468 if (clevel[j]->GetMethodAny((
char*)m->
GetName())) {
1515 Int_t pxmin,pxmax,pymin,pymax,pxold,pyold,px,py;
1527 pxmax = canvas->
GetWw();
1529 pymax = cpad->
GetWh();
1531 if(pxold)
gVirtualX->DrawLine(pxold,pymin,pxold,pymax);
1532 if(pyold)
gVirtualX->DrawLine(pxmin,pyold,pxmax,pyold);
1559 if (
this != padsav) {
1560 Warning(
"DrawFrame",
"Must be called for the current pad only");
1561 return padsav->
DrawFrame(xmin,ymin,xmax,ymax,title);
1567 if (hframe)
delete hframe;
1571 if (
fLogx && xmin > 0 && xmax > xmin) {
1577 for (
Int_t i=1;i<=nbins;i++) {
1580 hframe =
new TH1F(
"hframe",title,nbins,xbins);
1583 hframe =
new TH1F(
"hframe",title,nbins,xmin,xmax);
1593 if (padsav) padsav->
cd();
1609 gPad->SetFillColor(0);
1611 gPad->Range(x1,y1,x2,y2);
1623 for (i=0;i<10;i++) {
1632 box->
DrawBox(xlow, ylow, xup, yup);
1635 box->
DrawBox(xlow, ylow, xup, yup);
1638 text->
DrawText(0.5*(xlow+xup), 0.5*(ylow+yup),
Form(
"%d",color));
1665 const Int_t kMaxDiff = 5;
1666 const Int_t kMinSize = 20;
1667 static Int_t pxorg, pyorg;
1668 static Int_t px1, px2, py1, py2, pxl, pyl, pxt, pyt, pxold, pyold;
1669 static Int_t px1p, px2p, py1p, py2p, pxlp, pylp, pxtp, pytp;
1670 static Bool_t pA, pB, pC, pD, pTop, pL, pR, pBot, pINSIDE;
1693 pA = pB = pC = pD = pTop = pL = pR = pBot = pINSIDE =
kFALSE;
1737 if (newcode)
return;
1804 pA = pB = pC = pD = pTop = pL = pR = pBot = pINSIDE =
kFALSE;
1808 pxold = pxl; pyold = pyl; pA =
kTRUE;
1813 pxold = pxt; pyold = pyl; pB =
kTRUE;
1818 pxold = pxt; pyold = pyt; pC =
kTRUE;
1823 pxold = pxl; pyold = pyt; pD =
kTRUE;
1827 if ((px > pxl+kMaxDiff && px < pxt-kMaxDiff) &&
1829 pxold = pxl; pyold = pyl; pTop =
kTRUE;
1833 if ((px > pxl+kMaxDiff && px < pxt-kMaxDiff) &&
1835 pxold = pxt; pyold = pyt; pBot =
kTRUE;
1839 if ((py > pyl+kMaxDiff && py < pyt-kMaxDiff) &&
1841 pxold = pxl; pyold = pyl; pL =
kTRUE;
1845 if ((py > pyl+kMaxDiff && py < pyt-kMaxDiff) &&
1847 pxold = pxt; pyold = pyt; pR =
kTRUE;
1851 if ((px > pxl+kMaxDiff && px < pxt-kMaxDiff) &&
1852 (py > pyl+kMaxDiff && py < pyt-kMaxDiff)) {
1853 pxold = px; pyold = py; pINSIDE =
kTRUE;
1861 if (pA || pB || pC || pD || pTop || pL || pR || pBot)
1864 if (!pA && !pB && !pC && !pD && !pTop && !pL && !pR && !pBot && !pINSIDE)
1877 if (px > pxt-kMinSize) { px = pxt-kMinSize; wx = px; }
1878 if (py > pyt-kMinSize) { py = pyt-kMinSize; wy = py; }
1879 if (px < pxlp) { px = pxlp; wx = px; }
1880 if (py < pylp) { py = pylp; wy = py; }
1898 if (px < pxl+kMinSize) { px = pxl+kMinSize; wx = px; }
1899 if (py > pyt-kMinSize) { py = pyt-kMinSize; wy = py; }
1900 if (px > pxtp) { px = pxtp; wx = px; }
1901 if (py < pylp) { py = pylp; wy = py; }
1919 if (px < pxl+kMinSize) { px = pxl+kMinSize; wx = px; }
1920 if (py < pyl+kMinSize) { py = pyl+kMinSize; wy = py; }
1921 if (px > pxtp) { px = pxtp; wx = px; }
1922 if (py > pytp) { py = pytp; wy = py; }
1940 if (px > pxt-kMinSize) { px = pxt-kMinSize; wx = px; }
1941 if (py < pyl+kMinSize) { py = pyl+kMinSize; wy = py; }
1942 if (px < pxlp) { px = pxlp; wx = px; }
1943 if (py > pytp) { py = pytp; wy = py; }
1962 if (py2 > py1-kMinSize) { py2 = py1-kMinSize; wy = py2; }
1963 if (py2 < py2p) { py2 = py2p; wy = py2; }
1978 if (py1 < py2+kMinSize) { py1 = py2+kMinSize; wy = py1; }
1979 if (py1 > py1p) { py1 = py1p; wy = py1; }
1994 if (px1 > px2-kMinSize) { px1 = px2-kMinSize; wx = px1; }
1995 if (px1 < px1p) { px1 = px1p; wx = px1; }
2011 if (px2 < px1+kMinSize) { px2 = px1+kMinSize; wx = px2; }
2012 if (px2 > px2p) { px2 = px2p; wx = px2; }
2027 Int_t dx = px - pxold;
2028 Int_t dy = py - pyold;
2029 px1 += dx; py1 += dy; px2 += dx; py2 += dy;
2030 if (px1 < px1p) { dx = px1p - px1; px1 += dx; px2 += dx; wx = px+dx; }
2031 if (px2 > px2p) { dx = px2 - px2p; px1 -= dx; px2 -= dx; wx = px-dx; }
2032 if (py1 > py1p) { dy = py1 - py1p; py1 -= dy; py2 -= dy; wy = py-dy; }
2033 if (py2 < py2p) { dy = py2p - py2; py1 += dy; py2 += dy; wy = py+dy; }
2047 x1 = x2 = y1 = y2 = 0;
2074 if (pTop || pBot || pL || pR || pINSIDE) {
2081 if (px != pxorg || py != pyorg) {
2105 if (pINSIDE)
gPad->ShowGuidelines(
this, event);
2106 if (pTop)
gPad->ShowGuidelines(
this, event,
't',
true);
2107 if (pBot)
gPad->ShowGuidelines(
this, event,
'b',
true);
2108 if (pL)
gPad->ShowGuidelines(
this, event,
'l',
true);
2109 if (pR)
gPad->ShowGuidelines(
this, event,
'r',
true);
2110 if (pA)
gPad->ShowGuidelines(
this, event,
'1',
true);
2111 if (pB)
gPad->ShowGuidelines(
this, event,
'2',
true);
2112 if (pC)
gPad->ShowGuidelines(
this, event,
'3',
true);
2113 if (pD)
gPad->ShowGuidelines(
this, event,
'4',
true);
2122 if (
gROOT->IsEscaped()) {
2127 if (opaque||ropaque) {
2130 x1 = x2 = y1 = y2 = 0;
2156 if (pTop || pBot || pL || pR || pINSIDE) {
2163 if (pA || pB || pC || pD || pTop || pL || pR || pBot)
2169 if (px != pxorg || py != pyorg) {
2206 event =
gVirtualX->RequestLocator(1, 1, px, py);
2245 static Int_t axisNumber;
2247 static Int_t px1old, py1old, px2old, py2old;
2251 static TBox *zoombox;
2252 Double_t zbx1=0,zbx2=0,zby1=0,zby2=0;
2259 if (strstr(opt,
"cont4")) {
2268 if (!strcmp(axis->
GetName(),
"xaxis")) {
2272 if (!strcmp(axis->
GetName(),
"yaxis")) {
2276 if (!strcmp(axis->
GetName(),
"zaxis")) {
2282 if (axisNumber == 1) {
2288 }
else if (axisNumber == 2) {
2304 if (axisNumber == 1) {
2309 }
else if (axisNumber == 2) {
2323 zoombox =
new TBox(zbx1, zby1, zbx2, zby2);
2334 if (!opaque)
gVirtualX->SetLineColor(-1);
2342 if (axisNumber == 1) {
2352 if (axisNumber == 1) {
2357 }
else if (axisNumber == 2) {
2372 zoombox->
SetX1(zbx1);
2373 zoombox->
SetY1(zby1);
2374 zoombox->
SetX2(zbx2);
2375 zoombox->
SetY2(zby2);
2408 if (
gROOT->IsEscaped()) {
2410 if (opaque && zoombox) {
2419 if (ratio1 > ratio2) {
2424 if (ratio2 - ratio1 > 0.05) {
2426 if (axisNumber == 3 && hobj && hobj->
GetDimension() != 3) {
2435 Float_t newmin = zmin + (zmax-zmin)*ratio1;
2436 Float_t newmax = zmin + (zmax-zmin)*ratio2;
2449 bin1 = first +
Int_t((last-first+1)*ratio1);
2450 bin2 = first +
Int_t((last-first+1)*ratio2);
2460 if (axisNumber == 1) {
2468 }
else if (axisNumber == 2) {
2496 xmin = ((xmin-xmi)/(xma-xmi))*(up-low)+low;
2497 xmax = ((xmax-xmi)/(xma-xmi))*(up-low)+low;
2500 if (!strcmp(axis->
GetName(),
"xaxis")) axisNumber = 1;
2501 if (!strcmp(axis->
GetName(),
"yaxis")) axisNumber = 2;
2502 if (ratio2 - ratio1 > 0.05) {
2509 if (axisNumber == 1) axis->
SetRange(bin1,bin2);
2510 if (axisNumber == 2 && hobj1) {
2527 while ((obj= next())) {
2530 if (hobj == hobj1)
continue;
2533 if (axisNumber == 1) {
2535 }
else if (axisNumber == 2) {
2578 if (found)
return found;
2581 while ((cur = next())) {
2584 if (found)
return found;
2599 if (found)
return found;
2602 while ((cur = next())) {
2605 if (found)
return found;
2680 if (
fCanvas ==
this)
return 0;
2689 if (
fCanvas ==
this)
return 0;
2698 if (
fCanvas ==
this)
return 0;
2841 while ((obj=next())) {
2842 if (!strcmp(name, obj->
GetName()))
return obj;
2845 if (found)
return found;
2855 if (!subpadnumber) {
2862 while ((obj = next())) {
2865 if (pad->
GetNumber() == subpadnumber)
return pad;
2912 if (color <= 0)
return;
2930 gROOT->SetSelectedPad(
this);
2947 <<
" Name= "<<
GetName()<<
" Title= "<<
GetTitle()<<
" Option="<<option<<std::endl;
2959 if (opt.
Index(
"pfc")>=0 || opt.
Index(
"plc")>=0 || opt.
Index(
"pmc")>=0) {
2977 if (i>=ncolors) i = ncolors-1;
2989 Int_t const cellSize = 10;
3008 for (
int i = 0; i<
fCGnx; i++) {
3009 for (
int j = 0; j<
fCGny; j++) {
3020 for (
int i=0; i<np; i++) {
3037 for (
int r=i;
r<w+i;
r++) {
3038 for (
int c=j; c<h+j; c++) {
3058 for (
Int_t i = 0; i<nxmax; i++) {
3059 for (
Int_t j = 0; j<=nymax; j++) {
3072 #define NotFree(i, j) fCollideGrid[TMath::Max(TMath::Min(i+j*fCGnx,fCGnx*fCGny),0)] = kFALSE; 3091 for (i=y1+1; i<y2; i++)
NotFree(x1,i);
3098 xt =
x1; x1 =
x2; x2 = xt;
3099 yt = y1; y1 = y2; y2 = yt;
3101 for (i=x1+1; i<
x2; i++) {
3108 yt = y1; y1 = y2; y2 = yt;
3109 xt =
x1; x1 =
x2; x2 = xt;
3111 for (j=y1+1; j<y2; j++) {
3131 for (
int i = x1; i<=
x2; i++) {
3132 for (
int j = y1; j<=y2; j++)
NotFree(i, j);
3150 for (i = x1; i<=
x2; i++) {
3155 for (i = y1; i<=y2; i++) {
3173 for (
Int_t i=1; i<
n; i++) {
3189 (
int)((y1-
fY1)/ys), (
int)((y2-
fY1)/ys));
3202 if (name.
Index(
"hframe") >= 0)
return;
3207 bool haserrors =
false;
3212 if (drawOption.
Index(
"hist") < 0) {
3213 if (drawOption.
Index(
"e") >= 0) haserrors =
true;
3221 for (i = 1; i<nx; i++) {
3241 for (j=y1; j<=y2; j++) {
3263 x1 = (int)((x1l-
fX1)/xs);
3279 box->SetFillColorAlpha(
kRed,0.5);
3290 for (
int i = 0; i<
fCGnx; i++) {
3293 for (
int j = 0; j<
fCGny; j++) {
3294 if (
gPad->GetLogx()) {
3301 if (
gPad->GetLogy()) {
3310 box->DrawBox(X1L, Y1L, X2L, Y2L);
3312 box->SetFillColorAlpha(
kRed,t);
3313 box->DrawBox(X1L, Y1L, X2L, Y2L);
3317 if (t==0.15) t = 0.1;
3411 began3DScene =
kTRUE;
3418 if (padsav) padsav->cd();
3447 if (color < 0) color = -color;
3454 if (bordersize <= 0) bordersize = 2;
3475 if (px1 < px2) {xl =
fX1; xt =
fX2; }
3476 else {xl =
fX2; xt =
fX1;}
3477 if (py1 > py2) {yl =
fY1; yt =
fY2;}
3478 else {yl =
fY2; yt =
fY1;}
3480 Double_t frameXs[7] = {}, frameYs[7] = {};
3484 frameXs[0] = xl; frameYs[0] = yl;
3485 frameXs[1] = xl + realBsX; frameYs[1] = yl + realBsY;
3486 frameXs[2] = frameXs[1]; frameYs[2] = yt - realBsY;
3487 frameXs[3] = xt - realBsX; frameYs[3] = frameYs[2];
3488 frameXs[4] = xt; frameYs[4] = yt;
3489 frameXs[5] = xl; frameYs[5] = yt;
3490 frameXs[6] = xl; frameYs[6] = yl;
3497 frameXs[0] = xl; frameYs[0] = yl;
3498 frameXs[1] = xl + realBsX; frameYs[1] = yl + realBsY;
3499 frameXs[2] = xt - realBsX; frameYs[2] = frameYs[1];
3500 frameXs[3] = frameXs[2]; frameYs[3] = yt - realBsY;
3501 frameXs[4] = xt; frameYs[4] = yt;
3502 frameXs[5] = xt; frameYs[5] = yl;
3503 frameXs[6] = xl; frameYs[6] = yl;
3636 ((
TPad*)obj)->PaintModified();
3648 began3DScene =
kTRUE;
3656 if (padsav) padsav->cd();
3677 if (!
gPad->IsBatch()) {
3680 if (option[0] ==
's') {
3685 if (style > 3000 && style < 4000) {
3691 if (style >= 3100 && style < 4000) {
3693 xb[0] =
x1; xb[1] =
x1; xb[2] =
x2; xb[3] =
x2;
3694 yb[0] = y1; yb[1] = y2; yb[2] = y2; yb[3] = y1;
3704 }
else if (style >= 4000 && style <= 4100) {
3729 }
else if (style >= 1000 && style <= 1999) {
3743 if (option[0] ==
's') {
3746 if (style0 >= 3100 && style0 < 4000) {
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;
3755 if (option[0] ==
'l') {
3774 while ((obj = next())) {
3776 if (obj == stop)
break;
3777 ((
TPad*)obj)->CopyBackgroundPixmap(x, y);
3778 ((
TPad*)obj)->CopyBackgroundPixmaps((
TPad*)obj, stop, x, y);
3797 Warning(
"TPad::PaintFillArea",
"Float_t signature is obsolete. Use Double_t signature.");
3820 n =
ClipPolygon(nn, xx, yy, nc, x, y,xmin,ymin,xmax,ymax);
3830 if (fillstyle >= 3100 && fillstyle < 4000) {
3837 if (!
gPad->IsBatch())
3884 static Double_t ang1[10] = {0., 10., 20., 30., 45.,5., 60., 70., 80., 90.};
3885 static Double_t ang2[10] = {180.,170.,160.,150.,135.,5.,120.,110.,100., 90.};
3887 Int_t fasi = FillStyle%1000;
3890 Int_t iAng1 = fasi%10;
3898 if (!
gPad->IsBatch()) {
3911 if (!
gPad->IsBatch()) {
3923 if (ang1[iAng1] != 5.)
PaintHatches(dy, ang1[iAng1], nn, xx, yy);
3924 if (ang2[iAng2] != 5.)
PaintHatches(dy, ang2[iAng2], nn, xx, yy);
3927 if (!
gPad->IsBatch()) {
3951 const Int_t maxnbi = 100;
3952 Double_t xli[maxnbi], xlh[2], ylh[2], xt1, xt2, yt1, yt2;
3953 Double_t ll,
x,
y,
x1,
x2, y1, y2,
a,
b, xi, xip, xin, yi, yip;
3959 ratiox = 1/(rwxmax-rwxmin);
3960 ratioy = 1/(rwymax-rwymin);
3973 gPad->GetPadPar(x1p,y1p,x2p,y2p);
3982 for (i=1; i<=nn; i++) {
3983 x = wndc*ratiox*(xx[i-1]-rwxmin);
3984 y = hndc*ratioy*(yy[i-1]-rwymin);
3985 yrot = sina*x+cosa*
y;
3986 if (yrot > ymax) ymax = yrot;
3987 if (yrot < ymin) ymin = yrot;
3991 for (ycur=ymax; ycur>=
ymin; ycur=ycur-dy) {
3993 for (i=2; i<=nn+1; i++) {
3996 if (i == nn+1) i2=1;
3997 x1 = wndc*ratiox*(xx[i1-1]-rwxmin);
3998 y1 = hndc*ratioy*(yy[i1-1]-rwymin);
3999 x2 = wndc*ratiox*(xx[i2-1]-rwxmin);
4000 y2 = hndc*ratioy*(yy[i2-1]-rwymin);
4001 xt1 = cosa*x1-sina*y1;
4002 yt1 = sina*x1+cosa*y1;
4003 xt2 = cosa*x2-sina*y2;
4004 yt2 = sina*x2+cosa*y2;
4015 if ((yi <= ycur) && (ycur < yip)) {
4017 if (nbi >= maxnbi)
return;
4027 if (nbi >= maxnbi)
return;
4030 if (nbi >= maxnbi)
return;
4037 a = (yt1-yt2)/(xt1-xt2);
4038 b = (yt2*xt1-xt2*yt1)/(xt1-xt2);
4047 if ((xi <= xin) && (xin < xip) &&
4051 if (nbi >= maxnbi)
return;
4060 for (i=1; i<=
m; i++) {
4061 if (xli[i] < xli[i-1]) {
4069 if (inv == 0)
goto L50;
4075 if (nbi%2 != 0)
continue;
4077 for (i=1; i<=nbi; i=i+2) {
4079 xlh[0] = cosb*xli[i-1]-sinb*ycur;
4080 ylh[0] = sinb*xli[i-1]+cosb*ycur;
4081 xlh[1] = cosb*xli[i] -sinb*ycur;
4082 ylh[1] = sinb*xli[i] +cosb*ycur;
4084 xlh[0] = (xlh[0]/wndc)*(rwxmax-rwxmin)+rwxmin;
4085 ylh[0] = (ylh[0]/hndc)*(rwymax-rwymin)+rwymin;
4086 xlh[1] = (xlh[1]/wndc)*(rwxmax-rwxmin)+rwxmin;
4087 ylh[1] = (ylh[1]/hndc)*(rwymax-rwymin)+rwymin;
4088 gPad->PaintLine(xlh[0], ylh[0], xlh[1], ylh[1]);
4099 x[0] =
x1; x[1] =
x2; y[0] = y1; y[1] = y2;
4108 if (!
gPad->IsBatch())
4124 if (!
gPad->IsBatch())
4149 for (i=0;i<3;i++) temp[i] = p1[i];
4151 for (i=0;i<3;i++) temp[i] = p2[i];
4153 PaintLine(xpad[0],xpad[1],xpad[3],xpad[4]);
4167 for (i=0;i<3;i++) temp[i] = p1[i];
4169 for (i=0;i<3;i++) temp[i] = p2[i];
4171 PaintLine(xpad[0],xpad[1],xpad[3],xpad[4]);
4187 Int_t i, i1=-1,np=1;
4188 for (i=0; i<n-1; i++) {
4193 Int_t iclip =
Clip(&x[i],&y[i],xmin,ymin,xmax,ymax);
4200 if (iclip == 0 && i < n-2)
continue;
4201 if (!
gPad->IsBatch())
4234 if (option && (option[0] ==
'C')) mustClip =
kFALSE;
4237 Int_t i, i1=-1, np=1, iclip=0;
4239 for (i=0; i < n-1; i++) {
4245 iclip =
Clip(&x[i],&y[i],xmin,ymin,xmax,ymax);
4253 if (iclip == 0 && i < n-2)
continue;
4254 if (!
gPad->IsBatch())
4279 if (!
gPad->IsBatch())
4285 for (
Int_t i=0; i<
n; i++) {
4304 for (
Int_t i = 1; i <
n; i++)
4323 for (i=0; i<
n; i++) {
4324 if (x[i] >= xmin && x[i] <= xmax && y[i] >= ymin && y[i] <= ymax) {
4327 if (i < n-1)
continue;
4329 if (np == 0)
continue;
4330 if (!
gPad->IsBatch())
4354 for (i=0; i<
n; i++) {
4355 if (x[i] >= xmin && x[i] <= xmax && y[i] >= ymin && y[i] <= ymax) {
4358 if (i < n-1)
continue;
4360 if (np == 0)
continue;
4361 if (!
gPad->IsBatch())
4379 if (!
gPad->IsBatch())
4392 if (!
gPad->IsBatch())
4405 if (!
gPad->IsBatch())
4422 if (!
gPad->IsBatch())
4450 if (
gPad == 0)
return 0;
4457 if (
this !=
gPad->GetCanvas()) {
4458 if (!((x >=
fX1 && x <=
fX2) && (y >=
fY1 && y <=
fY2)))
return 0;
4466 TPad *picked =
this;
4470 pickobj = &dummyLink;
4499 pick = ((
TPad*)obj)->
Pick(px, py, pickobj);
4504 }
else if (!
gROOT->GetEditorMode()) {
4511 if (dist == 0)
break;
4526 if (
fView && !gotPrim) {
4550 if (picked ==
this) {
4572 while ((obj = next()))
4574 char *opt =
StrDup(next.GetOption());
4601 ((
TPad*)
this)->SaveAs(filename);
4613 while ((obj = next())) {
4758 const char *filename;
4776 filename = fs2.
Data();
4779 const char *opt_default=
"ps";
4781 Int_t lenfil = filename ? strlen(filename) : 0;
4782 TString opt = (!option) ? opt_default : option;
4804 if (strstr(opt,
"gif+")) {
4807 }
else if (strstr(opt,
"gif")) {
4810 }
else if (strstr(opt,
"png")) {
4813 }
else if (strstr(opt,
"jpg")) {
4816 }
else if (strstr(opt,
"tiff")) {
4819 }
else if (strstr(opt,
"xpm")) {
4822 }
else if (strstr(opt,
"bmp")) {
4829 if (!
gROOT->IsBatch() && image) {
4832 Color_t hc =
gPad->GetCanvas()->GetHighLightColor();
4833 gPad->GetCanvas()->SetHighLightColor(-1);
4839 Info(
"Print",
"GIF file %s has been created", psname.
Data());
4841 gPad->GetCanvas()->SetHighLightColor(hc);
4845 Color_t hc =
gPad->GetCanvas()->GetHighLightColor();
4846 gPad->GetCanvas()->SetHighLightColor(-1);
4861 Info(
"Print",
"file %s has been created", psname.
Data());
4863 gPad->GetCanvas()->SetHighLightColor(hc);
4865 Warning(
"Print",
"Unsupported image format %s", psname.
Data());
4871 if (strstr(opt,
"cxx")) {
4877 if (strstr(opt,
"root")) {
4883 if (strstr(opt,
"xml")) {
4890 if (strstr(opt,
"json")) {
4896 if (strstr(opt,
"svg")) {
4911 if ((h =
gROOT->GetPluginManager()->FindHandler(
"TVirtualPS",
"svg"))) {
4938 if (strstr(opt,
"tex")) {
4953 if ((h =
gROOT->GetPluginManager()->FindHandler(
"TVirtualPS",
"tex"))) {
4989 copen = psname.
EndsWith(
"(");
if (copen) psname[psname.
Length()-1] = 0;
4990 cclose = psname.
EndsWith(
")");
if (cclose) psname[psname.
Length()-1] = 0;
4991 copenb = psname.
EndsWith(
"[");
if (copenb) psname[psname.
Length()-1] = 0;
4992 ccloseb = psname.
EndsWith(
"]");
if (ccloseb) psname[psname.
Length()-1] = 0;
4996 if (copen || copenb) mustClose =
kFALSE;
4997 if (cclose || ccloseb) mustClose =
kTRUE;
5008 if (ratio < 1) pstype = 112;
5009 if (strstr(opt,
"Portrait")) pstype = 111;
5010 if (strstr(opt,
"Landscape")) pstype = 112;
5011 if (strstr(opt,
"eps")) pstype = 113;
5012 if (strstr(opt,
"Preview")) pstype = 113;
5020 if (strstr(opt,
"pdf") || strstr(opt,
"Title:")) {
5021 if ((h =
gROOT->GetPluginManager()->FindHandler(
"TVirtualPS",
"pdf"))) {
5027 if ((h =
gROOT->GetPluginManager()->FindHandler(
"TVirtualPS",
"image"))) {
5032 if ((h =
gROOT->GetPluginManager()->FindHandler(
"TVirtualPS",
"ps"))) {
5041 if (titlePos !=
kNPOS) {
5048 if (!strstr(opt,
"pdf") || image) {
5065 if (!copen)
Info(
"Print",
"%s file %s has been created", opt.
Data(), psname.
Data());
5066 else Info(
"Print",
"%s file %s has been created using the current canvas", opt.
Data(), psname.
Data());
5075 if (titlePos !=
kNPOS) {
5082 if (cclose)
Info(
"Print",
"Current canvas added to %s file %s and file closed", opt.
Data(), psname.
Data());
5083 else Info(
"Print",
"%s file %s has been closed", opt.
Data(), psname.
Data());
5088 Info(
"Print",
"Current canvas added to %s file %s", opt.
Data(), psname.
Data());
5105 if ((x1 >= x2) || (y1 >= y2)) {
5106 Error(
"Range",
"illegal world coordinates range: x1=%f, y1=%f, x2=%f, y2=%f",x1,y1,x2,y2);
5115 if (
fX1 == x1 &&
fY1 == y1 &&
fX2 == x2 &&
fY2 == y2)
return;
5143 if ((xmin >= xmax) || (ymin >= ymax)) {
5144 Error(
"RangeAxis",
"illegal axis coordinates range: xmin=%f, ymin=%f, xmax=%f, ymax=%f",
5145 xmin, ymin, xmax, ymax);
5197 while ((obj = next())) {
5208 if (h1f) h1f->
DrawCopy(
"sameaxis");
5227 if (padsav) padsav->
cd();
5357 if (
this ==
gPad->GetCanvas()) {
5389 fYtoPixelk = rounding + -pyrange - pyrange*fY1/yrange;
5410 while ((obj = next())) {
5416 if (
gPad->IsBatch())
5434 Warning(
"ResizePad",
"Inf/NaN propagated to the pad. Check drawn objects.");
5435 if (w <= 0 || w > 10000) {
5436 Warning(
"ResizePad",
"%s width changed from %d to %d\n",
GetName(),w,10);
5439 if (h <= 0 || h > 10000) {
5440 Warning(
"ResizePad",
"%s height changed from %d to %d\n",
GetName(),h,10);
5455 if (padsav ==
this) {
5489 Int_t lenfil = filename ? strlen(filename) : 0;
5492 else psname = filename;
5555 const char *cname =
GetName();
5556 Int_t nch = strlen(cname);
5558 strlcpy(lcname,cname,10);
5559 for (
Int_t k=1;k<=nch;k++) {
if (lcname[nch-k] ==
' ') lcname[nch-k] = 0;}
5560 if (lcname[0] == 0) {
5561 if (
this ==
gPad->GetCanvas()) {strlcpy(lcname,
"c1",10); nch = 2;}
5562 else {strlcpy(lcname,
"pad",10); nch = 3;}
5568 if (
this !=
gPad->GetCanvas()) {
5569 out <<
" "<<std::endl;
5570 out <<
"// ------------>Primitives in pad: "<<
GetName()<<std::endl;
5572 out<<
" TPad *"<<cname<<
" = new TPad("<<quote<<
GetName()<<quote<<
", "<<quote<<
GetTitle()
5579 out<<
" "<<cname<<
"->Draw();"<<std::endl;
5580 out<<
" "<<cname<<
"->cd();"<<std::endl;
5582 out<<
" "<<cname<<
"->Range("<<
fX1<<
","<<
fY1<<
","<<
fX2<<
","<<
fY2<<
");"<<std::endl;
5587 static Int_t viewNumber = 0;
5588 out<<
" TView *view"<<++viewNumber<<
" = TView::CreateView(1);"<<std::endl;
5589 out<<
" view"<<viewNumber<<
"->SetRange("<<rmin[0]<<
","<<rmin[1]<<
","<<rmin[2]<<
"," 5590 <<rmax[0]<<
","<<rmax[1]<<
","<<rmax[2]<<
");"<<std::endl;
5595 out<<
" "<<cname<<
"->SetFillColor(ci);" << std::endl;
5597 out<<
" "<<cname<<
"->SetFillColor("<<
GetFillColor()<<
");"<<std::endl;
5600 out<<
" "<<cname<<
"->SetFillStyle("<<
GetFillStyle()<<
");"<<std::endl;
5603 out<<
" "<<cname<<
"->SetBorderMode("<<
GetBorderMode()<<
");"<<std::endl;
5606 out<<
" "<<cname<<
"->SetBorderSize("<<
GetBorderSize()<<
");"<<std::endl;
5609 out<<
" "<<cname<<
"->SetLogx();"<<std::endl;
5612 out<<
" "<<cname<<
"->SetLogy();"<<std::endl;
5615 out<<
" "<<cname<<
"->SetLogz();"<<std::endl;
5618 out<<
" "<<cname<<
"->SetGridx();"<<std::endl;
5621 out<<
" "<<cname<<
"->SetGridy();"<<std::endl;
5624 out<<
" "<<cname<<
"->SetTickx("<<
GetTickx()<<
");"<<std::endl;
5627 out<<
" "<<cname<<
"->SetTicky("<<
GetTicky()<<
");"<<std::endl;
5630 out<<
" "<<cname<<
"->SetTheta("<<
GetTheta()<<
");"<<std::endl;
5633 out<<
" "<<cname<<
"->SetPhi("<<
GetPhi()<<
");"<<std::endl;
5636 out<<
" "<<cname<<
"->SetLeftMargin("<<
GetLeftMargin()<<
");"<<std::endl;
5639 out<<
" "<<cname<<
"->SetRightMargin("<<
GetRightMargin()<<
");"<<std::endl;
5642 out<<
" "<<cname<<
"->SetTopMargin("<<
GetTopMargin()<<
");"<<std::endl;
5645 out<<
" "<<cname<<
"->SetBottomMargin("<<
GetBottomMargin()<<
");"<<std::endl;
5651 out<<
" "<<cname<<
"->SetFrameFillColor(ci);" << std::endl;
5664 out<<
" "<<cname<<
"->SetFrameLineColor(ci);" << std::endl;
5684 out<<
" "<<cname<<
"->SetFrameFillColor(ci);" << std::endl;
5686 out<<
" "<<cname<<
"->SetFrameFillColor("<<frame->
GetFillColor()<<
");"<<std::endl;
5689 out<<
" "<<cname<<
"->SetFrameFillStyle("<<frame->
GetFillStyle()<<
");"<<std::endl;
5692 out<<
" "<<cname<<
"->SetFrameLineStyle("<<frame->
GetLineStyle()<<
");"<<std::endl;
5697 out<<
" "<<cname<<
"->SetFrameLineColor(ci);" << std::endl;
5699 out<<
" "<<cname<<
"->SetFrameLineColor("<<frame->
GetLineColor()<<
");"<<std::endl;
5702 out<<
" "<<cname<<
"->SetFrameLineWidth("<<frame->
GetLineWidth()<<
");"<<std::endl;
5705 out<<
" "<<cname<<
"->SetFrameBorderMode("<<frame->
GetBorderMode()<<
");"<<std::endl;
5708 out<<
" "<<cname<<
"->SetFrameBorderSize("<<frame->
GetBorderSize()<<
");"<<std::endl;
5716 while ((obj = next())) {
5718 if (!strcmp(obj->
GetName(),
"Graph")) ((
TGraph*)obj)->SetName(
Form(
"Graph%d",grnum++));
5721 out<<
" "<<cname<<
"->Modified();"<<std::endl;
5723 if (padsav) padsav->
cd();
5736 Error(
"SetAspectRatio",
"cannot fix aspect ratio, height of pad is 0");
5760 while ((obj = next())) {
5774 if (fstyle == 0) fstyle = 4000;
5867 SetPad(xlow, ylow, xup, yup);
5875 if (!view)
delete fView;
5948 x1 = x2 = y1 = y2 = 0;
5950 if (aBBox.
fX<bBBox.
fX) {
5966 else if (mode ==
'y') {
5967 if (aBBox.
fY<bBBox.
fY) {
6005 : fa(0), fb(0), fdist(0), fdir(
' ')
6009 : fa(a), fb(b), fdist(dist), fdir(direction)
6035 std::vector<dField> curDist;
6036 std::vector<dField> otherDist;
6046 Int_t dSizeArrow = 12;
6048 movedX = movedY =
false;
6051 if (mode !=
'i') resize =
true;
6053 TPad *is_pad =
dynamic_cast<TPad *
>( object );
6058 static TPad * tmpGuideLinePad;
6061 if (tmpGuideLinePad) {
6062 if (
object == tmpGuideLinePad) {
6063 tmpGuideLinePad->
Delete();
6064 tmpGuideLinePad = 0;
6067 tmpGuideLinePad->
Delete();
6068 tmpGuideLinePad = 0;
6072 prims =
gPad->GetListOfPrimitives();
6079 if (!tmpGuideLinePad){
6080 tmpGuideLinePad =
new TPad(
"tmpGuideLinePad",
"tmpGuideLinePad", 0, 0, 1, 1);
6082 gPad->GetRange(x1, y1, x2, y2);
6083 tmpGuideLinePad->
Range(x1, y1, x2, y2);
6086 tmpGuideLinePad->
Draw();
6087 tmpGuideLinePad->
cd();
6088 gPad->GetRange(x1, y1, x2, y2);
6090 if (cling && !log) threshold = 7;
6103 MX =
gPad->GetX1() + 0.5 * (
gPad->GetX2()-
gPad->GetX1());
6104 MY =
gPad->GetY1() + 0.5 * (
gPad->GetY2()-
gPad->GetY1());
6105 pMX =
gPad->XtoPixel(MX);
6106 pMY =
gPad->YtoPixel(MY);
6109 if (cling && (!resize)) {
6121 if (cling && (!resize)) {
6133 for (
UInt_t i = 0; i<
n; i++) {
6139 if (cling && (!resize)) {
6151 if (cling && (!resize)) {
6166 for (
UInt_t i = 0; i<
n; i++) {
6170 for (
UInt_t j = i+1; j<
n; j++) {
6178 dField abDist = dField();
6181 if ((b != cur)&&(a != cur)) otherDist.push_back(abDist);
6182 else curDist.push_back(abDist);
6186 dField abDist = dField();
6189 if ((b != cur)&&(a != cur)) otherDist.push_back(abDist);
6190 else curDist.push_back(abDist);
6198 for (
UInt_t i = 0; i<curDist.size(); i++) {
6199 for (
UInt_t j = 0; j<otherDist.size(); j++) {
6200 if ((curDist[i].fdir == otherDist[j].fdir)&&(otherDist[j].fdir==
'x')&&(
TMath::Abs(curDist[i].fdist-otherDist[j].fdist)<threshold)) {
6201 if (cling && (!movedX) && (!resize)) {
6207 DrawDist(curDist[i].fa->GetBBox(), curDist[i].fb->GetBBox(),
'x');
6208 DrawDist(otherDist[j].fa->GetBBox(), otherDist[j].fb->GetBBox(),
'x');
6210 if ((curDist[i].fdir == otherDist[j].fdir)&&(otherDist[j].fdir==
'y')&&(
TMath::Abs(curDist[i].fdist-otherDist[j].fdist)<threshold)) {
6211 if (cling && (!movedY) && (!resize)) {
6217 DrawDist(curDist[i].fa->GetBBox(), curDist[i].fb->GetBBox(),
'y');
6218 DrawDist(otherDist[j].fa->GetBBox(), otherDist[j].fb->GetBBox(),
'y');
6221 for (
UInt_t j = i; j<curDist.size(); j++) {
6223 if ((curDist[i].fdir == curDist[j].fdir)&&(curDist[j].fdir==
'x')&&(
TMath::Abs(curDist[i].fdist-curDist[j].fdist)<threshold)) {
6224 if (cling && (!movedX) && (!resize)) {
6229 DrawDist(curDist[i].fa->GetBBox(), curDist[i].fb->GetBBox(),
'x');
6230 DrawDist(curDist[j].fa->GetBBox(), curDist[j].fb->GetBBox(),
'x');
6233 if ((curDist[i].fdir == curDist[j].fdir)&&(curDist[j].fdir==
'y')&&(
TMath::Abs(curDist[i].fdist-curDist[j].fdist)<threshold)) {
6234 if (cling && (!movedY) && (!resize)) {
6239 DrawDist(curDist[i].fa->GetBBox(), curDist[i].fb->GetBBox(),
'y');
6240 DrawDist(curDist[j].fa->GetBBox(), curDist[j].fb->GetBBox(),
'y');
6247 for (
UInt_t i = 0; i<
n; i++) {
6249 if (a && (cur != a)) {
6262 gPad->PixeltoX(aBBox.
fX+aBBox.
fWidth),
gPad->PixeltoY(aBBox.
fY-dSizeArrow-
gPad->VtoPixel(0)), 0.01,
"<|>");
6304 if (tmpGuideLinePad) {
6307 tmpGuideLinePad->
Delete();
6308 tmpGuideLinePad = 0;
6375 if (text && strlen(text))
6394 Int_t nch, nobjects;
6414 while ((obj = next())) {
6433 TObject::Streamer(b);
6434 TAttLine::Streamer(b);
6435 TAttFill::Streamer(b);
6436 b >> single;
fX1 = single;
6437 b >> single;
fY1 = single;
6438 b >> single;
fX2 = single;
6439 b >> single;
fY2 = single;
6442 TAttPad::Streamer(b);
6444 TVirtualPad::Streamer(b);
6445 TAttPad::Streamer(b);
6446 b >> single;
fX1 = single;
6447 b >> single;
fY1 = single;
6448 b >> single;
fX2 = single;
6449 b >> single;
fY2 = single;
6476 b >> single;
fWNDC = single;
6477 b >> single;
fHNDC = single;
6482 b >> single;
fUxmin = single;
6483 b >> single;
fUymin = single;
6484 b >> single;
fUxmax = single;
6485 b >> single;
fUymax = single;
6487 TVirtualPad::Streamer(b);
6488 TAttPad::Streamer(b);
6547 char drawoption[64];
6548 for (
Int_t i = 0; i < nobjects; i++) {
6573 b >> single;
fTheta = single;
6574 b >> single;
fPhi = single;
6638 while ((obj = next())) {
6722 if (!
gPad)
return 0;
6724 if (strlen(emode))
gROOT->SetEditorMode(emode);
6725 if (
gROOT->GetEditorMode() == 0 && strlen(pname) > 2)
gROOT->SetEditorMode(&pname[1]);
6729 TObject *oldlast =
gPad->GetListOfPrimitives()->Last();
6732 Bool_t hasname = strlen(pname) > 0;
6733 if (!pname[0] && !emode[0]) testlast =
kTRUE;
6734 if (testlast)
gROOT->SetEditorMode();
6736 if (
gROOT->GetEditorMode() == 0) {
6739 if (obj)
return obj;
6742 obj =
gPad->GetListOfPrimitives()->Last();
6743 if (obj != oldlast)
return obj;
6764 if (
gPad->IsBatch())
return 0;
6765 return (
TObject*)
gROOT->ProcessLineFast(
Form(
"new TGToolTip((TBox*)0x%lx,\"%s\",%d)",
6776 gROOT->ProcessLineFast(
Form(
"delete (TGToolTip*)0x%lx", (
Long_t)tip));
6787 gROOT->ProcessLineFast(
Form(
"((TGToolTip*)0x%lx)->Reset((TPad*)0x%lx)",
6798 gROOT->ProcessLineFast(
Form(
"((TGToolTip*)0x%lx)->Hide()",(
Long_t)tip));
6806 ::Info(
"TPad::x3d()",
"This function is deprecated. Use %s->GetViewer3D(\"x3d\") instead",this->
GetName());
6809 if (!type || !type[0]) {
6826 if ( (!type || !type[0] || (strstr(type,
"gl") && !strstr(type,
"ogl"))) && !
fCanvas->
UseGL())
6829 if (type && type[0]) {
6854 if (!strstr(type,
"pad")) {
6858 Warning(
"TPad::CreateViewer3D",
"Cannot create 3D viewer of type: %s", type);
6864 if (strstr(type,
"gl") && !strstr(type,
"ogl"))
6867 createdExternal =
kTRUE;
6883 if (createdExternal) {
6920 Emit(
"RecordPave(const TObject*)", (
Long_t)obj);
6928 Emit(
"RecordLatex(const TObject*)", (
Long_t)obj);
Style_t GetFrameFillStyle() const
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.
Bool_t fAbsCoord
Use absolute coordinates.
void FillCollideGridTGraph(TObject *o)
virtual const char * GetName() const
Returns name of object.
virtual Bool_t AccessPathName(const char *path, EAccessMode mode=kFileExists)
Returns FALSE if one can access a file using the specified access mode.
Int_t GetNdata()
Return the number of data members of this class Note that in case the list of data members is not yet...
virtual void SetLineWidth(Width_t lwidth)
Set the line width.
TVirtualPad * GetPadSave() const
Get save pad.
Int_t VtoPixel(Double_t v) const
Double_t fPixeltoX
xworld = fPixeltoXk + fPixeltoX*xpixel
virtual void SetOpacity(Int_t percent)=0
Double_t fUymin
Minimum value on the Y axis.
void FeedbackMode(Bool_t set)
Turn rubberband feedback mode on or off.
double dist(Rotation3D const &r1, Rotation3D const &r2)
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 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.
Style_t GetTitleFont(Option_t *axis="X") const
Return title font.
TList * GetListOfBases()
Return list containing the TBaseClass(es) of a class.
virtual void SetAlpha(Float_t a)
void DrawCollideGrid()
This method draws the collide grid on top of the canvas.
static Int_t DecreaseDirLevel()
Decrease the indentation level for ls().
virtual void DrawBox(Double_t x1, Double_t y1, Double_t x2, Double_t y2)=0
virtual Bool_t ProcessEvents()
Process pending events (GUI, timers, sockets).
static void PolyLine(Int_t event, Int_t px, Int_t py, Int_t mode)
Create a new PolyLine in gPad.
Float_t GetLeftMargin() const
void PaintLineNDC(Double_t u1, Double_t v1, Double_t u2, Double_t v2)
Paint line in normalized coordinates.
virtual Int_t WriteClassBuffer(const TClass *cl, void *pointer)=0
virtual void DrawClassObject(const TObject *obj, Option_t *option="")
Draw class inheritance tree of the class to which obj belongs.
Double_t GetAbsYlowNDC() const
void SetPadGridX(Bool_t gridx)
virtual Double_t GetBinCenter(Int_t bin) const
Return bin center for 1D histogram.
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
TList * fPrimitives
->List of primitives (subpads)
virtual void ResizePad(Option_t *option="")
Compute pad conversion coefficients.
virtual void Draw(Option_t *option="")
Draw this pavetext with its current attributes.
Double_t Floor(Double_t x)
virtual void SetCursor(ECursor cursor)
Set cursor.
void SetPadLeftMargin(Float_t margin=0.1)
Float_t GetPadLeftMargin() const
Int_t GetFirst() const
Return first bin on the axis i.e.
Double_t YtoPad(Double_t y) const
Convert y from Y to pad.
ABC describing GUI independent main window (with menubar, scrollbars and a drawing area)...
virtual void DrawPolyLineNDC(Int_t n, const Double_t *u, const Double_t *v)=0
TVirtualPad * GetSelectedPad() const
virtual TBox * DrawBox(Double_t x1, Double_t y1, Double_t x2, Double_t y2)
Draw this box with new coordinates.
virtual void SetMaximum(Double_t maximum=-1111)
This class displays a legend box (TPaveText) containing several legend entries.
Int_t UtoPixel(Double_t u) const
TList * GetListOfPrimitives() const
TH1 * GetHistogram() const
Returns a pointer to the histogram used to draw the axis Takes into account the two following cases...
The Histogram stack class.
R__EXTERN Int_t gErrorIgnoreLevel
virtual void DrawCrosshair()
Function called to draw a crosshair in the canvas.
virtual Short_t GetBorderSize() const
virtual void SetLimits(Double_t xmin, Double_t xmax)
virtual TVirtualPad * GetPad(Int_t subpadnumber) const
Get a pointer to subpadnumber of this pad.
virtual TBox * AddBox(Double_t x1, Double_t y1, Double_t x2, Double_t y2)
Add a new graphics box to this pavetext.
Color_t GetTitleTextColor() const
virtual void XYtoAbsPixel(Double_t x, Double_t y, Int_t &xpixel, Int_t &ypixel) const
virtual void SetBatch(Bool_t batch=kTRUE)
Set pad in batch mode.
virtual Color_t GetTextColor() const
Return the text color.
Bool_t fGridx
Set to true if grid along X.
Double_t fPhi
phi angle to view as lego/surface
Int_t GetNmethods()
Return the number of methods of this class Note that in case the list of methods is not yet created...
TVirtualPadPainter * GetCanvasPainter()
Access and (probably) creation of pad painter.
void CallRecursiveRemoveIfNeeded(TObject &obj)
call RecursiveRemove for obj if gROOT is valid and obj.TestBit(kMustCleanup) is true.
virtual void WCtoNDC(const Float_t *pw, Float_t *pn)=0
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
Computes distance from point (px,py) to the object.
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 Bool_t CanLoopOnPrimitives() const
virtual void Paint(Option_t *option="")
Paint all primitives in pad.
virtual void SetBorderMode(Short_t bordermode)
virtual Short_t GetTextAlign() const
Return the text alignment.
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 Double_t GetBinLowEdge(Int_t bin) const
Return low edge of bin.
Int_t YtoPixel(Double_t y) const
virtual void UseCurrentStyle()
Replace current frame attributes by current style.
Int_t GetCanvasID() const
Get canvas identifier.
All ROOT classes may have RTTI (run time type identification) support added.
void CopyBackgroundPixmaps(TPad *start, TPad *stop, Int_t x, Int_t y)
Copy pixmaps of pads laying below pad "stop" into pad "stop".
virtual Bool_t IsRetained() const
Is pad retained ?
Int_t GetPixmapID() const
virtual Double_t GetNormFactor() const
TString & ReplaceAll(const TString &s1, const TString &s2)
void PaintPadFrame(Double_t xmin, Double_t ymin, Double_t xmax, Double_t ymax)
Paint histogram/graph frame.
static Int_t GetColorDark(Int_t color)
Static function: Returns the dark color number corresponding to n If the TColor object does not exist...
Float_t GetBottomMargin() const
virtual void SetVertical(Bool_t vert=kTRUE)
Set pad vertical (default) or horizontal.
TClass * GetClassPointer(Bool_t load=kTRUE)
Get pointer to the base class TClass.
R__EXTERN TStyle * gStyle
Float_t fBottomMargin
BottomMargin.
Int_t fNumPaletteColor
Number of objects with an automatic color.
void PaintFillArea(Int_t n, Float_t *x, Float_t *y, Option_t *option="")
virtual void SetName(const char *name)
Set the name of the TNamed.
virtual void RangeChanged()
virtual void SetSelected(TObject *obj)
Set selected.
virtual void Draw(Option_t *option="")
Draw this legend with its current attributes.
THist< 1, float, THistStatContent, THistStatUncertainty > TH1F
static void SaveColor(std::ostream &out, Int_t ci)
Save a color with index > 228 as a C++ statement(s) on output stream out.
void PaintPolyLineNDC(Int_t n, Double_t *x, Double_t *y, Option_t *option="")
Paint polyline in CurrentPad NDC coordinates.
Short_t fBorderSize
pad bordersize in pixels
Int_t fCGnx
! Size of the collide grid along x
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.
virtual void DrawPolyMarker(Int_t n, Float_t *x, Float_t *y)=0
TObject * GetSelected() const
Get selected.
virtual void SetBBoxCenter(const TPoint &p)
Set center of the Pad.
Bool_t GetPadGridY() const
virtual void SetFixedAspectRatio(Bool_t fixed=kTRUE)
Fix pad aspect ratio to current value if fixed is true.
virtual Double_t GetSumOfWeights() const
Return the sum of weights excluding under/overflows.
virtual void SetBorderMode(Short_t bordermode)
virtual Double_t GetBinContent(Int_t bin) const
Return content of bin number bin.
virtual Float_t GetTextAngle() const
Return the text angle.
virtual TObject * Last() const
Return the last object in the list. Returns 0 when list is empty.
A TMultiGraph is a collection of TGraph (or derived) objects.
virtual ~TPad()
Pad destructor.
virtual Color_t GetHighLightColor() const
Get highlight color.
Double_t fAbsXlowNDC
Absolute X top left corner of pad in NDC [0,1].
virtual void AddFirst(TObject *obj)
Add object at the beginning of the list.
virtual TText * AddText(Double_t x1, Double_t y1, const char *label)
Add a new Text line to this pavetext at given coordinates.
virtual Bool_t IsVertical() const
void FillCollideGridTFrame(TObject *o)
Buffer base class used for serializing objects.
TList * fExecs
List of commands to be executed when a pad event occurs.
virtual void CopyPixmap()
Copy the pixmap of the pad to the canvas.
virtual TObject * FindObject(const char *name) const
Search if object named name is inside this pad or in pads inside this pad.
TPluginHandler * FindHandler(const char *base, const char *uri=0)
Returns the handler if there exists a handler for the specified URI.
TVirtualPad * GetPadSave() const
Int_t XtoPixel(Double_t x) const
Double_t GetAbsXlowNDC() const
if object in a pad cannot be picked
virtual void SetMinimum(Double_t minimum=-1111)
virtual Int_t CheckByteCount(UInt_t startpos, UInt_t bcnt, const TClass *clss)=0
TList * GetListOfDataMembers(Bool_t load=kTRUE)
Return list containing the TDataMembers of a class.
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
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.
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
virtual void GetRangeAxis(Double_t &xmin, Double_t &ymin, Double_t &xmax, Double_t &ymax)
Return pad axis coordinates range.
Int_t GetPadTickY() const
Double_t fUxmax
Maximum value on the X axis.
Int_t LoadPlugin()
Load the plugin library for this handler.
Option_t * GetOption() const
void PaintBorder(Color_t color, Bool_t tops)
Paint the pad border.
void SetTitleFont(Style_t font=62, Option_t *axis="X")
static constexpr double ps
1-D histogram with a float per channel (see TH1 documentation)}
Int_t fCGny
! Size of the collide grid along y
Bool_t PlaceBox(TObject *o, Double_t w, Double_t h, Double_t &xl, Double_t &yb)
Place a box in NDC space.
Double_t fUymax
Maximum value on the Y axis.
Short_t Min(Short_t a, Short_t b)
virtual void Update()
Update pad.
void ToLower()
Change string to lower-case.
virtual void SetBBoxY2(const Int_t y)=0
virtual Int_t CreateDrawable(UInt_t w, UInt_t h)=0
TVirtualPad * GetSelectedPad() const
Get selected pad.
virtual void PaintModified()
Traverse pad hierarchy and (re)paint only modified pads.
R__EXTERN TVirtualMutex * gROOTMutex
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="")
Default Draw method for all objects.
virtual void SetX1(Double_t x1)
virtual void SetFillStyle(Style_t fstyle)
Set the fill area style.
Double_t fVtoPixel
ypixel = fVtoPixelk + fVtoPixel*vndc
virtual void SetBBoxCenterX(const Int_t x)
Set X coordinate of the center of the Pad.
TObject * GetClickSelected() const
Double_t GetUxmin() const
Returns the minimum x-coordinate value visible on the pad. If log axis the returned value is in decad...
The histogram statistics painter class.
Double_t GetUxmax() const
Returns the maximum x-coordinate value visible on the pad. If log axis the returned value is in decad...
Option_t * GetOption() const
virtual void UseCurrentStyle()
Set current style settings in this object This function is called when either TCanvas::UseCurrentStyl...
virtual void SetLineWidth(Width_t lwidth)=0
virtual TObject * GetParent() const
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.
Int_t fPadPaint
Set to 1 while painting the pad.
Double_t fPixeltoXk
Conversion coefficient for pixel to X World.
Float_t fTopMargin
TopMargin.
TString & Prepend(const char *cs)
virtual Double_t GetBinLowEdge(Int_t bin) const
Return bin lower edge for 1D histogram.
virtual void Modify()
Change current line attributes if necessary.
virtual void SetX2(Double_t x2)
Bool_t IsModified() const
void box(Int_t pat, Double_t x1, Double_t y1, Double_t x2, Double_t y2)
Double_t fAbsWNDC
Absolute Width of pad along X in NDC.
virtual Int_t GetEvent() const
Get Event.
void SetPadBottomMargin(Float_t margin=0.1)
Double_t fAbsPixeltoYk
Conversion coefficient for absolute pixel to Y World.
Double_t GetXlowNDC() const
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...
bit set when zooming on Y axis
virtual TVirtualPad * cd(Int_t subpadnumber=0)=0
virtual Width_t GetLineWidth() const
Return the line width.
virtual void RecursiveRemove(TObject *obj)
Recursively remove object from a pad and its sub-pads.
void SetPadBorderSize(Width_t size=1)
virtual void SetTopMargin(Float_t topmargin)
Set Pad top margin in fraction of the pad height.
virtual Bool_t IsEditable() const =0
virtual void DrawBox(Double_t x1, Double_t y1, Double_t x2, Double_t y2, EBoxMode mode)=0
virtual Double_t GetX1() const =0
Int_t fNumber
pad number identifier
virtual void AddLast(TObject *obj)
Add object at the end of the list.
Int_t GetHatchesLineWidth() const
LongDouble_t Power(LongDouble_t x, LongDouble_t y)
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
static constexpr double mg
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...
Double_t fAbsYlowNDC
Absolute Y top left corner of pad in NDC [0,1].
virtual TObject * FindObject(const char *name) const
Delete a TObjLink object.
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.
if object in a list can be deleted
virtual Double_t GetBinUpEdge(Int_t bin) const
Return up edge of bin.
TString & Replace(Ssiz_t pos, Ssiz_t n, const char *s)
Double_t GetHatchesSpacing() const
virtual void SetToolTipText(const char *text, Long_t delayms=1000)
Set tool tip text associated with this pad.
void SetOptLogz(Int_t logz=1)
virtual Style_t GetFillStyle() const =0
virtual void SaveImage(TVirtualPad *pad, const char *fileName, Int_t type) const =0
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.
virtual void SetTextFont(Font_t tfont=62)
Set the text font.
void SetClickSelected(TObject *obj)
virtual Style_t GetLineStyle() const
Return the line style.
virtual Int_t GetDimension() const
void SetTitleBorderSize(Width_t size=2)
virtual TVirtualViewer3D * GetViewer3D(Option_t *type="")
Create/obtain handle to 3D viewer.
Provides 3D viewer interface (TVirtualViewer3D) support on a pad.
virtual void DrawTextNDC(Double_t u, Double_t v, const char *text, ETextMode mode)=0
TVirtualPad * cd(Int_t subpadnumber=0)
Set Current pad.
static const double x2[5]
Double_t fYtoAbsPixelk
Conversion coefficient for Y World to absolute pixel.
virtual const char * ClassName() const
Returns name of class to which the object belongs.
Int_t fNextPaletteColor
Next automatic color.
void PaintDate()
Paint the current date and time if the option date is on.
virtual void Cleared(TVirtualPad *pad)
Emit pad Cleared signal.
virtual TVirtualPad * GetVirtCanvas() const
Get virtual canvas.
virtual void Close(Option_t *option="")
Delete all primitives in pad and pad itself.
R__EXTERN Int_t(* gThreadXAR)(const char *xact, Int_t nb, void **ar, Int_t *iret)
Bool_t GetPadGridX() const
virtual void Sleep(UInt_t milliSec)
Sleep milliSec milli seconds.
virtual Bool_t IsBatch() const
Is pad in batch mode ?
virtual const char * GetName() const =0
Returns name of object.
TFrame * GetFrame()
Get frame.
virtual void DrawLineNDC(Double_t u1, Double_t v1, Double_t u2, Double_t v2)=0
Int_t GetPadTickX() const
The TNamed class is the base class for all named ROOT classes.
virtual Float_t GetTextSize() const
Return the text size.
void HighLight(Color_t col=kRed, Bool_t set=kTRUE)
Highlight pad.
virtual void Draw(Option_t *option="")
Draw this arrow with its current attributes.
Int_t fLogx
(=0 if X linear scale, =1 if log scale)
virtual Width_t GetLineWidth() const =0
TFrame * fFrame
! Pointer to 2-D frame (if one exists)
UInt_t GetWindowHeight() const
static Int_t GetMaxPickDistance()
Static function (see also TPad::SetMaxPickDistance)
Short_t GetBorderSize() const
void PaintTextNDC(Double_t u, Double_t v, const char *text)
Paint text in CurrentPad NDC coordinates.
virtual void Modify()
Change current fill area attributes if necessary.
Bool_t fEditable
True if canvas is editable.
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.) This member function is called when an axis is clicked with the locator.
TCanvas * fCanvas
! Pointer to mother canvas
virtual void SetCrosshair(Int_t crhair=1)
Set crosshair active/inactive.
const char * GetTitle() const
Returns title of object.
Double_t Log10(Double_t x)
UInt_t GetWw() const
Get Ww.
virtual void DrawText(Double_t x, Double_t y, const char *text, ETextMode mode)=0
static double p2(double t, double a, double b, double c)
TCanvasImp * GetCanvasImp() const
Get canvas implementation pointer if any.
void SetPadTickX(Int_t tickx)
virtual void SetBBoxX1(const Int_t x)
Set lefthandside of BoundingBox to a value (resize in x direction on left)
static const double x4[22]
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
Compute distance from point px,py to a box.
virtual void SetLineStyle(Style_t lstyle)=0
virtual void SetMarkerColor(Color_t mcolor=1)
Set the marker color.
TString & Append(const char *cs)
void SetSelectedPad(TPad *pad)
Bool_t EndsWith(const char *pat, ECaseCompare cmp=kExact) const
Return true if string ends with the specified string.
static constexpr double L
virtual void ls(Option_t *option="") const
List all primitives in pad.
static void DrawColorTable()
Static function to Display Color Table in a pad.
Base class for several text objects.
Int_t fCrosshairPos
Position of crosshair.
Abstract 3D shapes viewer.
void SetTitleTextColor(Color_t color=1)
Double_t fAbsHNDC
Absolute Height of pad along Y in NDC.
TH1F * GetHistogram()
Returns a pointer to the histogram used to draw the axis.
Int_t fLogz
(=0 if Z linear scale, =1 if log scale)
virtual void SetLogx(Int_t value=1)
Set Lin/Log scale for X.
virtual Rectangle_t GetBBox()=0
virtual void SetFillColor(Color_t fcolor)=0
Int_t GetColorPalette(Int_t i) const
Return color number i in current palette.
virtual TObject * GetSelected() const
Get selected.
virtual void RedrawAxis(Option_t *option="")
Redraw the frame axis Redrawing axis may be necessary in case of superimposed histograms when one or ...
TVirtualPad is an abstract base class for the Pad and Canvas classes.
void SaveSource(const char *filename="", Option_t *option="")
Save primitives in this canvas as a C++ macro file.
virtual void SetBorderSize(Short_t bordersize)
virtual TPad * Pick(Int_t px, Int_t py, TObjLink *&pickobj)
Search for an object at pixel position px,py.
virtual void DestroyDrawable(Int_t device)=0
virtual void Draw(Option_t *option="")
Draw Pad in Current pad (re-parent pad if necessary).
virtual void Text(Double_t x, Double_t y, const char *string)=0
R__EXTERN TPluginManager * gPluginMgr
Double_t fYlowNDC
Y bottom left corner of pad in NDC [0,1].
object has not been deleted
virtual void SetEditable(Bool_t mode=kTRUE)
Set pad editable yes/no If a pad is not editable:
Bool_t OpaqueMoving() const
Is pad moving in opaque mode ?
virtual void SetTextAlign(Short_t align=11)
Set the text alignment.
virtual Short_t GetBorderSize() const =0
static Bool_t SupportAlpha()
Static function returning "true" if transparency is supported.
Double_t fX2
X of upper X coordinate.
virtual Option_t * GetDrawOption() const
Get option used by the graphics system to draw this object.
Int_t GetEventX() const
Get X event.
Int_t GetMaxIndex(Int_t dim) const
Return maximum index for array dimension "dim".
virtual void CopyPixmaps()
Copy the sub-pixmaps of the pad to the canvas.
void SetOptLogx(Int_t logx=1)
Double_t GetYlowNDC() const
Double_t fXtoPixel
xpixel = fXtoPixelk + fXtoPixel*xworld
Bool_t * fCollideGrid
! Grid used to find empty space when adding a box (Legend) in a pad
Double_t fPixeltoY
yworld = fPixeltoYk + fPixeltoY*ypixel
void PaintPolyLine(Int_t n, Float_t *x, Float_t *y, Option_t *option="")
Paint polyline in CurrentPad World coordinates.
Int_t GetEvent() const
Get Event.
virtual void AddExec(const char *name, const char *command)
Add a new TExec object to the list of Execs.
virtual void SetLineColor(Color_t lcolor)
Set the line color.
virtual Int_t UtoPixel(Double_t u) const =0
virtual void Delete(Option_t *option="")
Delete this object.
Using a TBrowser one can browse all ROOT objects.
TObject * fPadView3D
! 3D View of this TPad
virtual Double_t GetY2() const =0
static Int_t GetColorBright(Int_t color)
Static function: Returns the bright color number corresponding to n If the TColor object does not exi...
Double_t fVtoPixelk
Conversion coefficient for V NDC to pixel.
Double_t fXtoAbsPixelk
Conversion coefficient for X World to absolute pixel.
virtual TCanvasImp * GetCanvasImp() const
Get canvas implementation pointer if any.
virtual void SetRange(Int_t first=0, Int_t last=0)
Set the viewing range for the axis from bin first to last.
TPad * fMother
! pointer to mother of the list
Double_t XtoPad(Double_t x) const
Convert x from X to pad.
virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py)
Execute action corresponding to one event.
virtual TVirtualPad * GetMother() const
Short_t GetBorderMode() const
virtual void SetDoubleBuffer(Int_t mode=1)
Set double buffer mode ON or OFF.
virtual Int_t GetPoint(Int_t i, Double_t &x, Double_t &y) const
Get x and y values for point number i.
virtual Int_t GetEventX() const
Get X event.
virtual void SetAttLinePS(Color_t color, Style_t style, Width_t lwidth)
Set postscript line attributes.
Int_t IncrementPaletteColor(Int_t i, TString opt)
Increment (i==1) or set (i>1) the number of autocolor in the pad.
virtual TObject * FindObject(const char *name) const
Must be redefined in derived classes.
void SetPadBorderMode(Int_t mode=1)
virtual void SetBottomMargin(Float_t bottommargin)
Set Pad bottom margin in fraction of the pad height.
virtual TObject * First() const
Return the first object in the list. Returns 0 when list is empty.
Int_t fPixmapID
! Off-screen pixmap identifier
virtual void DrawPolyLine(Int_t n, const Double_t *x, const Double_t *y)=0
virtual void SetCursor(ECursor cursor)
Set cursor type.
Int_t GetLast() const
Return last bin on the axis i.e.
virtual void DeleteToolTip(TObject *tip)
Delete tool tip object.
virtual Bool_t HasCrosshair() const
Return kTRUE if the crosshair has been activated (via SetCrosshair).
Class to manage histogram axis.
R__EXTERN TSystem * gSystem
virtual void CloseToolTip(TObject *tip)
Hide tool tip.
virtual void Draw(Option_t *option="")
Draw this histogram with options.
void SetPadColor(Color_t color=19)
Int_t GetPadBorderMode() const
Int_t YtoAbsPixel(Double_t y) const
Bool_t OpaqueResizing() const
Is pad resizing in opaque mode ?
virtual void SetFillColor(Color_t fcolor)
Set the fill area color.
virtual void SetBBoxX1(const Int_t x)=0
void inv(rsa_NUMBER *, rsa_NUMBER *, rsa_NUMBER *)
virtual void Range(Double_t x1, Double_t y1, Double_t x2, Double_t y2)
Set world coordinate system for the pad.
virtual Int_t XtoAbsPixel(Double_t x) const =0
virtual void SetAttFillPS(Color_t color, Style_t style)
Set postscript fill area attributes.
virtual void DrawLine(Double_t x1, Double_t y1, Double_t x2, Double_t y2)=0
virtual void DeleteExec(const char *name)
Remove TExec name from the list of Execs.
virtual Font_t GetTextFont() const
Return the text font.
Long_t ExecPlugin(int nargs, const T &... params)
virtual TPoint GetBBoxCenter()
Return the center of the Pad as TPoint in pixels.
virtual Bool_t IsEditable() const
Float_t GetPadBottomMargin() const
virtual TObject * Remove(TObject *obj)
Remove object from the list.
UInt_t GetWh() const
Get Wh.
virtual void UseCurrentStyle()
Force a copy of current style for all objects in pad.
Float_t GetPadRightMargin() const
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
Bool_t BeginsWith(const char *s, ECaseCompare cmp=kExact) const
virtual void SetTextAngle(Float_t tangle=0)
Set the text angle.
virtual TObject * GetPrimitive(const char *name) const
Get primitive.
Double_t GetAbsWNDC() const
virtual void SetBBoxY2(const Int_t y)
Set bottom of BoundingBox to a value (resize in y direction on bottom)
virtual UInt_t GetWh() const
Get Wh.
TView * fView
! Pointer to 3-D view (if one exists)
void PaintPolyMarker(Int_t n, Float_t *x, Float_t *y, Option_t *option="")
Paint polymarker in CurrentPad World coordinates.
const char * AsSQLString() const
Return the date & time in SQL compatible string format, like: 1997-01-15 20:16:28.
void CopyBackgroundPixmap(Int_t x, Int_t y)
Copy pixmap of this pad as background of the current pad.
virtual void SetView(TView *view=0)
Set the current TView. Delete previous view if view=0.
Width_t fLineWidth
Line width.
static TVirtualViewer3D * Viewer3D(TVirtualPad *pad=0, Option_t *type="")
Create a Viewer 3D of specified type.
The most important graphics class in the ROOT system.
virtual void SetLineColor(Color_t lcolor)=0
virtual Bool_t BuildingScene() const =0
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
char * Form(const char *fmt,...)
virtual void ResetToolTip(TObject *tip)
Reset tool tip, i.e.
virtual void SetAttMarkerPS(Color_t color, Style_t style, Size_t msize)
Set postscript marker attributes.
void AbsCoordinates(Bool_t set)
static Int_t GetColor(const char *hexcolor)
Static method returning color number for color specified by hex color string of form: "#rrggbb"...
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save primitives in this pad on the C++ source file out.
static void IndentLevel()
Functions used by ls() to indent an object hierarchy.
Int_t GetArrayDim() const
Return number of array dimensions.
The ROOT global object gROOT contains a list of all defined classes.
virtual void SetMarkerStyle(Style_t mstyle=1)
Set the marker style.
void PaintLine3D(Float_t *p1, Float_t *p2)
Paint 3-D line in the CurrentPad.
virtual Int_t GetNumber() const =0
virtual TObject * After(const TObject *obj) const
Returns the object after object obj.
virtual Int_t Exec(const char *shellcmd)
Execute a command.
static double p1(double t, double a, double b)
virtual TObject * At(Int_t idx) const
Returns the object at position idx. Returns 0 if idx is out of range.
Float_t fLeftMargin
LeftMargin.
virtual TCanvas * GetCanvas() const
virtual void Print(const char *filename="") const
Save Pad contents in a file in one of various formats.
virtual void SetCanvasSize(UInt_t ww, UInt_t wh)
Set canvas size.
Double_t fYtoPixel
ypixel = fYtoPixelk + fYtoPixel*yworld
virtual TVirtualPadPainter * GetPainter()
Get pad painter from TCanvas.
virtual void ReadFastArray(Bool_t *b, Int_t n)=0
Int_t GetNumberOfColors() const
Return number of colors in the color palette.
Bool_t fModified
Set to true when pad is modified.
virtual Int_t GetDistancetoAxis(Int_t axis, Int_t px, Int_t py, Double_t &ratio)=0
if object destructor must call RecursiveRemove()
virtual void SetMarkerSize(Size_t msize=1)
Set the marker size.
Int_t fCrosshair
Crosshair type (0 if no crosshair requested)
Each class (see TClass) has a linked list of its base class(es).
virtual Double_t GetY1() const =0
virtual TObjLink * FirstLink() const
TPad()
Pad default constructor.
void LineNotFree(Int_t x1, Int_t x2, Int_t y1, Int_t y2)
Mark as "not free" the cells along a line.
Color_t GetTitleFillColor() const
Double_t fUtoAbsPixelk
Conversion coefficient for U NDC to absolute pixel.
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...
Color_t GetHighLightColor() const
Get highlight color.
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
virtual void SelectDrawable(Int_t device)=0
char * StrDup(const char *str)
Duplicate the string str.
Double_t fY2
Y of upper Y coordinate.
virtual void ResizePad()=0
virtual void BeginScene()=0
Double_t fAspectRatio
ratio of w/h in case of fixed ratio
virtual Color_t GetLineColor() const
Return the line color.
virtual void SetY2(Double_t y2)
virtual Int_t YtoAbsPixel(Double_t y) const =0
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.
virtual void DrawFillArea(Int_t n, const Double_t *x, const Double_t *y)=0
virtual Int_t ReadClassBuffer(const TClass *cl, void *pointer, const TClass *onfile_class=0)=0
Width_t GetTitleBorderSize() const
virtual void Paint(Option_t *option="")
This method must be overridden if a class wants to paint itself.
virtual void HideToolTip(Int_t event)
Hide tool tip depending on the event type.
void PaintBox(Double_t x1, Double_t y1, Double_t x2, Double_t y2, Option_t *option="")
Paint box in CurrentPad World coordinates.
void FillCollideGridTBox(TObject *o)
virtual Double_t GetBinWidth(Int_t bin) const
Return bin width for 1D histogram.
static const double x1[5]
Double_t fVtoAbsPixelk
Conversion coefficient for V NDC to absolute pixel.
A Pave (see TPave) with text, lines or/and boxes inside.
void SetClickSelectedPad(TPad *pad)
Double_t fXtoPixelk
Conversion coefficient for X World to pixel.
virtual Double_t GetBinErrorLow(Int_t bin) const
Return lower error associated to bin number bin.
TH1F * GetHistogram() const
Returns a pointer to the histogram used to draw the axis Takes into account the two following cases...
TLegendEntry * AddEntry(const TObject *obj, const char *label="", Option_t *option="lpf")
Add a new entry to this legend.
Int_t GetGLDevice()
Get GL device.
virtual void ls(Option_t *option="") const
List (ls) all objects in this collection.
virtual Int_t GetEventY() const
Get Y event.
TVirtualPad * GetClickSelectedPad() const
UInt_t GetWindowWidth() const
Wrapper around a TObject so it can be stored in a TList.
Bool_t fGridy
Set to true if grid along Y.
void SetCanvasSize(UInt_t ww, UInt_t wh)
Set Width and Height of canvas to ww and wh respectively.
Print a TSeq at the prompt:
virtual void SetFillStyle(Style_t fstyle)
Override TAttFill::FillStyle for TPad because we want to handle style=0 as style 4000.
Bool_t IsBatch() const
Is pad in batch mode ?
Float_t GetPadTopMargin() const
static void Pad(Int_t event, Int_t px, Int_t py, Int_t)
Create a new pad in gPad.
Double_t fTheta
theta angle to view as lego/surface
virtual void SetTextSize(Float_t tsize=1)=0
Bool_t IsGrayscale()
Check whether this canvas is to be drawn in grayscale mode.
virtual Color_t GetFillColor() const
Return the fill area color.
virtual void GetRange(Double_t &x1, Double_t &y1, Double_t &x2, Double_t &y2)
Return pad world coordinates range.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
virtual void SetBBoxY1(const Int_t y)=0
const char * AsString() const
Return the date & time as a string (ctime() format).
#define R__LOCKGUARD(mutex)
The color creation and management class.
void Browse(TBrowser *b)
Browse this collection (called by TBrowser).
virtual void SetBBoxY1(const Int_t y)
Set top of BoundingBox to a value (resize in y direction on top)
void FillCollideGridTH1(TObject *o)
Int_t fTickx
Set to 1 if tick marks along X.
virtual TPoint GetBBoxCenter()=0
Int_t GetCrosshair() const
Return the crosshair type (from the mother canvas) crosshair type = 0 means no crosshair.
virtual void Clear(Option_t *option="")
Remove all objects from the list.
virtual TObject * WaitPrimitive(const char *pname="", const char *emode="")
Loop and sleep until a primitive with name=pname is found in the pad.
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.
virtual void SetLineStyle(Style_t lstyle)
Set the line style.
Width_t GetPadBorderSize() const
void SetPadTopMargin(Float_t margin=0.1)
TVirtualViewer3D * fViewer3D
! Current 3D viewer
Color_t GetFrameLineColor() const
virtual void SetBBoxX2(const Int_t x)
Set right hand side of BoundingBox to a value (resize in x direction on right)
virtual void Draw(Option_t *option="")
Draw this box with its current attributes.
Int_t GetEventY() const
Get Y event.
virtual void SetRightMargin(Float_t rightmargin)
Set Pad right margin in fraction of the pad width.
virtual Style_t GetLineStyle() const =0
Double_t fXlowNDC
X bottom left corner of pad in NDC [0,1].
Double_t GetAbsHNDC() const
Float_t fRightMargin
RightMargin.
Mother of all ROOT objects.
virtual Int_t FindFixBin(Double_t x) const
Find bin number corresponding to abscissa x.
Bool_t fFixedAspectRatio
True if fixed aspect ratio.
void Clear(Option_t *option="")
Delete all pad primitives.
virtual Bool_t OpaqueMoving() const
Is pad moving in opaque mode ?
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.
TObject * GetObject() const
static Int_t IncreaseDirLevel()
Increase the indentation level for ls().
virtual void SetDoubleBuffer(Int_t mode=1)
Set Double Buffer On/Off.
Double_t GetUymax() const
Returns the maximum y-coordinate value visible on the pad. If log axis the returned value is in decad...
virtual void DrawPolyMarker(Int_t n, const Double_t *x, const Double_t *y)=0
virtual void Browse(TBrowser *b)
Browse pad.
virtual void RecordPave(const TObject *obj)
Emit RecordPave() signal.
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.
const char * GetName() const
Returns name of object.
Int_t XtoAbsPixel(Double_t x) const
Float_t GetTopMargin() const
Abstract base class for elements drawn in the editor.
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.
virtual Int_t VtoPixel(Double_t v) const =0
Double_t GetTheta() const
virtual void Add(TObject *obj)
virtual void PadPaint(TVirtualPad *)
virtual void AutoExec()
Execute the list of Execs when a pad event occurs.
void SetTitleFillColor(Color_t color=1)
virtual void RecursiveRemove(TObject *obj)
Remove object from this collection and recursively remove the object from all other objects (and coll...
virtual void SetBBoxX2(const Int_t x)=0
virtual Int_t GetMinimumBin() const
Return location of bin with minimum value in the range.
virtual void ReleaseViewer3D(Option_t *type="")
Release current (external) viewer.
virtual void SetBBoxCenterX(const Int_t x)=0
virtual UInt_t GetWw() const
Get Ww.
virtual Double_t GetX2() const =0
Short_t Max(Short_t a, Short_t b)
virtual Int_t VtoAbsPixel(Double_t v) const =0
void SetSelected(TObject *obj)
Set selected canvas.
Double_t fYtoPixelk
Conversion coefficient for Y World to pixel.
Width_t GetFrameBorderSize() const
void PaintPolyLine3D(Int_t n, Double_t *p)
Paint 3-D polyline in the CurrentPad.
virtual void Paint(Option_t *option="")
Paint this wbox with its current attributes.
Each ROOT class (see TClass) has a linked list of methods.
virtual void GetRange(Float_t *min, Float_t *max)=0
static void SetGrayscale(Bool_t set=kTRUE)
Set whether all colors should return grayscale values.
virtual Short_t GetBorderMode() const
A Graph is a graphics object made of two arrays X and Y with npoints each.
Int_t NextPaletteColor()
Get the next autocolor in the pad.
you should not use this method at all Int_t Int_t Double_t Double_t Double_t Int_t Double_t Double_t Double_t Double_t b
void SetOptLogy(Int_t logy=1)
Double_t Ceil(Double_t x)
Style_t GetFrameLineStyle() const
virtual void DrawPS(Int_t n, Float_t *xw, Float_t *yw)=0
Double_t fHNDC
Height of pad along Y in NDC.
R__EXTERN TVirtualPS * gVirtualPS
virtual void InvalidateCS()
Empty definition.
virtual TText * DrawText(Double_t x, Double_t y, const char *text)
Draw this text with new coordinates.
Double_t AbsPixeltoX(Int_t px)
virtual void SetTextColor(Color_t tcolor=1)
Set the text color.
virtual TObject * CreateToolTip(const TBox *b, const char *text, Long_t delayms)
Create a tool tip and return its pointer.
virtual void EndScene()=0
Double_t PadtoY(Double_t y) const
Convert y from pad to Y.
virtual Double_t GetBinErrorUp(Int_t bin) const
Return upper error associated to bin number bin.
virtual void Pop()
Pop pad to the top of the stack.
virtual TObjLink * LastLink() const
Bool_t IsRetained() const
Is pad retained ?
virtual void SetAttTextPS(Int_t align, Float_t angle, Color_t color, Style_t font, Float_t tsize)
Set postscript text attributes.
TObject * fPadPointer
! free pointer
virtual Rectangle_t GetBBox()
Return the bounding Box of the Pad.
virtual Bool_t OpaqueResizing() const
Is pad resizing in opaque mode ?
void SetPadTickY(Int_t ticky)
Color_t GetFrameFillColor() const
Width_t GetFrameLineWidth() const
void SetBatch(Bool_t batch=kTRUE)
Toggle batch mode.
void Emit(const char *signal, const T &arg)
Activate signal with single parameter.
Double_t fUtoPixelk
Conversion coefficient for U NDC to pixel.
virtual void RangeAxis(Double_t xmin, Double_t ymin, Double_t xmax, Double_t ymax)
Set axis coordinate system for the pad.
static void Line(Int_t event, Int_t px, Int_t py, Int_t mode)
Create a new line/arrow in this gPad.
TVirtualPS is an abstract interface to Postscript, PDF, SVG.
virtual void SetNumber(Int_t number)
Double_t fPixeltoYk
Conversion coefficient for pixel to Y World.
virtual Bool_t ExpandPathName(TString &path)
Expand a pathname getting rid of special shell characters like ~.
TExec is a utility class that can be used to execute a C++ command when some event happens in a pad...
virtual void HandleInput(EEventType button, Int_t x, Int_t y)
Handle Input Events.
virtual Int_t GetNbinsX() const
Double_t Sqrt(Double_t x)
virtual Style_t GetFillStyle() const
Return the fill area style.
virtual void SetTextSize(Float_t tsize=1)
Set the text size.
virtual void SaveAs(const char *filename="", Option_t *option="") const
Save Pad contents in a file in one of various formats.
virtual void Update()
Update canvas pad buffers.
Double_t PadtoX(Double_t x) const
Convert x from pad to X.
Draw all kinds of Arrows.
Double_t fY1
Y of lower Y coordinate.
Int_t fGLDevice
! OpenGL off-screen pixmap identifier
virtual Bool_t IsTransparent() const
virtual const char * GetName() const
Returns name of object.
RooCmdArg FillStyle(Style_t style)
virtual Int_t GetSize() const
void SetPadRightMargin(Float_t margin=0.1)
static void SetMaxPickDistance(Int_t maxPick=5)
static function to set the maximum Pick Distance fgMaxPickDistance This parameter is used in TPad::Pi...
virtual void ClearDrawable()=0
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 ...
virtual void SetLogz(Int_t value=1)
Set Lin/Log scale for Z.
Double_t fX1
X of lower X coordinate.
static void Pave(Int_t event, Int_t px, Int_t py, Int_t mode)
Create a new pavetext in gPad.
void SetPadGridY(Bool_t gridy)
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
TList * GetListOfFunctions() const
TObject * fTip
! tool tip associated with box
TList * GetListOfMethods(Bool_t load=kTRUE)
Return list containing the TMethods of a class.
virtual void SetFillStyle(Style_t fstyle)=0
virtual void SetY1(Double_t y1)
virtual void x3d(Option_t *type="")
Deprecated: use TPad::GetViewer3D() instead.
static Bool_t ContainsTImage(TList *li)
Auxiliary function.
virtual Int_t GetValue(const char *name, Int_t dflt) const
Returns the integer value for a resource.
void PaintLine(Double_t x1, Double_t y1, Double_t x2, Double_t y2)
Paint line in CurrentPad World coordinates.
Double_t AbsPixeltoY(Int_t py)
Double_t fUxmin
Minimum value on the X axis.
virtual void CopyDrawable(Int_t device, Int_t px, Int_t py)=0
virtual Int_t GetMaximumBin() const
Return location of bin with maximum value in the range.
Double_t GetUymin() const
Returns the minimum y-coordinate value visible on the pad. If log axis the returned value is in decad...
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.
virtual void Open(const char *filename, Int_t type=-111)=0
clip to the frame boundary
virtual void RangeAxisChanged()
virtual Color_t GetLineColor() const =0
Float_t GetRightMargin() const
void Modified(Bool_t flag=1)
Int_t GetFrameBorderMode() const
Bool_t HasFixedAspectRatio() const
To make it possible to use GL for 2D graphic in a TPad/TCanvas.
static Int_t fgMaxPickDistance
Maximum Pick Distance.
static void Ellipse(Int_t event, Int_t px, Int_t py, Int_t mode)
Create a new arc/ellipse in this gPad.
virtual void Exec(const char *command="")
Execute the command referenced by this object.
Double_t fUtoPixel
xpixel = fUtoPixelk + fUtoPixel*undc
void FillCollideGrid(TObject *o)
Initialise the grid used to find empty space when adding a box (Legend) in a pad. ...
virtual void SetBorderSize(Int_t bordersize=4)
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
TAxis * GetXaxis()
Get the behaviour adopted by the object about the statoverflows. See EStatOverflows for more informat...
Short_t fBorderMode
Bordermode (-1=down, 0 = no border, 1=up)
Double_t fAbsPixeltoXk
Conversion coefficient for absolute pixel to X World.
void SetObject(TObject *obj)
Int_t fLogy
(=0 if Y linear scale, =1 if log scale)
virtual Version_t ReadVersion(UInt_t *start=0, UInt_t *bcnt=0, const TClass *cl=0)=0
void PaintText(Double_t x, Double_t y, const char *text)
Paint text in CurrentPad World coordinates.
virtual const char * GetTitle() const
Returns title of object.
This class stores the date and time with a precision of one second in an unsigned 32 bit word (950130...
Double_t fWNDC
Width of pad along X in NDC.
virtual void SetBBoxCenterY(const Int_t y)=0
Style_t fFillStyle
Fill area style.
virtual Int_t GetCanvasID() const
Get canvas identifier.
virtual void RecordLatex(const TObject *obj)
Emit RecordLatex() signal.
Int_t GetOptTitle() const
virtual void SetLeftMargin(Float_t leftmargin)
Set Pad left margin in fraction of the pad width.
void DrawDist(Rectangle_t aBBox, Rectangle_t bBBox, char mode)
Draw Arrows to indicated equal distances of Objects with given BBoxes.
Int_t GetBorderSize() const
Color_t GetPadColor() const
const char * Data() const
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save a primitive as a C++ statement(s) on output stream "out".
virtual void SetLogy(Int_t value=1)
Set Lin/Log scale for Y.
static constexpr double g