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())) {
431 while( (o=next()) ) {
435 if (!leg) leg =
new TLegend(x1, y1, x2, y2, title);
448 if (!leg) leg =
new TLegend(x1, y1, x2, y2, title);
450 TIter nextgraph(grlist);
453 while ((obj = nextgraph())) {
461 if (!leg) leg =
new TLegend(x1, y1, x2, y2, title);
463 TIter nexthist(hlist);
466 while ((obj = nexthist())) {
482 Info(
"BuildLegend(void)",
"No object to build a TLegend.");
525 while ((obj = next())) {
528 if (n == subpadnumber) {
529 return ((
TPad*)obj)->cd();
591 for (
Int_t i=0;i<2;i++) {
604 while(code1 + code2) {
615 if (ic == 0) ic = code2;
617 yt = y[0] + (y[1]-y[0])*(xclipl-x[0])/(x[1]-x[0]);
621 yt = y[0] + (y[1]-y[0])*(xclipr-x[0])/(x[1]-x[0]);
625 xt = x[0] + (x[1]-x[0])*(yclipb-y[0])/(y[1]-y[0]);
629 xt = x[0] + (x[1]-x[0])*(yclipt-y[0])/(y[1]-y[0]);
635 code1 =
ClippingCode(xt,yt,xclipl,yclipb,xclipr,yclipt);
639 code2 =
ClippingCode(xt,yt,xclipl,yclipb,xclipr,yclipt);
662 for (
Int_t i=0;i<2;i++) {
671 if (x[0] < xclipl) code1 = code1 | 0x1;
672 if (x[0] > xclipr) code1 = code1 | 0x2;
673 if (y[0] < yclipb) code1 = code1 | 0x4;
674 if (y[0] > yclipt) code1 = code1 | 0x8;
676 if (x[1] < xclipl) code2 = code2 | 0x1;
677 if (x[1] > xclipr) code2 = code2 | 0x2;
678 if (y[1] < yclipb) code2 = code2 | 0x4;
679 if (y[1] > yclipt) code2 = code2 | 0x8;
683 while(code1 + code2) {
694 if (ic == 0) ic = code2;
696 yt = y[0] + (y[1]-y[0])*(xclipl-x[0])/(x[1]-x[0]);
700 yt = y[0] + (y[1]-y[0])*(xclipr-x[0])/(x[1]-x[0]);
704 xt = x[0] + (x[1]-x[0])*(yclipb-y[0])/(y[1]-y[0]);
708 xt = x[0] + (x[1]-x[0])*(yclipt-y[0])/(y[1]-y[0]);
714 code1 =
ClippingCode(xt,yt,xclipl,yclipb,xclipr,yclipt);
718 code2 =
ClippingCode(xt,yt,xclipl,yclipb,xclipr,yclipt);
731 if (x < xcl1) code = code | 0x1;
732 if (x > xcl2) code = code | 0x2;
733 if (y < ycl1) code = code | 0x4;
734 if (y > ycl2) code = code | 0x8;
786 x1 = x[n-1]; y1 = y[n-1];
789 for (i=0; i<
n; i++) {
790 x2 = x[i]; y2 = y[i];
794 slope = (y2-y1)/(x2-x1);
798 xc2[nc2] = xclipl; yc2[nc2++] = slope*(xclipl-
x1)+y1;
800 xc2[nc2] =
x2; yc2[nc2++] = y2;
804 xc2[nc2] = xclipl; yc2[nc2++] = slope*(xclipl-
x1)+y1;
805 xc2[nc2] =
x2; yc2[nc2++] = y2;
812 x1 = xc2[nc2-1]; y1 = yc2[nc2-1];
814 for (i=0; i<nc2; i++) {
815 x2 = xc2[i]; y2 = yc2[i];
819 slope = (x2-
x1)/(y2-y1);
823 xc[nc] = x1+(yclipt-y1)*slope; yc[nc++] = yclipt;
825 xc[nc] =
x2; yc[nc++] = y2;
829 xc[nc] = x1+(yclipt-y1)*slope; yc[nc++] = yclipt;
830 xc[nc] =
x2; yc[nc++] = y2;
837 x1 = xc[nc-1]; y1 = yc[nc-1];
839 for (i=0; i<nc; i++) {
840 x2 = xc[i]; y2 = yc[i];
844 slope = (y2-y1)/(x2-x1);
848 xc2[nc2] = xclipr; yc2[nc2++] = slope*(xclipr-
x1)+y1;
850 xc2[nc2] =
x2; yc2[nc2++] = y2;
854 xc2[nc2] = xclipr; yc2[nc2++] = slope*(xclipr-
x1)+y1;
855 xc2[nc2] =
x2; yc2[nc2++] = y2;
862 x1 = xc2[nc2-1]; y1 = yc2[nc2-1];
864 for (i=0; i<nc2; i++) {
865 x2 = xc2[i]; y2 = yc2[i];
869 slope = (x2-
x1)/(y2-y1);
873 xc[nc] = x1+(yclipb-y1)*slope; yc[nc++] = yclipb;
875 xc[nc] =
x2; yc[nc++] = y2;
879 xc[nc] = x1+(yclipb-y1)*slope; yc[nc++] = yclipb;
880 xc[nc] =
x2; yc[nc++] = y2;
920 if (!
gPad->IsBatch()) {
927 if (!
gROOT->GetListOfCanvases())
return;
929 gROOT->GetListOfCanvases()->Remove(
this);
950 if (
gROOT->GetSelectedPad() ==
this)
gROOT->SetSelectedPad(0);
975 while ((obj = next())) {
977 ((
TPad*)obj)->CopyPixmap();
978 ((
TPad*)obj)->CopyPixmaps();
1004 Int_t pxl, pyl, pxt, pyt;
1009 if (px1 < px2) {pxl = px1; pxt = px2;}
1010 else {pxl = px2; pxt = px1;}
1011 if (py1 < py2) {pyl = py1; pyt = py2;}
1012 else {pyl = py2; pyt = py1;}
1016 if ( (px > pxl && px < pxt) && (py > pyl && py < pyt) ) {
1023 if (py < pyl) dxl += pyl - py;
1024 if (py > pyt) dxl += py - pyt;
1026 if (py < pyl) dxt += pyl - py;
1027 if (py > pyt) dxt += py - pyt;
1029 if (px < pxl) dyl += pxl - px;
1030 if (px > pxt) dyl += px - pxt;
1032 if (px < pxl) dyt += pxl - px;
1033 if (px > pxt) dyt += px - pxt;
1036 if (dxt < distance) distance = dxt;
1037 if (dyl < distance) distance = dyl;
1038 if (dyt < distance) distance = dyt;
1084 arr[1] =
this; arr[2] = (
void*)&nx;arr[3] = (
void*)& ny;
1085 arr[4] = (
void*)&xmargin; arr[5] = (
void *)& ymargin; arr[6] = (
void *)&color;
1086 if ((*
gThreadXAR)(
"PDCD", 7, arr, 0))
return;
1091 if (nx <= 0) nx = 1;
1092 if (ny <= 0) ny = 1;
1099 char *
name =
new char [nchname];
1100 char *title =
new char [nchtitle];
1103 if (xmargin > 0 && ymargin > 0) {
1107 for (iy=0;iy<
ny;iy++) {
1108 y2 = 1 - iy*dy - ymargin;
1109 y1 = y2 - dy + 2*ymargin;
1111 if (y1 > y2)
continue;
1112 for (ix=0;ix<
nx;ix++) {
1113 x1 = ix*dx + xmargin;
1114 x2 = x1 +dx -2*xmargin;
1115 if (x1 > x2)
continue;
1117 snprintf(name,nchname,
"%s_%d",
GetName(),n);
1118 pad =
new TPad(name,name,x1,y1,x2,y2,color);
1144 if (i == nx-1) x2 = 1-xr;
1146 number = j*nx + i +1;
1149 if (j == 0) y2 = 1-yt;
1150 if (j == ny-1) y1 = 0;
1151 snprintf(name,nchname,
"%s_%d",
GetName(),number);
1152 snprintf(title,nchtitle,
"%s_%d",
GetTitle(),number);
1153 pad =
new TPad(name,title,x1,y1,x2,y2);
1169 if (padsav) padsav->
cd();
1190 Divide( w,
h, xmargin, ymargin, color);
1200 gROOT->MakeDefCanvas();
1238 Int_t nd,nf,nc,nkd,nkf,i,j;
1251 Range(0,0,xpad,ypad);
1256 clevel[nlevel] = obj;
1265 if (nlevel >= maxlev-1)
break;
1269 Int_t ilevel, nelem;
1270 for (ilevel=nlevel;ilevel>=0;ilevel--) {
1271 cl = clevel[ilevel];
1273 if (nelem > maxelem) maxelem = nelem;
1274 nc = (nelem/50) + 1;
1284 if (dx < 1.3) dx = 1.3;
1285 tsizcm = tsizcm - 0.03*
Double_t(ncdraw-5);
1286 if (tsizcm < 0.27) tsizcm = 0.27;
1291 for (ilevel=nlevel;ilevel>=0;ilevel--) {
1292 cl = clevel[ilevel];
1294 if (nelem > maxelem) maxelem = nelem;
1295 nc = (nelem/50) + 1;
1297 if (ilevel < nlevel) x1 = x2 + 0.5;
1315 v1 = y1 -
Double_t(nkf+nkd+nc-1)*dy;
1327 TBox *
box = pt->
AddBox(0,(y1+0.01-v1)/dv,0,(v2-0.01-v1)/dv);
1329 pt->
AddLine(0,(y1-v1)/dv,0,(y1-v1)/dv);
1341 if (i >= nkd) { i = 1; y = y1 - 0.5*dy; x += 1/
Double_t(nc); }
1342 else { i++; y -= dy; }
1350 while (indx < dim ){
1351 ldname = strlen(dname);
1352 snprintf(&dname[ldname],256,
"[%d]",d->
GetMaxIndex(indx));
1355 pt->
AddText(x,(y-v1)/dv,dname);
1362 pt->
AddLine(0,(ysep-v1)/dv,0,(ysep-v1)/dv);
1373 while ((m = (
TMethod *) nextm())) {
1375 !strcmp( m->
GetName(),
"Dictionary" ) ||
1376 !strcmp( m->
GetName(),
"Class_Version" ) ||
1377 !strcmp( m->
GetName(),
"DeclFileName" ) ||
1378 !strcmp( m->
GetName(),
"DeclFileLine" ) ||
1379 !strcmp( m->
GetName(),
"ImplFileName" ) ||
1380 !strcmp( m->
GetName(),
"ImplFileLine" )
1383 if (fcount > nf)
break;
1384 if (i >= nkf) { i = 1; y = ysep - 0.5*dy; x += 1/
Double_t(nc); }
1385 else { i++; y -= dy; }
1390 for (j=ilevel-1;j>=0;j--) {
1391 if (cl == clevel[ilevel]) {
1392 if (clevel[j]->GetMethodAny((
char*)m->
GetName())) {
1439 Int_t pxmin,pxmax,pymin,pymax,pxold,pyold,px,py;
1451 pxmax = canvas->
GetWw();
1453 pymax = cpad->
GetWh();
1455 if(pxold)
gVirtualX->DrawLine(pxold,pymin,pxold,pymax);
1456 if(pyold)
gVirtualX->DrawLine(pxmin,pyold,pxmax,pyold);
1483 if (
this != padsav) {
1484 Warning(
"DrawFrame",
"Must be called for the current pad only");
1485 return padsav->
DrawFrame(xmin,ymin,xmax,ymax,title);
1491 if (hframe)
delete hframe;
1495 if (
fLogx && xmin > 0 && xmax > xmin) {
1504 hframe =
new TH1F(
"hframe",title,nbins,xbins);
1507 hframe =
new TH1F(
"hframe",title,nbins,xmin,xmax);
1517 if (padsav) padsav->
cd();
1528 Double_t xlow, ylow, xup, yup, hs, ws;
1533 gPad->SetFillColor(0);
1535 gPad->Range(x1,y1,x2,y2);
1547 for (i=0;i<10;i++) {
1556 box->
DrawBox(xlow, ylow, xup, yup);
1559 box->
DrawBox(xlow, ylow, xup, yup);
1562 text->
DrawText(0.5*(xlow+xup), 0.5*(ylow+yup),
Form(
"%d",color));
1589 const Int_t kMaxDiff = 5;
1590 const Int_t kMinSize = 20;
1591 static Int_t pxorg, pyorg;
1592 static Int_t px1, px2, py1, py2, pxl, pyl, pxt, pyt, pxold, pyold;
1593 static Int_t px1p, px2p, py1p, py2p, pxlp, pylp, pxtp, pytp;
1594 static Bool_t pA, pB, pC, pD, pTop, pL, pR, pBot, pINSIDE;
1617 pA = pB = pC = pD = pTop = pL = pR = pBot = pINSIDE =
kFALSE;
1661 if (newcode)
return;
1728 pA = pB = pC = pD = pTop = pL = pR = pBot = pINSIDE =
kFALSE;
1732 pxold = pxl; pyold = pyl; pA =
kTRUE;
1737 pxold = pxt; pyold = pyl; pB =
kTRUE;
1742 pxold = pxt; pyold = pyt; pC =
kTRUE;
1747 pxold = pxl; pyold = pyt; pD =
kTRUE;
1751 if ((px > pxl+kMaxDiff && px < pxt-kMaxDiff) &&
1753 pxold = pxl; pyold = pyl; pTop =
kTRUE;
1757 if ((px > pxl+kMaxDiff && px < pxt-kMaxDiff) &&
1759 pxold = pxt; pyold = pyt; pBot =
kTRUE;
1763 if ((py > pyl+kMaxDiff && py < pyt-kMaxDiff) &&
1765 pxold = pxl; pyold = pyl; pL =
kTRUE;
1769 if ((py > pyl+kMaxDiff && py < pyt-kMaxDiff) &&
1771 pxold = pxt; pyold = pyt; pR =
kTRUE;
1775 if ((px > pxl+kMaxDiff && px < pxt-kMaxDiff) &&
1776 (py > pyl+kMaxDiff && py < pyt-kMaxDiff)) {
1777 pxold = px; pyold = py; pINSIDE =
kTRUE;
1785 if (pA || pB || pC || pD || pTop || pL || pR || pBot)
1788 if (!pA && !pB && !pC && !pD && !pTop && !pL && !pR && !pBot && !pINSIDE)
1801 if (px > pxt-kMinSize) { px = pxt-kMinSize; wx = px; }
1802 if (py > pyt-kMinSize) { py = pyt-kMinSize; wy = py; }
1803 if (px < pxlp) { px = pxlp; wx = px; }
1804 if (py < pylp) { py = pylp; wy = py; }
1822 if (px < pxl+kMinSize) { px = pxl+kMinSize; wx = px; }
1823 if (py > pyt-kMinSize) { py = pyt-kMinSize; wy = py; }
1824 if (px > pxtp) { px = pxtp; wx = px; }
1825 if (py < pylp) { py = pylp; wy = py; }
1843 if (px < pxl+kMinSize) { px = pxl+kMinSize; wx = px; }
1844 if (py < pyl+kMinSize) { py = pyl+kMinSize; wy = py; }
1845 if (px > pxtp) { px = pxtp; wx = px; }
1846 if (py > pytp) { py = pytp; wy = py; }
1864 if (px > pxt-kMinSize) { px = pxt-kMinSize; wx = px; }
1865 if (py < pyl+kMinSize) { py = pyl+kMinSize; wy = py; }
1866 if (px < pxlp) { px = pxlp; wx = px; }
1867 if (py > pytp) { py = pytp; wy = py; }
1886 if (py2 > py1-kMinSize) { py2 = py1-kMinSize; wy = py2; }
1887 if (py2 < py2p) { py2 = py2p; wy = py2; }
1902 if (py1 < py2+kMinSize) { py1 = py2+kMinSize; wy = py1; }
1903 if (py1 > py1p) { py1 = py1p; wy = py1; }
1918 if (px1 > px2-kMinSize) { px1 = px2-kMinSize; wx = px1; }
1919 if (px1 < px1p) { px1 = px1p; wx = px1; }
1935 if (px2 < px1+kMinSize) { px2 = px1+kMinSize; wx = px2; }
1936 if (px2 > px2p) { px2 = px2p; wx = px2; }
1951 Int_t dx = px - pxold;
1952 Int_t dy = py - pyold;
1953 px1 += dx; py1 += dy; px2 += dx; py2 += dy;
1954 if (px1 < px1p) { dx = px1p - px1; px1 += dx; px2 += dx; wx = px+dx; }
1955 if (px2 > px2p) { dx = px2 - px2p; px1 -= dx; px2 -= dx; wx = px-dx; }
1956 if (py1 > py1p) { dy = py1 - py1p; py1 -= dy; py2 -= dy; wy = py-dy; }
1957 if (py2 < py2p) { dy = py2p - py2; py1 += dy; py2 += dy; wy = py+dy; }
1971 x1 = x2 = y1 = y2 = 0;
1998 if (pTop || pBot || pL || pR || pINSIDE) {
2005 if (px != pxorg || py != pyorg) {
2029 if (pINSIDE)
gPad->ShowGuidelines(
this, event);
2030 if (pTop)
gPad->ShowGuidelines(
this, event,
't',
true);
2031 if (pBot)
gPad->ShowGuidelines(
this, event,
'b',
true);
2032 if (pL)
gPad->ShowGuidelines(
this, event,
'l',
true);
2033 if (pR)
gPad->ShowGuidelines(
this, event,
'r',
true);
2034 if (pA)
gPad->ShowGuidelines(
this, event,
'1',
true);
2035 if (pB)
gPad->ShowGuidelines(
this, event,
'2',
true);
2036 if (pC)
gPad->ShowGuidelines(
this, event,
'3',
true);
2037 if (pD)
gPad->ShowGuidelines(
this, event,
'4',
true);
2046 if (
gROOT->IsEscaped()) {
2051 if (opaque||ropaque) {
2054 x1 = x2 = y1 = y2 = 0;
2080 if (pTop || pBot || pL || pR || pINSIDE) {
2087 if (pA || pB || pC || pD || pTop || pL || pR || pBot)
2093 if (px != pxorg || py != pyorg) {
2129 event =
gVirtualX->RequestLocator(1, 1, px, py);
2168 static Int_t axisNumber;
2170 static Int_t px1old, py1old, px2old, py2old;
2171 Int_t bin1, bin2, first, last;
2174 static TBox *zoombox;
2175 Double_t zbx1=0,zbx2=0,zby1=0,zby2=0;
2182 if (strstr(opt,
"cont4")) {
2191 if (!strcmp(axis->
GetName(),
"xaxis")) {
2195 if (!strcmp(axis->
GetName(),
"yaxis")) {
2199 if (!strcmp(axis->
GetName(),
"zaxis")) {
2205 if (axisNumber == 1) {
2211 }
else if (axisNumber == 2) {
2227 if (axisNumber == 1) {
2232 }
else if (axisNumber == 2) {
2246 zoombox =
new TBox(zbx1, zby1, zbx2, zby2);
2257 if (!opaque)
gVirtualX->SetLineColor(-1);
2265 if (axisNumber == 1) {
2275 if (axisNumber == 1) {
2280 }
else if (axisNumber == 2) {
2294 zoombox->
SetX1(zbx1);
2295 zoombox->
SetY1(zby1);
2296 zoombox->
SetX2(zbx2);
2297 zoombox->
SetY2(zby2);
2329 if (
gROOT->IsEscaped()) {
2331 if (opaque && zoombox) {
2340 if (ratio1 > ratio2) {
2345 if (ratio2 - ratio1 > 0.05) {
2347 if (axisNumber == 3 && hobj && hobj->
GetDimension() != 3) {
2356 Float_t newmin = zmin + (zmax-zmin)*ratio1;
2357 Float_t newmax = zmin + (zmax-zmin)*ratio2;
2370 bin1 = first +
Int_t((last-first+1)*ratio1);
2371 bin2 = first +
Int_t((last-first+1)*ratio2);
2381 if (axisNumber == 1) {
2389 }
else if (axisNumber == 2) {
2417 xmin = ((xmin-xmi)/(xma-xmi))*(up-low)+low;
2418 xmax = ((xmax-xmi)/(xma-xmi))*(up-low)+low;
2421 if (!strcmp(axis->
GetName(),
"xaxis")) axisNumber = 1;
2422 if (!strcmp(axis->
GetName(),
"yaxis")) axisNumber = 2;
2423 if (ratio2 - ratio1 > 0.05) {
2430 if (axisNumber == 1) axis->
SetRange(bin1,bin2);
2431 if (axisNumber == 2 && hobj1) {
2448 while ((obj= next())) {
2451 if (hobj == hobj1)
continue;
2454 if (axisNumber == 1) {
2456 }
else if (axisNumber == 2) {
2499 if (found)
return found;
2502 while ((cur = next())) {
2505 if (found)
return found;
2520 if (found)
return found;
2523 while ((cur = next())) {
2526 if (found)
return found;
2601 if (
fCanvas ==
this)
return 0;
2610 if (
fCanvas ==
this)
return 0;
2619 if (
fCanvas ==
this)
return 0;
2762 while ((obj=next())) {
2763 if (!strcmp(name, obj->
GetName()))
return obj;
2766 if (found)
return found;
2776 if (!subpadnumber) {
2783 while ((obj = next())) {
2786 if (pad->
GetNumber() == subpadnumber)
return pad;
2833 if (color <= 0)
return;
2851 gROOT->SetSelectedPad(
this);
2868 <<
" Name= "<<
GetName()<<
" Title= "<<
GetTitle()<<
" Option="<<option<<std::endl;
2960 began3DScene =
kTRUE;
2967 if (padsav) padsav->cd();
2996 if (color < 0) color = -color;
3003 if (bordersize <= 0) bordersize = 2;
3024 if (px1 < px2) {xl =
fX1; xt =
fX2; }
3025 else {xl =
fX2; xt =
fX1;}
3026 if (py1 > py2) {yl =
fY1; yt =
fY2;}
3027 else {yl =
fY2; yt =
fY1;}
3029 Double_t frameXs[7] = {}, frameYs[7] = {};
3033 frameXs[0] = xl; frameYs[0] = yl;
3034 frameXs[1] = xl + realBsX; frameYs[1] = yl + realBsY;
3035 frameXs[2] = frameXs[1]; frameYs[2] = yt - realBsY;
3036 frameXs[3] = xt - realBsX; frameYs[3] = frameYs[2];
3037 frameXs[4] = xt; frameYs[4] = yt;
3038 frameXs[5] = xl; frameYs[5] = yt;
3039 frameXs[6] = xl; frameYs[6] = yl;
3046 frameXs[0] = xl; frameYs[0] = yl;
3047 frameXs[1] = xl + realBsX; frameYs[1] = yl + realBsY;
3048 frameXs[2] = xt - realBsX; frameYs[2] = frameYs[1];
3049 frameXs[3] = frameXs[2]; frameYs[3] = yt - realBsY;
3050 frameXs[4] = xt; frameYs[4] = yt;
3051 frameXs[5] = xt; frameYs[5] = yl;
3052 frameXs[6] = xl; frameYs[6] = yl;
3185 ((
TPad*)obj)->PaintModified();
3197 began3DScene =
kTRUE;
3205 if (padsav) padsav->cd();
3226 if (!
gPad->IsBatch()) {
3229 if (option[0] ==
's') {
3234 if (style > 3000 && style < 4000) {
3240 if (style >= 3100 && style < 4000) {
3242 xb[0] =
x1; xb[1] =
x1; xb[2] =
x2; xb[3] =
x2;
3243 yb[0] = y1; yb[1] = y2; yb[2] = y2; yb[3] = y1;
3253 }
else if (style >= 4000 && style <= 4100) {
3278 }
else if (style >= 1000 && style <= 1999) {
3292 if (option[0] ==
's') {
3295 if (style0 >= 3100 && style0 < 4000) {
3297 xb[0] =
x1; xb[1] =
x1; xb[2] =
x2; xb[3] =
x2;
3298 yb[0] = y1; yb[1] = y2; yb[2] = y2; yb[3] = y1;
3304 if (option[0] ==
'l') {
3323 while ((obj = next())) {
3325 if (obj == stop)
break;
3326 ((
TPad*)obj)->CopyBackgroundPixmap(x, y);
3327 ((
TPad*)obj)->CopyBackgroundPixmaps((
TPad*)obj, stop, x, y);
3346 Warning(
"TPad::PaintFillArea",
"Float_t signature is obsolete. Use Double_t signature.");
3369 n =
ClipPolygon(nn, xx, yy, nc, x, y,xmin,ymin,xmax,ymax);
3379 if (fillstyle >= 3100 && fillstyle < 4000) {
3386 if (!
gPad->IsBatch())
3433 static Double_t ang1[10] = {0., 10., 20., 30., 45.,5., 60., 70., 80., 90.};
3434 static Double_t ang2[10] = {180.,170.,160.,150.,135.,5.,120.,110.,100., 90.};
3436 Int_t fasi = FillStyle%1000;
3439 Int_t iAng1 = fasi%10;
3447 if (!
gPad->IsBatch()) {
3460 if (!
gPad->IsBatch()) {
3472 if (ang1[iAng1] != 5.)
PaintHatches(dy, ang1[iAng1], nn, xx, yy);
3473 if (ang2[iAng2] != 5.)
PaintHatches(dy, ang2[iAng2], nn, xx, yy);
3476 if (!
gPad->IsBatch()) {
3500 const Int_t maxnbi = 100;
3501 Double_t xli[maxnbi], xlh[2], ylh[2], xt1, xt2, yt1, yt2;
3502 Double_t ll,
x,
y,
x1,
x2, y1, y2,
a, b, xi, xip, xin, yi, yip;
3508 ratiox = 1/(rwxmax-rwxmin);
3509 ratioy = 1/(rwymax-rwymin);
3522 gPad->GetPadPar(x1p,y1p,x2p,y2p);
3531 for (i=1; i<=nn; i++) {
3532 x = wndc*ratiox*(xx[i-1]-rwxmin);
3533 y = hndc*ratioy*(yy[i-1]-rwymin);
3534 yrot = sina*x+cosa*
y;
3535 if (yrot > ymax) ymax = yrot;
3536 if (yrot < ymin) ymin = yrot;
3540 for (ycur=ymax; ycur>=
ymin; ycur=ycur-dy) {
3542 for (i=2; i<=nn+1; i++) {
3545 if (i == nn+1) i2=1;
3546 x1 = wndc*ratiox*(xx[i1-1]-rwxmin);
3547 y1 = hndc*ratioy*(yy[i1-1]-rwymin);
3548 x2 = wndc*ratiox*(xx[i2-1]-rwxmin);
3549 y2 = hndc*ratioy*(yy[i2-1]-rwymin);
3550 xt1 = cosa*x1-sina*y1;
3551 yt1 = sina*x1+cosa*y1;
3552 xt2 = cosa*x2-sina*y2;
3553 yt2 = sina*x2+cosa*y2;
3564 if ((yi <= ycur) && (ycur < yip)) {
3566 if (nbi >= maxnbi)
return;
3576 if (nbi >= maxnbi)
return;
3579 if (nbi >= maxnbi)
return;
3586 a = (yt1-yt2)/(xt1-xt2);
3587 b = (yt2*xt1-xt2*yt1)/(xt1-xt2);
3596 if ((xi <= xin) && (xin < xip) &&
3600 if (nbi >= maxnbi)
return;
3609 for (i=1; i<=
m; i++) {
3610 if (xli[i] < xli[i-1]) {
3618 if (inv == 0)
goto L50;
3624 if (nbi%2 != 0)
continue;
3626 for (i=1; i<=nbi; i=i+2) {
3628 xlh[0] = cosb*xli[i-1]-sinb*ycur;
3629 ylh[0] = sinb*xli[i-1]+cosb*ycur;
3630 xlh[1] = cosb*xli[i] -sinb*ycur;
3631 ylh[1] = sinb*xli[i] +cosb*ycur;
3633 xlh[0] = (xlh[0]/wndc)*(rwxmax-rwxmin)+rwxmin;
3634 ylh[0] = (ylh[0]/hndc)*(rwymax-rwymin)+rwymin;
3635 xlh[1] = (xlh[1]/wndc)*(rwxmax-rwxmin)+rwxmin;
3636 ylh[1] = (ylh[1]/hndc)*(rwymax-rwymin)+rwymin;
3637 gPad->PaintLine(xlh[0], ylh[0], xlh[1], ylh[1]);
3648 x[0] =
x1; x[1] =
x2; y[0] = y1; y[1] = y2;
3657 if (!
gPad->IsBatch())
3673 if (!
gPad->IsBatch())
3698 for (i=0;i<3;i++) temp[i] = p1[i];
3700 for (i=0;i<3;i++) temp[i] = p2[i];
3702 PaintLine(xpad[0],xpad[1],xpad[3],xpad[4]);
3716 for (i=0;i<3;i++) temp[i] = p1[i];
3718 for (i=0;i<3;i++) temp[i] = p2[i];
3720 PaintLine(xpad[0],xpad[1],xpad[3],xpad[4]);
3736 Int_t i, i1=-1,np=1;
3737 for (i=0; i<n-1; i++) {
3742 Int_t iclip =
Clip(&x[i],&y[i],xmin,ymin,xmax,ymax);
3749 if (iclip == 0 && i < n-2)
continue;
3750 if (!
gPad->IsBatch())
3783 if (option && (option[0] ==
'C')) mustClip =
kFALSE;
3786 Int_t i, i1=-1, np=1, iclip=0;
3788 for (i=0; i < n-1; i++) {
3794 iclip =
Clip(&x[i],&y[i],xmin,ymin,xmax,ymax);
3802 if (iclip == 0 && i < n-2)
continue;
3803 if (!
gPad->IsBatch())
3828 if (!
gPad->IsBatch())
3834 for (
Int_t i=0; i<
n; i++) {
3853 for (
Int_t i = 1; i <
n; i++)
3872 for (i=0; i<
n; i++) {
3873 if (x[i] >= xmin && x[i] <= xmax && y[i] >= ymin && y[i] <= ymax) {
3876 if (i < n-1)
continue;
3878 if (np == 0)
continue;
3879 if (!
gPad->IsBatch())
3903 for (i=0; i<
n; i++) {
3904 if (x[i] >= xmin && x[i] <= xmax && y[i] >= ymin && y[i] <= ymax) {
3907 if (i < n-1)
continue;
3909 if (np == 0)
continue;
3910 if (!
gPad->IsBatch())
3928 if (!
gPad->IsBatch())
3941 if (!
gPad->IsBatch())
3954 if (!
gPad->IsBatch())
3971 if (!
gPad->IsBatch())
3999 if (
gPad == 0)
return 0;
4006 if (
this !=
gPad->GetCanvas()) {
4007 if (!((x >=
fX1 && x <=
fX2) && (y >=
fY1 && y <=
fY2)))
return 0;
4015 TPad *picked =
this;
4019 pickobj = &dummyLink;
4048 pick = ((
TPad*)obj)->
Pick(px, py, pickobj);
4053 }
else if (!
gROOT->GetEditorMode()) {
4060 if (dist == 0)
break;
4075 if (
fView && !gotPrim) {
4112 while ((obj = next()))
4114 char *opt =
StrDup(next.GetOption());
4140 ((
TPad*)
this)->SaveAs(filename);
4152 while ((obj = next())) {
4314 filename = fs2.
Data();
4317 const char *opt_default=
"ps";
4319 Int_t lenfil = filename ? strlen(filename) : 0;
4320 TString opt = (!option) ? opt_default : option;
4342 if (strstr(opt,
"gif+")) {
4345 }
else if (strstr(opt,
"gif")) {
4348 }
else if (strstr(opt,
"png")) {
4351 }
else if (strstr(opt,
"jpg")) {
4354 }
else if (strstr(opt,
"tiff")) {
4357 }
else if (strstr(opt,
"xpm")) {
4360 }
else if (strstr(opt,
"bmp")) {
4367 if (!
gROOT->IsBatch() && image) {
4370 Color_t hc =
gPad->GetCanvas()->GetHighLightColor();
4371 gPad->GetCanvas()->SetHighLightColor(-1);
4377 Info(
"Print",
"GIF file %s has been created", psname.
Data());
4379 gPad->GetCanvas()->SetHighLightColor(hc);
4383 Color_t hc =
gPad->GetCanvas()->GetHighLightColor();
4384 gPad->GetCanvas()->SetHighLightColor(-1);
4399 Info(
"Print",
"file %s has been created", psname.
Data());
4401 gPad->GetCanvas()->SetHighLightColor(hc);
4403 Warning(
"Print",
"Unsupported image format %s", psname.
Data());
4409 if (strstr(opt,
"cxx")) {
4415 if (strstr(opt,
"root")) {
4421 if (strstr(opt,
"xml")) {
4428 if (strstr(opt,
"svg")) {
4443 if ((h =
gROOT->GetPluginManager()->FindHandler(
"TVirtualPS",
"svg"))) {
4468 if (strstr(opt,
"tex")) {
4483 if ((h =
gROOT->GetPluginManager()->FindHandler(
"TVirtualPS",
"tex"))) {
4518 copen = psname.
EndsWith(
"(");
if (copen) psname[psname.
Length()-1] = 0;
4519 cclose = psname.
EndsWith(
")");
if (cclose) psname[psname.
Length()-1] = 0;
4520 copenb = psname.
EndsWith(
"[");
if (copenb) psname[psname.
Length()-1] = 0;
4521 ccloseb = psname.
EndsWith(
"]");
if (ccloseb) psname[psname.
Length()-1] = 0;
4525 if (copen || copenb) mustClose =
kFALSE;
4526 if (cclose || ccloseb) mustClose =
kTRUE;
4537 if (ratio < 1) pstype = 112;
4538 if (strstr(opt,
"Portrait")) pstype = 111;
4539 if (strstr(opt,
"Landscape")) pstype = 112;
4540 if (strstr(opt,
"eps")) pstype = 113;
4541 if (strstr(opt,
"Preview")) pstype = 113;
4549 if (strstr(opt,
"pdf") || strstr(opt,
"Title:")) {
4550 if ((h =
gROOT->GetPluginManager()->FindHandler(
"TVirtualPS",
"pdf"))) {
4556 if ((h =
gROOT->GetPluginManager()->FindHandler(
"TVirtualPS",
"image"))) {
4561 if ((h =
gROOT->GetPluginManager()->FindHandler(
"TVirtualPS",
"ps"))) {
4570 if (titlePos !=
kNPOS) {
4577 if (!strstr(opt,
"pdf") || image) {
4601 if (titlePos !=
kNPOS) {
4607 Info(
"Print",
"Current canvas added to %s file %s", opt.
Data(), psname.
Data());
4629 if ((x1 >= x2) || (y1 >= y2)) {
4630 Error(
"Range",
"illegal world coordinates range: x1=%f, y1=%f, x2=%f, y2=%f",x1,y1,x2,y2);
4639 if (
fX1 == x1 &&
fY1 == y1 &&
fX2 == x2 &&
fY2 == y2)
return;
4667 if ((xmin >= xmax) || (ymin >= ymax)) {
4668 Error(
"RangeAxis",
"illegal axis coordinates range: xmin=%f, ymin=%f, xmax=%f, ymax=%f",
4669 xmin, ymin, xmax, ymax);
4721 while ((obj = next())) {
4732 if (h1f) h1f->
DrawCopy(
"sameaxis");
4751 if (padsav) padsav->
cd();
4881 if (
this ==
gPad->GetCanvas()) {
4913 fYtoPixelk = rounding + -pyrange - pyrange*fY1/yrange;
4934 while ((obj = next())) {
4940 if (
gPad->IsBatch())
4958 Warning(
"ResizePad",
"Inf/NaN propagated to the pad. Check drawn objects.");
4959 if (w <= 0 || w > 10000) {
4960 Warning(
"ResizePad",
"%s width changed from %d to %d\n",
GetName(),w,10);
4963 if (h <= 0 || h > 10000) {
4964 Warning(
"ResizePad",
"%s height changed from %d to %d\n",
GetName(),h,10);
4978 if (padsav ==
this) {
5012 Int_t lenfil = filename ? strlen(filename) : 0;
5076 const char *cname =
GetName();
5077 Int_t nch = strlen(cname);
5079 strlcpy(lcname,cname,10);
5080 for (
Int_t k=1;k<=nch;k++) {
if (lcname[nch-k] ==
' ') lcname[nch-k] = 0;}
5081 if (lcname[0] == 0) {
5082 if (
this ==
gPad->GetCanvas()) {strlcpy(lcname,
"c1",10); nch = 2;}
5083 else {strlcpy(lcname,
"pad",10); nch = 3;}
5089 if (
this !=
gPad->GetCanvas()) {
5090 out <<
" "<<std::endl;
5091 out <<
"// ------------>Primitives in pad: "<<
GetName()<<std::endl;
5093 out<<
" TPad *"<<cname<<
" = new TPad("<<quote<<
GetName()<<quote<<
", "<<quote<<
GetTitle()
5100 out<<
" "<<cname<<
"->Draw();"<<std::endl;
5101 out<<
" "<<cname<<
"->cd();"<<std::endl;
5103 out<<
" "<<cname<<
"->Range("<<
fX1<<
","<<
fY1<<
","<<
fX2<<
","<<
fY2<<
");"<<std::endl;
5108 static Int_t viewNumber = 0;
5109 out<<
" TView *view"<<++viewNumber<<
" = TView::CreateView(1);"<<std::endl;
5110 out<<
" view"<<viewNumber<<
"->SetRange("<<rmin[0]<<
","<<rmin[1]<<
","<<rmin[2]<<
"," 5111 <<rmax[0]<<
","<<rmax[1]<<
","<<rmax[2]<<
");"<<std::endl;
5116 out<<
" "<<cname<<
"->SetFillColor(ci);" << std::endl;
5118 out<<
" "<<cname<<
"->SetFillColor("<<
GetFillColor()<<
");"<<std::endl;
5121 out<<
" "<<cname<<
"->SetFillStyle("<<
GetFillStyle()<<
");"<<std::endl;
5124 out<<
" "<<cname<<
"->SetBorderMode("<<
GetBorderMode()<<
");"<<std::endl;
5127 out<<
" "<<cname<<
"->SetBorderSize("<<
GetBorderSize()<<
");"<<std::endl;
5130 out<<
" "<<cname<<
"->SetLogx();"<<std::endl;
5133 out<<
" "<<cname<<
"->SetLogy();"<<std::endl;
5136 out<<
" "<<cname<<
"->SetLogz();"<<std::endl;
5139 out<<
" "<<cname<<
"->SetGridx();"<<std::endl;
5142 out<<
" "<<cname<<
"->SetGridy();"<<std::endl;
5145 out<<
" "<<cname<<
"->SetTickx("<<
GetTickx()<<
");"<<std::endl;
5148 out<<
" "<<cname<<
"->SetTicky("<<
GetTicky()<<
");"<<std::endl;
5151 out<<
" "<<cname<<
"->SetTheta("<<
GetTheta()<<
");"<<std::endl;
5154 out<<
" "<<cname<<
"->SetPhi("<<
GetPhi()<<
");"<<std::endl;
5157 out<<
" "<<cname<<
"->SetLeftMargin("<<
GetLeftMargin()<<
");"<<std::endl;
5160 out<<
" "<<cname<<
"->SetRightMargin("<<
GetRightMargin()<<
");"<<std::endl;
5163 out<<
" "<<cname<<
"->SetTopMargin("<<
GetTopMargin()<<
");"<<std::endl;
5166 out<<
" "<<cname<<
"->SetBottomMargin("<<
GetBottomMargin()<<
");"<<std::endl;
5172 out<<
" "<<cname<<
"->SetFrameFillColor(ci);" << std::endl;
5185 out<<
" "<<cname<<
"->SetFrameLineColor(ci);" << std::endl;
5205 out<<
" "<<cname<<
"->SetFrameFillColor(ci);" << std::endl;
5207 out<<
" "<<cname<<
"->SetFrameFillColor("<<frame->
GetFillColor()<<
");"<<std::endl;
5210 out<<
" "<<cname<<
"->SetFrameFillStyle("<<frame->
GetFillStyle()<<
");"<<std::endl;
5213 out<<
" "<<cname<<
"->SetFrameLineStyle("<<frame->
GetLineStyle()<<
");"<<std::endl;
5218 out<<
" "<<cname<<
"->SetFrameLineColor(ci);" << std::endl;
5220 out<<
" "<<cname<<
"->SetFrameLineColor("<<frame->
GetLineColor()<<
");"<<std::endl;
5223 out<<
" "<<cname<<
"->SetFrameLineWidth("<<frame->
GetLineWidth()<<
");"<<std::endl;
5226 out<<
" "<<cname<<
"->SetFrameBorderMode("<<frame->
GetBorderMode()<<
");"<<std::endl;
5229 out<<
" "<<cname<<
"->SetFrameBorderSize("<<frame->
GetBorderSize()<<
");"<<std::endl;
5237 while ((obj = next())) {
5239 if (!strcmp(obj->
GetName(),
"Graph")) ((
TGraph*)obj)->SetName(
Form(
"Graph%d",grnum++));
5242 out<<
" "<<cname<<
"->Modified();"<<std::endl;
5244 if (padsav) padsav->
cd();
5257 Error(
"SetAspectRatio",
"cannot fix aspect ratio, height of pad is 0");
5281 while ((obj = next())) {
5295 if (fstyle == 0) fstyle = 4000;
5385 SetPad(xlow, ylow, xup, yup);
5393 if (!view)
delete fView;
5466 x1 = x2 = y1 = y2 = 0;
5468 if (aBBox.
fX<bBBox.
fX) {
5484 else if (mode ==
'y') {
5485 if (aBBox.
fY<bBBox.
fY) {
5523 : fa(0), fb(0), fdist(0), fdir(
' ')
5527 : fa(a), fb(b), fdist(dist), fdir(direction)
5553 std::vector<dField> curDist;
5554 std::vector<dField> otherDist;
5564 Int_t dSizeArrow = 12;
5566 movedX = movedY =
false;
5568 if (mode !=
'i') resize =
true;
5570 TPad *is_pad =
dynamic_cast<TPad *
>( object );
5575 static TPad * tmpGuideLinePad;
5578 if (tmpGuideLinePad) {
5579 if (
object == tmpGuideLinePad) {
5580 tmpGuideLinePad->
Delete();
5581 tmpGuideLinePad = 0;
5584 tmpGuideLinePad->
Delete();
5585 tmpGuideLinePad = 0;
5589 prims =
gPad->GetListOfPrimitives();
5596 if (!tmpGuideLinePad){
5597 tmpGuideLinePad =
new TPad(
"tmpGuideLinePad",
"tmpGuideLinePad", 0, 0, 1, 1);
5599 gPad->GetRange(x1, y1, x2, y2);
5600 tmpGuideLinePad->
Range(x1, y1, x2, y2);
5603 tmpGuideLinePad->
Draw();
5604 tmpGuideLinePad->
cd();
5605 gPad->GetRange(x1, y1, x2, y2);
5607 if (cling) threshold = 7;
5620 MX =
gPad->GetX1() + 0.5 * (
gPad->GetX2()-
gPad->GetX1());
5621 MY =
gPad->GetY1() + 0.5 * (
gPad->GetY2()-
gPad->GetY1());
5622 pMX =
gPad->XtoPixel(MX);
5623 pMY =
gPad->YtoPixel(MY);
5626 if (cling && (!resize)) {
5638 if (cling && (!resize)) {
5650 for (
UInt_t i = 0; i<
n; i++) {
5656 if (cling && (!resize)) {
5668 if (cling && (!resize)) {
5683 for (
UInt_t i = 0; i<
n; i++) {
5687 for (
UInt_t j = i+1; j<
n; j++) {
5695 dField abDist = dField();
5698 if ((b != cur)&&(a != cur)) otherDist.push_back(abDist);
5699 else curDist.push_back(abDist);
5703 dField abDist = dField();
5706 if ((b != cur)&&(a != cur)) otherDist.push_back(abDist);
5707 else curDist.push_back(abDist);
5715 for (
UInt_t i = 0; i<curDist.size(); i++) {
5716 for (
UInt_t j = 0; j<otherDist.size(); j++) {
5717 if ((curDist[i].fdir == otherDist[j].fdir)&&(otherDist[j].fdir==
'x')&&(
TMath::Abs(curDist[i].fdist-otherDist[j].fdist)<threshold)) {
5718 if (cling && (!movedX) && (!resize)) {
5724 DrawDist(curDist[i].fa->GetBBox(), curDist[i].fb->GetBBox(),
'x');
5725 DrawDist(otherDist[j].fa->GetBBox(), otherDist[j].fb->GetBBox(),
'x');
5727 if ((curDist[i].fdir == otherDist[j].fdir)&&(otherDist[j].fdir==
'y')&&(
TMath::Abs(curDist[i].fdist-otherDist[j].fdist)<threshold)) {
5728 if (cling && (!movedY) && (!resize)) {
5734 DrawDist(curDist[i].fa->GetBBox(), curDist[i].fb->GetBBox(),
'y');
5735 DrawDist(otherDist[j].fa->GetBBox(), otherDist[j].fb->GetBBox(),
'y');
5738 for (
UInt_t j = i; j<curDist.size(); j++) {
5740 if ((curDist[i].fdir == curDist[j].fdir)&&(curDist[j].fdir==
'x')&&(
TMath::Abs(curDist[i].fdist-curDist[j].fdist)<threshold)) {
5741 if (cling && (!movedX) && (!resize)) {
5746 DrawDist(curDist[i].fa->GetBBox(), curDist[i].fb->GetBBox(),
'x');
5747 DrawDist(curDist[j].fa->GetBBox(), curDist[j].fb->GetBBox(),
'x');
5750 if ((curDist[i].fdir == curDist[j].fdir)&&(curDist[j].fdir==
'y')&&(
TMath::Abs(curDist[i].fdist-curDist[j].fdist)<threshold)) {
5751 if (cling && (!movedY) && (!resize)) {
5756 DrawDist(curDist[i].fa->GetBBox(), curDist[i].fb->GetBBox(),
'y');
5757 DrawDist(curDist[j].fa->GetBBox(), curDist[j].fb->GetBBox(),
'y');
5764 for (
UInt_t i = 0; i<
n; i++) {
5766 if (a && (cur != a)) {
5779 gPad->PixeltoX(aBBox.
fX+aBBox.
fWidth),
gPad->PixeltoY(aBBox.
fY-dSizeArrow-
gPad->VtoPixel(0)), 0.01,
"<|>");
5821 if (tmpGuideLinePad) {
5824 tmpGuideLinePad->
Delete();
5825 tmpGuideLinePad = 0;
5892 if (text && strlen(text))
5908 void TPad::Streamer(
TBuffer &b)
5911 Int_t nch, nobjects;
5931 while ((obj = next())) {
5950 TObject::Streamer(b);
5951 TAttLine::Streamer(b);
5952 TAttFill::Streamer(b);
5953 b >> single;
fX1 = single;
5954 b >> single;
fY1 = single;
5955 b >> single;
fX2 = single;
5956 b >> single;
fY2 = single;
5959 TAttPad::Streamer(b);
5961 TVirtualPad::Streamer(b);
5962 TAttPad::Streamer(b);
5963 b >> single;
fX1 = single;
5964 b >> single;
fY1 = single;
5965 b >> single;
fX2 = single;
5966 b >> single;
fY2 = single;
5993 b >> single;
fWNDC = single;
5994 b >> single;
fHNDC = single;
5999 b >> single;
fUxmin = single;
6000 b >> single;
fUymin = single;
6001 b >> single;
fUxmax = single;
6002 b >> single;
fUymax = single;
6004 TVirtualPad::Streamer(b);
6005 TAttPad::Streamer(b);
6064 char drawoption[64];
6065 for (
Int_t i = 0; i < nobjects; i++) {
6090 b >> single;
fTheta = single;
6091 b >> single;
fPhi = single;
6155 while ((obj = next())) {
6237 if (strlen(emode))
gROOT->SetEditorMode(emode);
6238 if (
gROOT->GetEditorMode() == 0 && strlen(pname) > 2)
gROOT->SetEditorMode(&pname[1]);
6242 TObject *oldlast =
gPad->GetListOfPrimitives()->Last();
6245 Bool_t hasname = strlen(pname) > 0;
6246 if (!pname[0] && !emode[0]) testlast =
kTRUE;
6247 if (testlast)
gROOT->SetEditorMode();
6249 if (
gROOT->GetEditorMode() == 0) {
6252 if (obj)
return obj;
6255 obj =
gPad->GetListOfPrimitives()->Last();
6256 if (obj != oldlast)
return obj;
6277 if (
gPad->IsBatch())
return 0;
6278 return (
TObject*)
gROOT->ProcessLineFast(
Form(
"new TGToolTip((TBox*)0x%lx,\"%s\",%d)",
6289 gROOT->ProcessLineFast(
Form(
"delete (TGToolTip*)0x%lx", (
Long_t)tip));
6300 gROOT->ProcessLineFast(
Form(
"((TGToolTip*)0x%lx)->Reset((TPad*)0x%lx)",
6311 gROOT->ProcessLineFast(
Form(
"((TGToolTip*)0x%lx)->Hide()",(
Long_t)tip));
6319 ::Info(
"TPad::x3d()",
"Fn is depreciated - use TPad::GetViewer3D() instead");
6322 if (!type || !type[0]) {
6339 if ( (!type || !type[0] || (strstr(type,
"gl") && !strstr(type,
"ogl"))) && !
fCanvas->
UseGL())
6342 if (type && type[0]) {
6367 if (!strstr(type,
"pad")) {
6371 Warning(
"TPad::CreateViewer3D",
"Cannot create 3D viewer of type: %s", type);
6377 if (strstr(type,
"gl") && !strstr(type,
"ogl"))
6380 createdExternal =
kTRUE;
6396 if (createdExternal) {
6433 Emit(
"RecordPave(const TObject*)", (
Long_t)obj);
6441 Emit(
"RecordLatex(const TObject*)", (
Long_t)obj);
Style_t GetFrameFillStyle() const
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)
TVirtualPad * GetPadSave() const
Get save pad.
Int_t VtoPixel(Double_t v) const
virtual void SetOpacity(Int_t percent)=0
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
Pointer to mother canvas.
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
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
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
void PaintFillArea(Int_t n, Float_t *x, Float_t *y, Option_t *option="")
Bool_t TestBit(UInt_t f) const
Double_t distance(const TPoint2 &p1, const TPoint2 &p2)
virtual void SetName(const char *name)
Change (i.e.
virtual void RangeChanged()
virtual void SetSelected(TObject *obj)
Set selected.
virtual void Draw(Option_t *option="")
Draw this legend with its current attributes.
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.
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
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.
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.
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
static const char * filename()
Double_t GetAbsXlowNDC() const
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.
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
1-D histogram with a float per channel (see TH1 documentation)}
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)
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.
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)
virtual Int_t GetEvent() const
Get Event.
void SetPadBottomMargin(Float_t margin=0.1)
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
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
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...
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.
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)
void SetClickSelected(TObject *obj)
virtual Style_t GetLineStyle() const
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]
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
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.
virtual Width_t GetLineWidth() const =0
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.
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 of the list
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)
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="")
Build a legend from the graphical objects in the pad.
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)
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.
Abstract 3D shapes viewer.
void SetTitleTextColor(Color_t color=1)
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
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)
virtual Short_t GetBorderSize() const =0
static Bool_t SupportAlpha()
Static function returning "true" if transparency is supported.
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
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)
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
free pointer
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...
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.
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.
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)
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
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)
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 2-D frame (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.
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)
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.
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.
virtual TVirtualPadPainter * GetPainter()
Get pad painter from TCanvas.
virtual void ReadFastArray(Bool_t *b, Int_t n)=0
virtual Int_t GetDistancetoAxis(Int_t axis, Int_t px, Int_t py, Double_t &ratio)=0
virtual void SetMarkerSize(Size_t msize=1)
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
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)
virtual void ResizePad()=0
virtual void BeginScene()=0
virtual Color_t GetLineColor() const
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]
A Pave (see TPave) with text, lines or/and boxes inside.
void SetClickSelectedPad(TPad *pad)
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.
void SetCanvasSize(UInt_t ww, UInt_t wh)
Set Width and Height of canvas to ww and wh respectively.
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 ?
Bool_t fCopyGLDevice
OpenGL off-screen pixmap identifier.
Float_t GetPadTopMargin() const
static void Pad(Int_t event, Int_t px, Int_t py, Int_t)
Create a new pad in gPad.
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
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)
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)
Width_t GetPadBorderSize() const
void SetPadTopMargin(Float_t margin=0.1)
TVirtualViewer3D * fViewer3D
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 GetAbsHNDC() const
Mother of all ROOT objects.
virtual Int_t FindFixBin(Double_t x) const
Find bin number corresponding to abscissa x.
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.
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.
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
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)
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
Pointer to 3-D view (if one exists)
virtual Rectangle_t GetBBox()
Return the bounding Box of the Pad.
virtual Bool_t OpaqueResizing() const
Is pad resizing in opaque mode ?
void SetPadTickY(Int_t ticky)
Color_t GetFrameFillColor() const
Width_t GetFrameLineWidth() const
void SetBatch(Bool_t batch=kTRUE)
Toggle batch mode.
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)
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
virtual void SetTextSize(Float_t tsize=1)
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.
Int_t fGLDevice
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
tool tip associated with box
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="")
Change (i.e. set) the title of the TNamed.
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)
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
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
3D View of this TPad
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.
virtual void SetBorderSize(Int_t bordersize=4)
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
void SetObject(TObject *obj)
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...
virtual void SetBBoxCenterY(const Int_t y)=0
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.