150 fMother = (TPad*)
gPad;
179 fFixedAspectRatio =
kFALSE;
192 fUxmin = fUymin = fUxmax = fUymax = 0;
241 :
TVirtualPad(name,title,xlow,ylow,xup,yup,color,bordersize,bordermode)
285 Error(
"TPad",
"You must create a TCanvas before creating a TPad");
292 if ((xlow < 0) || (xlow > 1) || (ylow < 0) || (ylow > 1)) {
293 Error(
"TPad",
"illegal bottom left position: x=%f, y=%f", xlow, ylow);
296 if ((xup < 0) || (xup > 1) || (yup < 0) || (yup > 1)) {
297 Error(
"TPad",
"illegal top right position: x=%f, y=%f", xup, yup);
308 SetPad(name, title, xlow, ylow, xup, yup, color, bordersize, bordermode);
395 while ((exec = (
TExec*)next())) {
427 const char* title,
Option_t *option)
436 while( (o=next()) ) {
440 if (!leg) leg =
new TLegend(x1, y1, x2, y2, title);
447 if (strlen(option)) {
456 if (!leg) leg =
new TLegend(x1, y1, x2, y2, title);
458 TIter nextgraph(grlist);
461 while ((obj = nextgraph())) {
466 if (strlen(option)) opt = option;
471 if (!leg) leg =
new TLegend(x1, y1, x2, y2, title);
473 TIter nexthist(hlist);
476 while ((obj = nexthist())) {
481 if (strlen(option)) opt = option;
494 Info(
"BuildLegend(void)",
"No object to build a TLegend.");
537 while ((obj = next())) {
540 if (n == subpadnumber) {
541 return ((
TPad*)obj)->cd();
603 for (
Int_t i=0;i<2;i++) {
616 while(code1 + code2) {
627 if (ic == 0) ic = code2;
629 yt = y[0] + (y[1]-y[0])*(xclipl-x[0])/(x[1]-x[0]);
633 yt = y[0] + (y[1]-y[0])*(xclipr-x[0])/(x[1]-x[0]);
637 xt = x[0] + (x[1]-x[0])*(yclipb-y[0])/(y[1]-y[0]);
641 xt = x[0] + (x[1]-x[0])*(yclipt-y[0])/(y[1]-y[0]);
647 code1 =
ClippingCode(xt,yt,xclipl,yclipb,xclipr,yclipt);
651 code2 =
ClippingCode(xt,yt,xclipl,yclipb,xclipr,yclipt);
674 for (
Int_t i=0;i<2;i++) {
683 if (x[0] < xclipl) code1 = code1 | 0x1;
684 if (x[0] > xclipr) code1 = code1 | 0x2;
685 if (y[0] < yclipb) code1 = code1 | 0x4;
686 if (y[0] > yclipt) code1 = code1 | 0x8;
688 if (x[1] < xclipl) code2 = code2 | 0x1;
689 if (x[1] > xclipr) code2 = code2 | 0x2;
690 if (y[1] < yclipb) code2 = code2 | 0x4;
691 if (y[1] > yclipt) code2 = code2 | 0x8;
695 while(code1 + code2) {
706 if (ic == 0) ic = code2;
708 yt = y[0] + (y[1]-y[0])*(xclipl-x[0])/(x[1]-x[0]);
712 yt = y[0] + (y[1]-y[0])*(xclipr-x[0])/(x[1]-x[0]);
716 xt = x[0] + (x[1]-x[0])*(yclipb-y[0])/(y[1]-y[0]);
720 xt = x[0] + (x[1]-x[0])*(yclipt-y[0])/(y[1]-y[0]);
726 code1 =
ClippingCode(xt,yt,xclipl,yclipb,xclipr,yclipt);
730 code2 =
ClippingCode(xt,yt,xclipl,yclipb,xclipr,yclipt);
743 if (x < xcl1) code = code | 0x1;
744 if (x > xcl2) code = code | 0x2;
745 if (y < ycl1) code = code | 0x4;
746 if (y > ycl2) code = code | 0x8;
798 x1 = x[n-1]; y1 = y[n-1];
801 for (i=0; i<
n; i++) {
802 x2 = x[i]; y2 = y[i];
806 slope = (y2-y1)/(x2-x1);
810 xc2[nc2] = xclipl; yc2[nc2++] = slope*(xclipl-
x1)+y1;
812 xc2[nc2] =
x2; yc2[nc2++] = y2;
816 xc2[nc2] = xclipl; yc2[nc2++] = slope*(xclipl-
x1)+y1;
817 xc2[nc2] =
x2; yc2[nc2++] = y2;
824 x1 = xc2[nc2-1]; y1 = yc2[nc2-1];
826 for (i=0; i<nc2; i++) {
827 x2 = xc2[i]; y2 = yc2[i];
831 slope = (x2-
x1)/(y2-y1);
835 xc[nc] = x1+(yclipt-y1)*slope; yc[nc++] = yclipt;
837 xc[nc] =
x2; yc[nc++] = y2;
841 xc[nc] = x1+(yclipt-y1)*slope; yc[nc++] = yclipt;
842 xc[nc] =
x2; yc[nc++] = y2;
849 x1 = xc[nc-1]; y1 = yc[nc-1];
851 for (i=0; i<nc; i++) {
852 x2 = xc[i]; y2 = yc[i];
856 slope = (y2-y1)/(x2-x1);
860 xc2[nc2] = xclipr; yc2[nc2++] = slope*(xclipr-
x1)+y1;
862 xc2[nc2] =
x2; yc2[nc2++] = y2;
866 xc2[nc2] = xclipr; yc2[nc2++] = slope*(xclipr-
x1)+y1;
867 xc2[nc2] =
x2; yc2[nc2++] = y2;
874 x1 = xc2[nc2-1]; y1 = yc2[nc2-1];
876 for (i=0; i<nc2; i++) {
877 x2 = xc2[i]; y2 = yc2[i];
881 slope = (x2-
x1)/(y2-y1);
885 xc[nc] = x1+(yclipb-y1)*slope; yc[nc++] = yclipb;
887 xc[nc] =
x2; yc[nc++] = y2;
891 xc[nc] = x1+(yclipb-y1)*slope; yc[nc++] = yclipb;
892 xc[nc] =
x2; yc[nc++] = y2;
932 if (!
gPad->IsBatch()) {
939 if (!
gROOT->GetListOfCanvases())
return;
941 gROOT->GetListOfCanvases()->Remove(
this);
962 if (
gROOT->GetSelectedPad() ==
this)
gROOT->SetSelectedPad(0);
987 while ((obj = next())) {
989 ((
TPad*)obj)->CopyPixmap();
990 ((
TPad*)obj)->CopyPixmaps();
1016 Int_t pxl, pyl, pxt, pyt;
1021 if (px1 < px2) {pxl = px1; pxt = px2;}
1022 else {pxl = px2; pxt = px1;}
1023 if (py1 < py2) {pyl = py1; pyt = py2;}
1024 else {pyl = py2; pyt = py1;}
1028 if ( (px > pxl && px < pxt) && (py > pyl && py < pyt) ) {
1035 if (py < pyl) dxl += pyl - py;
1036 if (py > pyt) dxl += py - pyt;
1038 if (py < pyl) dxt += pyl - py;
1039 if (py > pyt) dxt += py - pyt;
1041 if (px < pxl) dyl += pxl - px;
1042 if (px > pxt) dyl += px - pxt;
1044 if (px < pxl) dyt += pxl - px;
1045 if (px > pxt) dyt += px - pxt;
1047 Int_t distance = dxl;
1048 if (dxt < distance) distance = dxt;
1049 if (dyl < distance) distance = dyl;
1050 if (dyt < distance) distance = dyt;
1096 arr[1] =
this; arr[2] = (
void*)&nx;arr[3] = (
void*)& ny;
1097 arr[4] = (
void*)&xmargin; arr[5] = (
void *)& ymargin; arr[6] = (
void *)&color;
1098 if ((*
gThreadXAR)(
"PDCD", 7, arr, 0))
return;
1103 if (nx <= 0) nx = 1;
1104 if (ny <= 0) ny = 1;
1111 char *
name =
new char [nchname];
1112 char *title =
new char [nchtitle];
1115 if (xmargin > 0 && ymargin > 0) {
1119 for (iy=0;iy<
ny;iy++) {
1120 y2 = 1 - iy*dy - ymargin;
1121 y1 = y2 - dy + 2*ymargin;
1123 if (y1 > y2)
continue;
1124 for (ix=0;ix<
nx;ix++) {
1125 x1 = ix*dx + xmargin;
1126 x2 = x1 +dx -2*xmargin;
1127 if (x1 > x2)
continue;
1130 pad =
new TPad(name,name,x1,y1,x2,y2,color);
1156 if (i == nx-1) x2 = 1-xr;
1158 number = j*nx + i +1;
1161 if (j == 0) y2 = 1-yt;
1162 if (j == ny-1) y1 = 0;
1165 pad =
new TPad(name,title,x1,y1,x2,y2);
1181 if (padsav) padsav->
cd();
1202 Divide( w,
h, xmargin, ymargin, color);
1212 gROOT->MakeDefCanvas();
1250 Int_t nd,nf,nc,nkd,nkf,i,j;
1263 Range(0,0,xpad,ypad);
1268 clevel[nlevel] = obj;
1277 if (nlevel >= maxlev-1)
break;
1281 Int_t ilevel, nelem;
1282 for (ilevel=nlevel;ilevel>=0;ilevel--) {
1283 cl = clevel[ilevel];
1285 if (nelem > maxelem) maxelem = nelem;
1286 nc = (nelem/50) + 1;
1296 if (dx < 1.3) dx = 1.3;
1297 tsizcm = tsizcm - 0.03*
Double_t(ncdraw-5);
1298 if (tsizcm < 0.27) tsizcm = 0.27;
1303 for (ilevel=nlevel;ilevel>=0;ilevel--) {
1304 cl = clevel[ilevel];
1306 if (nelem > maxelem) maxelem = nelem;
1307 nc = (nelem/50) + 1;
1309 if (ilevel < nlevel) x1 = x2 + 0.5;
1327 v1 = y1 -
Double_t(nkf+nkd+nc-1)*dy;
1339 TBox *
box = pt->
AddBox(0,(y1+0.01-v1)/dv,0,(v2-0.01-v1)/dv);
1341 pt->
AddLine(0,(y1-v1)/dv,0,(y1-v1)/dv);
1353 if (i >= nkd) { i = 1; y = y1 - 0.5*dy; x += 1/
Double_t(nc); }
1354 else { i++; y -= dy; }
1362 while (indx < dim ){
1363 ldname = strlen(dname);
1367 pt->
AddText(x,(y-v1)/dv,dname);
1374 pt->
AddLine(0,(ysep-v1)/dv,0,(ysep-v1)/dv);
1385 while ((m = (
TMethod *) nextm())) {
1387 !strcmp( m->
GetName(),
"Dictionary" ) ||
1388 !strcmp( m->
GetName(),
"Class_Version" ) ||
1389 !strcmp( m->
GetName(),
"DeclFileName" ) ||
1390 !strcmp( m->
GetName(),
"DeclFileLine" ) ||
1391 !strcmp( m->
GetName(),
"ImplFileName" ) ||
1392 !strcmp( m->
GetName(),
"ImplFileLine" )
1395 if (fcount > nf)
break;
1396 if (i >= nkf) { i = 1; y = ysep - 0.5*dy; x += 1/
Double_t(nc); }
1397 else { i++; y -= dy; }
1402 for (j=ilevel-1;j>=0;j--) {
1403 if (cl == clevel[ilevel]) {
1404 if (clevel[j]->GetMethodAny((
char*)m->
GetName())) {
1451 Int_t pxmin,pxmax,pymin,pymax,pxold,pyold,px,py;
1463 pxmax = canvas->
GetWw();
1465 pymax = cpad->
GetWh();
1467 if(pxold)
gVirtualX->DrawLine(pxold,pymin,pxold,pymax);
1468 if(pyold)
gVirtualX->DrawLine(pxmin,pyold,pxmax,pyold);
1495 if (
this != padsav) {
1496 Warning(
"DrawFrame",
"Must be called for the current pad only");
1497 return padsav->
DrawFrame(xmin,ymin,xmax,ymax,title);
1503 if (hframe)
delete hframe;
1507 if (
fLogx && xmin > 0 && xmax > xmin) {
1516 hframe =
new TH1F(
"hframe",title,nbins,xbins);
1519 hframe =
new TH1F(
"hframe",title,nbins,xmin,xmax);
1529 if (padsav) padsav->
cd();
1540 Double_t xlow, ylow, xup, yup, hs, ws;
1545 gPad->SetFillColor(0);
1547 gPad->Range(x1,y1,x2,y2);
1559 for (i=0;i<10;i++) {
1568 box->
DrawBox(xlow, ylow, xup, yup);
1571 box->
DrawBox(xlow, ylow, xup, yup);
1574 text->
DrawText(0.5*(xlow+xup), 0.5*(ylow+yup),
Form(
"%d",color));
1601 const Int_t kMaxDiff = 5;
1602 const Int_t kMinSize = 20;
1603 static Int_t pxorg, pyorg;
1604 static Int_t px1, px2, py1, py2, pxl, pyl, pxt, pyt, pxold, pyold;
1605 static Int_t px1p, px2p, py1p, py2p, pxlp, pylp, pxtp, pytp;
1606 static Bool_t pA, pB, pC, pD, pTop, pL, pR, pBot, pINSIDE;
1629 pA = pB = pC = pD = pTop = pL = pR = pBot = pINSIDE =
kFALSE;
1673 if (newcode)
return;
1740 pA = pB = pC = pD = pTop = pL = pR = pBot = pINSIDE =
kFALSE;
1744 pxold = pxl; pyold = pyl; pA =
kTRUE;
1749 pxold = pxt; pyold = pyl; pB =
kTRUE;
1754 pxold = pxt; pyold = pyt; pC =
kTRUE;
1759 pxold = pxl; pyold = pyt; pD =
kTRUE;
1763 if ((px > pxl+kMaxDiff && px < pxt-kMaxDiff) &&
1765 pxold = pxl; pyold = pyl; pTop =
kTRUE;
1769 if ((px > pxl+kMaxDiff && px < pxt-kMaxDiff) &&
1771 pxold = pxt; pyold = pyt; pBot =
kTRUE;
1775 if ((py > pyl+kMaxDiff && py < pyt-kMaxDiff) &&
1777 pxold = pxl; pyold = pyl; pL =
kTRUE;
1781 if ((py > pyl+kMaxDiff && py < pyt-kMaxDiff) &&
1783 pxold = pxt; pyold = pyt; pR =
kTRUE;
1787 if ((px > pxl+kMaxDiff && px < pxt-kMaxDiff) &&
1788 (py > pyl+kMaxDiff && py < pyt-kMaxDiff)) {
1789 pxold = px; pyold = py; pINSIDE =
kTRUE;
1797 if (pA || pB || pC || pD || pTop || pL || pR || pBot)
1800 if (!pA && !pB && !pC && !pD && !pTop && !pL && !pR && !pBot && !pINSIDE)
1813 if (px > pxt-kMinSize) { px = pxt-kMinSize; wx = px; }
1814 if (py > pyt-kMinSize) { py = pyt-kMinSize; wy = py; }
1815 if (px < pxlp) { px = pxlp; wx = px; }
1816 if (py < pylp) { py = pylp; wy = py; }
1834 if (px < pxl+kMinSize) { px = pxl+kMinSize; wx = px; }
1835 if (py > pyt-kMinSize) { py = pyt-kMinSize; wy = py; }
1836 if (px > pxtp) { px = pxtp; wx = px; }
1837 if (py < pylp) { py = pylp; wy = py; }
1855 if (px < pxl+kMinSize) { px = pxl+kMinSize; wx = px; }
1856 if (py < pyl+kMinSize) { py = pyl+kMinSize; wy = py; }
1857 if (px > pxtp) { px = pxtp; wx = px; }
1858 if (py > pytp) { py = pytp; wy = py; }
1876 if (px > pxt-kMinSize) { px = pxt-kMinSize; wx = px; }
1877 if (py < pyl+kMinSize) { py = pyl+kMinSize; wy = py; }
1878 if (px < pxlp) { px = pxlp; wx = px; }
1879 if (py > pytp) { py = pytp; wy = py; }
1898 if (py2 > py1-kMinSize) { py2 = py1-kMinSize; wy = py2; }
1899 if (py2 < py2p) { py2 = py2p; wy = py2; }
1914 if (py1 < py2+kMinSize) { py1 = py2+kMinSize; wy = py1; }
1915 if (py1 > py1p) { py1 = py1p; wy = py1; }
1930 if (px1 > px2-kMinSize) { px1 = px2-kMinSize; wx = px1; }
1931 if (px1 < px1p) { px1 = px1p; wx = px1; }
1947 if (px2 < px1+kMinSize) { px2 = px1+kMinSize; wx = px2; }
1948 if (px2 > px2p) { px2 = px2p; wx = px2; }
1963 Int_t dx = px - pxold;
1964 Int_t dy = py - pyold;
1965 px1 += dx; py1 += dy; px2 += dx; py2 += dy;
1966 if (px1 < px1p) { dx = px1p - px1; px1 += dx; px2 += dx; wx = px+dx; }
1967 if (px2 > px2p) { dx = px2 - px2p; px1 -= dx; px2 -= dx; wx = px-dx; }
1968 if (py1 > py1p) { dy = py1 - py1p; py1 -= dy; py2 -= dy; wy = py-dy; }
1969 if (py2 < py2p) { dy = py2p - py2; py1 += dy; py2 += dy; wy = py+dy; }
1983 x1 = x2 = y1 = y2 = 0;
2010 if (pTop || pBot || pL || pR || pINSIDE) {
2017 if (px != pxorg || py != pyorg) {
2041 if (pINSIDE)
gPad->ShowGuidelines(
this, event);
2042 if (pTop)
gPad->ShowGuidelines(
this, event,
't',
true);
2043 if (pBot)
gPad->ShowGuidelines(
this, event,
'b',
true);
2044 if (pL)
gPad->ShowGuidelines(
this, event,
'l',
true);
2045 if (pR)
gPad->ShowGuidelines(
this, event,
'r',
true);
2046 if (pA)
gPad->ShowGuidelines(
this, event,
'1',
true);
2047 if (pB)
gPad->ShowGuidelines(
this, event,
'2',
true);
2048 if (pC)
gPad->ShowGuidelines(
this, event,
'3',
true);
2049 if (pD)
gPad->ShowGuidelines(
this, event,
'4',
true);
2058 if (
gROOT->IsEscaped()) {
2063 if (opaque||ropaque) {
2066 x1 = x2 = y1 = y2 = 0;
2092 if (pTop || pBot || pL || pR || pINSIDE) {
2099 if (pA || pB || pC || pD || pTop || pL || pR || pBot)
2105 if (px != pxorg || py != pyorg) {
2142 event =
gVirtualX->RequestLocator(1, 1, px, py);
2181 static Int_t axisNumber;
2183 static Int_t px1old, py1old, px2old, py2old;
2187 static TBox *zoombox;
2188 Double_t zbx1=0,zbx2=0,zby1=0,zby2=0;
2195 if (strstr(opt,
"cont4")) {
2204 if (!strcmp(axis->
GetName(),
"xaxis")) {
2208 if (!strcmp(axis->
GetName(),
"yaxis")) {
2212 if (!strcmp(axis->
GetName(),
"zaxis")) {
2218 if (axisNumber == 1) {
2224 }
else if (axisNumber == 2) {
2240 if (axisNumber == 1) {
2245 }
else if (axisNumber == 2) {
2259 zoombox =
new TBox(zbx1, zby1, zbx2, zby2);
2270 if (!opaque)
gVirtualX->SetLineColor(-1);
2278 if (axisNumber == 1) {
2288 if (axisNumber == 1) {
2293 }
else if (axisNumber == 2) {
2307 zoombox->
SetX1(zbx1);
2308 zoombox->
SetY1(zby1);
2309 zoombox->
SetX2(zbx2);
2310 zoombox->
SetY2(zby2);
2342 if (
gROOT->IsEscaped()) {
2344 if (opaque && zoombox) {
2353 if (ratio1 > ratio2) {
2358 if (ratio2 - ratio1 > 0.05) {
2360 if (axisNumber == 3 && hobj && hobj->
GetDimension() != 3) {
2369 Float_t newmin = zmin + (zmax-zmin)*ratio1;
2370 Float_t newmax = zmin + (zmax-zmin)*ratio2;
2383 bin1 = first +
Int_t((last-first+1)*ratio1);
2384 bin2 = first +
Int_t((last-first+1)*ratio2);
2394 if (axisNumber == 1) {
2402 }
else if (axisNumber == 2) {
2430 xmin = ((xmin-xmi)/(xma-xmi))*(up-low)+low;
2431 xmax = ((xmax-xmi)/(xma-xmi))*(up-low)+low;
2434 if (!strcmp(axis->
GetName(),
"xaxis")) axisNumber = 1;
2435 if (!strcmp(axis->
GetName(),
"yaxis")) axisNumber = 2;
2436 if (ratio2 - ratio1 > 0.05) {
2443 if (axisNumber == 1) axis->
SetRange(bin1,bin2);
2444 if (axisNumber == 2 && hobj1) {
2461 while ((obj= next())) {
2464 if (hobj == hobj1)
continue;
2467 if (axisNumber == 1) {
2469 }
else if (axisNumber == 2) {
2512 if (found)
return found;
2515 while ((cur = next())) {
2518 if (found)
return found;
2533 if (found)
return found;
2536 while ((cur = next())) {
2539 if (found)
return found;
2614 if (
fCanvas ==
this)
return 0;
2623 if (
fCanvas ==
this)
return 0;
2632 if (
fCanvas ==
this)
return 0;
2775 while ((obj=next())) {
2776 if (!strcmp(name, obj->
GetName()))
return obj;
2779 if (found)
return found;
2789 if (!subpadnumber) {
2796 while ((obj = next())) {
2799 if (pad->
GetNumber() == subpadnumber)
return pad;
2846 if (color <= 0)
return;
2864 gROOT->SetSelectedPad(
this);
2881 <<
" Name= "<<
GetName()<<
" Title= "<<
GetTitle()<<
" Option="<<option<<std::endl;
2973 began3DScene =
kTRUE;
2980 if (padsav) padsav->cd();
3009 if (color < 0) color = -color;
3016 if (bordersize <= 0) bordersize = 2;
3037 if (px1 < px2) {xl =
fX1; xt =
fX2; }
3038 else {xl =
fX2; xt =
fX1;}
3039 if (py1 > py2) {yl =
fY1; yt =
fY2;}
3040 else {yl =
fY2; yt =
fY1;}
3042 Double_t frameXs[7] = {}, frameYs[7] = {};
3046 frameXs[0] = xl; frameYs[0] = yl;
3047 frameXs[1] = xl + realBsX; frameYs[1] = yl + realBsY;
3048 frameXs[2] = frameXs[1]; frameYs[2] = yt - realBsY;
3049 frameXs[3] = xt - realBsX; frameYs[3] = frameYs[2];
3050 frameXs[4] = xt; frameYs[4] = yt;
3051 frameXs[5] = xl; frameYs[5] = yt;
3052 frameXs[6] = xl; frameYs[6] = yl;
3059 frameXs[0] = xl; frameYs[0] = yl;
3060 frameXs[1] = xl + realBsX; frameYs[1] = yl + realBsY;
3061 frameXs[2] = xt - realBsX; frameYs[2] = frameYs[1];
3062 frameXs[3] = frameXs[2]; frameYs[3] = yt - realBsY;
3063 frameXs[4] = xt; frameYs[4] = yt;
3064 frameXs[5] = xt; frameYs[5] = yl;
3065 frameXs[6] = xl; frameYs[6] = yl;
3198 ((
TPad*)obj)->PaintModified();
3210 began3DScene =
kTRUE;
3218 if (padsav) padsav->cd();
3239 if (!
gPad->IsBatch()) {
3242 if (option[0] ==
's') {
3247 if (style > 3000 && style < 4000) {
3253 if (style >= 3100 && style < 4000) {
3255 xb[0] =
x1; xb[1] =
x1; xb[2] =
x2; xb[3] =
x2;
3256 yb[0] = y1; yb[1] = y2; yb[2] = y2; yb[3] = y1;
3266 }
else if (style >= 4000 && style <= 4100) {
3291 }
else if (style >= 1000 && style <= 1999) {
3305 if (option[0] ==
's') {
3308 if (style0 >= 3100 && style0 < 4000) {
3310 xb[0] =
x1; xb[1] =
x1; xb[2] =
x2; xb[3] =
x2;
3311 yb[0] = y1; yb[1] = y2; yb[2] = y2; yb[3] = y1;
3317 if (option[0] ==
'l') {
3336 while ((obj = next())) {
3338 if (obj == stop)
break;
3339 ((
TPad*)obj)->CopyBackgroundPixmap(x, y);
3340 ((
TPad*)obj)->CopyBackgroundPixmaps((
TPad*)obj, stop, x, y);
3359 Warning(
"TPad::PaintFillArea",
"Float_t signature is obsolete. Use Double_t signature.");
3382 n =
ClipPolygon(nn, xx, yy, nc, x, y,xmin,ymin,xmax,ymax);
3392 if (fillstyle >= 3100 && fillstyle < 4000) {
3399 if (!
gPad->IsBatch())
3446 static Double_t ang1[10] = {0., 10., 20., 30., 45.,5., 60., 70., 80., 90.};
3447 static Double_t ang2[10] = {180.,170.,160.,150.,135.,5.,120.,110.,100., 90.};
3449 Int_t fasi = FillStyle%1000;
3452 Int_t iAng1 = fasi%10;
3460 if (!
gPad->IsBatch()) {
3473 if (!
gPad->IsBatch()) {
3485 if (ang1[iAng1] != 5.)
PaintHatches(dy, ang1[iAng1], nn, xx, yy);
3486 if (ang2[iAng2] != 5.)
PaintHatches(dy, ang2[iAng2], nn, xx, yy);
3489 if (!
gPad->IsBatch()) {
3513 const Int_t maxnbi = 100;
3514 Double_t xli[maxnbi], xlh[2], ylh[2], xt1, xt2, yt1, yt2;
3515 Double_t ll,
x,
y,
x1,
x2, y1, y2,
a,
b, xi, xip, xin, yi, yip;
3521 ratiox = 1/(rwxmax-rwxmin);
3522 ratioy = 1/(rwymax-rwymin);
3535 gPad->GetPadPar(x1p,y1p,x2p,y2p);
3544 for (i=1; i<=
nn; i++) {
3545 x = wndc*ratiox*(xx[i-1]-rwxmin);
3546 y = hndc*ratioy*(yy[i-1]-rwymin);
3547 yrot = sina*x+cosa*
y;
3548 if (yrot > ymax) ymax = yrot;
3549 if (yrot < ymin) ymin = yrot;
3553 for (ycur=ymax; ycur>=
ymin; ycur=ycur-dy) {
3555 for (i=2; i<=nn+1; i++) {
3558 if (i == nn+1) i2=1;
3559 x1 = wndc*ratiox*(xx[i1-1]-rwxmin);
3560 y1 = hndc*ratioy*(yy[i1-1]-rwymin);
3561 x2 = wndc*ratiox*(xx[i2-1]-rwxmin);
3562 y2 = hndc*ratioy*(yy[i2-1]-rwymin);
3563 xt1 = cosa*x1-sina*y1;
3564 yt1 = sina*x1+cosa*y1;
3565 xt2 = cosa*x2-sina*y2;
3566 yt2 = sina*x2+cosa*y2;
3577 if ((yi <= ycur) && (ycur < yip)) {
3579 if (nbi >= maxnbi)
return;
3589 if (nbi >= maxnbi)
return;
3592 if (nbi >= maxnbi)
return;
3599 a = (yt1-yt2)/(xt1-xt2);
3600 b = (yt2*xt1-xt2*yt1)/(xt1-xt2);
3609 if ((xi <= xin) && (xin < xip) &&
3613 if (nbi >= maxnbi)
return;
3622 for (i=1; i<=
m; i++) {
3623 if (xli[i] < xli[i-1]) {
3631 if (inv == 0)
goto L50;
3637 if (nbi%2 != 0)
continue;
3639 for (i=1; i<=nbi; i=i+2) {
3641 xlh[0] = cosb*xli[i-1]-sinb*ycur;
3642 ylh[0] = sinb*xli[i-1]+cosb*ycur;
3643 xlh[1] = cosb*xli[i] -sinb*ycur;
3644 ylh[1] = sinb*xli[i] +cosb*ycur;
3646 xlh[0] = (xlh[0]/wndc)*(rwxmax-rwxmin)+rwxmin;
3647 ylh[0] = (ylh[0]/hndc)*(rwymax-rwymin)+rwymin;
3648 xlh[1] = (xlh[1]/wndc)*(rwxmax-rwxmin)+rwxmin;
3649 ylh[1] = (ylh[1]/hndc)*(rwymax-rwymin)+rwymin;
3650 gPad->PaintLine(xlh[0], ylh[0], xlh[1], ylh[1]);
3661 x[0] =
x1; x[1] =
x2; y[0] = y1; y[1] = y2;
3670 if (!
gPad->IsBatch())
3686 if (!
gPad->IsBatch())
3711 for (i=0;i<3;i++) temp[i] = p1[i];
3713 for (i=0;i<3;i++) temp[i] = p2[i];
3715 PaintLine(xpad[0],xpad[1],xpad[3],xpad[4]);
3729 for (i=0;i<3;i++) temp[i] = p1[i];
3731 for (i=0;i<3;i++) temp[i] = p2[i];
3733 PaintLine(xpad[0],xpad[1],xpad[3],xpad[4]);
3749 Int_t i, i1=-1,np=1;
3750 for (i=0; i<n-1; i++) {
3755 Int_t iclip =
Clip(&x[i],&y[i],xmin,ymin,xmax,ymax);
3762 if (iclip == 0 && i < n-2)
continue;
3763 if (!
gPad->IsBatch())
3796 if (option && (option[0] ==
'C')) mustClip =
kFALSE;
3799 Int_t i, i1=-1, np=1, iclip=0;
3801 for (i=0; i < n-1; i++) {
3807 iclip =
Clip(&x[i],&y[i],xmin,ymin,xmax,ymax);
3815 if (iclip == 0 && i < n-2)
continue;
3816 if (!
gPad->IsBatch())
3841 if (!
gPad->IsBatch())
3847 for (
Int_t i=0; i<
n; i++) {
3866 for (
Int_t i = 1; i <
n; i++)
3885 for (i=0; i<
n; i++) {
3886 if (x[i] >= xmin && x[i] <= xmax && y[i] >= ymin && y[i] <= ymax) {
3889 if (i < n-1)
continue;
3891 if (np == 0)
continue;
3892 if (!
gPad->IsBatch())
3916 for (i=0; i<
n; i++) {
3917 if (x[i] >= xmin && x[i] <= xmax && y[i] >= ymin && y[i] <= ymax) {
3920 if (i < n-1)
continue;
3922 if (np == 0)
continue;
3923 if (!
gPad->IsBatch())
3941 if (!
gPad->IsBatch())
3954 if (!
gPad->IsBatch())
3967 if (!
gPad->IsBatch())
3984 if (!
gPad->IsBatch())
4012 if (
gPad == 0)
return 0;
4019 if (
this !=
gPad->GetCanvas()) {
4020 if (!((x >=
fX1 && x <=
fX2) && (y >=
fY1 && y <=
fY2)))
return 0;
4028 TPad *picked =
this;
4032 pickobj = &dummyLink;
4061 pick = ((
TPad*)obj)->
Pick(px, py, pickobj);
4066 }
else if (!
gROOT->GetEditorMode()) {
4073 if (dist == 0)
break;
4088 if (
fView && !gotPrim) {
4112 if (picked ==
this) {
4134 while ((obj = next()))
4136 char *opt =
StrDup(next.GetOption());
4162 ((
TPad*)
this)->SaveAs(filename);
4174 while ((obj = next())) {
4318 const char *filename;
4336 filename = fs2.
Data();
4339 const char *opt_default=
"ps";
4341 Int_t lenfil = filename ? strlen(filename) : 0;
4342 TString opt = (!option) ? opt_default : option;
4364 if (strstr(opt,
"gif+")) {
4367 }
else if (strstr(opt,
"gif")) {
4370 }
else if (strstr(opt,
"png")) {
4373 }
else if (strstr(opt,
"jpg")) {
4376 }
else if (strstr(opt,
"tiff")) {
4379 }
else if (strstr(opt,
"xpm")) {
4382 }
else if (strstr(opt,
"bmp")) {
4389 if (!
gROOT->IsBatch() && image) {
4392 Color_t hc =
gPad->GetCanvas()->GetHighLightColor();
4393 gPad->GetCanvas()->SetHighLightColor(-1);
4399 Info(
"Print",
"GIF file %s has been created", psname.
Data());
4401 gPad->GetCanvas()->SetHighLightColor(hc);
4405 Color_t hc =
gPad->GetCanvas()->GetHighLightColor();
4406 gPad->GetCanvas()->SetHighLightColor(-1);
4421 Info(
"Print",
"file %s has been created", psname.
Data());
4423 gPad->GetCanvas()->SetHighLightColor(hc);
4425 Warning(
"Print",
"Unsupported image format %s", psname.
Data());
4431 if (strstr(opt,
"cxx")) {
4437 if (strstr(opt,
"root")) {
4443 if (strstr(opt,
"xml")) {
4450 if (strstr(opt,
"svg")) {
4465 if ((h =
gROOT->GetPluginManager()->FindHandler(
"TVirtualPS",
"svg"))) {
4490 if (strstr(opt,
"tex")) {
4505 if ((h =
gROOT->GetPluginManager()->FindHandler(
"TVirtualPS",
"tex"))) {
4540 copen = psname.
EndsWith(
"(");
if (copen) psname[psname.
Length()-1] = 0;
4541 cclose = psname.
EndsWith(
")");
if (cclose) psname[psname.
Length()-1] = 0;
4542 copenb = psname.
EndsWith(
"[");
if (copenb) psname[psname.
Length()-1] = 0;
4543 ccloseb = psname.
EndsWith(
"]");
if (ccloseb) psname[psname.
Length()-1] = 0;
4547 if (copen || copenb) mustClose =
kFALSE;
4548 if (cclose || ccloseb) mustClose =
kTRUE;
4559 if (ratio < 1) pstype = 112;
4560 if (strstr(opt,
"Portrait")) pstype = 111;
4561 if (strstr(opt,
"Landscape")) pstype = 112;
4562 if (strstr(opt,
"eps")) pstype = 113;
4563 if (strstr(opt,
"Preview")) pstype = 113;
4571 if (strstr(opt,
"pdf") || strstr(opt,
"Title:")) {
4572 if ((h =
gROOT->GetPluginManager()->FindHandler(
"TVirtualPS",
"pdf"))) {
4578 if ((h =
gROOT->GetPluginManager()->FindHandler(
"TVirtualPS",
"image"))) {
4583 if ((h =
gROOT->GetPluginManager()->FindHandler(
"TVirtualPS",
"ps"))) {
4592 if (titlePos !=
kNPOS) {
4599 if (!strstr(opt,
"pdf") || image) {
4616 if (!copen)
Info(
"Print",
"%s file %s has been created", opt.
Data(), psname.
Data());
4617 else Info(
"Print",
"%s file %s has been created using the current canvas", opt.
Data(), psname.
Data());
4626 if (titlePos !=
kNPOS) {
4633 if (cclose)
Info(
"Print",
"Current canvas added to %s file %s and file closed", opt.
Data(), psname.
Data());
4634 else Info(
"Print",
"%s file %s has been closed", opt.
Data(), psname.
Data());
4639 Info(
"Print",
"Current canvas added to %s file %s", opt.
Data(), psname.
Data());
4656 if ((x1 >= x2) || (y1 >= y2)) {
4657 Error(
"Range",
"illegal world coordinates range: x1=%f, y1=%f, x2=%f, y2=%f",x1,y1,x2,y2);
4666 if (
fX1 == x1 &&
fY1 == y1 &&
fX2 == x2 &&
fY2 == y2)
return;
4694 if ((xmin >= xmax) || (ymin >= ymax)) {
4695 Error(
"RangeAxis",
"illegal axis coordinates range: xmin=%f, ymin=%f, xmax=%f, ymax=%f",
4696 xmin, ymin, xmax, ymax);
4748 while ((obj = next())) {
4759 if (h1f) h1f->
DrawCopy(
"sameaxis");
4778 if (padsav) padsav->
cd();
4908 if (
this ==
gPad->GetCanvas()) {
4940 fYtoPixelk = rounding + -pyrange - pyrange*fY1/yrange;
4961 while ((obj = next())) {
4967 if (
gPad->IsBatch())
4985 Warning(
"ResizePad",
"Inf/NaN propagated to the pad. Check drawn objects.");
4986 if (w <= 0 || w > 10000) {
4987 Warning(
"ResizePad",
"%s width changed from %d to %d\n",
GetName(),w,10);
4990 if (h <= 0 || h > 10000) {
4991 Warning(
"ResizePad",
"%s height changed from %d to %d\n",
GetName(),h,10);
5006 if (padsav ==
this) {
5040 Int_t lenfil = filename ? strlen(filename) : 0;
5043 else psname = filename;
5104 const char *cname =
GetName();
5105 Int_t nch = strlen(cname);
5107 strlcpy(lcname,cname,10);
5108 for (
Int_t k=1;k<=nch;k++) {
if (lcname[nch-k] ==
' ') lcname[nch-k] = 0;}
5109 if (lcname[0] == 0) {
5110 if (
this ==
gPad->GetCanvas()) {strlcpy(lcname,
"c1",10); nch = 2;}
5111 else {strlcpy(lcname,
"pad",10); nch = 3;}
5117 if (
this !=
gPad->GetCanvas()) {
5118 out <<
" "<<std::endl;
5119 out <<
"// ------------>Primitives in pad: "<<
GetName()<<std::endl;
5121 out<<
" TPad *"<<cname<<
" = new TPad("<<quote<<
GetName()<<quote<<
", "<<quote<<
GetTitle()
5128 out<<
" "<<cname<<
"->Draw();"<<std::endl;
5129 out<<
" "<<cname<<
"->cd();"<<std::endl;
5131 out<<
" "<<cname<<
"->Range("<<
fX1<<
","<<
fY1<<
","<<
fX2<<
","<<
fY2<<
");"<<std::endl;
5136 static Int_t viewNumber = 0;
5137 out<<
" TView *view"<<++viewNumber<<
" = TView::CreateView(1);"<<std::endl;
5138 out<<
" view"<<viewNumber<<
"->SetRange("<<rmin[0]<<
","<<rmin[1]<<
","<<rmin[2]<<
"," 5139 <<rmax[0]<<
","<<rmax[1]<<
","<<rmax[2]<<
");"<<std::endl;
5144 out<<
" "<<cname<<
"->SetFillColor(ci);" << std::endl;
5146 out<<
" "<<cname<<
"->SetFillColor("<<
GetFillColor()<<
");"<<std::endl;
5149 out<<
" "<<cname<<
"->SetFillStyle("<<
GetFillStyle()<<
");"<<std::endl;
5152 out<<
" "<<cname<<
"->SetBorderMode("<<
GetBorderMode()<<
");"<<std::endl;
5155 out<<
" "<<cname<<
"->SetBorderSize("<<
GetBorderSize()<<
");"<<std::endl;
5158 out<<
" "<<cname<<
"->SetLogx();"<<std::endl;
5161 out<<
" "<<cname<<
"->SetLogy();"<<std::endl;
5164 out<<
" "<<cname<<
"->SetLogz();"<<std::endl;
5167 out<<
" "<<cname<<
"->SetGridx();"<<std::endl;
5170 out<<
" "<<cname<<
"->SetGridy();"<<std::endl;
5173 out<<
" "<<cname<<
"->SetTickx("<<
GetTickx()<<
");"<<std::endl;
5176 out<<
" "<<cname<<
"->SetTicky("<<
GetTicky()<<
");"<<std::endl;
5179 out<<
" "<<cname<<
"->SetTheta("<<
GetTheta()<<
");"<<std::endl;
5182 out<<
" "<<cname<<
"->SetPhi("<<
GetPhi()<<
");"<<std::endl;
5185 out<<
" "<<cname<<
"->SetLeftMargin("<<
GetLeftMargin()<<
");"<<std::endl;
5188 out<<
" "<<cname<<
"->SetRightMargin("<<
GetRightMargin()<<
");"<<std::endl;
5191 out<<
" "<<cname<<
"->SetTopMargin("<<
GetTopMargin()<<
");"<<std::endl;
5194 out<<
" "<<cname<<
"->SetBottomMargin("<<
GetBottomMargin()<<
");"<<std::endl;
5200 out<<
" "<<cname<<
"->SetFrameFillColor(ci);" << std::endl;
5213 out<<
" "<<cname<<
"->SetFrameLineColor(ci);" << std::endl;
5233 out<<
" "<<cname<<
"->SetFrameFillColor(ci);" << std::endl;
5235 out<<
" "<<cname<<
"->SetFrameFillColor("<<frame->
GetFillColor()<<
");"<<std::endl;
5238 out<<
" "<<cname<<
"->SetFrameFillStyle("<<frame->
GetFillStyle()<<
");"<<std::endl;
5241 out<<
" "<<cname<<
"->SetFrameLineStyle("<<frame->
GetLineStyle()<<
");"<<std::endl;
5246 out<<
" "<<cname<<
"->SetFrameLineColor(ci);" << std::endl;
5248 out<<
" "<<cname<<
"->SetFrameLineColor("<<frame->
GetLineColor()<<
");"<<std::endl;
5251 out<<
" "<<cname<<
"->SetFrameLineWidth("<<frame->
GetLineWidth()<<
");"<<std::endl;
5254 out<<
" "<<cname<<
"->SetFrameBorderMode("<<frame->
GetBorderMode()<<
");"<<std::endl;
5257 out<<
" "<<cname<<
"->SetFrameBorderSize("<<frame->
GetBorderSize()<<
");"<<std::endl;
5265 while ((obj = next())) {
5267 if (!strcmp(obj->
GetName(),
"Graph")) ((
TGraph*)obj)->SetName(
Form(
"Graph%d",grnum++));
5270 out<<
" "<<cname<<
"->Modified();"<<std::endl;
5272 if (padsav) padsav->
cd();
5285 Error(
"SetAspectRatio",
"cannot fix aspect ratio, height of pad is 0");
5309 while ((obj = next())) {
5323 if (fstyle == 0) fstyle = 4000;
5416 SetPad(xlow, ylow, xup, yup);
5424 if (!view)
delete fView;
5497 x1 = x2 = y1 = y2 = 0;
5499 if (aBBox.
fX<bBBox.
fX) {
5515 else if (mode ==
'y') {
5516 if (aBBox.
fY<bBBox.
fY) {
5554 : fa(0), fb(0), fdist(0), fdir(
' ')
5558 : fa(a), fb(b), fdist(dist), fdir(direction)
5584 std::vector<dField> curDist;
5585 std::vector<dField> otherDist;
5595 Int_t dSizeArrow = 12;
5597 movedX = movedY =
false;
5600 if (mode !=
'i') resize =
true;
5602 TPad *is_pad =
dynamic_cast<TPad *
>( object );
5607 static TPad * tmpGuideLinePad;
5610 if (tmpGuideLinePad) {
5611 if (
object == tmpGuideLinePad) {
5612 tmpGuideLinePad->
Delete();
5613 tmpGuideLinePad = 0;
5616 tmpGuideLinePad->
Delete();
5617 tmpGuideLinePad = 0;
5621 prims =
gPad->GetListOfPrimitives();
5628 if (!tmpGuideLinePad){
5629 tmpGuideLinePad =
new TPad(
"tmpGuideLinePad",
"tmpGuideLinePad", 0, 0, 1, 1);
5631 gPad->GetRange(x1, y1, x2, y2);
5632 tmpGuideLinePad->
Range(x1, y1, x2, y2);
5635 tmpGuideLinePad->
Draw();
5636 tmpGuideLinePad->
cd();
5637 gPad->GetRange(x1, y1, x2, y2);
5639 if (cling && !log) threshold = 7;
5652 MX =
gPad->GetX1() + 0.5 * (
gPad->GetX2()-
gPad->GetX1());
5653 MY =
gPad->GetY1() + 0.5 * (
gPad->GetY2()-
gPad->GetY1());
5654 pMX =
gPad->XtoPixel(MX);
5655 pMY =
gPad->YtoPixel(MY);
5658 if (cling && (!resize)) {
5670 if (cling && (!resize)) {
5682 for (
UInt_t i = 0; i<
n; i++) {
5688 if (cling && (!resize)) {
5700 if (cling && (!resize)) {
5715 for (
UInt_t i = 0; i<
n; i++) {
5719 for (
UInt_t j = i+1; j<
n; j++) {
5727 dField abDist = dField();
5730 if ((b != cur)&&(a != cur)) otherDist.push_back(abDist);
5731 else curDist.push_back(abDist);
5735 dField abDist = dField();
5738 if ((b != cur)&&(a != cur)) otherDist.push_back(abDist);
5739 else curDist.push_back(abDist);
5747 for (
UInt_t i = 0; i<curDist.size(); i++) {
5748 for (
UInt_t j = 0; j<otherDist.size(); j++) {
5749 if ((curDist[i].fdir == otherDist[j].fdir)&&(otherDist[j].fdir==
'x')&&(
TMath::Abs(curDist[i].fdist-otherDist[j].fdist)<threshold)) {
5750 if (cling && (!movedX) && (!resize)) {
5756 DrawDist(curDist[i].fa->GetBBox(), curDist[i].fb->GetBBox(),
'x');
5757 DrawDist(otherDist[j].fa->GetBBox(), otherDist[j].fb->GetBBox(),
'x');
5759 if ((curDist[i].fdir == otherDist[j].fdir)&&(otherDist[j].fdir==
'y')&&(
TMath::Abs(curDist[i].fdist-otherDist[j].fdist)<threshold)) {
5760 if (cling && (!movedY) && (!resize)) {
5766 DrawDist(curDist[i].fa->GetBBox(), curDist[i].fb->GetBBox(),
'y');
5767 DrawDist(otherDist[j].fa->GetBBox(), otherDist[j].fb->GetBBox(),
'y');
5770 for (
UInt_t j = i; j<curDist.size(); j++) {
5772 if ((curDist[i].fdir == curDist[j].fdir)&&(curDist[j].fdir==
'x')&&(
TMath::Abs(curDist[i].fdist-curDist[j].fdist)<threshold)) {
5773 if (cling && (!movedX) && (!resize)) {
5778 DrawDist(curDist[i].fa->GetBBox(), curDist[i].fb->GetBBox(),
'x');
5779 DrawDist(curDist[j].fa->GetBBox(), curDist[j].fb->GetBBox(),
'x');
5782 if ((curDist[i].fdir == curDist[j].fdir)&&(curDist[j].fdir==
'y')&&(
TMath::Abs(curDist[i].fdist-curDist[j].fdist)<threshold)) {
5783 if (cling && (!movedY) && (!resize)) {
5788 DrawDist(curDist[i].fa->GetBBox(), curDist[i].fb->GetBBox(),
'y');
5789 DrawDist(curDist[j].fa->GetBBox(), curDist[j].fb->GetBBox(),
'y');
5796 for (
UInt_t i = 0; i<
n; i++) {
5798 if (a && (cur != a)) {
5811 gPad->PixeltoX(aBBox.
fX+aBBox.
fWidth),
gPad->PixeltoY(aBBox.
fY-dSizeArrow-
gPad->VtoPixel(0)), 0.01,
"<|>");
5853 if (tmpGuideLinePad) {
5856 tmpGuideLinePad->
Delete();
5857 tmpGuideLinePad = 0;
5924 if (text && strlen(text))
5943 Int_t nch, nobjects;
5963 while ((obj = next())) {
5982 TObject::Streamer(b);
5983 TAttLine::Streamer(b);
5984 TAttFill::Streamer(b);
5985 b >> single;
fX1 = single;
5986 b >> single;
fY1 = single;
5987 b >> single;
fX2 = single;
5988 b >> single;
fY2 = single;
5991 TAttPad::Streamer(b);
5993 TVirtualPad::Streamer(b);
5994 TAttPad::Streamer(b);
5995 b >> single;
fX1 = single;
5996 b >> single;
fY1 = single;
5997 b >> single;
fX2 = single;
5998 b >> single;
fY2 = single;
6025 b >> single;
fWNDC = single;
6026 b >> single;
fHNDC = single;
6031 b >> single;
fUxmin = single;
6032 b >> single;
fUymin = single;
6033 b >> single;
fUxmax = single;
6034 b >> single;
fUymax = single;
6036 TVirtualPad::Streamer(b);
6037 TAttPad::Streamer(b);
6096 char drawoption[64];
6097 for (
Int_t i = 0; i < nobjects; i++) {
6122 b >> single;
fTheta = single;
6123 b >> single;
fPhi = single;
6187 while ((obj = next())) {
6269 if (strlen(emode))
gROOT->SetEditorMode(emode);
6270 if (
gROOT->GetEditorMode() == 0 && strlen(pname) > 2)
gROOT->SetEditorMode(&pname[1]);
6274 TObject *oldlast =
gPad->GetListOfPrimitives()->Last();
6277 Bool_t hasname = strlen(pname) > 0;
6278 if (!pname[0] && !emode[0]) testlast =
kTRUE;
6279 if (testlast)
gROOT->SetEditorMode();
6281 if (
gROOT->GetEditorMode() == 0) {
6284 if (obj)
return obj;
6287 obj =
gPad->GetListOfPrimitives()->Last();
6288 if (obj != oldlast)
return obj;
6309 if (
gPad->IsBatch())
return 0;
6310 return (
TObject*)
gROOT->ProcessLineFast(
Form(
"new TGToolTip((TBox*)0x%lx,\"%s\",%d)",
6321 gROOT->ProcessLineFast(
Form(
"delete (TGToolTip*)0x%lx", (
Long_t)tip));
6332 gROOT->ProcessLineFast(
Form(
"((TGToolTip*)0x%lx)->Reset((TPad*)0x%lx)",
6343 gROOT->ProcessLineFast(
Form(
"((TGToolTip*)0x%lx)->Hide()",(
Long_t)tip));
6351 ::Info(
"TPad::x3d()",
"Fn is depreciated - use TPad::GetViewer3D() instead");
6354 if (!type || !type[0]) {
6371 if ( (!type || !type[0] || (strstr(type,
"gl") && !strstr(type,
"ogl"))) && !
fCanvas->
UseGL())
6374 if (type && type[0]) {
6399 if (!strstr(type,
"pad")) {
6403 Warning(
"TPad::CreateViewer3D",
"Cannot create 3D viewer of type: %s", type);
6409 if (strstr(type,
"gl") && !strstr(type,
"ogl"))
6412 createdExternal =
kTRUE;
6428 if (createdExternal) {
6465 Emit(
"RecordPave(const TObject*)", (
Long_t)obj);
6473 Emit(
"RecordLatex(const TObject*)", (
Long_t)obj);
Double_t PadtoY(Double_t y) const
Convert y from pad to Y.
virtual TCanvasImp * GetCanvasImp() const
Get canvas implementation pointer if any.
Double_t PadtoX(Double_t x) const
Convert x from pad to X.
virtual TObject * GetSelected() const
Get selected.
Int_t GetFirst() const
Return first bin on the axis i.e.
Bool_t fAbsCoord
Use absolute coordinates.
virtual const char * GetTitle() const
Returns title 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 Style_t GetLineStyle() const
Return the line style.
virtual Style_t GetFillStyle() const
Return the fill area style.
virtual void SetLineWidth(Width_t lwidth)
Set the line width.
Option_t * GetOption() const
Double_t fPixeltoX
xworld = fPixeltoXk + fPixeltoX*xpixel
object has not been deleted
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 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.
TList * GetListOfBases()
Return list containing the TBaseClass(es) of a class.
virtual void SetAlpha(Float_t a)
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).
Int_t GetEventX() const
Get X event.
static void PolyLine(Int_t event, Int_t px, Int_t py, Int_t mode)
Create a new PolyLine in gPad.
Double_t GetUxmin() 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.
void SetPadGridX(Bool_t gridx)
virtual Float_t GetTextAngle() const
Return the text angle.
TList * fPrimitives
->List of primitives (subpads)
virtual TObject * GetPrimitive(const char *name) const
Get primitive.
virtual void ResizePad(Option_t *option="")
Compute pad conversion coefficients.
virtual void Draw(Option_t *option="")
Draw this pavetext with its current attributes.
virtual TCanvas * GetCanvas() const
virtual Double_t GetY1() const =0
Double_t Floor(Double_t x)
virtual void SetCursor(ECursor cursor)
Set cursor.
Bool_t GetPadGridX() const
void SetPadLeftMargin(Float_t margin=0.1)
Int_t GetFrameBorderMode() const
Double_t GetAbsWNDC() const
ABC describing GUI independent main window (with menubar, scrollbars and a drawing area)...
virtual Double_t GetBinContent(Int_t bin) const
Return content of bin number bin.
virtual void DrawPolyLineNDC(Int_t n, const Double_t *u, const Double_t *v)=0
virtual TBox * DrawBox(Double_t x1, Double_t y1, Double_t x2, Double_t y2)
Draw this box with new coordinates.
virtual Bool_t IsEditable() const =0
virtual void SetMaximum(Double_t maximum=-1111)
This class displays a legend box (TPaveText) containing several legend entries.
The Histogram stack class.
R__EXTERN Int_t gErrorIgnoreLevel
virtual Font_t GetTextFont() const
Return the text font.
Color_t GetFrameLineColor() const
virtual void DrawCrosshair()
Function called to draw a crosshair in the canvas.
virtual void SetLimits(Double_t xmin, Double_t xmax)
Width_t GetFrameBorderSize() const
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
virtual TBox * AddBox(Double_t x1, Double_t y1, Double_t x2, Double_t y2)
Add a new graphics box to this pavetext.
virtual void SetBatch(Bool_t batch=kTRUE)
Set pad in batch mode.
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.
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 ls(Option_t *option="") const
List (ls) all objects in this collection.
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 void Paint(Option_t *option="")
Paint all primitives in pad.
virtual void SetBorderMode(Short_t bordermode)
virtual Int_t GetMaximumBin() const
Return location of bin with maximum value in the range.
RooArgList L(const RooAbsArg &v1)
virtual Int_t GetEventX() const
Get X event.
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.
Int_t XtoAbsPixel(Double_t x) const
virtual void UseCurrentStyle()
Replace current frame attributes by current style.
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".
Double_t GetAbsYlowNDC() const
TVirtualPad * GetPadSave() const
virtual Short_t GetBorderSize() const =0
Int_t GetPadTickX() const
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...
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.
virtual Int_t GetDimension() const
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
Color_t GetTitleFillColor() const
Int_t GetBorderSize() const
static void SaveColor(std::ostream &out, Int_t ci)
Save a color with index > 228 as a C++ statement(s) on output stream out.
Width_t GetPadBorderSize() const
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
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
virtual void SetBBoxCenter(const TPoint &p)
Set center of the Pad.
virtual void SetFixedAspectRatio(Bool_t fixed=kTRUE)
Fix pad aspect ratio to current value if fixed is true.
virtual UInt_t GetWw() const
Get Ww.
virtual void SetBorderMode(Short_t bordermode)
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
A TMultiGraph is a collection of TGraph (or derived) objects.
virtual ~TPad()
Pad destructor.
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 Bool_t IsRetained() const
Is pad retained ?
virtual TText * AddText(Double_t x1, Double_t y1, const char *label)
Add a new Text line to this pavetext at given coordinates.
Buffer base class used for serializing objects.
TList * fExecs
List of commands to be executed when a pad event occurs.
virtual Float_t GetTextSize() const
Return the text size.
virtual void CopyPixmap()
Copy the pixmap of the pad to the canvas.
Bool_t HasFixedAspectRatio() const
Double_t GetUymax() const
Double_t GetAbsXlowNDC() const
TPluginHandler * FindHandler(const char *base, const char *uri=0)
Returns the handler if there exists a handler for the specified URI.
virtual Double_t GetBinLowEdge(Int_t bin) const
Return low edge of bin.
Int_t UtoPixel(Double_t u) 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.
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 GetRangeAxis(Double_t &xmin, Double_t &ymin, Double_t &xmax, Double_t &ymax)
Return pad axis coordinates range.
double inv(double x)
For comparisons.
Double_t fUxmax
Maximum value on the X axis.
Int_t LoadPlugin()
Load the plugin library for this handler.
void PaintBorder(Color_t color, Bool_t tops)
Paint the pad border.
void SetTitleFont(Style_t font=62, Option_t *axis="X")
virtual void DestroyDrawable()=0
tomato 1-D histogram with a float per channel (see TH1 documentation)}
virtual Double_t GetNormFactor() const
Double_t fUymax
Maximum value on the Y axis.
virtual Bool_t OpaqueMoving() const
Is pad moving in opaque mode ?
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
virtual void PaintModified()
Traverse pad hierarchy and (re)paint only modified pads.
R__EXTERN TVirtualMutex * gROOTMutex
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.
virtual TObject * FindObject(const char *name) const
Find an object in this list using its name.
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
TH1F * GetHistogram() const
Returns a pointer to the histogram used to draw the axis Takes into account the two following cases...
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 void Print(const char *filename="") const
Save Pad contents in a file in one of various formats.
virtual void Modify()
Change current line attributes if necessary.
virtual void SetX2(Double_t x2)
Int_t GetHatchesLineWidth() const
virtual Short_t GetBorderMode() const
UInt_t GetWindowHeight() const
void box(Int_t pat, Double_t x1, Double_t y1, Double_t x2, Double_t y2)
Double_t YtoPad(Double_t y) const
Convert y from Y to pad.
Double_t fAbsWNDC
Absolute Width of pad along X in NDC.
Long_t ExecPlugin(int nargs, const T &...params)
virtual Int_t GetNumber() const =0
Bool_t BeginsWith(const char *s, ECaseCompare cmp=kExact) const
Int_t GetMaxIndex(Int_t dim) const
Return maximum index for array dimension "dim".
void SetPadBottomMargin(Float_t margin=0.1)
Double_t fAbsPixeltoYk
Conversion coefficient for absolute pixel to Y World.
virtual TObject * At(Int_t idx) const
Returns the object at position idx. Returns 0 if idx is out of range.
virtual TVirtualPad * cd(Int_t subpadnumber=0)=0
Bool_t IsModified() const
bit set when zooming on Y axis
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 void DrawBox(Double_t x1, Double_t y1, Double_t x2, Double_t y2, EBoxMode mode)=0
Int_t fNumber
pad number identifier
virtual void AddLast(TObject *obj)
Add object at the end of the list.
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.
Width_t GetTitleBorderSize() const
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].
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
TString & Replace(Ssiz_t pos, Ssiz_t n, const char *s)
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 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.
const char * Data() const
virtual void SetTextFont(Font_t tfont=62)
Set the text font.
void SetClickSelected(TObject *obj)
void SetTitleBorderSize(Width_t size=2)
virtual void SaveImage(TVirtualPad *pad, const char *fileName, Int_t type) const =0
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 Color_t GetLineColor() const =0
Double_t GetYlowNDC() const
virtual Short_t GetTextAlign() const
Return the text alignment.
Float_t GetTopMargin() const
Float_t GetRightMargin() const
Int_t GetEvent() const
Get Event.
virtual TObject * After(const TObject *obj) const
Returns the object after object obj.
void PaintDate()
Paint the current date and time if the option date is on.
Float_t GetBottomMargin() const
virtual void Cleared(TVirtualPad *pad)
Emit pad Cleared signal.
virtual Int_t GetEvent() const
Get Event.
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)
virtual void Sleep(UInt_t milliSec)
Sleep milliSec milli seconds.
TFrame * GetFrame()
Get frame.
Float_t GetPadBottomMargin() const
virtual Option_t * GetDrawOption() const
Get option used by the graphics system to draw this object.
virtual void DrawLineNDC(Double_t u1, Double_t v1, Double_t u2, Double_t v2)=0
Color_t GetTitleTextColor() const
virtual Int_t GetEventY() const
Get Y event.
The TNamed class is the base class for all named ROOT classes.
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)
TFrame * fFrame
! Pointer to 2-D frame (if one exists)
static Int_t GetMaxPickDistance()
Static function (see also TPad::SetMaxPickDistance)
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 Color_t GetTextColor() const
Return the text color.
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.
Double_t Log10(Double_t x)
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)
virtual void SaveAs(const char *filename="", Option_t *option="") const
Save Pad contents in a file in one of various formats.
virtual TObjLink * LastLink() const
void SetPadTickX(Int_t tickx)
Bool_t IsRetained() const
Is pad retained ?
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)
virtual Double_t GetX1() const =0
static void DrawColorTable()
Static function to Display Color Table in a pad.
virtual Int_t VtoAbsPixel(Double_t v) const =0
Double_t GetHatchesSpacing() const
Base class for several text objects.
Int_t fCrosshairPos
Position of crosshair.
Abstract 3D shapes viewer.
void SetTitleTextColor(Color_t color=1)
UInt_t GetWw() const
Get Ww.
Double_t fAbsHNDC
Absolute Height of pad along Y in NDC.
Int_t GetEventY() const
Get Y event.
Bool_t OpaqueMoving() const
Is pad moving in opaque mode ?
Int_t fLogz
(=0 if Z linear scale, =1 if log scale)
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
virtual void SetLogx(Int_t value=1)
Set Lin/Log scale for X.
virtual TH1 * DrawCopy(Option_t *option="", const char *name_postfix="_copy") const
Copy this histogram and Draw in the current pad.
virtual Rectangle_t GetBBox()=0
virtual void SetFillColor(Color_t fcolor)=0
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 TObject * GetParent() const
Int_t YtoAbsPixel(Double_t y) const
virtual void Draw(Option_t *option="")
Draw Pad in Current pad (re-parent pad if necessary).
Double_t GetXlowNDC() const
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].
virtual void SetEditable(Bool_t mode=kTRUE)
Set pad editable yes/no If a pad is not editable:
virtual void XYtoAbsPixel(Double_t x, Double_t y, Int_t &xpixel, Int_t &ypixel) const
void Emit(const char *signal)
Acitvate signal without args.
virtual void SetTextAlign(Short_t align=11)
Set the text alignment.
virtual Int_t GetCanvasID() const
Get canvas identifier.
static Bool_t SupportAlpha()
Static function returning "true" if transparency is supported.
Double_t fX2
X of upper X coordinate.
const char * GetName() const
Returns name of object.
virtual Color_t GetHighLightColor() const
Get highlight color.
virtual void CopyPixmaps()
Copy the sub-pixmaps of the pad to the canvas.
Style_t GetFrameFillStyle() const
void SetOptLogx(Int_t logx=1)
Int_t GetPadTickY() const
Int_t GetOptTitle() const
Double_t fXtoPixel
xpixel = fXtoPixelk + fXtoPixel*xworld
Double_t fPixeltoY
yworld = fPixeltoYk + fPixeltoY*ypixel
virtual TVirtualPad * GetVirtCanvas() const
Get virtual canvas.
Float_t GetPadRightMargin() const
void PaintPolyLine(Int_t n, Float_t *x, Float_t *y, Option_t *option="")
Paint polyline in CurrentPad World coordinates.
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 void Delete(Option_t *option="")
Delete this object.
Using a TBrowser one can browse all ROOT objects.
TObject * fPadView3D
! 3D View of this TPad
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 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
TVirtualPad * GetSelectedPad() const
Get selected pad.
virtual TObject * FindObject(const char *name) const
Search if object named name is inside this pad or in pads inside this pad.
virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py)
Execute action corresponding to one event.
virtual void SetDoubleBuffer(Int_t mode=1)
Set double buffer mode ON or OFF.
virtual void SetAttLinePS(Color_t color, Style_t style, Width_t lwidth)
Set postscript line attributes.
void SetPadBorderMode(Int_t mode=1)
virtual void SetBottomMargin(Float_t bottommargin)
Set Pad bottom margin in fraction of the pad height.
Int_t fPixmapID
! Off-screen pixmap identifier
virtual void DrawPolyLine(Int_t n, const Double_t *x, const Double_t *y)=0
Bool_t EndsWith(const char *pat, ECaseCompare cmp=kExact) const
Return true if string ends with the specified string.
virtual void SetCursor(ECursor cursor)
Set cursor type.
virtual void DeleteToolTip(TObject *tip)
Delete tool tip object.
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...
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)
virtual void SetFillColor(Color_t fcolor)
Set the fill area color.
virtual void SetBBoxX1(const Int_t x)=0
virtual void Range(Double_t x1, Double_t y1, Double_t x2, Double_t y2)
Set world coordinate system for the pad.
virtual void SetAttFillPS(Color_t color, Style_t style)
Set postscript fill area attributes.
virtual Double_t GetBinUpEdge(Int_t bin) const
Return up edge of bin.
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 TPoint GetBBoxCenter()
Return the center of the Pad as TPoint in pixels.
virtual Int_t GetValue(const char *name, Int_t dflt)
Returns the integer value for a resource.
virtual const char * ClassName() const
Returns name of class to which the object belongs.
virtual Bool_t HasCrosshair() const
Return kTRUE if the crosshair has been activated (via SetCrosshair).
virtual void ls(Option_t *option="") const
List all primitives in pad.
virtual TObject * Remove(TObject *obj)
Remove object from the list.
virtual void UseCurrentStyle()
Force a copy of current style for all objects in pad.
virtual void SetTextAngle(Float_t tangle=0)
Set the text angle.
virtual Color_t GetFillColor() const
Return the fill area color.
virtual void SetBBoxY2(const Int_t y)
Set bottom of BoundingBox to a value (resize in y direction on bottom)
TObject * GetObject() const
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.
void CopyBackgroundPixmap(Int_t x, Int_t y)
Copy pixmap of this pad as background of the current pad.
Double_t GetAbsHNDC() const
virtual void SetView(TView *view=0)
Set the current TView. Delete previous view if view=0.
Width_t fLineWidth
Line width.
Bool_t TestBit(UInt_t f) const
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 OpaqueResizing() const
Is pad resizing in opaque mode ?
char * Form(const char *fmt,...)
virtual void ResetToolTip(TObject *tip)
Reset tool tip, i.e.
virtual Double_t GetSumOfWeights() const
Return the sum of weights excluding under/overflows.
virtual Double_t GetY2() const =0
virtual void SetAttMarkerPS(Color_t color, Style_t style, Size_t msize)
Set postscript marker attributes.
virtual Short_t GetBorderSize() const
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.
virtual const char * GetName() const
Returns name of object.
Bool_t OpaqueResizing() const
Is pad resizing in opaque mode ?
static void IndentLevel()
Functions used by ls() to indent an object hierarchy.
Style_t GetFrameLineStyle() const
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 Exec(const char *shellcmd)
Execute a command.
Double_t GetUxmax() const
static double p1(double t, double a, double b)
Float_t fLeftMargin
LeftMargin.
virtual TObjLink * FirstLink() const
virtual Color_t GetLineColor() const
Return the line color.
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
TVirtualPad * GetPadSave() const
Get save pad.
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.
virtual TVirtualPad * GetMother() const
Int_t fCrosshair
Crosshair type (0 if no crosshair requested)
UInt_t GetWindowWidth() const
Each class (see TClass) has a linked list of its base class(es).
TPad()
Pad default constructor.
Double_t fUtoAbsPixelk
Conversion coefficient for U NDC to absolute pixel.
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.
#define R__LOCKGUARD2(mutex)
Double_t fY2
Y of upper Y coordinate.
Color_t GetFrameFillColor() const
virtual void ResizePad()=0
virtual void BeginScene()=0
Double_t fAspectRatio
ratio of w/h in case of fixed ratio
Float_t GetPadLeftMargin() const
const char * GetTitle() const
Returns title of object.
virtual void SetY2(Double_t y2)
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 TObject * Last() const
Return the last object in the list. Returns 0 when list is empty.
Float_t GetLeftMargin() const
Int_t XtoPixel(Double_t x) const
virtual Int_t ReadClassBuffer(const TClass *cl, void *pointer, const TClass *onfile_class=0)=0
Option_t * GetOption() const
virtual Bool_t IsTransparent() 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.
TCanvasImp * GetCanvasImp() const
Get canvas implementation pointer if any.
virtual Style_t GetFillStyle() const =0
virtual Int_t GetSize() const
virtual Int_t XtoAbsPixel(Double_t x) const =0
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)
Int_t GetCrosshair() const
Return the crosshair type (from the mother canvas) crosshair type = 0 means no crosshair.
Double_t fXtoPixelk
Conversion coefficient for X World to pixel.
virtual const char * GetName() const
Returns name of object.
virtual const char * GetName() const =0
Returns name of object.
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.
char * EscapeChars(const char *text) const
Introduce an escape character (@) in front of a special chars.
Wrapper around a TObject so it can be stored in a TList.
virtual Bool_t IsEditable() const
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.
Color_t GetPadColor() const
Bool_t IsBatch() const
Is pad in batch mode ?
Double_t XtoPad(Double_t x) const
Convert x from X to pad.
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.
TVirtualPad * GetClickSelectedPad() const
virtual void GetRange(Double_t &x1, Double_t &y1, Double_t &x2, Double_t &y2)
Return pad world coordinates range.
Double_t GetUymin() const
virtual void SetBBoxY1(const Int_t y)=0
The color creation and management class.
virtual Bool_t IsBatch() const
Is pad in batch mode ?
void Browse(TBrowser *b)
Browse this collection (called by TBrowser).
TObject * GetClickSelected() const
virtual void SetBBoxY1(const Int_t y)
Set top of BoundingBox to a value (resize in y direction on top)
Int_t fTickx
Set to 1 if tick marks along X.
TObject * GetSelected() const
Get selected.
virtual TPoint GetBBoxCenter()=0
virtual Int_t GetMinimumBin() const
Return location of bin with minimum value in the range.
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.
TH1F * GetHistogram() const
Returns a pointer to the histogram used to draw the axis.
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.
virtual Int_t YtoAbsPixel(Double_t y) const =0
void SetPadTopMargin(Float_t margin=0.1)
TH1 * GetHistogram() const
Returns a pointer to the histogram used to draw the axis Takes into account the two following cases...
TVirtualViewer3D * fViewer3D
! Current 3D viewer
virtual void SetBBoxX2(const Int_t x)
Set right hand side of BoundingBox to a value (resize in x direction on right)
Int_t GetLast() const
Return last bin on the axis i.e.
virtual void Draw(Option_t *option="")
Draw this box with its current attributes.
virtual void SetRightMargin(Float_t rightmargin)
Set Pad right margin in fraction of the pad width.
Double_t fXlowNDC
X bottom left corner of pad in NDC [0,1].
Float_t fRightMargin
RightMargin.
Mother of all ROOT objects.
Bool_t fFixedAspectRatio
True if fixed aspect ratio.
void Clear(Option_t *option="")
Delete all pad primitives.
Int_t GetArrayDim() const
Return number of array dimensions.
virtual TObject * First() const
Return the first object in the list. Returns 0 when list is empty.
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.
static Int_t IncreaseDirLevel()
Increase the indentation level for ls().
virtual void SetDoubleBuffer(Int_t mode=1)
Set Double Buffer On/Off.
virtual Int_t UtoPixel(Double_t u) const =0
virtual TVirtualPad * GetPad(Int_t subpadnumber) const
Get a pointer to subpadnumber of this pad.
virtual Int_t VtoPixel(Double_t v) const =0
virtual void DrawPolyMarker(Int_t n, const Double_t *x, const Double_t *y)=0
virtual void Browse(TBrowser *b)
Browse pad.
TList * GetListOfPrimitives() const
virtual void RecordPave(const TObject *obj)
Emit RecordPave() signal.
Int_t YtoPixel(Double_t y) 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 FindFixBin(Double_t x) const
Find bin number corresponding to abscissa x.
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 void ReleaseViewer3D(Option_t *type="")
Release current (external) viewer.
virtual void SetBBoxCenterX(const Int_t x)=0
Int_t GetCanvasID() const
Get canvas identifier.
Short_t Max(Short_t a, Short_t b)
void SetSelected(TObject *obj)
Set selected canvas.
Double_t fYtoPixelk
Conversion coefficient for Y World to pixel.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) 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.
A Graph is a graphics object made of two arrays X and Y with npoints each.
Int_t GetPadBorderMode() const
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)
virtual void DrawPS(Int_t n, Float_t *xw, Float_t *yw)=0
Width_t GetFrameLineWidth() const
Double_t fHNDC
Height of pad along Y in NDC.
R__EXTERN TVirtualPS * gVirtualPS
TVirtualPad * GetSelectedPad() const
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
virtual void Pop()
Pop pad to the top of the stack.
static Bool_t ContainsTImage(TList *li)
Auxiliary function.
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 TLegend * BuildLegend(Double_t x1=0.5, Double_t y1=0.67, Double_t x2=0.88, Double_t y2=0.88, const char *title="", Option_t *option="")
Build a legend from the graphical objects in the pad.
Bool_t GetPadGridY() const
void SetPadTickY(Int_t ticky)
Style_t GetTitleFont(Option_t *axis="X") const
Return title font.
void SetBatch(Bool_t batch=kTRUE)
Toggle batch mode.
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 IsVertical() const
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.
Double_t Sqrt(Double_t x)
virtual void SetTextSize(Float_t tsize=1)
Set the text size.
virtual void Update()
Update canvas pad buffers.
Draw all kinds of Arrows.
Double_t fY1
Y of lower Y coordinate.
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
Int_t fGLDevice
! OpenGL off-screen pixmap identifier
Float_t GetPadTopMargin() const
RooCmdArg FillStyle(Style_t style)
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
const char * AsString() const
Return the date & time as a string (ctime() format).
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 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 Width_t GetLineWidth() const
Return the line width.
virtual void SetLogz(Int_t value=1)
Set Lin/Log scale for Z.
Double_t fX1
X of lower X coordinate.
Int_t GetPixmapID() const
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.
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
Color_t GetHighLightColor() const
Get highlight color.
virtual void SetY1(Double_t y1)
virtual void x3d(Option_t *type="")
Deprecated: use TPad::GetViewer3D() instead.
void PaintLine(Double_t x1, Double_t y1, Double_t x2, Double_t y2)
Paint line in CurrentPad World coordinates.
virtual TObject * FindObject(const char *name) const
Must be redefined in derived classes.
Double_t AbsPixeltoY(Int_t py)
Short_t GetBorderMode() const
double norm(double *x, double *p)
Int_t VtoPixel(Double_t v) const
Double_t fUxmin
Minimum value on the X axis.
virtual void CopyDrawable(Int_t device, Int_t px, Int_t py)=0
virtual Bool_t BuildingScene() const =0
Int_t fTicky
Set to 1 if tick marks along Y.
virtual UInt_t GetWh() const
Get Wh.
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
virtual void RangeAxisChanged()
virtual Style_t GetLineStyle() const =0
void Modified(Bool_t flag=1)
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...
To make it possible to use GL for 2D graphic in a TPad/TCanvas.
static Int_t fgMaxPickDistance
Maximum Pick Distance.
UInt_t GetWh() const
Get Wh.
virtual Double_t GetX2() const =0
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
Short_t GetBorderSize() const
virtual void SetBorderSize(Int_t bordersize=4)
const char * AsSQLString() const
Return the date & time in SQL compatible string format, like: 1997-01-15 20:16:28.
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 Width_t GetLineWidth() const =0
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.
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 Bool_t CanLoopOnPrimitives() const
virtual void RecordLatex(const TObject *obj)
Emit RecordLatex() signal.
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.
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.
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.