152 fMother = (TPad*)
gPad;
181 fFixedAspectRatio =
kFALSE;
184 fNumPaletteColor = 0;
185 fNextPaletteColor = 0;
200 fUxmin = fUymin = fUxmax = fUymax = 0;
249 :
TVirtualPad(name,title,xlow,ylow,xup,yup,color,bordersize,bordermode)
323 Error(
"TPad",
"You must create a TCanvas before creating a TPad");
330 if ((xlow < 0) || (xlow > 1) || (ylow < 0) || (ylow > 1)) {
331 Error(
"TPad",
"illegal bottom left position: x=%f, y=%f", xlow, ylow);
334 if ((xup < 0) || (xup > 1) || (yup < 0) || (yup > 1)) {
335 Error(
"TPad",
"illegal top right position: x=%f, y=%f", xup, yup);
346 SetPad(name, title, xlow, ylow, xup, yup, color, bordersize, bordermode);
434 while ((exec = (
TExec*)next())) {
466 const char* title,
Option_t *option)
475 while( (o=next()) ) {
479 if (!leg) leg =
new TLegend(x1, y1, x2, y2, title);
486 if (strlen(option)) {
495 if (!leg) leg =
new TLegend(x1, y1, x2, y2, title);
497 TIter nextgraph(grlist);
500 while ((obj = nextgraph())) {
505 if (strlen(option)) opt = option;
510 if (!leg) leg =
new TLegend(x1, y1, x2, y2, title);
512 TIter nexthist(hlist);
515 while ((obj = nexthist())) {
520 if (strlen(option)) opt = option;
533 Info(
"BuildLegend(void)",
"No object to build a TLegend.");
576 while ((obj = next())) {
579 if (n == subpadnumber) {
580 return ((
TPad*)obj)->cd();
649 for (
Int_t i=0;i<2;i++) {
662 while(code1 + code2) {
673 if (ic == 0) ic = code2;
675 yt = y[0] + (y[1]-y[0])*(xclipl-x[0])/(x[1]-x[0]);
679 yt = y[0] + (y[1]-y[0])*(xclipr-x[0])/(x[1]-x[0]);
683 xt = x[0] + (x[1]-x[0])*(yclipb-y[0])/(y[1]-y[0]);
687 xt = x[0] + (x[1]-x[0])*(yclipt-y[0])/(y[1]-y[0]);
693 code1 =
ClippingCode(xt,yt,xclipl,yclipb,xclipr,yclipt);
697 code2 =
ClippingCode(xt,yt,xclipl,yclipb,xclipr,yclipt);
720 for (
Int_t i=0;i<2;i++) {
729 if (x[0] < xclipl) code1 = code1 | 0x1;
730 if (x[0] > xclipr) code1 = code1 | 0x2;
731 if (y[0] < yclipb) code1 = code1 | 0x4;
732 if (y[0] > yclipt) code1 = code1 | 0x8;
734 if (x[1] < xclipl) code2 = code2 | 0x1;
735 if (x[1] > xclipr) code2 = code2 | 0x2;
736 if (y[1] < yclipb) code2 = code2 | 0x4;
737 if (y[1] > yclipt) code2 = code2 | 0x8;
741 while(code1 + code2) {
752 if (ic == 0) ic = code2;
754 yt = y[0] + (y[1]-y[0])*(xclipl-x[0])/(x[1]-x[0]);
758 yt = y[0] + (y[1]-y[0])*(xclipr-x[0])/(x[1]-x[0]);
762 xt = x[0] + (x[1]-x[0])*(yclipb-y[0])/(y[1]-y[0]);
766 xt = x[0] + (x[1]-x[0])*(yclipt-y[0])/(y[1]-y[0]);
772 code1 =
ClippingCode(xt,yt,xclipl,yclipb,xclipr,yclipt);
776 code2 =
ClippingCode(xt,yt,xclipl,yclipb,xclipr,yclipt);
789 if (x < xcl1) code = code | 0x1;
790 if (x > xcl2) code = code | 0x2;
791 if (y < ycl1) code = code | 0x4;
792 if (y > ycl2) code = code | 0x8;
844 x1 = x[n-1]; y1 = y[n-1];
847 for (i=0; i<
n; i++) {
848 x2 = x[i]; y2 = y[i];
852 slope = (y2-y1)/(x2-x1);
856 xc2[nc2] = xclipl; yc2[nc2++] = slope*(xclipl-
x1)+y1;
858 xc2[nc2] =
x2; yc2[nc2++] = y2;
862 xc2[nc2] = xclipl; yc2[nc2++] = slope*(xclipl-
x1)+y1;
863 xc2[nc2] =
x2; yc2[nc2++] = y2;
870 x1 = xc2[nc2-1]; y1 = yc2[nc2-1];
872 for (i=0; i<nc2; i++) {
873 x2 = xc2[i]; y2 = yc2[i];
877 slope = (x2-
x1)/(y2-y1);
881 xc[nc] = x1+(yclipt-y1)*slope; yc[nc++] = yclipt;
883 xc[nc] =
x2; yc[nc++] = y2;
887 xc[nc] = x1+(yclipt-y1)*slope; yc[nc++] = yclipt;
888 xc[nc] =
x2; yc[nc++] = y2;
895 x1 = xc[nc-1]; y1 = yc[nc-1];
897 for (i=0; i<nc; i++) {
898 x2 = xc[i]; y2 = yc[i];
902 slope = (y2-y1)/(x2-x1);
906 xc2[nc2] = xclipr; yc2[nc2++] = slope*(xclipr-
x1)+y1;
908 xc2[nc2] =
x2; yc2[nc2++] = y2;
912 xc2[nc2] = xclipr; yc2[nc2++] = slope*(xclipr-
x1)+y1;
913 xc2[nc2] =
x2; yc2[nc2++] = y2;
920 x1 = xc2[nc2-1]; y1 = yc2[nc2-1];
922 for (i=0; i<nc2; i++) {
923 x2 = xc2[i]; y2 = yc2[i];
927 slope = (x2-
x1)/(y2-y1);
931 xc[nc] = x1+(yclipb-y1)*slope; yc[nc++] = yclipb;
933 xc[nc] =
x2; yc[nc++] = y2;
937 xc[nc] = x1+(yclipb-y1)*slope; yc[nc++] = yclipb;
938 xc[nc] =
x2; yc[nc++] = y2;
978 if (!
gPad->IsBatch()) {
985 if (!
gROOT->GetListOfCanvases())
return;
987 gROOT->GetListOfCanvases()->Remove(
this);
1008 if (
gROOT->GetSelectedPad() ==
this)
gROOT->SetSelectedPad(0);
1033 while ((obj = next())) {
1035 ((
TPad*)obj)->CopyPixmap();
1036 ((
TPad*)obj)->CopyPixmaps();
1062 Int_t pxl, pyl, pxt, pyt;
1067 if (px1 < px2) {pxl = px1; pxt = px2;}
1068 else {pxl = px2; pxt = px1;}
1069 if (py1 < py2) {pyl = py1; pyt = py2;}
1070 else {pyl = py2; pyt = py1;}
1074 if ( (px > pxl && px < pxt) && (py > pyl && py < pyt) ) {
1081 if (py < pyl) dxl += pyl - py;
1082 if (py > pyt) dxl += py - pyt;
1084 if (py < pyl) dxt += pyl - py;
1085 if (py > pyt) dxt += py - pyt;
1087 if (px < pxl) dyl += pxl - px;
1088 if (px > pxt) dyl += px - pxt;
1090 if (px < pxl) dyt += pxl - px;
1091 if (px > pxt) dyt += px - pxt;
1093 Int_t distance = dxl;
1094 if (dxt < distance) distance = dxt;
1095 if (dyl < distance) distance = dyl;
1096 if (dyt < distance) distance = dyt;
1142 arr[1] =
this; arr[2] = (
void*)&nx;arr[3] = (
void*)& ny;
1143 arr[4] = (
void*)&xmargin; arr[5] = (
void *)& ymargin; arr[6] = (
void *)&color;
1144 if ((*
gThreadXAR)(
"PDCD", 7, arr, 0))
return;
1149 if (nx <= 0) nx = 1;
1150 if (ny <= 0) ny = 1;
1157 char *
name =
new char [nchname];
1158 char *title =
new char [nchtitle];
1161 if (xmargin > 0 && ymargin > 0) {
1165 for (iy=0;iy<
ny;iy++) {
1166 y2 = 1 - iy*dy - ymargin;
1167 y1 = y2 - dy + 2*ymargin;
1169 if (y1 > y2)
continue;
1170 for (ix=0;ix<
nx;ix++) {
1171 x1 = ix*dx + xmargin;
1172 x2 = x1 +dx -2*xmargin;
1173 if (x1 > x2)
continue;
1176 pad =
new TPad(name,name,x1,y1,x2,y2,color);
1202 if (i == nx-1) x2 = 1-xr;
1204 number = j*nx + i +1;
1207 if (j == 0) y2 = 1-yt;
1208 if (j == ny-1) y1 = 0;
1211 pad =
new TPad(name,title,x1,y1,x2,y2);
1227 if (padsav) padsav->
cd();
1248 Divide( w,
h, xmargin, ymargin, color);
1258 gROOT->MakeDefCanvas();
1296 Int_t nd,nf,nc,nkd,nkf,i,j;
1309 Range(0,0,xpad,ypad);
1314 clevel[nlevel] = obj;
1323 if (nlevel >= maxlev-1)
break;
1327 Int_t ilevel, nelem;
1328 for (ilevel=nlevel;ilevel>=0;ilevel--) {
1329 cl = clevel[ilevel];
1331 if (nelem > maxelem) maxelem = nelem;
1332 nc = (nelem/50) + 1;
1342 if (dx < 1.3) dx = 1.3;
1343 tsizcm = tsizcm - 0.03*
Double_t(ncdraw-5);
1344 if (tsizcm < 0.27) tsizcm = 0.27;
1349 for (ilevel=nlevel;ilevel>=0;ilevel--) {
1350 cl = clevel[ilevel];
1352 if (nelem > maxelem) maxelem = nelem;
1353 nc = (nelem/50) + 1;
1355 if (ilevel < nlevel) x1 = x2 + 0.5;
1373 v1 = y1 -
Double_t(nkf+nkd+nc-1)*dy;
1385 TBox *
box = pt->
AddBox(0,(y1+0.01-v1)/dv,0,(v2-0.01-v1)/dv);
1387 pt->
AddLine(0,(y1-v1)/dv,0,(y1-v1)/dv);
1399 if (i >= nkd) { i = 1; y = y1 - 0.5*dy; x += 1/
Double_t(nc); }
1400 else { i++; y -= dy; }
1408 while (indx < dim ){
1409 ldname = strlen(dname);
1413 pt->
AddText(x,(y-v1)/dv,dname);
1420 pt->
AddLine(0,(ysep-v1)/dv,0,(ysep-v1)/dv);
1431 while ((m = (
TMethod *) nextm())) {
1433 !strcmp( m->
GetName(),
"Dictionary" ) ||
1434 !strcmp( m->
GetName(),
"Class_Version" ) ||
1435 !strcmp( m->
GetName(),
"DeclFileName" ) ||
1436 !strcmp( m->
GetName(),
"DeclFileLine" ) ||
1437 !strcmp( m->
GetName(),
"ImplFileName" ) ||
1438 !strcmp( m->
GetName(),
"ImplFileLine" )
1441 if (fcount > nf)
break;
1442 if (i >= nkf) { i = 1; y = ysep - 0.5*dy; x += 1/
Double_t(nc); }
1443 else { i++; y -= dy; }
1448 for (j=ilevel-1;j>=0;j--) {
1449 if (cl == clevel[ilevel]) {
1450 if (clevel[j]->GetMethodAny((
char*)m->
GetName())) {
1497 Int_t pxmin,pxmax,pymin,pymax,pxold,pyold,px,py;
1509 pxmax = canvas->
GetWw();
1511 pymax = cpad->
GetWh();
1513 if(pxold)
gVirtualX->DrawLine(pxold,pymin,pxold,pymax);
1514 if(pyold)
gVirtualX->DrawLine(pxmin,pyold,pxmax,pyold);
1541 if (
this != padsav) {
1542 Warning(
"DrawFrame",
"Must be called for the current pad only");
1543 return padsav->
DrawFrame(xmin,ymin,xmax,ymax,title);
1549 if (hframe)
delete hframe;
1553 if (
fLogx && xmin > 0 && xmax > xmin) {
1562 hframe =
new TH1F(
"hframe",title,nbins,xbins);
1565 hframe =
new TH1F(
"hframe",title,nbins,xmin,xmax);
1575 if (padsav) padsav->
cd();
1586 Double_t xlow, ylow, xup, yup, hs, ws;
1591 gPad->SetFillColor(0);
1593 gPad->Range(x1,y1,x2,y2);
1605 for (i=0;i<10;i++) {
1614 box->
DrawBox(xlow, ylow, xup, yup);
1617 box->
DrawBox(xlow, ylow, xup, yup);
1620 text->
DrawText(0.5*(xlow+xup), 0.5*(ylow+yup),
Form(
"%d",color));
1647 const Int_t kMaxDiff = 5;
1648 const Int_t kMinSize = 20;
1649 static Int_t pxorg, pyorg;
1650 static Int_t px1, px2, py1, py2, pxl, pyl, pxt, pyt, pxold, pyold;
1651 static Int_t px1p, px2p, py1p, py2p, pxlp, pylp, pxtp, pytp;
1652 static Bool_t pA, pB, pC, pD, pTop, pL, pR, pBot, pINSIDE;
1675 pA = pB = pC = pD = pTop = pL = pR = pBot = pINSIDE =
kFALSE;
1719 if (newcode)
return;
1786 pA = pB = pC = pD = pTop = pL = pR = pBot = pINSIDE =
kFALSE;
1790 pxold = pxl; pyold = pyl; pA =
kTRUE;
1795 pxold = pxt; pyold = pyl; pB =
kTRUE;
1800 pxold = pxt; pyold = pyt; pC =
kTRUE;
1805 pxold = pxl; pyold = pyt; pD =
kTRUE;
1809 if ((px > pxl+kMaxDiff && px < pxt-kMaxDiff) &&
1811 pxold = pxl; pyold = pyl; pTop =
kTRUE;
1815 if ((px > pxl+kMaxDiff && px < pxt-kMaxDiff) &&
1817 pxold = pxt; pyold = pyt; pBot =
kTRUE;
1821 if ((py > pyl+kMaxDiff && py < pyt-kMaxDiff) &&
1823 pxold = pxl; pyold = pyl; pL =
kTRUE;
1827 if ((py > pyl+kMaxDiff && py < pyt-kMaxDiff) &&
1829 pxold = pxt; pyold = pyt; pR =
kTRUE;
1833 if ((px > pxl+kMaxDiff && px < pxt-kMaxDiff) &&
1834 (py > pyl+kMaxDiff && py < pyt-kMaxDiff)) {
1835 pxold = px; pyold = py; pINSIDE =
kTRUE;
1843 if (pA || pB || pC || pD || pTop || pL || pR || pBot)
1846 if (!pA && !pB && !pC && !pD && !pTop && !pL && !pR && !pBot && !pINSIDE)
1859 if (px > pxt-kMinSize) { px = pxt-kMinSize; wx = px; }
1860 if (py > pyt-kMinSize) { py = pyt-kMinSize; wy = py; }
1861 if (px < pxlp) { px = pxlp; wx = px; }
1862 if (py < pylp) { py = pylp; wy = py; }
1880 if (px < pxl+kMinSize) { px = pxl+kMinSize; wx = px; }
1881 if (py > pyt-kMinSize) { py = pyt-kMinSize; wy = py; }
1882 if (px > pxtp) { px = pxtp; wx = px; }
1883 if (py < pylp) { py = pylp; wy = py; }
1901 if (px < pxl+kMinSize) { px = pxl+kMinSize; wx = px; }
1902 if (py < pyl+kMinSize) { py = pyl+kMinSize; wy = py; }
1903 if (px > pxtp) { px = pxtp; wx = px; }
1904 if (py > pytp) { py = pytp; wy = py; }
1922 if (px > pxt-kMinSize) { px = pxt-kMinSize; wx = px; }
1923 if (py < pyl+kMinSize) { py = pyl+kMinSize; wy = py; }
1924 if (px < pxlp) { px = pxlp; wx = px; }
1925 if (py > pytp) { py = pytp; wy = py; }
1944 if (py2 > py1-kMinSize) { py2 = py1-kMinSize; wy = py2; }
1945 if (py2 < py2p) { py2 = py2p; wy = py2; }
1960 if (py1 < py2+kMinSize) { py1 = py2+kMinSize; wy = py1; }
1961 if (py1 > py1p) { py1 = py1p; wy = py1; }
1976 if (px1 > px2-kMinSize) { px1 = px2-kMinSize; wx = px1; }
1977 if (px1 < px1p) { px1 = px1p; wx = px1; }
1993 if (px2 < px1+kMinSize) { px2 = px1+kMinSize; wx = px2; }
1994 if (px2 > px2p) { px2 = px2p; wx = px2; }
2009 Int_t dx = px - pxold;
2010 Int_t dy = py - pyold;
2011 px1 += dx; py1 += dy; px2 += dx; py2 += dy;
2012 if (px1 < px1p) { dx = px1p - px1; px1 += dx; px2 += dx; wx = px+dx; }
2013 if (px2 > px2p) { dx = px2 - px2p; px1 -= dx; px2 -= dx; wx = px-dx; }
2014 if (py1 > py1p) { dy = py1 - py1p; py1 -= dy; py2 -= dy; wy = py-dy; }
2015 if (py2 < py2p) { dy = py2p - py2; py1 += dy; py2 += dy; wy = py+dy; }
2029 x1 = x2 = y1 = y2 = 0;
2056 if (pTop || pBot || pL || pR || pINSIDE) {
2063 if (px != pxorg || py != pyorg) {
2087 if (pINSIDE)
gPad->ShowGuidelines(
this, event);
2088 if (pTop)
gPad->ShowGuidelines(
this, event,
't',
true);
2089 if (pBot)
gPad->ShowGuidelines(
this, event,
'b',
true);
2090 if (pL)
gPad->ShowGuidelines(
this, event,
'l',
true);
2091 if (pR)
gPad->ShowGuidelines(
this, event,
'r',
true);
2092 if (pA)
gPad->ShowGuidelines(
this, event,
'1',
true);
2093 if (pB)
gPad->ShowGuidelines(
this, event,
'2',
true);
2094 if (pC)
gPad->ShowGuidelines(
this, event,
'3',
true);
2095 if (pD)
gPad->ShowGuidelines(
this, event,
'4',
true);
2104 if (
gROOT->IsEscaped()) {
2109 if (opaque||ropaque) {
2112 x1 = x2 = y1 = y2 = 0;
2138 if (pTop || pBot || pL || pR || pINSIDE) {
2145 if (pA || pB || pC || pD || pTop || pL || pR || pBot)
2151 if (px != pxorg || py != pyorg) {
2188 event =
gVirtualX->RequestLocator(1, 1, px, py);
2227 static Int_t axisNumber;
2229 static Int_t px1old, py1old, px2old, py2old;
2233 static TBox *zoombox;
2234 Double_t zbx1=0,zbx2=0,zby1=0,zby2=0;
2241 if (strstr(opt,
"cont4")) {
2250 if (!strcmp(axis->
GetName(),
"xaxis")) {
2254 if (!strcmp(axis->
GetName(),
"yaxis")) {
2258 if (!strcmp(axis->
GetName(),
"zaxis")) {
2264 if (axisNumber == 1) {
2270 }
else if (axisNumber == 2) {
2286 if (axisNumber == 1) {
2291 }
else if (axisNumber == 2) {
2305 zoombox =
new TBox(zbx1, zby1, zbx2, zby2);
2316 if (!opaque)
gVirtualX->SetLineColor(-1);
2324 if (axisNumber == 1) {
2334 if (axisNumber == 1) {
2339 }
else if (axisNumber == 2) {
2354 zoombox->
SetX1(zbx1);
2355 zoombox->
SetY1(zby1);
2356 zoombox->
SetX2(zbx2);
2357 zoombox->
SetY2(zby2);
2390 if (
gROOT->IsEscaped()) {
2392 if (opaque && zoombox) {
2401 if (ratio1 > ratio2) {
2406 if (ratio2 - ratio1 > 0.05) {
2408 if (axisNumber == 3 && hobj && hobj->
GetDimension() != 3) {
2417 Float_t newmin = zmin + (zmax-zmin)*ratio1;
2418 Float_t newmax = zmin + (zmax-zmin)*ratio2;
2431 bin1 = first +
Int_t((last-first+1)*ratio1);
2432 bin2 = first +
Int_t((last-first+1)*ratio2);
2442 if (axisNumber == 1) {
2450 }
else if (axisNumber == 2) {
2478 xmin = ((xmin-xmi)/(xma-xmi))*(up-low)+low;
2479 xmax = ((xmax-xmi)/(xma-xmi))*(up-low)+low;
2482 if (!strcmp(axis->
GetName(),
"xaxis")) axisNumber = 1;
2483 if (!strcmp(axis->
GetName(),
"yaxis")) axisNumber = 2;
2484 if (ratio2 - ratio1 > 0.05) {
2491 if (axisNumber == 1) axis->
SetRange(bin1,bin2);
2492 if (axisNumber == 2 && hobj1) {
2509 while ((obj= next())) {
2512 if (hobj == hobj1)
continue;
2515 if (axisNumber == 1) {
2517 }
else if (axisNumber == 2) {
2560 if (found)
return found;
2563 while ((cur = next())) {
2566 if (found)
return found;
2581 if (found)
return found;
2584 while ((cur = next())) {
2587 if (found)
return found;
2662 if (
fCanvas ==
this)
return 0;
2671 if (
fCanvas ==
this)
return 0;
2680 if (
fCanvas ==
this)
return 0;
2823 while ((obj=next())) {
2824 if (!strcmp(name, obj->
GetName()))
return obj;
2827 if (found)
return found;
2837 if (!subpadnumber) {
2844 while ((obj = next())) {
2847 if (pad->
GetNumber() == subpadnumber)
return pad;
2894 if (color <= 0)
return;
2912 gROOT->SetSelectedPad(
this);
2929 <<
" Name= "<<
GetName()<<
" Title= "<<
GetTitle()<<
" Option="<<option<<std::endl;
2941 if (opt.
Index(
"pfc")>=0 || opt.
Index(
"plc")>=0 || opt.
Index(
"pmc")>=0) {
2959 if (i>=ncolors) i = ncolors-1;
2971 Int_t const cellSize = 10;
2990 for (
int i = 0; i<
fCGnx; i++) {
2991 for (
int j = 0; j<
fCGny; j++) {
3002 for (
int i=0; i<np; i++) {
3019 for (
int r=i;
r<w+i;
r++) {
3020 for (
int c=j; c<h+j; c++) {
3040 for (
Int_t i = 0; i<nxmax; i++) {
3041 for (
Int_t j = 0; j<=nymax; j++) {
3054 #define NotFree(i, j) fCollideGrid[TMath::Max(TMath::Min(i+j*fCGnx,fCGnx*fCGny),0)] = kFALSE; 3073 for (i=y1+1; i<y2; i++)
NotFree(x1,i);
3080 xt =
x1; x1 =
x2; x2 = xt;
3081 yt = y1; y1 = y2; y2 = yt;
3083 for (i=x1+1; i<
x2; i++) {
3090 yt = y1; y1 = y2; y2 = yt;
3091 xt =
x1; x1 =
x2; x2 = xt;
3093 for (j=y1+1; j<y2; j++) {
3113 for (
int i = x1; i<=
x2; i++) {
3114 for (
int j = y1; j<=y2; j++)
NotFree(i, j);
3132 for (i = x1; i<=
x2; i++) {
3137 for (i = y1; i<=y2; i++) {
3155 for (
Int_t i=1; i<
n; i++) {
3171 (
int)((y1-
fY1)/ys), (
int)((y2-
fY1)/ys));
3184 if (name.
Index(
"hframe") >= 0)
return;
3189 bool haserrors =
false;
3194 if (drawOption.
Index(
"hist") < 0) {
3195 if (drawOption.
Index(
"e") >= 0) haserrors =
true;
3203 for (i = 1; i<
nx; i++) {
3223 for (j=y1; j<=y2; j++) {
3245 x1 = (int)((x1l-
fX1)/xs);
3261 box->SetFillColorAlpha(
kRed,0.5);
3272 for (
int i = 0; i<
fCGnx; i++) {
3275 for (
int j = 0; j<
fCGny; j++) {
3276 if (
gPad->GetLogx()) {
3283 if (
gPad->GetLogy()) {
3292 box->DrawBox(X1L, Y1L, X2L, Y2L);
3294 box->SetFillColorAlpha(
kRed,t);
3295 box->DrawBox(X1L, Y1L, X2L, Y2L);
3299 if (t==0.15) t = 0.1;
3393 began3DScene =
kTRUE;
3400 if (padsav) padsav->cd();
3429 if (color < 0) color = -color;
3436 if (bordersize <= 0) bordersize = 2;
3457 if (px1 < px2) {xl =
fX1; xt =
fX2; }
3458 else {xl =
fX2; xt =
fX1;}
3459 if (py1 > py2) {yl =
fY1; yt =
fY2;}
3460 else {yl =
fY2; yt =
fY1;}
3462 Double_t frameXs[7] = {}, frameYs[7] = {};
3466 frameXs[0] = xl; frameYs[0] = yl;
3467 frameXs[1] = xl + realBsX; frameYs[1] = yl + realBsY;
3468 frameXs[2] = frameXs[1]; frameYs[2] = yt - realBsY;
3469 frameXs[3] = xt - realBsX; frameYs[3] = frameYs[2];
3470 frameXs[4] = xt; frameYs[4] = yt;
3471 frameXs[5] = xl; frameYs[5] = yt;
3472 frameXs[6] = xl; frameYs[6] = yl;
3479 frameXs[0] = xl; frameYs[0] = yl;
3480 frameXs[1] = xl + realBsX; frameYs[1] = yl + realBsY;
3481 frameXs[2] = xt - realBsX; frameYs[2] = frameYs[1];
3482 frameXs[3] = frameXs[2]; frameYs[3] = yt - realBsY;
3483 frameXs[4] = xt; frameYs[4] = yt;
3484 frameXs[5] = xt; frameYs[5] = yl;
3485 frameXs[6] = xl; frameYs[6] = yl;
3618 ((
TPad*)obj)->PaintModified();
3630 began3DScene =
kTRUE;
3638 if (padsav) padsav->cd();
3659 if (!
gPad->IsBatch()) {
3662 if (option[0] ==
's') {
3667 if (style > 3000 && style < 4000) {
3673 if (style >= 3100 && style < 4000) {
3675 xb[0] =
x1; xb[1] =
x1; xb[2] =
x2; xb[3] =
x2;
3676 yb[0] = y1; yb[1] = y2; yb[2] = y2; yb[3] = y1;
3686 }
else if (style >= 4000 && style <= 4100) {
3711 }
else if (style >= 1000 && style <= 1999) {
3725 if (option[0] ==
's') {
3728 if (style0 >= 3100 && style0 < 4000) {
3730 xb[0] =
x1; xb[1] =
x1; xb[2] =
x2; xb[3] =
x2;
3731 yb[0] = y1; yb[1] = y2; yb[2] = y2; yb[3] = y1;
3737 if (option[0] ==
'l') {
3756 while ((obj = next())) {
3758 if (obj == stop)
break;
3759 ((
TPad*)obj)->CopyBackgroundPixmap(x, y);
3760 ((
TPad*)obj)->CopyBackgroundPixmaps((
TPad*)obj, stop, x, y);
3779 Warning(
"TPad::PaintFillArea",
"Float_t signature is obsolete. Use Double_t signature.");
3802 n =
ClipPolygon(nn, xx, yy, nc, x, y,xmin,ymin,xmax,ymax);
3812 if (fillstyle >= 3100 && fillstyle < 4000) {
3819 if (!
gPad->IsBatch())
3866 static Double_t ang1[10] = {0., 10., 20., 30., 45.,5., 60., 70., 80., 90.};
3867 static Double_t ang2[10] = {180.,170.,160.,150.,135.,5.,120.,110.,100., 90.};
3869 Int_t fasi = FillStyle%1000;
3872 Int_t iAng1 = fasi%10;
3880 if (!
gPad->IsBatch()) {
3893 if (!
gPad->IsBatch()) {
3905 if (ang1[iAng1] != 5.)
PaintHatches(dy, ang1[iAng1], nn, xx, yy);
3906 if (ang2[iAng2] != 5.)
PaintHatches(dy, ang2[iAng2], nn, xx, yy);
3909 if (!
gPad->IsBatch()) {
3933 const Int_t maxnbi = 100;
3934 Double_t xli[maxnbi], xlh[2], ylh[2], xt1, xt2, yt1, yt2;
3935 Double_t ll,
x,
y,
x1,
x2, y1, y2,
a,
b, xi, xip, xin, yi, yip;
3941 ratiox = 1/(rwxmax-rwxmin);
3942 ratioy = 1/(rwymax-rwymin);
3955 gPad->GetPadPar(x1p,y1p,x2p,y2p);
3964 for (i=1; i<=
nn; i++) {
3965 x = wndc*ratiox*(xx[i-1]-rwxmin);
3966 y = hndc*ratioy*(yy[i-1]-rwymin);
3967 yrot = sina*x+cosa*
y;
3968 if (yrot > ymax) ymax = yrot;
3969 if (yrot < ymin) ymin = yrot;
3973 for (ycur=ymax; ycur>=
ymin; ycur=ycur-dy) {
3975 for (i=2; i<=nn+1; i++) {
3978 if (i == nn+1) i2=1;
3979 x1 = wndc*ratiox*(xx[i1-1]-rwxmin);
3980 y1 = hndc*ratioy*(yy[i1-1]-rwymin);
3981 x2 = wndc*ratiox*(xx[i2-1]-rwxmin);
3982 y2 = hndc*ratioy*(yy[i2-1]-rwymin);
3983 xt1 = cosa*x1-sina*y1;
3984 yt1 = sina*x1+cosa*y1;
3985 xt2 = cosa*x2-sina*y2;
3986 yt2 = sina*x2+cosa*y2;
3997 if ((yi <= ycur) && (ycur < yip)) {
3999 if (nbi >= maxnbi)
return;
4009 if (nbi >= maxnbi)
return;
4012 if (nbi >= maxnbi)
return;
4019 a = (yt1-yt2)/(xt1-xt2);
4020 b = (yt2*xt1-xt2*yt1)/(xt1-xt2);
4029 if ((xi <= xin) && (xin < xip) &&
4033 if (nbi >= maxnbi)
return;
4042 for (i=1; i<=
m; i++) {
4043 if (xli[i] < xli[i-1]) {
4051 if (inv == 0)
goto L50;
4057 if (nbi%2 != 0)
continue;
4059 for (i=1; i<=nbi; i=i+2) {
4061 xlh[0] = cosb*xli[i-1]-sinb*ycur;
4062 ylh[0] = sinb*xli[i-1]+cosb*ycur;
4063 xlh[1] = cosb*xli[i] -sinb*ycur;
4064 ylh[1] = sinb*xli[i] +cosb*ycur;
4066 xlh[0] = (xlh[0]/wndc)*(rwxmax-rwxmin)+rwxmin;
4067 ylh[0] = (ylh[0]/hndc)*(rwymax-rwymin)+rwymin;
4068 xlh[1] = (xlh[1]/wndc)*(rwxmax-rwxmin)+rwxmin;
4069 ylh[1] = (ylh[1]/hndc)*(rwymax-rwymin)+rwymin;
4070 gPad->PaintLine(xlh[0], ylh[0], xlh[1], ylh[1]);
4081 x[0] =
x1; x[1] =
x2; y[0] = y1; y[1] = y2;
4090 if (!
gPad->IsBatch())
4106 if (!
gPad->IsBatch())
4131 for (i=0;i<3;i++) temp[i] = p1[i];
4133 for (i=0;i<3;i++) temp[i] = p2[i];
4135 PaintLine(xpad[0],xpad[1],xpad[3],xpad[4]);
4149 for (i=0;i<3;i++) temp[i] = p1[i];
4151 for (i=0;i<3;i++) temp[i] = p2[i];
4153 PaintLine(xpad[0],xpad[1],xpad[3],xpad[4]);
4169 Int_t i, i1=-1,np=1;
4170 for (i=0; i<n-1; i++) {
4175 Int_t iclip =
Clip(&x[i],&y[i],xmin,ymin,xmax,ymax);
4182 if (iclip == 0 && i < n-2)
continue;
4183 if (!
gPad->IsBatch())
4216 if (option && (option[0] ==
'C')) mustClip =
kFALSE;
4219 Int_t i, i1=-1, np=1, iclip=0;
4221 for (i=0; i < n-1; i++) {
4227 iclip =
Clip(&x[i],&y[i],xmin,ymin,xmax,ymax);
4235 if (iclip == 0 && i < n-2)
continue;
4236 if (!
gPad->IsBatch())
4261 if (!
gPad->IsBatch())
4267 for (
Int_t i=0; i<
n; i++) {
4286 for (
Int_t i = 1; i <
n; i++)
4305 for (i=0; i<
n; i++) {
4306 if (x[i] >= xmin && x[i] <= xmax && y[i] >= ymin && y[i] <= ymax) {
4309 if (i < n-1)
continue;
4311 if (np == 0)
continue;
4312 if (!
gPad->IsBatch())
4336 for (i=0; i<
n; i++) {
4337 if (x[i] >= xmin && x[i] <= xmax && y[i] >= ymin && y[i] <= ymax) {
4340 if (i < n-1)
continue;
4342 if (np == 0)
continue;
4343 if (!
gPad->IsBatch())
4361 if (!
gPad->IsBatch())
4374 if (!
gPad->IsBatch())
4387 if (!
gPad->IsBatch())
4404 if (!
gPad->IsBatch())
4432 if (
gPad == 0)
return 0;
4439 if (
this !=
gPad->GetCanvas()) {
4440 if (!((x >=
fX1 && x <=
fX2) && (y >=
fY1 && y <=
fY2)))
return 0;
4448 TPad *picked =
this;
4452 pickobj = &dummyLink;
4481 pick = ((
TPad*)obj)->
Pick(px, py, pickobj);
4486 }
else if (!
gROOT->GetEditorMode()) {
4493 if (dist == 0)
break;
4508 if (
fView && !gotPrim) {
4532 if (picked ==
this) {
4554 while ((obj = next()))
4556 char *opt =
StrDup(next.GetOption());
4583 ((
TPad*)
this)->SaveAs(filename);
4595 while ((obj = next())) {
4740 const char *filename;
4758 filename = fs2.
Data();
4761 const char *opt_default=
"ps";
4763 Int_t lenfil = filename ? strlen(filename) : 0;
4764 TString opt = (!option) ? opt_default : option;
4786 if (strstr(opt,
"gif+")) {
4789 }
else if (strstr(opt,
"gif")) {
4792 }
else if (strstr(opt,
"png")) {
4795 }
else if (strstr(opt,
"jpg")) {
4798 }
else if (strstr(opt,
"tiff")) {
4801 }
else if (strstr(opt,
"xpm")) {
4804 }
else if (strstr(opt,
"bmp")) {
4811 if (!
gROOT->IsBatch() && image) {
4814 Color_t hc =
gPad->GetCanvas()->GetHighLightColor();
4815 gPad->GetCanvas()->SetHighLightColor(-1);
4821 Info(
"Print",
"GIF file %s has been created", psname.
Data());
4823 gPad->GetCanvas()->SetHighLightColor(hc);
4827 Color_t hc =
gPad->GetCanvas()->GetHighLightColor();
4828 gPad->GetCanvas()->SetHighLightColor(-1);
4843 Info(
"Print",
"file %s has been created", psname.
Data());
4845 gPad->GetCanvas()->SetHighLightColor(hc);
4847 Warning(
"Print",
"Unsupported image format %s", psname.
Data());
4853 if (strstr(opt,
"cxx")) {
4859 if (strstr(opt,
"root")) {
4865 if (strstr(opt,
"xml")) {
4872 if (strstr(opt,
"json")) {
4878 if (strstr(opt,
"svg")) {
4893 if ((h =
gROOT->GetPluginManager()->FindHandler(
"TVirtualPS",
"svg"))) {
4920 if (strstr(opt,
"tex")) {
4935 if ((h =
gROOT->GetPluginManager()->FindHandler(
"TVirtualPS",
"tex"))) {
4971 copen = psname.
EndsWith(
"(");
if (copen) psname[psname.
Length()-1] = 0;
4972 cclose = psname.
EndsWith(
")");
if (cclose) psname[psname.
Length()-1] = 0;
4973 copenb = psname.
EndsWith(
"[");
if (copenb) psname[psname.
Length()-1] = 0;
4974 ccloseb = psname.
EndsWith(
"]");
if (ccloseb) psname[psname.
Length()-1] = 0;
4978 if (copen || copenb) mustClose =
kFALSE;
4979 if (cclose || ccloseb) mustClose =
kTRUE;
4990 if (ratio < 1) pstype = 112;
4991 if (strstr(opt,
"Portrait")) pstype = 111;
4992 if (strstr(opt,
"Landscape")) pstype = 112;
4993 if (strstr(opt,
"eps")) pstype = 113;
4994 if (strstr(opt,
"Preview")) pstype = 113;
5002 if (strstr(opt,
"pdf") || strstr(opt,
"Title:")) {
5003 if ((h =
gROOT->GetPluginManager()->FindHandler(
"TVirtualPS",
"pdf"))) {
5009 if ((h =
gROOT->GetPluginManager()->FindHandler(
"TVirtualPS",
"image"))) {
5014 if ((h =
gROOT->GetPluginManager()->FindHandler(
"TVirtualPS",
"ps"))) {
5023 if (titlePos !=
kNPOS) {
5030 if (!strstr(opt,
"pdf") || image) {
5047 if (!copen)
Info(
"Print",
"%s file %s has been created", opt.
Data(), psname.
Data());
5048 else Info(
"Print",
"%s file %s has been created using the current canvas", opt.
Data(), psname.
Data());
5057 if (titlePos !=
kNPOS) {
5064 if (cclose)
Info(
"Print",
"Current canvas added to %s file %s and file closed", opt.
Data(), psname.
Data());
5065 else Info(
"Print",
"%s file %s has been closed", opt.
Data(), psname.
Data());
5070 Info(
"Print",
"Current canvas added to %s file %s", opt.
Data(), psname.
Data());
5087 if ((x1 >= x2) || (y1 >= y2)) {
5088 Error(
"Range",
"illegal world coordinates range: x1=%f, y1=%f, x2=%f, y2=%f",x1,y1,x2,y2);
5097 if (
fX1 == x1 &&
fY1 == y1 &&
fX2 == x2 &&
fY2 == y2)
return;
5125 if ((xmin >= xmax) || (ymin >= ymax)) {
5126 Error(
"RangeAxis",
"illegal axis coordinates range: xmin=%f, ymin=%f, xmax=%f, ymax=%f",
5127 xmin, ymin, xmax, ymax);
5179 while ((obj = next())) {
5190 if (h1f) h1f->
DrawCopy(
"sameaxis");
5209 if (padsav) padsav->
cd();
5339 if (
this ==
gPad->GetCanvas()) {
5371 fYtoPixelk = rounding + -pyrange - pyrange*fY1/yrange;
5392 while ((obj = next())) {
5398 if (
gPad->IsBatch())
5416 Warning(
"ResizePad",
"Inf/NaN propagated to the pad. Check drawn objects.");
5417 if (w <= 0 || w > 10000) {
5418 Warning(
"ResizePad",
"%s width changed from %d to %d\n",
GetName(),w,10);
5421 if (h <= 0 || h > 10000) {
5422 Warning(
"ResizePad",
"%s height changed from %d to %d\n",
GetName(),h,10);
5437 if (padsav ==
this) {
5471 Int_t lenfil = filename ? strlen(filename) : 0;
5474 else psname = filename;
5537 const char *cname =
GetName();
5538 Int_t nch = strlen(cname);
5540 strlcpy(lcname,cname,10);
5541 for (
Int_t k=1;k<=nch;k++) {
if (lcname[nch-k] ==
' ') lcname[nch-k] = 0;}
5542 if (lcname[0] == 0) {
5543 if (
this ==
gPad->GetCanvas()) {strlcpy(lcname,
"c1",10); nch = 2;}
5544 else {strlcpy(lcname,
"pad",10); nch = 3;}
5550 if (
this !=
gPad->GetCanvas()) {
5551 out <<
" "<<std::endl;
5552 out <<
"// ------------>Primitives in pad: "<<
GetName()<<std::endl;
5554 out<<
" TPad *"<<cname<<
" = new TPad("<<quote<<
GetName()<<quote<<
", "<<quote<<
GetTitle()
5561 out<<
" "<<cname<<
"->Draw();"<<std::endl;
5562 out<<
" "<<cname<<
"->cd();"<<std::endl;
5564 out<<
" "<<cname<<
"->Range("<<
fX1<<
","<<
fY1<<
","<<
fX2<<
","<<
fY2<<
");"<<std::endl;
5569 static Int_t viewNumber = 0;
5570 out<<
" TView *view"<<++viewNumber<<
" = TView::CreateView(1);"<<std::endl;
5571 out<<
" view"<<viewNumber<<
"->SetRange("<<rmin[0]<<
","<<rmin[1]<<
","<<rmin[2]<<
"," 5572 <<rmax[0]<<
","<<rmax[1]<<
","<<rmax[2]<<
");"<<std::endl;
5577 out<<
" "<<cname<<
"->SetFillColor(ci);" << std::endl;
5579 out<<
" "<<cname<<
"->SetFillColor("<<
GetFillColor()<<
");"<<std::endl;
5582 out<<
" "<<cname<<
"->SetFillStyle("<<
GetFillStyle()<<
");"<<std::endl;
5585 out<<
" "<<cname<<
"->SetBorderMode("<<
GetBorderMode()<<
");"<<std::endl;
5588 out<<
" "<<cname<<
"->SetBorderSize("<<
GetBorderSize()<<
");"<<std::endl;
5591 out<<
" "<<cname<<
"->SetLogx();"<<std::endl;
5594 out<<
" "<<cname<<
"->SetLogy();"<<std::endl;
5597 out<<
" "<<cname<<
"->SetLogz();"<<std::endl;
5600 out<<
" "<<cname<<
"->SetGridx();"<<std::endl;
5603 out<<
" "<<cname<<
"->SetGridy();"<<std::endl;
5606 out<<
" "<<cname<<
"->SetTickx("<<
GetTickx()<<
");"<<std::endl;
5609 out<<
" "<<cname<<
"->SetTicky("<<
GetTicky()<<
");"<<std::endl;
5612 out<<
" "<<cname<<
"->SetTheta("<<
GetTheta()<<
");"<<std::endl;
5615 out<<
" "<<cname<<
"->SetPhi("<<
GetPhi()<<
");"<<std::endl;
5618 out<<
" "<<cname<<
"->SetLeftMargin("<<
GetLeftMargin()<<
");"<<std::endl;
5621 out<<
" "<<cname<<
"->SetRightMargin("<<
GetRightMargin()<<
");"<<std::endl;
5624 out<<
" "<<cname<<
"->SetTopMargin("<<
GetTopMargin()<<
");"<<std::endl;
5627 out<<
" "<<cname<<
"->SetBottomMargin("<<
GetBottomMargin()<<
");"<<std::endl;
5633 out<<
" "<<cname<<
"->SetFrameFillColor(ci);" << std::endl;
5646 out<<
" "<<cname<<
"->SetFrameLineColor(ci);" << std::endl;
5666 out<<
" "<<cname<<
"->SetFrameFillColor(ci);" << std::endl;
5668 out<<
" "<<cname<<
"->SetFrameFillColor("<<frame->
GetFillColor()<<
");"<<std::endl;
5671 out<<
" "<<cname<<
"->SetFrameFillStyle("<<frame->
GetFillStyle()<<
");"<<std::endl;
5674 out<<
" "<<cname<<
"->SetFrameLineStyle("<<frame->
GetLineStyle()<<
");"<<std::endl;
5679 out<<
" "<<cname<<
"->SetFrameLineColor(ci);" << std::endl;
5681 out<<
" "<<cname<<
"->SetFrameLineColor("<<frame->
GetLineColor()<<
");"<<std::endl;
5684 out<<
" "<<cname<<
"->SetFrameLineWidth("<<frame->
GetLineWidth()<<
");"<<std::endl;
5687 out<<
" "<<cname<<
"->SetFrameBorderMode("<<frame->
GetBorderMode()<<
");"<<std::endl;
5690 out<<
" "<<cname<<
"->SetFrameBorderSize("<<frame->
GetBorderSize()<<
");"<<std::endl;
5698 while ((obj = next())) {
5700 if (!strcmp(obj->
GetName(),
"Graph")) ((
TGraph*)obj)->SetName(
Form(
"Graph%d",grnum++));
5703 out<<
" "<<cname<<
"->Modified();"<<std::endl;
5705 if (padsav) padsav->
cd();
5718 Error(
"SetAspectRatio",
"cannot fix aspect ratio, height of pad is 0");
5742 while ((obj = next())) {
5756 if (fstyle == 0) fstyle = 4000;
5849 SetPad(xlow, ylow, xup, yup);
5857 if (!view)
delete fView;
5930 x1 = x2 = y1 = y2 = 0;
5932 if (aBBox.
fX<bBBox.
fX) {
5948 else if (mode ==
'y') {
5949 if (aBBox.
fY<bBBox.
fY) {
5987 : fa(0), fb(0), fdist(0), fdir(
' ')
5991 : fa(a), fb(b), fdist(dist), fdir(direction)
6017 std::vector<dField> curDist;
6018 std::vector<dField> otherDist;
6028 Int_t dSizeArrow = 12;
6030 movedX = movedY =
false;
6033 if (mode !=
'i') resize =
true;
6035 TPad *is_pad =
dynamic_cast<TPad *
>( object );
6040 static TPad * tmpGuideLinePad;
6043 if (tmpGuideLinePad) {
6044 if (
object == tmpGuideLinePad) {
6045 tmpGuideLinePad->
Delete();
6046 tmpGuideLinePad = 0;
6049 tmpGuideLinePad->
Delete();
6050 tmpGuideLinePad = 0;
6054 prims =
gPad->GetListOfPrimitives();
6061 if (!tmpGuideLinePad){
6062 tmpGuideLinePad =
new TPad(
"tmpGuideLinePad",
"tmpGuideLinePad", 0, 0, 1, 1);
6064 gPad->GetRange(x1, y1, x2, y2);
6065 tmpGuideLinePad->
Range(x1, y1, x2, y2);
6068 tmpGuideLinePad->
Draw();
6069 tmpGuideLinePad->
cd();
6070 gPad->GetRange(x1, y1, x2, y2);
6072 if (cling && !log) threshold = 7;
6085 MX =
gPad->GetX1() + 0.5 * (
gPad->GetX2()-
gPad->GetX1());
6086 MY =
gPad->GetY1() + 0.5 * (
gPad->GetY2()-
gPad->GetY1());
6087 pMX =
gPad->XtoPixel(MX);
6088 pMY =
gPad->YtoPixel(MY);
6091 if (cling && (!resize)) {
6103 if (cling && (!resize)) {
6115 for (
UInt_t i = 0; i<
n; i++) {
6121 if (cling && (!resize)) {
6133 if (cling && (!resize)) {
6148 for (
UInt_t i = 0; i<
n; i++) {
6152 for (
UInt_t j = i+1; j<
n; j++) {
6160 dField abDist = dField();
6163 if ((b != cur)&&(a != cur)) otherDist.push_back(abDist);
6164 else curDist.push_back(abDist);
6168 dField abDist = dField();
6171 if ((b != cur)&&(a != cur)) otherDist.push_back(abDist);
6172 else curDist.push_back(abDist);
6180 for (
UInt_t i = 0; i<curDist.size(); i++) {
6181 for (
UInt_t j = 0; j<otherDist.size(); j++) {
6182 if ((curDist[i].fdir == otherDist[j].fdir)&&(otherDist[j].fdir==
'x')&&(
TMath::Abs(curDist[i].fdist-otherDist[j].fdist)<threshold)) {
6183 if (cling && (!movedX) && (!resize)) {
6189 DrawDist(curDist[i].fa->GetBBox(), curDist[i].fb->GetBBox(),
'x');
6190 DrawDist(otherDist[j].fa->GetBBox(), otherDist[j].fb->GetBBox(),
'x');
6192 if ((curDist[i].fdir == otherDist[j].fdir)&&(otherDist[j].fdir==
'y')&&(
TMath::Abs(curDist[i].fdist-otherDist[j].fdist)<threshold)) {
6193 if (cling && (!movedY) && (!resize)) {
6199 DrawDist(curDist[i].fa->GetBBox(), curDist[i].fb->GetBBox(),
'y');
6200 DrawDist(otherDist[j].fa->GetBBox(), otherDist[j].fb->GetBBox(),
'y');
6203 for (
UInt_t j = i; j<curDist.size(); j++) {
6205 if ((curDist[i].fdir == curDist[j].fdir)&&(curDist[j].fdir==
'x')&&(
TMath::Abs(curDist[i].fdist-curDist[j].fdist)<threshold)) {
6206 if (cling && (!movedX) && (!resize)) {
6211 DrawDist(curDist[i].fa->GetBBox(), curDist[i].fb->GetBBox(),
'x');
6212 DrawDist(curDist[j].fa->GetBBox(), curDist[j].fb->GetBBox(),
'x');
6215 if ((curDist[i].fdir == curDist[j].fdir)&&(curDist[j].fdir==
'y')&&(
TMath::Abs(curDist[i].fdist-curDist[j].fdist)<threshold)) {
6216 if (cling && (!movedY) && (!resize)) {
6221 DrawDist(curDist[i].fa->GetBBox(), curDist[i].fb->GetBBox(),
'y');
6222 DrawDist(curDist[j].fa->GetBBox(), curDist[j].fb->GetBBox(),
'y');
6229 for (
UInt_t i = 0; i<
n; i++) {
6231 if (a && (cur != a)) {
6244 gPad->PixeltoX(aBBox.
fX+aBBox.
fWidth),
gPad->PixeltoY(aBBox.
fY-dSizeArrow-
gPad->VtoPixel(0)), 0.01,
"<|>");
6286 if (tmpGuideLinePad) {
6289 tmpGuideLinePad->
Delete();
6290 tmpGuideLinePad = 0;
6357 if (text && strlen(text))
6376 Int_t nch, nobjects;
6396 while ((obj = next())) {
6415 TObject::Streamer(b);
6416 TAttLine::Streamer(b);
6417 TAttFill::Streamer(b);
6418 b >> single;
fX1 = single;
6419 b >> single;
fY1 = single;
6420 b >> single;
fX2 = single;
6421 b >> single;
fY2 = single;
6424 TAttPad::Streamer(b);
6426 TVirtualPad::Streamer(b);
6427 TAttPad::Streamer(b);
6428 b >> single;
fX1 = single;
6429 b >> single;
fY1 = single;
6430 b >> single;
fX2 = single;
6431 b >> single;
fY2 = single;
6458 b >> single;
fWNDC = single;
6459 b >> single;
fHNDC = single;
6464 b >> single;
fUxmin = single;
6465 b >> single;
fUymin = single;
6466 b >> single;
fUxmax = single;
6467 b >> single;
fUymax = single;
6469 TVirtualPad::Streamer(b);
6470 TAttPad::Streamer(b);
6529 char drawoption[64];
6530 for (
Int_t i = 0; i < nobjects; i++) {
6555 b >> single;
fTheta = single;
6556 b >> single;
fPhi = single;
6620 while ((obj = next())) {
6702 if (!
gPad)
return 0;
6704 if (strlen(emode))
gROOT->SetEditorMode(emode);
6705 if (
gROOT->GetEditorMode() == 0 && strlen(pname) > 2)
gROOT->SetEditorMode(&pname[1]);
6709 TObject *oldlast =
gPad->GetListOfPrimitives()->Last();
6712 Bool_t hasname = strlen(pname) > 0;
6713 if (!pname[0] && !emode[0]) testlast =
kTRUE;
6714 if (testlast)
gROOT->SetEditorMode();
6716 if (
gROOT->GetEditorMode() == 0) {
6719 if (obj)
return obj;
6722 obj =
gPad->GetListOfPrimitives()->Last();
6723 if (obj != oldlast)
return obj;
6744 if (
gPad->IsBatch())
return 0;
6745 return (
TObject*)
gROOT->ProcessLineFast(
Form(
"new TGToolTip((TBox*)0x%lx,\"%s\",%d)",
6756 gROOT->ProcessLineFast(
Form(
"delete (TGToolTip*)0x%lx", (
Long_t)tip));
6767 gROOT->ProcessLineFast(
Form(
"((TGToolTip*)0x%lx)->Reset((TPad*)0x%lx)",
6778 gROOT->ProcessLineFast(
Form(
"((TGToolTip*)0x%lx)->Hide()",(
Long_t)tip));
6786 ::Info(
"TPad::x3d()",
"Fn is depreciated - use TPad::GetViewer3D() instead");
6789 if (!type || !type[0]) {
6806 if ( (!type || !type[0] || (strstr(type,
"gl") && !strstr(type,
"ogl"))) && !
fCanvas->
UseGL())
6809 if (type && type[0]) {
6834 if (!strstr(type,
"pad")) {
6838 Warning(
"TPad::CreateViewer3D",
"Cannot create 3D viewer of type: %s", type);
6844 if (strstr(type,
"gl") && !strstr(type,
"ogl"))
6847 createdExternal =
kTRUE;
6863 if (createdExternal) {
6900 Emit(
"RecordPave(const TObject*)", (
Long_t)obj);
6908 Emit(
"RecordLatex(const TObject*)", (
Long_t)obj);
Style_t GetFrameFillStyle() const
Bool_t Collide(Int_t i, Int_t j, Int_t w, Int_t h)
Check if a box of size w and h collide some primitives in the pad at position i,j.
Bool_t fAbsCoord
Use absolute coordinates.
void FillCollideGridTGraph(TObject *o)
virtual const char * GetName() const
Returns name of object.
virtual Bool_t AccessPathName(const char *path, EAccessMode mode=kFileExists)
Returns FALSE if one can access a file using the specified access mode.
Int_t GetNdata()
Return the number of data members of this class Note that in case the list of data members is not yet...
virtual void SetLineWidth(Width_t lwidth)
Set the line width.
TVirtualPad * GetPadSave() const
Get save pad.
Int_t VtoPixel(Double_t v) const
Double_t fPixeltoX
xworld = fPixeltoXk + fPixeltoX*xpixel
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)
void DrawCollideGrid()
This method draws the collide grid on top of the canvas.
static Int_t DecreaseDirLevel()
Decrease the indentation level for ls().
virtual void DrawBox(Double_t x1, Double_t y1, Double_t x2, Double_t y2)=0
virtual Bool_t ProcessEvents()
Process pending events (GUI, timers, sockets).
static void PolyLine(Int_t event, Int_t px, Int_t py, Int_t mode)
Create a new PolyLine in gPad.
Float_t GetLeftMargin() const
void PaintLineNDC(Double_t u1, Double_t v1, Double_t u2, Double_t v2)
Paint line in normalized coordinates.
virtual Int_t WriteClassBuffer(const TClass *cl, void *pointer)=0
virtual void DrawClassObject(const TObject *obj, Option_t *option="")
Draw class inheritance tree of the class to which obj belongs.
Double_t GetAbsYlowNDC() const
void SetPadGridX(Bool_t gridx)
virtual Double_t GetBinCenter(Int_t bin) const
Return bin center for 1D histogram.
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
TList * fPrimitives
->List of primitives (subpads)
virtual void ResizePad(Option_t *option="")
Compute pad conversion coefficients.
virtual void Draw(Option_t *option="")
Draw this pavetext with its current attributes.
Double_t Floor(Double_t x)
virtual void SetCursor(ECursor cursor)
Set cursor.
void SetPadLeftMargin(Float_t margin=0.1)
Float_t GetPadLeftMargin() const
Int_t GetFirst() const
Return first bin on the axis i.e.
Double_t YtoPad(Double_t y) const
Convert y from Y to pad.
ABC describing GUI independent main window (with menubar, scrollbars and a drawing area)...
virtual void DrawPolyLineNDC(Int_t n, const Double_t *u, const Double_t *v)=0
TVirtualPad * GetSelectedPad() const
virtual TBox * DrawBox(Double_t x1, Double_t y1, Double_t x2, Double_t y2)
Draw this box with new coordinates.
virtual void SetMaximum(Double_t maximum=-1111)
This class displays a legend box (TPaveText) containing several legend entries.
Int_t UtoPixel(Double_t u) const
TList * GetListOfPrimitives() const
TH1 * GetHistogram() const
Returns a pointer to the histogram used to draw the axis Takes into account the two following cases...
The Histogram stack class.
R__EXTERN Int_t gErrorIgnoreLevel
virtual void DrawCrosshair()
Function called to draw a crosshair in the canvas.
virtual Short_t GetBorderSize() const
virtual void SetLimits(Double_t xmin, Double_t xmax)
virtual TVirtualPad * GetPad(Int_t subpadnumber) const
Get a pointer to subpadnumber of this pad.
virtual TBox * AddBox(Double_t x1, Double_t y1, Double_t x2, Double_t y2)
Add a new graphics box to this pavetext.
Color_t GetTitleTextColor() const
virtual void XYtoAbsPixel(Double_t x, Double_t y, Int_t &xpixel, Int_t &ypixel) const
virtual void SetBatch(Bool_t batch=kTRUE)
Set pad in batch mode.
virtual Color_t GetTextColor() const
Return the text color.
Bool_t fGridx
Set to true if grid along X.
Double_t fPhi
phi angle to view as lego/surface
Int_t GetNmethods()
Return the number of methods of this class Note that in case the list of methods is not yet created...
TVirtualPadPainter * GetCanvasPainter()
Access and (probably) creation of pad painter.
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
TString & ReplaceAll(const TString &s1, const TString &s2)
void PaintPadFrame(Double_t xmin, Double_t ymin, Double_t xmax, Double_t ymax)
Paint histogram/graph frame.
static Int_t GetColorDark(Int_t color)
Static function: Returns the dark color number corresponding to n If the TColor object does not exist...
Float_t GetBottomMargin() const
virtual void SetVertical(Bool_t vert=kTRUE)
Set pad vertical (default) or horizontal.
TClass * GetClassPointer(Bool_t load=kTRUE)
Get pointer to the base class TClass.
R__EXTERN TStyle * gStyle
Float_t fBottomMargin
BottomMargin.
Int_t fNumPaletteColor
Number of objects with an automatic color.
void PaintFillArea(Int_t n, Float_t *x, Float_t *y, Option_t *option="")
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
Int_t fCGnx
! Size of the collide grid along x
TH1F * DrawFrame(Double_t xmin, Double_t ymin, Double_t xmax, Double_t ymax, const char *title="")
Draw an empty pad frame with X and Y axis.
virtual void DrawPolyMarker(Int_t n, Float_t *x, Float_t *y)=0
TObject * GetSelected() const
Get selected.
virtual void SetBBoxCenter(const TPoint &p)
Set center of the Pad.
Bool_t GetPadGridY() const
virtual void SetFixedAspectRatio(Bool_t fixed=kTRUE)
Fix pad aspect ratio to current value if fixed is true.
virtual Double_t GetSumOfWeights() const
Return the sum of weights excluding under/overflows.
virtual void SetBorderMode(Short_t bordermode)
virtual Double_t GetBinContent(Int_t bin) const
Return content of bin number bin.
virtual Float_t GetTextAngle() const
Return the text angle.
virtual TObject * Last() const
Return the last object in the list. Returns 0 when list is empty.
A TMultiGraph is a collection of TGraph (or derived) objects.
virtual ~TPad()
Pad destructor.
virtual Color_t GetHighLightColor() const
Get highlight color.
Double_t fAbsXlowNDC
Absolute X top left corner of pad in NDC [0,1].
virtual void AddFirst(TObject *obj)
Add object at the beginning of the list.
virtual TText * AddText(Double_t x1, Double_t y1, const char *label)
Add a new Text line to this pavetext at given coordinates.
virtual Bool_t IsVertical() const
void FillCollideGridTFrame(TObject *o)
Buffer base class used for serializing objects.
TList * fExecs
List of commands to be executed when a pad event occurs.
virtual void CopyPixmap()
Copy the pixmap of the pad to the canvas.
virtual TObject * FindObject(const char *name) const
Search if object named name is inside this pad or in pads inside this pad.
TPluginHandler * FindHandler(const char *base, const char *uri=0)
Returns the handler if there exists a handler for the specified URI.
TVirtualPad * GetPadSave() const
Int_t XtoPixel(Double_t x) const
Double_t GetAbsXlowNDC() const
if object in a pad cannot be picked
virtual void SetMinimum(Double_t minimum=-1111)
virtual Int_t CheckByteCount(UInt_t startpos, UInt_t bcnt, const TClass *clss)=0
TList * GetListOfDataMembers(Bool_t load=kTRUE)
Return list containing the TDataMembers of a class.
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
virtual void DivideSquare(Int_t n, Float_t xmargin=0.01, Float_t ymargin=0.01, Int_t color=0)
"n" is the total number of sub-pads.
virtual void GetRangeAxis(Double_t &xmin, Double_t &ymin, Double_t &xmax, Double_t &ymax)
Return pad axis coordinates range.
Int_t GetPadTickY() const
Double_t fUxmax
Maximum value on the X axis.
Int_t LoadPlugin()
Load the plugin library for this handler.
Option_t * GetOption() const
void PaintBorder(Color_t color, Bool_t tops)
Paint the pad border.
void SetTitleFont(Style_t font=62, Option_t *axis="X")
virtual void DestroyDrawable()=0
tomato 1-D histogram with a float per channel (see TH1 documentation)}
Int_t fCGny
! Size of the collide grid along y
Bool_t PlaceBox(TObject *o, Double_t w, Double_t h, Double_t &xl, Double_t &yb)
Place a box in NDC space.
Double_t fUymax
Maximum value on the Y axis.
Short_t Min(Short_t a, Short_t b)
virtual void Update()
Update pad.
void ToLower()
Change string to lower-case.
virtual void SetBBoxY2(const Int_t y)=0
virtual Int_t CreateDrawable(UInt_t w, UInt_t h)=0
TVirtualPad * GetSelectedPad() const
Get selected pad.
virtual void PaintModified()
Traverse pad hierarchy and (re)paint only modified pads.
R__EXTERN TVirtualMutex * gROOTMutex
virtual TH1 * DrawCopy(Option_t *option="", const char *name_postfix="_copy") const
Copy this histogram and Draw in the current pad.
virtual void Draw(Option_t *option="")
Default Draw method for all objects.
virtual void SetX1(Double_t x1)
virtual void SetFillStyle(Style_t fstyle)
Set the fill area style.
Double_t fVtoPixel
ypixel = fVtoPixelk + fVtoPixel*vndc
virtual void SetBBoxCenterX(const Int_t x)
Set X coordinate of the center of the Pad.
TObject * GetClickSelected() const
Double_t GetUxmin() const
The histogram statistics painter class.
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 Double_t GetBinLowEdge(Int_t bin) const
Return bin lower edge for 1D histogram.
virtual void Modify()
Change current line attributes if necessary.
virtual void SetX2(Double_t x2)
Bool_t IsModified() const
void box(Int_t pat, Double_t x1, Double_t y1, Double_t x2, Double_t y2)
Double_t fAbsWNDC
Absolute Width of pad along X in NDC.
virtual Int_t GetEvent() const
Get Event.
void SetPadBottomMargin(Float_t margin=0.1)
Double_t fAbsPixeltoYk
Conversion coefficient for absolute pixel to Y World.
Double_t GetXlowNDC() const
virtual void ShowGuidelines(TObject *object, const Int_t event, const char mode='i', const bool cling=true)
Shows lines to indicate if a TAttBBox2D object is aligned to the center or to another object...
virtual TVirtualPad * cd(Int_t subpadnumber=0)=0
virtual Width_t GetLineWidth() const
Return the line width.
bit set when zooming on Y axis
virtual void RecursiveRemove(TObject *obj)
Recursively remove object from a pad and its sub-pads.
void SetPadBorderSize(Width_t size=1)
virtual void SetTopMargin(Float_t topmargin)
Set Pad top margin in fraction of the pad height.
virtual 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.
Int_t fNextPaletteColor
Next automatic color.
void PaintDate()
Paint the current date and time if the option date is on.
virtual void Cleared(TVirtualPad *pad)
Emit pad Cleared signal.
virtual TVirtualPad * GetVirtCanvas() const
Get virtual canvas.
virtual void Close(Option_t *option="")
Delete all primitives in pad and pad itself.
R__EXTERN Int_t(* gThreadXAR)(const char *xact, Int_t nb, void **ar, Int_t *iret)
Bool_t GetPadGridX() const
virtual void Sleep(UInt_t milliSec)
Sleep milliSec milli seconds.
virtual Bool_t IsBatch() const
Is pad in batch mode ?
virtual const char * GetName() const =0
Returns name of object.
TFrame * GetFrame()
Get frame.
virtual void DrawLineNDC(Double_t u1, Double_t v1, Double_t u2, Double_t v2)=0
Int_t GetPadTickX() const
The TNamed class is the base class for all named ROOT classes.
virtual Float_t GetTextSize() const
Return the text size.
void HighLight(Color_t col=kRed, Bool_t set=kTRUE)
Highlight pad.
virtual void Draw(Option_t *option="")
Draw this arrow with its current attributes.
Int_t fLogx
(=0 if X linear scale, =1 if log scale)
virtual Width_t GetLineWidth() const =0
clip to the frame boundary
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
Int_t GetColorPalette(Int_t i) const
Return color number i in current palette.
virtual TObject * GetSelected() const
Get selected.
virtual void RedrawAxis(Option_t *option="")
Redraw the frame axis Redrawing axis may be necessary in case of superimposed histograms when one or ...
TVirtualPad is an abstract base class for the Pad and Canvas classes.
void SaveSource(const char *filename="", Option_t *option="")
Save primitives in this canvas as a C++ macro file.
virtual void SetBorderSize(Short_t bordersize)
virtual TPad * Pick(Int_t px, Int_t py, TObjLink *&pickobj)
Search for an object at pixel position px,py.
virtual void 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:
Bool_t OpaqueMoving() const
Is pad moving in opaque mode ?
virtual void SetTextAlign(Short_t align=11)
Set the text alignment.
virtual Short_t GetBorderSize() const =0
static Bool_t SupportAlpha()
Static function returning "true" if transparency is supported.
Double_t fX2
X of upper X coordinate.
virtual Option_t * GetDrawOption() const
Get option used by the graphics system to draw this object.
Int_t GetEventX() const
Get X event.
Int_t GetMaxIndex(Int_t dim) const
Return maximum index for array dimension "dim".
virtual void CopyPixmaps()
Copy the sub-pixmaps of the pad to the canvas.
void SetOptLogx(Int_t logx=1)
Double_t GetYlowNDC() const
Double_t fXtoPixel
xpixel = fXtoPixelk + fXtoPixel*xworld
Bool_t * fCollideGrid
! Grid used to find empty space when adding a box (Legend) in a pad
Double_t fPixeltoY
yworld = fPixeltoYk + fPixeltoY*ypixel
void PaintPolyLine(Int_t n, Float_t *x, Float_t *y, Option_t *option="")
Paint polyline in CurrentPad World coordinates.
Int_t GetEvent() const
Get Event.
virtual void AddExec(const char *name, const char *command)
Add a new TExec object to the list of Execs.
virtual void SetLineColor(Color_t lcolor)
Set the line color.
virtual Int_t UtoPixel(Double_t u) const =0
virtual void Delete(Option_t *option="")
Delete this object.
Using a TBrowser one can browse all ROOT objects.
TObject * fPadView3D
! 3D View of this TPad
virtual Double_t GetY2() const =0
static Int_t GetColorBright(Int_t color)
Static function: Returns the bright color number corresponding to n If the TColor object does not exi...
Double_t fVtoPixelk
Conversion coefficient for V NDC to pixel.
Double_t fXtoAbsPixelk
Conversion coefficient for X World to absolute pixel.
virtual TCanvasImp * GetCanvasImp() const
Get canvas implementation pointer if any.
virtual void SetRange(Int_t first=0, Int_t last=0)
Set the viewing range for the axis from bin first to last.
TPad * fMother
! pointer to mother of the list
Double_t XtoPad(Double_t x) const
Convert x from X to pad.
virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py)
Execute action corresponding to one event.
virtual TVirtualPad * GetMother() const
Short_t GetBorderMode() const
virtual void SetDoubleBuffer(Int_t mode=1)
Set double buffer mode ON or OFF.
virtual Int_t GetPoint(Int_t i, Double_t &x, Double_t &y) const
Get x and y values for point number i.
virtual Int_t GetEventX() const
Get X event.
virtual void SetAttLinePS(Color_t color, Style_t style, Width_t lwidth)
Set postscript line attributes.
Int_t IncrementPaletteColor(Int_t i, TString opt)
Increment (i==1) or set (i>1) the number of autocolor in the pad.
virtual TObject * FindObject(const char *name) const
Must be redefined in derived classes.
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
void inv(rsa_NUMBER *, rsa_NUMBER *, rsa_NUMBER *)
virtual void Range(Double_t x1, Double_t y1, Double_t x2, Double_t y2)
Set world coordinate system for the pad.
virtual Int_t XtoAbsPixel(Double_t x) const =0
virtual void SetAttFillPS(Color_t color, Style_t style)
Set postscript fill area attributes.
virtual void DrawLine(Double_t x1, Double_t y1, Double_t x2, Double_t y2)=0
virtual void DeleteExec(const char *name)
Remove TExec name from the list of Execs.
virtual Font_t GetTextFont() const
Return the text font.
Long_t ExecPlugin(int nargs, const T &... params)
virtual TPoint GetBBoxCenter()
Return the center of the Pad as TPoint in pixels.
virtual Bool_t IsEditable() const
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
Int_t GetNumberOfColors() const
Return number of colors in the color palette.
Bool_t fModified
Set to true when pad is modified.
virtual Int_t GetDistancetoAxis(Int_t axis, Int_t px, Int_t py, Double_t &ratio)=0
if object destructor must call RecursiveRemove()
virtual void SetMarkerSize(Size_t msize=1)
Set the marker size.
Int_t fCrosshair
Crosshair type (0 if no crosshair requested)
Each class (see TClass) has a linked list of its base class(es).
virtual Double_t GetY1() const =0
virtual TObjLink * FirstLink() const
TPad()
Pad default constructor.
void LineNotFree(Int_t x1, Int_t x2, Int_t y1, Int_t y2)
Mark as "not free" the cells along a line.
Color_t GetTitleFillColor() const
Double_t fUtoAbsPixelk
Conversion coefficient for U NDC to absolute pixel.
virtual Double_t GetMinimum(Double_t minval=-FLT_MAX) const
Return minimum value larger than minval of bins in the range, unless the value has been overridden by...
Color_t GetHighLightColor() const
Get highlight color.
virtual void DrawFrame(Double_t xl, Double_t yl, Double_t xt, Double_t yt, Int_t mode, Int_t border, Int_t dark, Int_t light)=0
virtual void SelectDrawable(Int_t device)=0
char * StrDup(const char *str)
Duplicate the string str.
#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.
void FillCollideGridTBox(TObject *o)
virtual Double_t GetBinWidth(Int_t bin) const
Return bin width for 1D histogram.
static const double x1[5]
Double_t fVtoAbsPixelk
Conversion coefficient for V NDC to absolute pixel.
A Pave (see TPave) with text, lines or/and boxes inside.
void SetClickSelectedPad(TPad *pad)
Double_t fXtoPixelk
Conversion coefficient for X World to pixel.
virtual Double_t GetBinErrorLow(Int_t bin) const
Return lower error associated to bin number bin.
TH1F * GetHistogram() const
Returns a pointer to the histogram used to draw the axis Takes into account the two following cases...
TLegendEntry * AddEntry(const TObject *obj, const char *label="", Option_t *option="lpf")
Add a new entry to this legend.
Int_t GetGLDevice()
Get GL device.
virtual void ls(Option_t *option="") const
List (ls) all objects in this collection.
virtual Int_t GetEventY() const
Get Y event.
TVirtualPad * GetClickSelectedPad() const
UInt_t GetWindowWidth() const
Wrapper around a TObject so it can be stored in a TList.
Bool_t fGridy
Set to true if grid along Y.
void SetCanvasSize(UInt_t ww, UInt_t wh)
Set Width and Height of canvas to ww and wh respectively.
Print a TSeq at the prompt:
virtual void SetFillStyle(Style_t fstyle)
Override TAttFill::FillStyle for TPad because we want to handle style=0 as style 4000.
Bool_t IsBatch() const
Is pad in batch mode ?
Float_t GetPadTopMargin() const
static void Pad(Int_t event, Int_t px, Int_t py, Int_t)
Create a new pad in gPad.
Double_t fTheta
theta angle to view as lego/surface
virtual void SetTextSize(Float_t tsize=1)=0
Bool_t IsGrayscale()
Check whether this canvas is to be drawn in grayscale mode.
virtual Color_t GetFillColor() const
Return the fill area color.
virtual void GetRange(Double_t &x1, Double_t &y1, Double_t &x2, Double_t &y2)
Return pad world coordinates range.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
virtual void SetBBoxY1(const Int_t y)=0
const char * AsString() const
Return the date & time as a string (ctime() format).
The color creation and management class.
void Browse(TBrowser *b)
Browse this collection (called by TBrowser).
virtual void SetBBoxY1(const Int_t y)
Set top of BoundingBox to a value (resize in y direction on top)
void FillCollideGridTH1(TObject *o)
Int_t fTickx
Set to 1 if tick marks along X.
virtual TPoint GetBBoxCenter()=0
Int_t GetCrosshair() const
Return the crosshair type (from the mother canvas) crosshair type = 0 means no crosshair.
virtual void Clear(Option_t *option="")
Remove all objects from the list.
virtual TObject * WaitPrimitive(const char *pname="", const char *emode="")
Loop and sleep until a primitive with name=pname is found in the pad.
virtual void GetPadPar(Double_t &xlow, Double_t &ylow, Double_t &xup, Double_t &yup)
Return lower and upper bounds of the pad in NDC coordinates.
virtual void SetLineStyle(Style_t lstyle)
Set the line style.
Width_t GetPadBorderSize() const
void SetPadTopMargin(Float_t margin=0.1)
TVirtualViewer3D * fViewer3D
! Current 3D viewer
Color_t GetFrameLineColor() const
virtual void SetBBoxX2(const Int_t x)
Set right hand side of BoundingBox to a value (resize in x direction on right)
virtual void Draw(Option_t *option="")
Draw this box with its current attributes.
Int_t GetEventY() const
Get Y event.
virtual void SetRightMargin(Float_t rightmargin)
Set Pad right margin in fraction of the pad width.
virtual Style_t GetLineStyle() const =0
Double_t fXlowNDC
X bottom left corner of pad in NDC [0,1].
Double_t GetAbsHNDC() const
Float_t fRightMargin
RightMargin.
Mother of all ROOT objects.
virtual Int_t FindFixBin(Double_t x) const
Find bin number corresponding to abscissa x.
Bool_t fFixedAspectRatio
True if fixed aspect ratio.
void Clear(Option_t *option="")
Delete all pad primitives.
virtual Bool_t OpaqueMoving() const
Is pad moving in opaque mode ?
virtual Int_t ClipPolygon(Int_t n, Double_t *x, Double_t *y, Int_t nn, Double_t *xc, Double_t *yc, Double_t xclipl, Double_t yclipb, Double_t xclipr, Double_t yclipt)
Clip polygon using the Sutherland-Hodgman algorithm.
TObject * GetObject() const
static Int_t IncreaseDirLevel()
Increase the indentation level for ls().
virtual void SetDoubleBuffer(Int_t mode=1)
Set Double Buffer On/Off.
Double_t GetUymax() const
virtual void DrawPolyMarker(Int_t n, const Double_t *x, const Double_t *y)=0
virtual void Browse(TBrowser *b)
Browse pad.
virtual void RecordPave(const TObject *obj)
Emit RecordPave() signal.
virtual TLegend * BuildLegend(Double_t x1=0.3, Double_t y1=0.21, Double_t x2=0.3, Double_t y2=0.21, const char *title="", Option_t *option="")
Build a legend from the graphical objects in the pad.
const char * GetName() const
Returns name of object.
Int_t XtoAbsPixel(Double_t x) const
Float_t GetTopMargin() const
Abstract base class for elements drawn in the editor.
virtual void Divide(Int_t nx=1, Int_t ny=1, Float_t xmargin=0.01, Float_t ymargin=0.01, Int_t color=0)
Automatic pad generation by division.
virtual Int_t VtoPixel(Double_t v) const =0
Double_t GetTheta() const
virtual void Add(TObject *obj)
virtual void PadPaint(TVirtualPad *)
virtual void AutoExec()
Execute the list of Execs when a pad event occurs.
void SetTitleFillColor(Color_t color=1)
virtual void RecursiveRemove(TObject *obj)
Remove object from this collection and recursively remove the object from all other objects (and coll...
virtual void SetBBoxX2(const Int_t x)=0
virtual Int_t GetMinimumBin() const
Return location of bin with minimum value in the range.
virtual void ReleaseViewer3D(Option_t *type="")
Release current (external) viewer.
virtual void SetBBoxCenterX(const Int_t x)=0
virtual UInt_t GetWw() const
Get Ww.
virtual Double_t GetX2() const =0
Short_t Max(Short_t a, Short_t b)
virtual Int_t VtoAbsPixel(Double_t v) const =0
void SetSelected(TObject *obj)
Set selected canvas.
Double_t fYtoPixelk
Conversion coefficient for Y World to pixel.
Width_t GetFrameBorderSize() const
void PaintPolyLine3D(Int_t n, Double_t *p)
Paint 3-D polyline in the CurrentPad.
virtual void Paint(Option_t *option="")
Paint this wbox with its current attributes.
Each ROOT class (see TClass) has a linked list of methods.
virtual void GetRange(Float_t *min, Float_t *max)=0
static void SetGrayscale(Bool_t set=kTRUE)
Set whether all colors should return grayscale values.
virtual Short_t GetBorderMode() const
A Graph is a graphics object made of two arrays X and Y with npoints each.
Int_t NextPaletteColor()
Get the next autocolor in the pad.
you should not use this method at all Int_t Int_t Double_t Double_t Double_t Int_t Double_t Double_t Double_t Double_t b
void SetOptLogy(Int_t logy=1)
Double_t Ceil(Double_t x)
Style_t GetFrameLineStyle() const
virtual void DrawPS(Int_t n, Float_t *xw, Float_t *yw)=0
Double_t fHNDC
Height of pad along Y in NDC.
R__EXTERN TVirtualPS * gVirtualPS
virtual void InvalidateCS()
Empty definition.
virtual TText * DrawText(Double_t x, Double_t y, const char *text)
Draw this text with new coordinates.
Double_t AbsPixeltoX(Int_t px)
virtual void SetTextColor(Color_t tcolor=1)
Set the text color.
virtual TObject * CreateToolTip(const TBox *b, const char *text, Long_t delayms)
Create a tool tip and return its pointer.
virtual void EndScene()=0
Double_t PadtoY(Double_t y) const
Convert y from pad to Y.
virtual Double_t GetBinErrorUp(Int_t bin) const
Return upper error associated to bin number bin.
virtual void Pop()
Pop pad to the top of the stack.
virtual TObjLink * LastLink() const
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 Bool_t OpaqueResizing() const
Is pad resizing in opaque mode ?
void SetPadTickY(Int_t ticky)
Color_t GetFrameFillColor() const
Width_t GetFrameLineWidth() const
void SetBatch(Bool_t batch=kTRUE)
Toggle batch mode.
void Emit(const char *signal, const T &arg)
Activate signal with single parameter.
Double_t fUtoPixelk
Conversion coefficient for U NDC to pixel.
virtual void RangeAxis(Double_t xmin, Double_t ymin, Double_t xmax, Double_t ymax)
Set axis coordinate system for the pad.
static void Line(Int_t event, Int_t px, Int_t py, Int_t mode)
Create a new line/arrow in this gPad.
TVirtualPS is an abstract interface to Postscript, PDF, SVG.
virtual void SetNumber(Int_t number)
Double_t fPixeltoYk
Conversion coefficient for pixel to Y World.
virtual Bool_t ExpandPathName(TString &path)
Expand a pathname getting rid of special shell characters like ~.
TExec is a utility class that can be used to execute a C++ command when some event happens in a pad...
virtual void HandleInput(EEventType button, Int_t x, Int_t y)
Handle Input Events.
virtual Int_t GetNbinsX() const
Double_t Sqrt(Double_t x)
virtual Style_t GetFillStyle() const
Return the fill area style.
virtual void SetTextSize(Float_t tsize=1)
Set the text size.
virtual void SaveAs(const char *filename="", Option_t *option="") const
Save Pad contents in a file in one of various formats.
virtual void Update()
Update canvas pad buffers.
Double_t PadtoX(Double_t x) const
Convert x from pad to X.
Draw all kinds of Arrows.
Double_t fY1
Y of lower Y coordinate.
Int_t fGLDevice
! OpenGL off-screen pixmap identifier
virtual Bool_t IsTransparent() const
virtual const char * GetName() const
Returns name of object.
RooCmdArg FillStyle(Style_t style)
virtual Int_t GetSize() const
void SetPadRightMargin(Float_t margin=0.1)
static void SetMaxPickDistance(Int_t maxPick=5)
static function to set the maximum Pick Distance fgMaxPickDistance This parameter is used in TPad::Pi...
virtual void ClearDrawable()=0
void PaintFillAreaHatches(Int_t n, Double_t *x, Double_t *y, Int_t FillStyle)
This function paints hatched fill area according to the FillStyle value The convention for the Hatch ...
virtual void SetLogz(Int_t value=1)
Set Lin/Log scale for Z.
Double_t fX1
X of lower X coordinate.
static void Pave(Int_t event, Int_t px, Int_t py, Int_t mode)
Create a new pavetext in gPad.
void SetPadGridY(Bool_t gridy)
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
TList * GetListOfFunctions() const
TObject * fTip
! tool tip associated with box
TList * GetListOfMethods(Bool_t load=kTRUE)
Return list containing the TMethods of a class.
virtual void SetFillStyle(Style_t fstyle)=0
virtual void SetY1(Double_t y1)
virtual void x3d(Option_t *type="")
Deprecated: use TPad::GetViewer3D() instead.
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
void FillCollideGrid(TObject *o)
Initialise the grid used to find empty space when adding a box (Legend) in a pad. ...
virtual void SetBorderSize(Int_t bordersize=4)
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
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.