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);
Style_t GetFrameFillStyle() const
Bool_t fAbsCoord
Use absolute coordinates.
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
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 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)
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 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.
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.
RooArgList L(const RooAbsArg &v1)
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
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.
void PaintFillArea(Int_t n, Float_t *x, Float_t *y, Option_t *option="")
Bool_t TestBit(UInt_t f) const
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
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
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.
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 inv(double x)
For comparisons.
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")
virtual void DestroyDrawable()=0
tomato 1-D histogram with a float per channel (see TH1 documentation)}
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
Double_t GetUxmax() const
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 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...
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.
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
Find an object in this list using its name.
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.
char * EscapeChars(const char *text) const
Introduce an escape character (@) in front of a special chars.
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.
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.
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.
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
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 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].
virtual void SetEditable(Bool_t mode=kTRUE)
Set pad editable yes/no If a pad is not editable:
void Emit(const char *signal)
Acitvate signal without args.
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
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 GetEventX() const
Get X event.
virtual void SetAttLinePS(Color_t color, Style_t style, Width_t lwidth)
Set postscript line attributes.
virtual TObject * FindObject(const char *name) const
Must be redefined in derived classes.
TH1F * GetHistogram() const
Returns a pointer to the histogram used to draw the axis.
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
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
virtual Int_t GetValue(const char *name, Int_t dflt)
Returns the integer value for a resource.
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
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.
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.
#define R__LOCKGUARD2(mutex)
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.
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.
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).
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)
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
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.
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.
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.
bit set when zooming on Y axis
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 void Pop()
Pop pad to the top of the stack.
virtual TObjLink * LastLink() const
static Bool_t ContainsTImage(TList *li)
Auxiliary function.
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 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.
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.
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.
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.
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.
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 norm(double *x, double *p)
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
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
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
virtual void SetBorderSize(Int_t bordersize=4)
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
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.