150 fMother = (TPad*)
gPad;
179 fFixedAspectRatio =
kFALSE;
182 fNumPaletteColor = 0;
183 fNextPaletteColor = 0;
198 fUxmin = fUymin = fUxmax = fUymax = 0;
247 :
TVirtualPad(name,title,xlow,ylow,xup,yup,color,bordersize,bordermode)
321 Error(
"TPad",
"You must create a TCanvas before creating a TPad");
328 if ((xlow < 0) || (xlow > 1) || (ylow < 0) || (ylow > 1)) {
329 Error(
"TPad",
"illegal bottom left position: x=%f, y=%f", xlow, ylow);
332 if ((xup < 0) || (xup > 1) || (yup < 0) || (yup > 1)) {
333 Error(
"TPad",
"illegal top right position: x=%f, y=%f", xup, yup);
344 SetPad(name, title, xlow, ylow, xup, yup, color, bordersize, bordermode);
432 while ((exec = (
TExec*)next())) {
464 const char* title,
Option_t *option)
473 while( (o=next()) ) {
477 if (!leg) leg =
new TLegend(x1, y1, x2, y2, title);
484 if (strlen(option)) {
493 if (!leg) leg =
new TLegend(x1, y1, x2, y2, title);
495 TIter nextgraph(grlist);
498 while ((obj = nextgraph())) {
503 if (strlen(option)) opt = option;
508 if (!leg) leg =
new TLegend(x1, y1, x2, y2, title);
510 TIter nexthist(hlist);
513 while ((obj = nexthist())) {
518 if (strlen(option)) opt = option;
531 Info(
"BuildLegend(void)",
"No object to build a TLegend.");
574 while ((obj = next())) {
577 if (n == subpadnumber) {
578 return ((
TPad*)obj)->cd();
647 for (
Int_t i=0;i<2;i++) {
660 while(code1 + code2) {
671 if (ic == 0) ic = code2;
673 yt = y[0] + (y[1]-y[0])*(xclipl-x[0])/(x[1]-x[0]);
677 yt = y[0] + (y[1]-y[0])*(xclipr-x[0])/(x[1]-x[0]);
681 xt = x[0] + (x[1]-x[0])*(yclipb-y[0])/(y[1]-y[0]);
685 xt = x[0] + (x[1]-x[0])*(yclipt-y[0])/(y[1]-y[0]);
691 code1 =
ClippingCode(xt,yt,xclipl,yclipb,xclipr,yclipt);
695 code2 =
ClippingCode(xt,yt,xclipl,yclipb,xclipr,yclipt);
718 for (
Int_t i=0;i<2;i++) {
727 if (x[0] < xclipl) code1 = code1 | 0x1;
728 if (x[0] > xclipr) code1 = code1 | 0x2;
729 if (y[0] < yclipb) code1 = code1 | 0x4;
730 if (y[0] > yclipt) code1 = code1 | 0x8;
732 if (x[1] < xclipl) code2 = code2 | 0x1;
733 if (x[1] > xclipr) code2 = code2 | 0x2;
734 if (y[1] < yclipb) code2 = code2 | 0x4;
735 if (y[1] > yclipt) code2 = code2 | 0x8;
739 while(code1 + code2) {
750 if (ic == 0) ic = code2;
752 yt = y[0] + (y[1]-y[0])*(xclipl-x[0])/(x[1]-x[0]);
756 yt = y[0] + (y[1]-y[0])*(xclipr-x[0])/(x[1]-x[0]);
760 xt = x[0] + (x[1]-x[0])*(yclipb-y[0])/(y[1]-y[0]);
764 xt = x[0] + (x[1]-x[0])*(yclipt-y[0])/(y[1]-y[0]);
770 code1 =
ClippingCode(xt,yt,xclipl,yclipb,xclipr,yclipt);
774 code2 =
ClippingCode(xt,yt,xclipl,yclipb,xclipr,yclipt);
787 if (x < xcl1) code = code | 0x1;
788 if (x > xcl2) code = code | 0x2;
789 if (y < ycl1) code = code | 0x4;
790 if (y > ycl2) code = code | 0x8;
842 x1 = x[n-1]; y1 = y[n-1];
845 for (i=0; i<
n; i++) {
846 x2 = x[i]; y2 = y[i];
850 slope = (y2-y1)/(x2-x1);
854 xc2[nc2] = xclipl; yc2[nc2++] = slope*(xclipl-
x1)+y1;
856 xc2[nc2] =
x2; yc2[nc2++] = y2;
860 xc2[nc2] = xclipl; yc2[nc2++] = slope*(xclipl-
x1)+y1;
861 xc2[nc2] =
x2; yc2[nc2++] = y2;
868 x1 = xc2[nc2-1]; y1 = yc2[nc2-1];
870 for (i=0; i<nc2; i++) {
871 x2 = xc2[i]; y2 = yc2[i];
875 slope = (x2-
x1)/(y2-y1);
879 xc[nc] = x1+(yclipt-y1)*slope; yc[nc++] = yclipt;
881 xc[nc] =
x2; yc[nc++] = y2;
885 xc[nc] = x1+(yclipt-y1)*slope; yc[nc++] = yclipt;
886 xc[nc] =
x2; yc[nc++] = y2;
893 x1 = xc[nc-1]; y1 = yc[nc-1];
895 for (i=0; i<nc; i++) {
896 x2 = xc[i]; y2 = yc[i];
900 slope = (y2-y1)/(x2-x1);
904 xc2[nc2] = xclipr; yc2[nc2++] = slope*(xclipr-
x1)+y1;
906 xc2[nc2] =
x2; yc2[nc2++] = y2;
910 xc2[nc2] = xclipr; yc2[nc2++] = slope*(xclipr-
x1)+y1;
911 xc2[nc2] =
x2; yc2[nc2++] = y2;
918 x1 = xc2[nc2-1]; y1 = yc2[nc2-1];
920 for (i=0; i<nc2; i++) {
921 x2 = xc2[i]; y2 = yc2[i];
925 slope = (x2-
x1)/(y2-y1);
929 xc[nc] = x1+(yclipb-y1)*slope; yc[nc++] = yclipb;
931 xc[nc] =
x2; yc[nc++] = y2;
935 xc[nc] = x1+(yclipb-y1)*slope; yc[nc++] = yclipb;
936 xc[nc] =
x2; yc[nc++] = y2;
976 if (!
gPad->IsBatch()) {
983 if (!
gROOT->GetListOfCanvases())
return;
985 gROOT->GetListOfCanvases()->Remove(
this);
1006 if (
gROOT->GetSelectedPad() ==
this)
gROOT->SetSelectedPad(0);
1031 while ((obj = next())) {
1033 ((
TPad*)obj)->CopyPixmap();
1034 ((
TPad*)obj)->CopyPixmaps();
1060 Int_t pxl, pyl, pxt, pyt;
1065 if (px1 < px2) {pxl = px1; pxt = px2;}
1066 else {pxl = px2; pxt = px1;}
1067 if (py1 < py2) {pyl = py1; pyt = py2;}
1068 else {pyl = py2; pyt = py1;}
1072 if ( (px > pxl && px < pxt) && (py > pyl && py < pyt) ) {
1079 if (py < pyl) dxl += pyl - py;
1080 if (py > pyt) dxl += py - pyt;
1082 if (py < pyl) dxt += pyl - py;
1083 if (py > pyt) dxt += py - pyt;
1085 if (px < pxl) dyl += pxl - px;
1086 if (px > pxt) dyl += px - pxt;
1088 if (px < pxl) dyt += pxl - px;
1089 if (px > pxt) dyt += px - pxt;
1091 Int_t distance = dxl;
1092 if (dxt < distance) distance = dxt;
1093 if (dyl < distance) distance = dyl;
1094 if (dyt < distance) distance = dyt;
1140 arr[1] =
this; arr[2] = (
void*)&nx;arr[3] = (
void*)& ny;
1141 arr[4] = (
void*)&xmargin; arr[5] = (
void *)& ymargin; arr[6] = (
void *)&color;
1142 if ((*
gThreadXAR)(
"PDCD", 7, arr, 0))
return;
1147 if (nx <= 0) nx = 1;
1148 if (ny <= 0) ny = 1;
1155 char *
name =
new char [nchname];
1156 char *title =
new char [nchtitle];
1159 if (xmargin > 0 && ymargin > 0) {
1163 for (iy=0;iy<
ny;iy++) {
1164 y2 = 1 - iy*dy - ymargin;
1165 y1 = y2 - dy + 2*ymargin;
1167 if (y1 > y2)
continue;
1168 for (ix=0;ix<
nx;ix++) {
1169 x1 = ix*dx + xmargin;
1170 x2 = x1 +dx -2*xmargin;
1171 if (x1 > x2)
continue;
1174 pad =
new TPad(name,name,x1,y1,x2,y2,color);
1200 if (i == nx-1) x2 = 1-xr;
1202 number = j*nx + i +1;
1205 if (j == 0) y2 = 1-yt;
1206 if (j == ny-1) y1 = 0;
1209 pad =
new TPad(name,title,x1,y1,x2,y2);
1225 if (padsav) padsav->
cd();
1246 Divide( w,
h, xmargin, ymargin, color);
1256 gROOT->MakeDefCanvas();
1294 Int_t nd,nf,nc,nkd,nkf,i,j;
1307 Range(0,0,xpad,ypad);
1312 clevel[nlevel] = obj;
1321 if (nlevel >= maxlev-1)
break;
1325 Int_t ilevel, nelem;
1326 for (ilevel=nlevel;ilevel>=0;ilevel--) {
1327 cl = clevel[ilevel];
1329 if (nelem > maxelem) maxelem = nelem;
1330 nc = (nelem/50) + 1;
1340 if (dx < 1.3) dx = 1.3;
1341 tsizcm = tsizcm - 0.03*
Double_t(ncdraw-5);
1342 if (tsizcm < 0.27) tsizcm = 0.27;
1347 for (ilevel=nlevel;ilevel>=0;ilevel--) {
1348 cl = clevel[ilevel];
1350 if (nelem > maxelem) maxelem = nelem;
1351 nc = (nelem/50) + 1;
1353 if (ilevel < nlevel) x1 = x2 + 0.5;
1371 v1 = y1 -
Double_t(nkf+nkd+nc-1)*dy;
1383 TBox *
box = pt->
AddBox(0,(y1+0.01-v1)/dv,0,(v2-0.01-v1)/dv);
1385 pt->
AddLine(0,(y1-v1)/dv,0,(y1-v1)/dv);
1397 if (i >= nkd) { i = 1; y = y1 - 0.5*dy; x += 1/
Double_t(nc); }
1398 else { i++; y -= dy; }
1406 while (indx < dim ){
1407 ldname = strlen(dname);
1411 pt->
AddText(x,(y-v1)/dv,dname);
1418 pt->
AddLine(0,(ysep-v1)/dv,0,(ysep-v1)/dv);
1429 while ((m = (
TMethod *) nextm())) {
1431 !strcmp( m->
GetName(),
"Dictionary" ) ||
1432 !strcmp( m->
GetName(),
"Class_Version" ) ||
1433 !strcmp( m->
GetName(),
"DeclFileName" ) ||
1434 !strcmp( m->
GetName(),
"DeclFileLine" ) ||
1435 !strcmp( m->
GetName(),
"ImplFileName" ) ||
1436 !strcmp( m->
GetName(),
"ImplFileLine" )
1439 if (fcount > nf)
break;
1440 if (i >= nkf) { i = 1; y = ysep - 0.5*dy; x += 1/
Double_t(nc); }
1441 else { i++; y -= dy; }
1446 for (j=ilevel-1;j>=0;j--) {
1447 if (cl == clevel[ilevel]) {
1448 if (clevel[j]->GetMethodAny((
char*)m->
GetName())) {
1495 Int_t pxmin,pxmax,pymin,pymax,pxold,pyold,px,py;
1507 pxmax = canvas->
GetWw();
1509 pymax = cpad->
GetWh();
1511 if(pxold)
gVirtualX->DrawLine(pxold,pymin,pxold,pymax);
1512 if(pyold)
gVirtualX->DrawLine(pxmin,pyold,pxmax,pyold);
1539 if (
this != padsav) {
1540 Warning(
"DrawFrame",
"Must be called for the current pad only");
1541 return padsav->
DrawFrame(xmin,ymin,xmax,ymax,title);
1547 if (hframe)
delete hframe;
1551 if (
fLogx && xmin > 0 && xmax > xmin) {
1560 hframe =
new TH1F(
"hframe",title,nbins,xbins);
1563 hframe =
new TH1F(
"hframe",title,nbins,xmin,xmax);
1573 if (padsav) padsav->
cd();
1584 Double_t xlow, ylow, xup, yup, hs, ws;
1589 gPad->SetFillColor(0);
1591 gPad->Range(x1,y1,x2,y2);
1603 for (i=0;i<10;i++) {
1612 box->
DrawBox(xlow, ylow, xup, yup);
1615 box->
DrawBox(xlow, ylow, xup, yup);
1618 text->
DrawText(0.5*(xlow+xup), 0.5*(ylow+yup),
Form(
"%d",color));
1645 const Int_t kMaxDiff = 5;
1646 const Int_t kMinSize = 20;
1647 static Int_t pxorg, pyorg;
1648 static Int_t px1, px2, py1, py2, pxl, pyl, pxt, pyt, pxold, pyold;
1649 static Int_t px1p, px2p, py1p, py2p, pxlp, pylp, pxtp, pytp;
1650 static Bool_t pA, pB, pC, pD, pTop, pL, pR, pBot, pINSIDE;
1673 pA = pB = pC = pD = pTop = pL = pR = pBot = pINSIDE =
kFALSE;
1717 if (newcode)
return;
1784 pA = pB = pC = pD = pTop = pL = pR = pBot = pINSIDE =
kFALSE;
1788 pxold = pxl; pyold = pyl; pA =
kTRUE;
1793 pxold = pxt; pyold = pyl; pB =
kTRUE;
1798 pxold = pxt; pyold = pyt; pC =
kTRUE;
1803 pxold = pxl; pyold = pyt; pD =
kTRUE;
1807 if ((px > pxl+kMaxDiff && px < pxt-kMaxDiff) &&
1809 pxold = pxl; pyold = pyl; pTop =
kTRUE;
1813 if ((px > pxl+kMaxDiff && px < pxt-kMaxDiff) &&
1815 pxold = pxt; pyold = pyt; pBot =
kTRUE;
1819 if ((py > pyl+kMaxDiff && py < pyt-kMaxDiff) &&
1821 pxold = pxl; pyold = pyl; pL =
kTRUE;
1825 if ((py > pyl+kMaxDiff && py < pyt-kMaxDiff) &&
1827 pxold = pxt; pyold = pyt; pR =
kTRUE;
1831 if ((px > pxl+kMaxDiff && px < pxt-kMaxDiff) &&
1832 (py > pyl+kMaxDiff && py < pyt-kMaxDiff)) {
1833 pxold = px; pyold = py; pINSIDE =
kTRUE;
1841 if (pA || pB || pC || pD || pTop || pL || pR || pBot)
1844 if (!pA && !pB && !pC && !pD && !pTop && !pL && !pR && !pBot && !pINSIDE)
1857 if (px > pxt-kMinSize) { px = pxt-kMinSize; wx = px; }
1858 if (py > pyt-kMinSize) { py = pyt-kMinSize; wy = py; }
1859 if (px < pxlp) { px = pxlp; wx = px; }
1860 if (py < pylp) { py = pylp; wy = py; }
1878 if (px < pxl+kMinSize) { px = pxl+kMinSize; wx = px; }
1879 if (py > pyt-kMinSize) { py = pyt-kMinSize; wy = py; }
1880 if (px > pxtp) { px = pxtp; wx = px; }
1881 if (py < pylp) { py = pylp; wy = py; }
1899 if (px < pxl+kMinSize) { px = pxl+kMinSize; wx = px; }
1900 if (py < pyl+kMinSize) { py = pyl+kMinSize; wy = py; }
1901 if (px > pxtp) { px = pxtp; wx = px; }
1902 if (py > pytp) { py = pytp; wy = py; }
1920 if (px > pxt-kMinSize) { px = pxt-kMinSize; wx = px; }
1921 if (py < pyl+kMinSize) { py = pyl+kMinSize; wy = py; }
1922 if (px < pxlp) { px = pxlp; wx = px; }
1923 if (py > pytp) { py = pytp; wy = py; }
1942 if (py2 > py1-kMinSize) { py2 = py1-kMinSize; wy = py2; }
1943 if (py2 < py2p) { py2 = py2p; wy = py2; }
1958 if (py1 < py2+kMinSize) { py1 = py2+kMinSize; wy = py1; }
1959 if (py1 > py1p) { py1 = py1p; wy = py1; }
1974 if (px1 > px2-kMinSize) { px1 = px2-kMinSize; wx = px1; }
1975 if (px1 < px1p) { px1 = px1p; wx = px1; }
1991 if (px2 < px1+kMinSize) { px2 = px1+kMinSize; wx = px2; }
1992 if (px2 > px2p) { px2 = px2p; wx = px2; }
2007 Int_t dx = px - pxold;
2008 Int_t dy = py - pyold;
2009 px1 += dx; py1 += dy; px2 += dx; py2 += dy;
2010 if (px1 < px1p) { dx = px1p - px1; px1 += dx; px2 += dx; wx = px+dx; }
2011 if (px2 > px2p) { dx = px2 - px2p; px1 -= dx; px2 -= dx; wx = px-dx; }
2012 if (py1 > py1p) { dy = py1 - py1p; py1 -= dy; py2 -= dy; wy = py-dy; }
2013 if (py2 < py2p) { dy = py2p - py2; py1 += dy; py2 += dy; wy = py+dy; }
2027 x1 = x2 = y1 = y2 = 0;
2054 if (pTop || pBot || pL || pR || pINSIDE) {
2061 if (px != pxorg || py != pyorg) {
2085 if (pINSIDE)
gPad->ShowGuidelines(
this, event);
2086 if (pTop)
gPad->ShowGuidelines(
this, event,
't',
true);
2087 if (pBot)
gPad->ShowGuidelines(
this, event,
'b',
true);
2088 if (pL)
gPad->ShowGuidelines(
this, event,
'l',
true);
2089 if (pR)
gPad->ShowGuidelines(
this, event,
'r',
true);
2090 if (pA)
gPad->ShowGuidelines(
this, event,
'1',
true);
2091 if (pB)
gPad->ShowGuidelines(
this, event,
'2',
true);
2092 if (pC)
gPad->ShowGuidelines(
this, event,
'3',
true);
2093 if (pD)
gPad->ShowGuidelines(
this, event,
'4',
true);
2102 if (
gROOT->IsEscaped()) {
2107 if (opaque||ropaque) {
2110 x1 = x2 = y1 = y2 = 0;
2136 if (pTop || pBot || pL || pR || pINSIDE) {
2143 if (pA || pB || pC || pD || pTop || pL || pR || pBot)
2149 if (px != pxorg || py != pyorg) {
2186 event =
gVirtualX->RequestLocator(1, 1, px, py);
2225 static Int_t axisNumber;
2227 static Int_t px1old, py1old, px2old, py2old;
2228 Int_t bin1, bin2, first, last;
2231 static TBox *zoombox;
2232 Double_t zbx1=0,zbx2=0,zby1=0,zby2=0;
2239 if (strstr(opt,
"cont4")) {
2248 if (!strcmp(axis->
GetName(),
"xaxis")) {
2252 if (!strcmp(axis->
GetName(),
"yaxis")) {
2256 if (!strcmp(axis->
GetName(),
"zaxis")) {
2262 if (axisNumber == 1) {
2268 }
else if (axisNumber == 2) {
2284 if (axisNumber == 1) {
2289 }
else if (axisNumber == 2) {
2303 zoombox =
new TBox(zbx1, zby1, zbx2, zby2);
2314 if (!opaque)
gVirtualX->SetLineColor(-1);
2322 if (axisNumber == 1) {
2332 if (axisNumber == 1) {
2337 }
else if (axisNumber == 2) {
2351 zoombox->
SetX1(zbx1);
2352 zoombox->
SetY1(zby1);
2353 zoombox->
SetX2(zbx2);
2354 zoombox->
SetY2(zby2);
2386 if (
gROOT->IsEscaped()) {
2388 if (opaque && zoombox) {
2397 if (ratio1 > ratio2) {
2402 if (ratio2 - ratio1 > 0.05) {
2404 if (axisNumber == 3 && hobj && hobj->
GetDimension() != 3) {
2413 Float_t newmin = zmin + (zmax-zmin)*ratio1;
2414 Float_t newmax = zmin + (zmax-zmin)*ratio2;
2427 bin1 = first +
Int_t((last-first+1)*ratio1);
2428 bin2 = first +
Int_t((last-first+1)*ratio2);
2438 if (axisNumber == 1) {
2446 }
else if (axisNumber == 2) {
2474 xmin = ((xmin-xmi)/(xma-xmi))*(up-low)+low;
2475 xmax = ((xmax-xmi)/(xma-xmi))*(up-low)+low;
2478 if (!strcmp(axis->
GetName(),
"xaxis")) axisNumber = 1;
2479 if (!strcmp(axis->
GetName(),
"yaxis")) axisNumber = 2;
2480 if (ratio2 - ratio1 > 0.05) {
2487 if (axisNumber == 1) axis->
SetRange(bin1,bin2);
2488 if (axisNumber == 2 && hobj1) {
2505 while ((obj= next())) {
2508 if (hobj == hobj1)
continue;
2511 if (axisNumber == 1) {
2513 }
else if (axisNumber == 2) {
2556 if (found)
return found;
2559 while ((cur = next())) {
2562 if (found)
return found;
2577 if (found)
return found;
2580 while ((cur = next())) {
2583 if (found)
return found;
2658 if (
fCanvas ==
this)
return 0;
2667 if (
fCanvas ==
this)
return 0;
2676 if (
fCanvas ==
this)
return 0;
2819 while ((obj=next())) {
2820 if (!strcmp(name, obj->
GetName()))
return obj;
2823 if (found)
return found;
2833 if (!subpadnumber) {
2840 while ((obj = next())) {
2843 if (pad->
GetNumber() == subpadnumber)
return pad;
2890 if (color <= 0)
return;
2908 gROOT->SetSelectedPad(
this);
2925 <<
" Name= "<<
GetName()<<
" Title= "<<
GetTitle()<<
" Option="<<option<<std::endl;
2937 if (opt.
Index(
"pfc")>=0 || opt.
Index(
"plc")>=0 || opt.
Index(
"pmc")>=0) {
2955 if (i>=ncolors) i = ncolors-1;
2967 Int_t const cellSize = 10;
2986 for (
int i = 0; i<
fCGnx; i++) {
2987 for (
int j = 0; j<
fCGny; j++) {
2998 for (
int i=0; i<np; i++) {
3015 for (
int r=i;
r<w+i;
r++) {
3016 for (
int c=j; c<h+j; c++) {
3036 for (
Int_t i = 0; i<nxmax; i++) {
3037 for (
Int_t j = 0; j<=nymax; j++) {
3050 #define NotFree(i, j) fCollideGrid[TMath::Max(TMath::Min(i+j*fCGnx,fCGnx*fCGny),0)] = kFALSE;
3069 for (i=y1+1; i<y2; i++)
NotFree(x1,i);
3076 xt =
x1; x1 =
x2; x2 = xt;
3077 yt = y1; y1 = y2; y2 = yt;
3079 for (i=x1+1; i<
x2; i++) {
3086 yt = y1; y1 = y2; y2 = yt;
3087 xt =
x1; x1 =
x2; x2 = xt;
3089 for (j=y1+1; j<y2; j++) {
3109 for (
int i = x1; i<=
x2; i++) {
3110 for (
int j = y1; j<=y2; j++)
NotFree(i, j);
3128 for (i = x1; i<=
x2; i++) {
3133 for (i = y1; i<=y2; i++) {
3151 for (
Int_t i=1; i<
n; i++) {
3167 (
int)((y1-
fY1)/ys), (
int)((y2-
fY1)/ys));
3177 if (name.
Index(
"hframe") >= 0)
return;
3182 bool haserrors =
false;
3187 if (drawOption.
Index(
"hist") < 0) {
3188 if (drawOption.
Index(
"e") >= 0) haserrors =
true;
3196 for (i = 1; i<
nx; i++) {
3216 for (j=y1; j<=y2; j++) {
3238 x1 = (int)((x1l-
fX1)/xs);
3254 box->SetFillColorAlpha(
kRed,0.5);
3265 for (
int i = 0; i<
fCGnx; i++) {
3268 for (
int j = 0; j<
fCGny; j++) {
3269 if (
gPad->GetLogx()) {
3276 if (
gPad->GetLogy()) {
3285 box->DrawBox(X1L, Y1L, X2L, Y2L);
3287 box->SetFillColorAlpha(
kRed,t);
3288 box->DrawBox(X1L, Y1L, X2L, Y2L);
3292 if (t==0.15) t = 0.1;
3386 began3DScene =
kTRUE;
3393 if (padsav) padsav->cd();
3422 if (color < 0) color = -color;
3429 if (bordersize <= 0) bordersize = 2;
3450 if (px1 < px2) {xl =
fX1; xt =
fX2; }
3451 else {xl =
fX2; xt =
fX1;}
3452 if (py1 > py2) {yl =
fY1; yt =
fY2;}
3453 else {yl =
fY2; yt =
fY1;}
3455 Double_t frameXs[7] = {}, frameYs[7] = {};
3459 frameXs[0] = xl; frameYs[0] = yl;
3460 frameXs[1] = xl + realBsX; frameYs[1] = yl + realBsY;
3461 frameXs[2] = frameXs[1]; frameYs[2] = yt - realBsY;
3462 frameXs[3] = xt - realBsX; frameYs[3] = frameYs[2];
3463 frameXs[4] = xt; frameYs[4] = yt;
3464 frameXs[5] = xl; frameYs[5] = yt;
3465 frameXs[6] = xl; frameYs[6] = yl;
3472 frameXs[0] = xl; frameYs[0] = yl;
3473 frameXs[1] = xl + realBsX; frameYs[1] = yl + realBsY;
3474 frameXs[2] = xt - realBsX; frameYs[2] = frameYs[1];
3475 frameXs[3] = frameXs[2]; frameYs[3] = yt - realBsY;
3476 frameXs[4] = xt; frameYs[4] = yt;
3477 frameXs[5] = xt; frameYs[5] = yl;
3478 frameXs[6] = xl; frameYs[6] = yl;
3611 ((
TPad*)obj)->PaintModified();
3623 began3DScene =
kTRUE;
3631 if (padsav) padsav->cd();
3652 if (!
gPad->IsBatch()) {
3655 if (option[0] ==
's') {
3660 if (style > 3000 && style < 4000) {
3666 if (style >= 3100 && style < 4000) {
3668 xb[0] =
x1; xb[1] =
x1; xb[2] =
x2; xb[3] =
x2;
3669 yb[0] = y1; yb[1] = y2; yb[2] = y2; yb[3] = y1;
3679 }
else if (style >= 4000 && style <= 4100) {
3704 }
else if (style >= 1000 && style <= 1999) {
3718 if (option[0] ==
's') {
3721 if (style0 >= 3100 && style0 < 4000) {
3723 xb[0] =
x1; xb[1] =
x1; xb[2] =
x2; xb[3] =
x2;
3724 yb[0] = y1; yb[1] = y2; yb[2] = y2; yb[3] = y1;
3730 if (option[0] ==
'l') {
3749 while ((obj = next())) {
3751 if (obj == stop)
break;
3752 ((
TPad*)obj)->CopyBackgroundPixmap(x, y);
3753 ((
TPad*)obj)->CopyBackgroundPixmaps((
TPad*)obj, stop, x, y);
3772 Warning(
"TPad::PaintFillArea",
"Float_t signature is obsolete. Use Double_t signature.");
3795 n =
ClipPolygon(nn, xx, yy, nc, x, y,xmin,ymin,xmax,ymax);
3805 if (fillstyle >= 3100 && fillstyle < 4000) {
3812 if (!
gPad->IsBatch())
3859 static Double_t ang1[10] = {0., 10., 20., 30., 45.,5., 60., 70., 80., 90.};
3860 static Double_t ang2[10] = {180.,170.,160.,150.,135.,5.,120.,110.,100., 90.};
3862 Int_t fasi = FillStyle%1000;
3865 Int_t iAng1 = fasi%10;
3873 if (!
gPad->IsBatch()) {
3886 if (!
gPad->IsBatch()) {
3898 if (ang1[iAng1] != 5.)
PaintHatches(dy, ang1[iAng1], nn, xx, yy);
3899 if (ang2[iAng2] != 5.)
PaintHatches(dy, ang2[iAng2], nn, xx, yy);
3902 if (!
gPad->IsBatch()) {
3926 const Int_t maxnbi = 100;
3927 Double_t xli[maxnbi], xlh[2], ylh[2], xt1, xt2, yt1, yt2;
3928 Double_t ll,
x,
y,
x1,
x2, y1, y2,
a,
b, xi, xip, xin, yi, yip;
3934 ratiox = 1/(rwxmax-rwxmin);
3935 ratioy = 1/(rwymax-rwymin);
3948 gPad->GetPadPar(x1p,y1p,x2p,y2p);
3957 for (i=1; i<=
nn; i++) {
3958 x = wndc*ratiox*(xx[i-1]-rwxmin);
3959 y = hndc*ratioy*(yy[i-1]-rwymin);
3960 yrot = sina*x+cosa*
y;
3961 if (yrot > ymax) ymax = yrot;
3962 if (yrot < ymin) ymin = yrot;
3966 for (ycur=ymax; ycur>=
ymin; ycur=ycur-dy) {
3968 for (i=2; i<=nn+1; i++) {
3971 if (i == nn+1) i2=1;
3972 x1 = wndc*ratiox*(xx[i1-1]-rwxmin);
3973 y1 = hndc*ratioy*(yy[i1-1]-rwymin);
3974 x2 = wndc*ratiox*(xx[i2-1]-rwxmin);
3975 y2 = hndc*ratioy*(yy[i2-1]-rwymin);
3976 xt1 = cosa*x1-sina*y1;
3977 yt1 = sina*x1+cosa*y1;
3978 xt2 = cosa*x2-sina*y2;
3979 yt2 = sina*x2+cosa*y2;
3990 if ((yi <= ycur) && (ycur < yip)) {
3992 if (nbi >= maxnbi)
return;
4002 if (nbi >= maxnbi)
return;
4005 if (nbi >= maxnbi)
return;
4012 a = (yt1-yt2)/(xt1-xt2);
4013 b = (yt2*xt1-xt2*yt1)/(xt1-xt2);
4022 if ((xi <= xin) && (xin < xip) &&
4026 if (nbi >= maxnbi)
return;
4035 for (i=1; i<=
m; i++) {
4036 if (xli[i] < xli[i-1]) {
4044 if (inv == 0)
goto L50;
4050 if (nbi%2 != 0)
continue;
4052 for (i=1; i<=nbi; i=i+2) {
4054 xlh[0] = cosb*xli[i-1]-sinb*ycur;
4055 ylh[0] = sinb*xli[i-1]+cosb*ycur;
4056 xlh[1] = cosb*xli[i] -sinb*ycur;
4057 ylh[1] = sinb*xli[i] +cosb*ycur;
4059 xlh[0] = (xlh[0]/wndc)*(rwxmax-rwxmin)+rwxmin;
4060 ylh[0] = (ylh[0]/hndc)*(rwymax-rwymin)+rwymin;
4061 xlh[1] = (xlh[1]/wndc)*(rwxmax-rwxmin)+rwxmin;
4062 ylh[1] = (ylh[1]/hndc)*(rwymax-rwymin)+rwymin;
4063 gPad->PaintLine(xlh[0], ylh[0], xlh[1], ylh[1]);
4074 x[0] =
x1; x[1] =
x2; y[0] = y1; y[1] = y2;
4083 if (!
gPad->IsBatch())
4099 if (!
gPad->IsBatch())
4124 for (i=0;i<3;i++) temp[i] = p1[i];
4126 for (i=0;i<3;i++) temp[i] = p2[i];
4128 PaintLine(xpad[0],xpad[1],xpad[3],xpad[4]);
4142 for (i=0;i<3;i++) temp[i] = p1[i];
4144 for (i=0;i<3;i++) temp[i] = p2[i];
4146 PaintLine(xpad[0],xpad[1],xpad[3],xpad[4]);
4162 Int_t i, i1=-1,np=1;
4163 for (i=0; i<n-1; i++) {
4168 Int_t iclip =
Clip(&x[i],&y[i],xmin,ymin,xmax,ymax);
4175 if (iclip == 0 && i < n-2)
continue;
4176 if (!
gPad->IsBatch())
4209 if (option && (option[0] ==
'C')) mustClip =
kFALSE;
4212 Int_t i, i1=-1, np=1, iclip=0;
4214 for (i=0; i < n-1; i++) {
4220 iclip =
Clip(&x[i],&y[i],xmin,ymin,xmax,ymax);
4228 if (iclip == 0 && i < n-2)
continue;
4229 if (!
gPad->IsBatch())
4254 if (!
gPad->IsBatch())
4260 for (
Int_t i=0; i<
n; i++) {
4279 for (
Int_t i = 1; i <
n; i++)
4298 for (i=0; i<
n; i++) {
4299 if (x[i] >= xmin && x[i] <= xmax && y[i] >= ymin && y[i] <= ymax) {
4302 if (i < n-1)
continue;
4304 if (np == 0)
continue;
4305 if (!
gPad->IsBatch())
4329 for (i=0; i<
n; i++) {
4330 if (x[i] >= xmin && x[i] <= xmax && y[i] >= ymin && y[i] <= ymax) {
4333 if (i < n-1)
continue;
4335 if (np == 0)
continue;
4336 if (!
gPad->IsBatch())
4354 if (!
gPad->IsBatch())
4367 if (!
gPad->IsBatch())
4380 if (!
gPad->IsBatch())
4397 if (!
gPad->IsBatch())
4425 if (
gPad == 0)
return 0;
4432 if (
this !=
gPad->GetCanvas()) {
4433 if (!((x >=
fX1 && x <=
fX2) && (y >=
fY1 && y <=
fY2)))
return 0;
4441 TPad *picked =
this;
4445 pickobj = &dummyLink;
4474 pick = ((
TPad*)obj)->
Pick(px, py, pickobj);
4479 }
else if (!
gROOT->GetEditorMode()) {
4486 if (dist == 0)
break;
4501 if (
fView && !gotPrim) {
4525 if (picked ==
this) {
4547 while ((obj = next()))
4549 char *opt =
StrDup(next.GetOption());
4576 ((
TPad*)
this)->SaveAs(filename);
4588 while ((obj = next())) {
4733 const char *filename;
4751 filename = fs2.
Data();
4754 const char *opt_default=
"ps";
4756 Int_t lenfil = filename ? strlen(filename) : 0;
4757 TString opt = (!option) ? opt_default : option;
4779 if (strstr(opt,
"gif+")) {
4782 }
else if (strstr(opt,
"gif")) {
4785 }
else if (strstr(opt,
"png")) {
4788 }
else if (strstr(opt,
"jpg")) {
4791 }
else if (strstr(opt,
"tiff")) {
4794 }
else if (strstr(opt,
"xpm")) {
4797 }
else if (strstr(opt,
"bmp")) {
4804 if (!
gROOT->IsBatch() && image) {
4807 Color_t hc =
gPad->GetCanvas()->GetHighLightColor();
4808 gPad->GetCanvas()->SetHighLightColor(-1);
4814 Info(
"Print",
"GIF file %s has been created", psname.
Data());
4816 gPad->GetCanvas()->SetHighLightColor(hc);
4820 Color_t hc =
gPad->GetCanvas()->GetHighLightColor();
4821 gPad->GetCanvas()->SetHighLightColor(-1);
4836 Info(
"Print",
"file %s has been created", psname.
Data());
4838 gPad->GetCanvas()->SetHighLightColor(hc);
4840 Warning(
"Print",
"Unsupported image format %s", psname.
Data());
4846 if (strstr(opt,
"cxx")) {
4852 if (strstr(opt,
"root")) {
4858 if (strstr(opt,
"xml")) {
4865 if (strstr(opt,
"json")) {
4871 if (strstr(opt,
"svg")) {
4886 if ((h =
gROOT->GetPluginManager()->FindHandler(
"TVirtualPS",
"svg"))) {
4913 if (strstr(opt,
"tex")) {
4928 if ((h =
gROOT->GetPluginManager()->FindHandler(
"TVirtualPS",
"tex"))) {
4964 copen = psname.
EndsWith(
"(");
if (copen) psname[psname.
Length()-1] = 0;
4965 cclose = psname.
EndsWith(
")");
if (cclose) psname[psname.
Length()-1] = 0;
4966 copenb = psname.
EndsWith(
"[");
if (copenb) psname[psname.
Length()-1] = 0;
4967 ccloseb = psname.
EndsWith(
"]");
if (ccloseb) psname[psname.
Length()-1] = 0;
4971 if (copen || copenb) mustClose =
kFALSE;
4972 if (cclose || ccloseb) mustClose =
kTRUE;
4983 if (ratio < 1) pstype = 112;
4984 if (strstr(opt,
"Portrait")) pstype = 111;
4985 if (strstr(opt,
"Landscape")) pstype = 112;
4986 if (strstr(opt,
"eps")) pstype = 113;
4987 if (strstr(opt,
"Preview")) pstype = 113;
4995 if (strstr(opt,
"pdf") || strstr(opt,
"Title:")) {
4996 if ((h =
gROOT->GetPluginManager()->FindHandler(
"TVirtualPS",
"pdf"))) {
5002 if ((h =
gROOT->GetPluginManager()->FindHandler(
"TVirtualPS",
"image"))) {
5007 if ((h =
gROOT->GetPluginManager()->FindHandler(
"TVirtualPS",
"ps"))) {
5016 if (titlePos !=
kNPOS) {
5023 if (!strstr(opt,
"pdf") || image) {
5040 if (!copen)
Info(
"Print",
"%s file %s has been created", opt.
Data(), psname.
Data());
5041 else Info(
"Print",
"%s file %s has been created using the current canvas", opt.
Data(), psname.
Data());
5050 if (titlePos !=
kNPOS) {
5057 if (cclose)
Info(
"Print",
"Current canvas added to %s file %s and file closed", opt.
Data(), psname.
Data());
5058 else Info(
"Print",
"%s file %s has been closed", opt.
Data(), psname.
Data());
5063 Info(
"Print",
"Current canvas added to %s file %s", opt.
Data(), psname.
Data());
5080 if ((x1 >= x2) || (y1 >= y2)) {
5081 Error(
"Range",
"illegal world coordinates range: x1=%f, y1=%f, x2=%f, y2=%f",x1,y1,x2,y2);
5090 if (
fX1 == x1 &&
fY1 == y1 &&
fX2 == x2 &&
fY2 == y2)
return;
5118 if ((xmin >= xmax) || (ymin >= ymax)) {
5119 Error(
"RangeAxis",
"illegal axis coordinates range: xmin=%f, ymin=%f, xmax=%f, ymax=%f",
5120 xmin, ymin, xmax, ymax);
5172 while ((obj = next())) {
5183 if (h1f) h1f->
DrawCopy(
"sameaxis");
5202 if (padsav) padsav->
cd();
5332 if (
this ==
gPad->GetCanvas()) {
5364 fYtoPixelk = rounding + -pyrange - pyrange*fY1/yrange;
5385 while ((obj = next())) {
5391 if (
gPad->IsBatch())
5409 Warning(
"ResizePad",
"Inf/NaN propagated to the pad. Check drawn objects.");
5410 if (w <= 0 || w > 10000) {
5411 Warning(
"ResizePad",
"%s width changed from %d to %d\n",
GetName(),w,10);
5414 if (h <= 0 || h > 10000) {
5415 Warning(
"ResizePad",
"%s height changed from %d to %d\n",
GetName(),h,10);
5430 if (padsav ==
this) {
5464 Int_t lenfil = filename ? strlen(filename) : 0;
5467 else psname = filename;
5530 const char *cname =
GetName();
5531 Int_t nch = strlen(cname);
5533 strlcpy(lcname,cname,10);
5534 for (
Int_t k=1;k<=nch;k++) {
if (lcname[nch-k] ==
' ') lcname[nch-k] = 0;}
5535 if (lcname[0] == 0) {
5536 if (
this ==
gPad->GetCanvas()) {strlcpy(lcname,
"c1",10); nch = 2;}
5537 else {strlcpy(lcname,
"pad",10); nch = 3;}
5543 if (
this !=
gPad->GetCanvas()) {
5544 out <<
" "<<std::endl;
5545 out <<
"// ------------>Primitives in pad: "<<
GetName()<<std::endl;
5547 out<<
" TPad *"<<cname<<
" = new TPad("<<quote<<
GetName()<<quote<<
", "<<quote<<
GetTitle()
5554 out<<
" "<<cname<<
"->Draw();"<<std::endl;
5555 out<<
" "<<cname<<
"->cd();"<<std::endl;
5557 out<<
" "<<cname<<
"->Range("<<
fX1<<
","<<
fY1<<
","<<
fX2<<
","<<
fY2<<
");"<<std::endl;
5562 static Int_t viewNumber = 0;
5563 out<<
" TView *view"<<++viewNumber<<
" = TView::CreateView(1);"<<std::endl;
5564 out<<
" view"<<viewNumber<<
"->SetRange("<<rmin[0]<<
","<<rmin[1]<<
","<<rmin[2]<<
","
5565 <<rmax[0]<<
","<<rmax[1]<<
","<<rmax[2]<<
");"<<std::endl;
5570 out<<
" "<<cname<<
"->SetFillColor(ci);" << std::endl;
5572 out<<
" "<<cname<<
"->SetFillColor("<<
GetFillColor()<<
");"<<std::endl;
5575 out<<
" "<<cname<<
"->SetFillStyle("<<
GetFillStyle()<<
");"<<std::endl;
5578 out<<
" "<<cname<<
"->SetBorderMode("<<
GetBorderMode()<<
");"<<std::endl;
5581 out<<
" "<<cname<<
"->SetBorderSize("<<
GetBorderSize()<<
");"<<std::endl;
5584 out<<
" "<<cname<<
"->SetLogx();"<<std::endl;
5587 out<<
" "<<cname<<
"->SetLogy();"<<std::endl;
5590 out<<
" "<<cname<<
"->SetLogz();"<<std::endl;
5593 out<<
" "<<cname<<
"->SetGridx();"<<std::endl;
5596 out<<
" "<<cname<<
"->SetGridy();"<<std::endl;
5599 out<<
" "<<cname<<
"->SetTickx("<<
GetTickx()<<
");"<<std::endl;
5602 out<<
" "<<cname<<
"->SetTicky("<<
GetTicky()<<
");"<<std::endl;
5605 out<<
" "<<cname<<
"->SetTheta("<<
GetTheta()<<
");"<<std::endl;
5608 out<<
" "<<cname<<
"->SetPhi("<<
GetPhi()<<
");"<<std::endl;
5611 out<<
" "<<cname<<
"->SetLeftMargin("<<
GetLeftMargin()<<
");"<<std::endl;
5614 out<<
" "<<cname<<
"->SetRightMargin("<<
GetRightMargin()<<
");"<<std::endl;
5617 out<<
" "<<cname<<
"->SetTopMargin("<<
GetTopMargin()<<
");"<<std::endl;
5620 out<<
" "<<cname<<
"->SetBottomMargin("<<
GetBottomMargin()<<
");"<<std::endl;
5626 out<<
" "<<cname<<
"->SetFrameFillColor(ci);" << std::endl;
5639 out<<
" "<<cname<<
"->SetFrameLineColor(ci);" << std::endl;
5659 out<<
" "<<cname<<
"->SetFrameFillColor(ci);" << std::endl;
5661 out<<
" "<<cname<<
"->SetFrameFillColor("<<frame->
GetFillColor()<<
");"<<std::endl;
5664 out<<
" "<<cname<<
"->SetFrameFillStyle("<<frame->
GetFillStyle()<<
");"<<std::endl;
5667 out<<
" "<<cname<<
"->SetFrameLineStyle("<<frame->
GetLineStyle()<<
");"<<std::endl;
5672 out<<
" "<<cname<<
"->SetFrameLineColor(ci);" << std::endl;
5674 out<<
" "<<cname<<
"->SetFrameLineColor("<<frame->
GetLineColor()<<
");"<<std::endl;
5677 out<<
" "<<cname<<
"->SetFrameLineWidth("<<frame->
GetLineWidth()<<
");"<<std::endl;
5680 out<<
" "<<cname<<
"->SetFrameBorderMode("<<frame->
GetBorderMode()<<
");"<<std::endl;
5683 out<<
" "<<cname<<
"->SetFrameBorderSize("<<frame->
GetBorderSize()<<
");"<<std::endl;
5691 while ((obj = next())) {
5693 if (!strcmp(obj->
GetName(),
"Graph")) ((
TGraph*)obj)->SetName(
Form(
"Graph%d",grnum++));
5696 out<<
" "<<cname<<
"->Modified();"<<std::endl;
5698 if (padsav) padsav->
cd();
5711 Error(
"SetAspectRatio",
"cannot fix aspect ratio, height of pad is 0");
5735 while ((obj = next())) {
5749 if (fstyle == 0) fstyle = 4000;
5842 SetPad(xlow, ylow, xup, yup);
5850 if (!view)
delete fView;
5923 x1 = x2 = y1 = y2 = 0;
5925 if (aBBox.
fX<bBBox.
fX) {
5941 else if (mode ==
'y') {
5942 if (aBBox.
fY<bBBox.
fY) {
5980 : fa(0), fb(0), fdist(0), fdir(
' ')
5984 : fa(a), fb(b), fdist(dist), fdir(direction)
6010 std::vector<dField> curDist;
6011 std::vector<dField> otherDist;
6021 Int_t dSizeArrow = 12;
6023 movedX = movedY =
false;
6026 if (mode !=
'i') resize =
true;
6028 TPad *is_pad =
dynamic_cast<TPad *
>( object );
6033 static TPad * tmpGuideLinePad;
6036 if (tmpGuideLinePad) {
6037 if (
object == tmpGuideLinePad) {
6038 tmpGuideLinePad->
Delete();
6039 tmpGuideLinePad = 0;
6042 tmpGuideLinePad->
Delete();
6043 tmpGuideLinePad = 0;
6047 prims =
gPad->GetListOfPrimitives();
6054 if (!tmpGuideLinePad){
6055 tmpGuideLinePad =
new TPad(
"tmpGuideLinePad",
"tmpGuideLinePad", 0, 0, 1, 1);
6057 gPad->GetRange(x1, y1, x2, y2);
6058 tmpGuideLinePad->
Range(x1, y1, x2, y2);
6061 tmpGuideLinePad->
Draw();
6062 tmpGuideLinePad->
cd();
6063 gPad->GetRange(x1, y1, x2, y2);
6065 if (cling && !log) threshold = 7;
6078 MX =
gPad->GetX1() + 0.5 * (
gPad->GetX2()-
gPad->GetX1());
6079 MY =
gPad->GetY1() + 0.5 * (
gPad->GetY2()-
gPad->GetY1());
6080 pMX =
gPad->XtoPixel(MX);
6081 pMY =
gPad->YtoPixel(MY);
6084 if (cling && (!resize)) {
6096 if (cling && (!resize)) {
6108 for (
UInt_t i = 0; i<
n; i++) {
6114 if (cling && (!resize)) {
6126 if (cling && (!resize)) {
6141 for (
UInt_t i = 0; i<
n; i++) {
6145 for (
UInt_t j = i+1; j<
n; j++) {
6153 dField abDist = dField();
6156 if ((b != cur)&&(a != cur)) otherDist.push_back(abDist);
6157 else curDist.push_back(abDist);
6161 dField abDist = dField();
6164 if ((b != cur)&&(a != cur)) otherDist.push_back(abDist);
6165 else curDist.push_back(abDist);
6173 for (
UInt_t i = 0; i<curDist.size(); i++) {
6174 for (
UInt_t j = 0; j<otherDist.size(); j++) {
6175 if ((curDist[i].fdir == otherDist[j].fdir)&&(otherDist[j].fdir==
'x')&&(
TMath::Abs(curDist[i].fdist-otherDist[j].fdist)<threshold)) {
6176 if (cling && (!movedX) && (!resize)) {
6182 DrawDist(curDist[i].fa->GetBBox(), curDist[i].fb->GetBBox(),
'x');
6183 DrawDist(otherDist[j].fa->GetBBox(), otherDist[j].fb->GetBBox(),
'x');
6185 if ((curDist[i].fdir == otherDist[j].fdir)&&(otherDist[j].fdir==
'y')&&(
TMath::Abs(curDist[i].fdist-otherDist[j].fdist)<threshold)) {
6186 if (cling && (!movedY) && (!resize)) {
6192 DrawDist(curDist[i].fa->GetBBox(), curDist[i].fb->GetBBox(),
'y');
6193 DrawDist(otherDist[j].fa->GetBBox(), otherDist[j].fb->GetBBox(),
'y');
6196 for (
UInt_t j = i; j<curDist.size(); j++) {
6198 if ((curDist[i].fdir == curDist[j].fdir)&&(curDist[j].fdir==
'x')&&(
TMath::Abs(curDist[i].fdist-curDist[j].fdist)<threshold)) {
6199 if (cling && (!movedX) && (!resize)) {
6204 DrawDist(curDist[i].fa->GetBBox(), curDist[i].fb->GetBBox(),
'x');
6205 DrawDist(curDist[j].fa->GetBBox(), curDist[j].fb->GetBBox(),
'x');
6208 if ((curDist[i].fdir == curDist[j].fdir)&&(curDist[j].fdir==
'y')&&(
TMath::Abs(curDist[i].fdist-curDist[j].fdist)<threshold)) {
6209 if (cling && (!movedY) && (!resize)) {
6214 DrawDist(curDist[i].fa->GetBBox(), curDist[i].fb->GetBBox(),
'y');
6215 DrawDist(curDist[j].fa->GetBBox(), curDist[j].fb->GetBBox(),
'y');
6222 for (
UInt_t i = 0; i<
n; i++) {
6224 if (a && (cur != a)) {
6237 gPad->PixeltoX(aBBox.
fX+aBBox.
fWidth),
gPad->PixeltoY(aBBox.
fY-dSizeArrow-
gPad->VtoPixel(0)), 0.01,
"<|>");
6279 if (tmpGuideLinePad) {
6282 tmpGuideLinePad->
Delete();
6283 tmpGuideLinePad = 0;
6350 if (text && strlen(text))
6369 Int_t nch, nobjects;
6389 while ((obj = next())) {
6408 TObject::Streamer(b);
6409 TAttLine::Streamer(b);
6410 TAttFill::Streamer(b);
6411 b >> single;
fX1 = single;
6412 b >> single;
fY1 = single;
6413 b >> single;
fX2 = single;
6414 b >> single;
fY2 = single;
6417 TAttPad::Streamer(b);
6419 TVirtualPad::Streamer(b);
6420 TAttPad::Streamer(b);
6421 b >> single;
fX1 = single;
6422 b >> single;
fY1 = single;
6423 b >> single;
fX2 = single;
6424 b >> single;
fY2 = single;
6451 b >> single;
fWNDC = single;
6452 b >> single;
fHNDC = single;
6457 b >> single;
fUxmin = single;
6458 b >> single;
fUymin = single;
6459 b >> single;
fUxmax = single;
6460 b >> single;
fUymax = single;
6462 TVirtualPad::Streamer(b);
6463 TAttPad::Streamer(b);
6522 char drawoption[64];
6523 for (
Int_t i = 0; i < nobjects; i++) {
6548 b >> single;
fTheta = single;
6549 b >> single;
fPhi = single;
6613 while ((obj = next())) {
6632 if (fFrame) fFrame->UseCurrentStyle();
6695 if (!
gPad)
return 0;
6697 if (strlen(emode))
gROOT->SetEditorMode(emode);
6698 if (
gROOT->GetEditorMode() == 0 && strlen(pname) > 2)
gROOT->SetEditorMode(&pname[1]);
6702 TObject *oldlast =
gPad->GetListOfPrimitives()->Last();
6705 Bool_t hasname = strlen(pname) > 0;
6706 if (!pname[0] && !emode[0]) testlast =
kTRUE;
6707 if (testlast)
gROOT->SetEditorMode();
6709 if (
gROOT->GetEditorMode() == 0) {
6712 if (obj)
return obj;
6715 obj =
gPad->GetListOfPrimitives()->Last();
6716 if (obj != oldlast)
return obj;
6737 if (
gPad->IsBatch())
return 0;
6738 return (
TObject*)
gROOT->ProcessLineFast(
Form(
"new TGToolTip((TBox*)0x%lx,\"%s\",%d)",
6749 gROOT->ProcessLineFast(
Form(
"delete (TGToolTip*)0x%lx", (
Long_t)tip));
6760 gROOT->ProcessLineFast(
Form(
"((TGToolTip*)0x%lx)->Reset((TPad*)0x%lx)",
6771 gROOT->ProcessLineFast(
Form(
"((TGToolTip*)0x%lx)->Hide()",(
Long_t)tip));
6779 ::Info(
"TPad::x3d()",
"Fn is depreciated - use TPad::GetViewer3D() instead");
6782 if (!type || !type[0]) {
6799 if ( (!type || !type[0] || (strstr(type,
"gl") && !strstr(type,
"ogl"))) && !
fCanvas->
UseGL())
6802 if (type && type[0]) {
6827 if (!strstr(type,
"pad")) {
6831 Warning(
"TPad::CreateViewer3D",
"Cannot create 3D viewer of type: %s", type);
6837 if (strstr(type,
"gl") && !strstr(type,
"ogl"))
6840 createdExternal =
kTRUE;
6856 if (createdExternal) {
6893 Emit(
"RecordPave(const TObject*)", (
Long_t)obj);
6901 Emit(
"RecordLatex(const TObject*)", (
Long_t)obj);
Double_t PadtoY(Double_t y) const
Convert y from pad to Y.
virtual TCanvasImp * GetCanvasImp() const
Get canvas implementation pointer if any.
Double_t PadtoX(Double_t x) const
Convert x from pad to X.
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.
virtual TObject * GetSelected() const
Get selected.
Int_t GetFirst() const
Return first bin on the axis i.e.
Bool_t fAbsCoord
Use absolute coordinates.
void FillCollideGridTGraph(TObject *o)
virtual const char * GetTitle() const
Returns title of object.
virtual Bool_t AccessPathName(const char *path, EAccessMode mode=kFileExists)
Returns FALSE if one can access a file using the specified access mode.
Int_t GetNdata()
Return the number of data members of this class Note that in case the list of data members is not yet...
virtual Style_t GetLineStyle() const
Return the line style.
virtual Style_t GetFillStyle() const
Return the fill area style.
virtual void SetLineWidth(Width_t lwidth)
Set the line width.
Option_t * GetOption() const
Double_t fPixeltoX
xworld = fPixeltoXk + fPixeltoX*xpixel
object has not been deleted
virtual void SetOpacity(Int_t percent)=0
Double_t fUymin
Minimum value on the Y axis.
void FeedbackMode(Bool_t set)
Turn rubberband feedback mode on or off.
virtual Double_t GetBinErrorLow(Int_t bin) const
Return lower error associated to bin number bin.
TList * GetListOfFunctions() const
double dist(Rotation3D const &r1, Rotation3D const &r2)
virtual void SetPad(const char *name, const char *title, Double_t xlow, Double_t ylow, Double_t xup, Double_t yup, Color_t color=35, Short_t bordersize=5, Short_t bordermode=-1)
Set all pad parameters.
TList * GetListOfBases()
Return list containing the TBaseClass(es) of a class.
virtual void SetAlpha(Float_t a)
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).
Int_t GetEventX() const
Get X event.
static void PolyLine(Int_t event, Int_t px, Int_t py, Int_t mode)
Create a new PolyLine in gPad.
Double_t GetUxmin() const
void PaintLineNDC(Double_t u1, Double_t v1, Double_t u2, Double_t v2)
Paint line in normalized coordinates.
virtual Int_t WriteClassBuffer(const TClass *cl, void *pointer)=0
virtual void DrawClassObject(const TObject *obj, Option_t *option="")
Draw class inheritance tree of the class to which obj belongs.
void SetPadGridX(Bool_t gridx)
virtual Float_t GetTextAngle() const
Return the text angle.
TList * fPrimitives
->List of primitives (subpads)
virtual TObject * GetPrimitive(const char *name) const
Get primitive.
virtual void ResizePad(Option_t *option="")
Compute pad conversion coefficients.
virtual void Draw(Option_t *option="")
Draw this pavetext with its current attributes.
virtual TCanvas * GetCanvas() const
Double_t Floor(Double_t x)
virtual void SetCursor(ECursor cursor)
Set cursor.
Bool_t GetPadGridX() const
void SetPadLeftMargin(Float_t margin=0.1)
Int_t GetFrameBorderMode() const
Double_t GetAbsWNDC() const
ABC describing GUI independent main window (with menubar, scrollbars and a drawing area)...
virtual Double_t GetBinContent(Int_t bin) const
Return content of bin number bin.
virtual void DrawPolyLineNDC(Int_t n, const Double_t *u, const Double_t *v)=0
virtual TBox * DrawBox(Double_t x1, Double_t y1, Double_t x2, Double_t y2)
Draw this box with new coordinates.
virtual void SetMaximum(Double_t maximum=-1111)
This class displays a legend box (TPaveText) containing several legend entries.
The Histogram stack class.
R__EXTERN Int_t gErrorIgnoreLevel
virtual Font_t GetTextFont() const
Return the text font.
Color_t GetFrameLineColor() const
virtual void DrawCrosshair()
Function called to draw a crosshair in the canvas.
virtual void SetLimits(Double_t xmin, Double_t xmax)
Width_t GetFrameBorderSize() const
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
virtual TBox * AddBox(Double_t x1, Double_t y1, Double_t x2, Double_t y2)
Add a new graphics box to this pavetext.
virtual void SetBatch(Bool_t batch=kTRUE)
Set pad in batch mode.
Bool_t fGridx
Set to true if grid along X.
Double_t fPhi
phi angle to view as lego/surface
Int_t GetNmethods()
Return the number of methods of this class Note that in case the list of methods is not yet created...
TVirtualPadPainter * GetCanvasPainter()
Access and (probably) creation of pad painter.
virtual void WCtoNDC(const Float_t *pw, Float_t *pn)=0
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
Computes distance from point (px,py) to the object.
virtual void ls(Option_t *option="") const
List (ls) all objects in this collection.
virtual void SetDirectory(TDirectory *dir)
By default when an histogram is created, it is added to the list of histogram objects in the current ...
virtual void Paint(Option_t *option="")
Paint all primitives in pad.
virtual void SetBorderMode(Short_t bordermode)
virtual Int_t GetMaximumBin() const
Return location of bin with maximum value in the range.
RooArgList L(const RooAbsArg &v1)
virtual Int_t GetEventX() const
Get X event.
virtual TLine * AddLine(Double_t x1=0, Double_t y1=0, Double_t x2=0, Double_t y2=0)
Add a new graphics line to this pavetext.
Int_t XtoAbsPixel(Double_t x) const
All ROOT classes may have RTTI (run time type identification) support added.
void CopyBackgroundPixmaps(TPad *start, TPad *stop, Int_t x, Int_t y)
Copy pixmaps of pads laying below pad "stop" into pad "stop".
Double_t GetAbsYlowNDC() const
TVirtualPad * GetPadSave() const
Int_t GetPadTickX() 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...
virtual void SetVertical(Bool_t vert=kTRUE)
Set pad vertical (default) or horizontal.
TClass * GetClassPointer(Bool_t load=kTRUE)
Get pointer to the base class TClass.
R__EXTERN TStyle * gStyle
Float_t fBottomMargin
BottomMargin.
virtual Int_t GetDimension() const
Int_t fNumPaletteColor
Number of objects with an automatic color.
void PaintFillArea(Int_t n, Float_t *x, Float_t *y, Option_t *option="")
virtual void SetName(const char *name)
Set the name of the TNamed.
virtual void RangeChanged()
virtual void SetSelected(TObject *obj)
Set selected.
virtual void Draw(Option_t *option="")
Draw this legend with its current attributes.
THist< 1, float, THistStatContent, THistStatUncertainty > TH1F
Color_t GetTitleFillColor() const
Int_t GetBorderSize() const
static void SaveColor(std::ostream &out, Int_t ci)
Save a color with index > 228 as a C++ statement(s) on output stream out.
Width_t GetPadBorderSize() const
void PaintPolyLineNDC(Int_t n, Double_t *x, Double_t *y, Option_t *option="")
Paint polyline in CurrentPad NDC coordinates.
Short_t fBorderSize
pad bordersize in pixels
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
virtual void SetBBoxCenter(const TPoint &p)
Set center of the Pad.
virtual void SetFixedAspectRatio(Bool_t fixed=kTRUE)
Fix pad aspect ratio to current value if fixed is true.
virtual UInt_t GetWw() const
Get Ww.
virtual void SetBorderMode(Short_t bordermode)
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
A TMultiGraph is a collection of TGraph (or derived) objects.
virtual ~TPad()
Pad destructor.
Double_t fAbsXlowNDC
Absolute X top left corner of pad in NDC [0,1].
virtual void AddFirst(TObject *obj)
Add object at the beginning of the list.
virtual Bool_t IsRetained() const
Is pad retained ?
virtual TText * AddText(Double_t x1, Double_t y1, const char *label)
Add a new Text line to this pavetext at given coordinates.
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 Float_t GetTextSize() const
Return the text size.
virtual void CopyPixmap()
Copy the pixmap of the pad to the canvas.
Bool_t HasFixedAspectRatio() const
Double_t GetUymax() const
Double_t GetAbsXlowNDC() const
TPluginHandler * FindHandler(const char *base, const char *uri=0)
Returns the handler if there exists a handler for the specified URI.
virtual Double_t GetBinLowEdge(Int_t bin) const
Return low edge of bin.
Int_t UtoPixel(Double_t u) const
if object in a pad cannot be picked
virtual void SetMinimum(Double_t minimum=-1111)
virtual Int_t CheckByteCount(UInt_t startpos, UInt_t bcnt, const TClass *clss)=0
TList * GetListOfDataMembers(Bool_t load=kTRUE)
Return list containing the TDataMembers of a class.
virtual void DivideSquare(Int_t n, Float_t xmargin=0.01, Float_t ymargin=0.01, Int_t color=0)
"n" is the total number of sub-pads.
virtual void GetRangeAxis(Double_t &xmin, Double_t &ymin, Double_t &xmax, Double_t &ymax)
Return pad axis coordinates range.
Double_t fUxmax
Maximum value on the X axis.
Int_t LoadPlugin()
Load the plugin library for this handler.
void PaintBorder(Color_t color, Bool_t tops)
Paint the pad border.
void SetTitleFont(Style_t font=62, Option_t *axis="X")
virtual void DestroyDrawable()=0
tomato 1-D histogram with a float per channel (see TH1 documentation)}
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.
virtual Double_t GetNormFactor() const
Double_t fUymax
Maximum value on the Y axis.
virtual Bool_t OpaqueMoving() const
Is pad moving in opaque mode ?
Short_t Min(Short_t a, Short_t b)
virtual void Update()
Update pad.
void ToLower()
Change string to lower-case.
virtual void SetBBoxY2(const Int_t y)=0
virtual Int_t CreateDrawable(UInt_t w, UInt_t h)=0
virtual void PaintModified()
Traverse pad hierarchy and (re)paint only modified pads.
R__EXTERN TVirtualMutex * gROOTMutex
virtual void Draw(Option_t *option="")
Default Draw method for all objects.
virtual void SetX1(Double_t x1)
virtual void SetFillStyle(Style_t fstyle)
Set the fill area style.
Double_t fVtoPixel
ypixel = fVtoPixelk + fVtoPixel*vndc
virtual void SetBBoxCenterX(const Int_t x)
Set X coordinate of the center of the Pad.
virtual TObject * FindObject(const char *name) const
Find an object in this list using its name.
The histogram statistics painter class.
virtual void UseCurrentStyle()
Set current style settings in this object This function is called when either TCanvas::UseCurrentStyl...
virtual void SetLineWidth(Width_t lwidth)=0
TH1F * GetHistogram() const
Returns a pointer to the histogram used to draw the axis Takes into account the two following cases...
virtual Int_t Clip(Float_t *x, Float_t *y, Float_t xclipl, Float_t yclipb, Float_t xclipr, Float_t yclipt)
Clipping routine: Cohen Sutherland algorithm.
virtual Int_t GetNbinsX() const
Int_t fPadPaint
Set to 1 while painting the pad.
Double_t fPixeltoXk
Conversion coefficient for pixel to X World.
Float_t fTopMargin
TopMargin.
TString & Prepend(const char *cs)
virtual void Print(const char *filename="") const
Save Pad contents in a file in one of various formats.
virtual void Modify()
Change current line attributes if necessary.
virtual void SetX2(Double_t x2)
Int_t GetHatchesLineWidth() const
virtual Short_t GetBorderMode() const
UInt_t GetWindowHeight() const
void box(Int_t pat, Double_t x1, Double_t y1, Double_t x2, Double_t y2)
Double_t YtoPad(Double_t y) const
Convert y from Y to pad.
Double_t fAbsWNDC
Absolute Width of pad along X in NDC.
Long_t ExecPlugin(int nargs, const T &...params)
Bool_t BeginsWith(const char *s, ECaseCompare cmp=kExact) const
Int_t GetMaxIndex(Int_t dim) const
Return maximum index for array dimension "dim".
void SetPadBottomMargin(Float_t margin=0.1)
Double_t fAbsPixeltoYk
Conversion coefficient for absolute pixel to Y World.
virtual TObject * At(Int_t idx) const
Returns the object at position idx. Returns 0 if idx is out of range.
virtual TVirtualPad * cd(Int_t subpadnumber=0)=0
Bool_t IsModified() const
bit set when zooming on Y axis
virtual void RecursiveRemove(TObject *obj)
Recursively remove object from a pad and its sub-pads.
void SetPadBorderSize(Width_t size=1)
virtual void SetTopMargin(Float_t topmargin)
Set Pad top margin in fraction of the pad height.
virtual 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.
LongDouble_t Power(LongDouble_t x, LongDouble_t y)
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
Width_t GetTitleBorderSize() const
void PaintHatches(Double_t dy, Double_t angle, Int_t nn, Double_t *xx, Double_t *yy)
This routine draw hatches inclined with the angle "angle" and spaced of "dy" in normalized device coo...
Double_t fAbsYlowNDC
Absolute Y top left corner of pad in NDC [0,1].
static void Text(Int_t event, Int_t px, Int_t py, Int_t mode)
Create a new TLatex at the cursor position in gPad.
if object in a list can be deleted
TString & Replace(Ssiz_t pos, Ssiz_t n, const char *s)
virtual void SetToolTipText(const char *text, Long_t delayms=1000)
Set tool tip text associated with this pad.
void SetOptLogz(Int_t logz=1)
virtual Style_t GetFillStyle() const =0
virtual void SaveImage(TVirtualPad *pad, const char *fileName, Int_t type) const =0
virtual Double_t GetBinWidth(Int_t bin) const
Return bin width for 1D histogram.
virtual Int_t ClippingCode(Double_t x, Double_t y, Double_t xcl1, Double_t ycl1, Double_t xcl2, Double_t ycl2)
Compute the endpoint codes for TPad::Clip.
const char * Data() const
virtual void SetTextFont(Font_t tfont=62)
Set the text font.
void SetClickSelected(TObject *obj)
void SetTitleBorderSize(Width_t size=2)
virtual 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.
Double_t GetYlowNDC() const
virtual Short_t GetTextAlign() const
Return the text alignment.
Float_t GetTopMargin() const
Float_t GetRightMargin() const
Int_t GetEvent() const
Get Event.
virtual TObject * After(const TObject *obj) const
Returns the object after object obj.
Int_t fNextPaletteColor
Next automatic color.
void PaintDate()
Paint the current date and time if the option date is on.
Float_t GetBottomMargin() const
virtual Double_t GetBinErrorUp(Int_t bin) const
Return upper error associated to bin number bin.
virtual void Cleared(TVirtualPad *pad)
Emit pad Cleared signal.
virtual Int_t GetEvent() const
Get Event.
virtual Double_t GetBinLowEdge(Int_t bin) const
Return bin lower edge for 1D histogram.
virtual void Close(Option_t *option="")
Delete all primitives in pad and pad itself.
virtual void Sleep(UInt_t milliSec)
Sleep milliSec milli seconds.
virtual const char * GetName() const =0
Returns name of object.
TFrame * GetFrame()
Get frame.
Float_t GetPadBottomMargin() const
virtual Option_t * GetDrawOption() const
Get option used by the graphics system to draw this object.
virtual void DrawLineNDC(Double_t u1, Double_t v1, Double_t u2, Double_t v2)=0
Color_t GetTitleTextColor() const
virtual Int_t GetEventY() const
Get Y event.
The TNamed class is the base class for all named ROOT classes.
void HighLight(Color_t col=kRed, Bool_t set=kTRUE)
Highlight pad.
virtual void Draw(Option_t *option="")
Draw this arrow with its current attributes.
Int_t fLogx
(=0 if X linear scale, =1 if log scale)
virtual Width_t GetLineWidth() const =0
clip to the frame boundary
TFrame * fFrame
! Pointer to 2-D frame (if one exists)
static Int_t GetMaxPickDistance()
Static function (see also TPad::SetMaxPickDistance)
void PaintTextNDC(Double_t u, Double_t v, const char *text)
Paint text in CurrentPad NDC coordinates.
virtual void Modify()
Change current fill area attributes if necessary.
Bool_t fEditable
True if canvas is editable.
virtual Color_t GetTextColor() const
Return the text color.
virtual void ExecuteEventAxis(Int_t event, Int_t px, Int_t py, TAxis *axis)
Execute action corresponding to one event for a TAxis object (called by TAxis::ExecuteEvent.) This member function is called when an axis is clicked with the locator.
TCanvas * fCanvas
! Pointer to mother canvas
virtual void SetCrosshair(Int_t crhair=1)
Set crosshair active/inactive.
Double_t Log10(Double_t x)
virtual void DrawText(Double_t x, Double_t y, const char *text, ETextMode mode)=0
static double p2(double t, double a, double b, double c)
virtual void SaveAs(const char *filename="", Option_t *option="") const
Save Pad contents in a file in one of various formats.
virtual TObjLink * LastLink() const
void SetPadTickX(Int_t tickx)
Bool_t IsRetained() const
Is pad retained ?
virtual void SetBBoxX1(const Int_t x)
Set lefthandside of BoundingBox to a value (resize in x direction on left)
static const double x4[22]
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
Compute distance from point px,py to a box.
virtual void SetLineStyle(Style_t lstyle)=0
virtual void SetMarkerColor(Color_t mcolor=1)
Set the marker color.
TString & Append(const char *cs)
void SetSelectedPad(TPad *pad)
Int_t GetNumberOfColors() const
Return number of colors in the color palette.
static void DrawColorTable()
Static function to Display Color Table in a pad.
Double_t GetHatchesSpacing() const
Base class for several text objects.
Int_t fCrosshairPos
Position of crosshair.
Abstract 3D shapes viewer.
void SetTitleTextColor(Color_t color=1)
UInt_t GetWw() const
Get Ww.
Double_t fAbsHNDC
Absolute Height of pad along Y in NDC.
Int_t GetEventY() const
Get Y event.
Bool_t OpaqueMoving() const
Is pad moving in opaque mode ?
Int_t fLogz
(=0 if Z linear scale, =1 if log scale)
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
virtual void SetLogx(Int_t value=1)
Set Lin/Log scale for X.
virtual TH1 * DrawCopy(Option_t *option="", const char *name_postfix="_copy") const
Copy this histogram and Draw in the current pad.
virtual Rectangle_t GetBBox()=0
virtual void SetFillColor(Color_t fcolor)=0
virtual void RedrawAxis(Option_t *option="")
Redraw the frame axis Redrawing axis may be necessary in case of superimposed histograms when one or ...
TVirtualPad is an abstract base class for the Pad and Canvas classes.
void SaveSource(const char *filename="", Option_t *option="")
Save primitives in this canvas as a C++ macro file.
virtual void SetBorderSize(Short_t bordersize)
virtual TPad * Pick(Int_t px, Int_t py, TObjLink *&pickobj)
Search for an object at pixel position px,py.
virtual TObject * GetParent() const
Int_t YtoAbsPixel(Double_t y) const
virtual void Draw(Option_t *option="")
Draw Pad in Current pad (re-parent pad if necessary).
Double_t GetXlowNDC() const
virtual void Text(Double_t x, Double_t y, const char *string)=0
R__EXTERN TPluginManager * gPluginMgr
Double_t fYlowNDC
Y bottom left corner of pad in NDC [0,1].
virtual void SetEditable(Bool_t mode=kTRUE)
Set pad editable yes/no If a pad is not editable:
virtual void XYtoAbsPixel(Double_t x, Double_t y, Int_t &xpixel, Int_t &ypixel) const
R__EXTERN Int_t(* gThreadXAR)(const char *xact, Int_t nb, void **ar, Int_t *iret)
virtual void SetTextAlign(Short_t align=11)
Set the text alignment.
virtual Short_t GetBorderSize() const =0
virtual Int_t GetCanvasID() const
Get canvas identifier.
static Bool_t SupportAlpha()
Static function returning "true" if transparency is supported.
Double_t fX2
X of upper X coordinate.
const char * GetName() const
Returns name of object.
virtual Color_t GetHighLightColor() const
Get highlight color.
virtual void CopyPixmaps()
Copy the sub-pixmaps of the pad to the canvas.
Style_t GetFrameFillStyle() const
void SetOptLogx(Int_t logx=1)
Int_t GetPadTickY() const
Int_t GetOptTitle() const
Double_t fXtoPixel
xpixel = fXtoPixelk + fXtoPixel*xworld
Bool_t * fCollideGrid
! Grid used to find empty space when adding a box (Legend) in a pad
Double_t fPixeltoY
yworld = fPixeltoYk + fPixeltoY*ypixel
virtual TVirtualPad * GetVirtCanvas() const
Get virtual canvas.
Float_t GetPadRightMargin() const
void PaintPolyLine(Int_t n, Float_t *x, Float_t *y, Option_t *option="")
Paint polyline in CurrentPad World coordinates.
virtual void AddExec(const char *name, const char *command)
Add a new TExec object to the list of Execs.
virtual void SetLineColor(Color_t lcolor)
Set the line color.
virtual 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 void SetRange(Int_t first=0, Int_t last=0)
Set the viewing range for the axis from bin first to last.
virtual Double_t GetBinCenter(Int_t bin) const
Return bin center for 1D histogram.
TPad * fMother
! pointer to mother of the list
TVirtualPad * GetSelectedPad() const
Get selected pad.
virtual TObject * FindObject(const char *name) const
Search if object named name is inside this pad or in pads inside this pad.
virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py)
Execute action corresponding to one event.
virtual void SetDoubleBuffer(Int_t mode=1)
Set double buffer mode ON or OFF.
virtual void SetAttLinePS(Color_t color, Style_t style, Width_t lwidth)
Set postscript line attributes.
Int_t IncrementPaletteColor(Int_t i, TString opt)
Increment (i==1) or set (i>1) the number of autocolor in the pad.
void SetPadBorderMode(Int_t mode=1)
virtual void SetBottomMargin(Float_t bottommargin)
Set Pad bottom margin in fraction of the pad height.
Int_t fPixmapID
! Off-screen pixmap identifier
virtual void DrawPolyLine(Int_t n, const Double_t *x, const Double_t *y)=0
Bool_t EndsWith(const char *pat, ECaseCompare cmp=kExact) const
Return true if string ends with the specified string.
virtual void SetCursor(ECursor cursor)
Set cursor type.
virtual void DeleteToolTip(TObject *tip)
Delete tool tip object.
virtual void ShowGuidelines(TObject *object, const Int_t event, const char mode= 'i', const bool cling=true)
Shows lines to indicate if a TAttBBox2D object is aligned to the center or to another object...
Class to manage histogram axis.
R__EXTERN TSystem * gSystem
virtual void CloseToolTip(TObject *tip)
Hide tool tip.
virtual void Draw(Option_t *option="")
Draw this histogram with options.
void SetPadColor(Color_t color=19)
virtual void SetFillColor(Color_t fcolor)
Set the fill area color.
virtual void SetBBoxX1(const Int_t x)=0
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 Double_t GetBinUpEdge(Int_t bin) const
Return up edge of bin.
virtual void DrawLine(Double_t x1, Double_t y1, Double_t x2, Double_t y2)=0
virtual void DeleteExec(const char *name)
Remove TExec name from the list of Execs.
virtual TPoint GetBBoxCenter()
Return the center of the Pad as TPoint in pixels.
virtual Int_t GetValue(const char *name, Int_t dflt)
Returns the integer value for a resource.
virtual const char * ClassName() const
Returns name of class to which the object belongs.
virtual Bool_t HasCrosshair() const
Return kTRUE if the crosshair has been activated (via SetCrosshair).
virtual void ls(Option_t *option="") const
List all primitives in pad.
virtual TObject * Remove(TObject *obj)
Remove object from the list.
virtual void UseCurrentStyle()
Force a copy of current style for all objects in pad.
virtual void SetTextAngle(Float_t tangle=0)
Set the text angle.
virtual Color_t GetFillColor() const
Return the fill area color.
virtual void SetBBoxY2(const Int_t y)
Set bottom of BoundingBox to a value (resize in y direction on bottom)
TObject * GetObject() const
TView * fView
! Pointer to 3-D view (if one exists)
void PaintPolyMarker(Int_t n, Float_t *x, Float_t *y, Option_t *option="")
Paint polymarker in CurrentPad World coordinates.
void CopyBackgroundPixmap(Int_t x, Int_t y)
Copy pixmap of this pad as background of the current pad.
Double_t GetAbsHNDC() const
virtual void SetView(TView *view=0)
Set the current TView. Delete previous view if view=0.
Width_t fLineWidth
Line width.
Bool_t TestBit(UInt_t f) const
static TVirtualViewer3D * Viewer3D(TVirtualPad *pad=0, Option_t *type="")
Create a Viewer 3D of specified type.
The most important graphics class in the ROOT system.
virtual void SetLineColor(Color_t lcolor)=0
virtual Bool_t BuildingScene() const =0
virtual Bool_t OpaqueResizing() const
Is pad resizing in opaque mode ?
char * Form(const char *fmt,...)
virtual void ResetToolTip(TObject *tip)
Reset tool tip, i.e.
virtual Double_t GetSumOfWeights() const
Return the sum of weights excluding under/overflows.
virtual void SetAttMarkerPS(Color_t color, Style_t style, Size_t msize)
Set postscript marker attributes.
virtual Short_t GetBorderSize() const
void AbsCoordinates(Bool_t set)
static Int_t GetColor(const char *hexcolor)
Static method returning color number for color specified by hex color string of form: "#rrggbb"...
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save primitives in this pad on the C++ source file out.
virtual const char * GetName() const
Returns name of object.
Bool_t OpaqueResizing() const
Is pad resizing in opaque mode ?
static void IndentLevel()
Functions used by ls() to indent an object hierarchy.
Style_t GetFrameLineStyle() const
The ROOT global object gROOT contains a list of all defined classes.
virtual void SetMarkerStyle(Style_t mstyle=1)
Set the marker style.
void PaintLine3D(Float_t *p1, Float_t *p2)
Paint 3-D line in the CurrentPad.
virtual Int_t GetNumber() const =0
virtual Int_t Exec(const char *shellcmd)
Execute a command.
Double_t GetUxmax() const
static double p1(double t, double a, double b)
Float_t fLeftMargin
LeftMargin.
virtual TObjLink * FirstLink() const
virtual Color_t GetLineColor() const
Return the line color.
virtual void SetCanvasSize(UInt_t ww, UInt_t wh)
Set canvas size.
Double_t fYtoPixel
ypixel = fYtoPixelk + fYtoPixel*yworld
virtual TVirtualPadPainter * GetPainter()
Get pad painter from TCanvas.
virtual void ReadFastArray(Bool_t *b, Int_t n)=0
TVirtualPad * GetPadSave() const
Get save pad.
Bool_t fModified
Set to true when pad is modified.
virtual Int_t GetDistancetoAxis(Int_t axis, Int_t px, Int_t py, Double_t &ratio)=0
if object destructor must call RecursiveRemove()
virtual void SetMarkerSize(Size_t msize=1)
Set the marker size.
virtual TVirtualPad * GetMother() const
Int_t fCrosshair
Crosshair type (0 if no crosshair requested)
UInt_t GetWindowWidth() const
Each class (see TClass) has a linked list of its base class(es).
virtual Double_t GetY1() const =0
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.
Int_t GetColorPalette(Int_t i) const
Return color number i in current palette.
Double_t fUtoAbsPixelk
Conversion coefficient for U NDC to absolute pixel.
virtual void DrawFrame(Double_t xl, Double_t yl, Double_t xt, Double_t yt, Int_t mode, Int_t border, Int_t dark, Int_t light)=0
virtual void SelectDrawable(Int_t device)=0
char * StrDup(const char *str)
Duplicate the string str.
#define R__LOCKGUARD2(mutex)
Double_t fY2
Y of upper Y coordinate.
Color_t GetFrameFillColor() const
virtual void ResizePad()=0
virtual void BeginScene()=0
Double_t fAspectRatio
ratio of w/h in case of fixed ratio
Float_t GetPadLeftMargin() const
const char * GetTitle() const
Returns title of object.
virtual void SetY2(Double_t y2)
virtual 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 TObject * Last() const
Return the last object in the list. Returns 0 when list is empty.
Float_t GetLeftMargin() const
Int_t XtoPixel(Double_t x) const
virtual Int_t ReadClassBuffer(const TClass *cl, void *pointer, const TClass *onfile_class=0)=0
Option_t * GetOption() const
virtual Bool_t IsTransparent() const
virtual void Paint(Option_t *option="")
This method must be overridden if a class wants to paint itself.
virtual void HideToolTip(Int_t event)
Hide tool tip depending on the event type.
void PaintBox(Double_t x1, Double_t y1, Double_t x2, Double_t y2, Option_t *option="")
Paint box in CurrentPad World coordinates.
TCanvasImp * GetCanvasImp() const
Get canvas implementation pointer if any.
void FillCollideGridTBox(TObject *o)
virtual Int_t GetSize() const
static const double x1[5]
Double_t fVtoAbsPixelk
Conversion coefficient for V NDC to absolute pixel.
A Pave (see TPave) with text, lines or/and boxes inside.
void SetClickSelectedPad(TPad *pad)
Int_t GetCrosshair() const
Return the crosshair type (from the mother canvas) crosshair type = 0 means no crosshair.
Double_t fXtoPixelk
Conversion coefficient for X World to pixel.
virtual const char * GetName() const
Returns name of object.
TLegendEntry * AddEntry(const TObject *obj, const char *label="", Option_t *option="lpf")
Add a new entry to this legend.
Int_t GetGLDevice()
Get GL device.
char * EscapeChars(const char *text) const
Introduce an escape character (@) in front of a special chars.
Wrapper around a TObject so it can be stored in a TList.
virtual Bool_t IsEditable() const
Bool_t fGridy
Set to true if grid along Y.
void SetCanvasSize(UInt_t ww, UInt_t wh)
Set Width and Height of canvas to ww and wh respectively.
virtual void SetFillStyle(Style_t fstyle)
Override TAttFill::FillStyle for TPad because we want to handle style=0 as style 4000.
Color_t GetPadColor() const
Bool_t IsBatch() const
Is pad in batch mode ?
Double_t XtoPad(Double_t x) const
Convert x from X to pad.
static void Pad(Int_t event, Int_t px, Int_t py, Int_t)
Create a new pad in gPad.
Double_t fTheta
theta angle to view as lego/surface
virtual void SetTextSize(Float_t tsize=1)=0
Bool_t IsGrayscale()
Check whether this canvas is to be drawn in grayscale mode.
TVirtualPad * GetClickSelectedPad() const
virtual void GetRange(Double_t &x1, Double_t &y1, Double_t &x2, Double_t &y2)
Return pad world coordinates range.
Double_t GetUymin() const
virtual void SetBBoxY1(const Int_t y)=0
The color creation and management class.
virtual Bool_t IsBatch() const
Is pad in batch mode ?
void Browse(TBrowser *b)
Browse this collection (called by TBrowser).
virtual Int_t GetPoint(Int_t i, Double_t &x, Double_t &y) const
Get x and y values for point number i.
TObject * GetClickSelected() const
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.
TObject * GetSelected() const
Get selected.
virtual TPoint GetBBoxCenter()=0
virtual Int_t GetMinimumBin() const
Return location of bin with minimum value in the range.
virtual void Clear(Option_t *option="")
Remove all objects from the list.
virtual TObject * WaitPrimitive(const char *pname="", const char *emode="")
Loop and sleep until a primitive with name=pname is found in the pad.
TH1F * GetHistogram() const
Returns a pointer to the histogram used to draw the axis.
virtual void GetPadPar(Double_t &xlow, Double_t &ylow, Double_t &xup, Double_t &yup)
Return lower and upper bounds of the pad in NDC coordinates.
virtual void SetLineStyle(Style_t lstyle)
Set the line style.
void SetPadTopMargin(Float_t margin=0.1)
TH1 * GetHistogram() const
Returns a pointer to the histogram used to draw the axis Takes into account the two following cases...
TVirtualViewer3D * fViewer3D
! Current 3D viewer
virtual void SetBBoxX2(const Int_t x)
Set right hand side of BoundingBox to a value (resize in x direction on right)
Int_t GetLast() const
Return last bin on the axis i.e.
virtual void Draw(Option_t *option="")
Draw this box with its current attributes.
virtual void SetRightMargin(Float_t rightmargin)
Set Pad right margin in fraction of the pad width.
virtual Style_t GetLineStyle() const =0
Double_t fXlowNDC
X bottom left corner of pad in NDC [0,1].
Float_t fRightMargin
RightMargin.
Mother of all ROOT objects.
Bool_t fFixedAspectRatio
True if fixed aspect ratio.
void Clear(Option_t *option="")
Delete all pad primitives.
Int_t GetArrayDim() const
Return number of array dimensions.
virtual TObject * First() const
Return the first object in the list. Returns 0 when list is empty.
virtual Int_t ClipPolygon(Int_t n, Double_t *x, Double_t *y, Int_t nn, Double_t *xc, Double_t *yc, Double_t xclipl, Double_t yclipb, Double_t xclipr, Double_t yclipt)
Clip polygon using the Sutherland-Hodgman algorithm.
static Int_t IncreaseDirLevel()
Increase the indentation level for ls().
virtual void SetDoubleBuffer(Int_t mode=1)
Set Double Buffer On/Off.
virtual TVirtualPad * GetPad(Int_t subpadnumber) const
Get a pointer to subpadnumber of this pad.
virtual void DrawPolyMarker(Int_t n, const Double_t *x, const Double_t *y)=0
virtual void Browse(TBrowser *b)
Browse pad.
TList * GetListOfPrimitives() const
virtual void RecordPave(const TObject *obj)
Emit RecordPave() signal.
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.
Int_t YtoPixel(Double_t y) const
Abstract base class for elements drawn in the editor.
virtual void Divide(Int_t nx=1, Int_t ny=1, Float_t xmargin=0.01, Float_t ymargin=0.01, Int_t color=0)
Automatic pad generation by division.
virtual Int_t FindFixBin(Double_t x) const
Find bin number corresponding to abscissa x.
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 void ReleaseViewer3D(Option_t *type="")
Release current (external) viewer.
virtual void SetBBoxCenterX(const Int_t x)=0
Int_t GetCanvasID() const
Get canvas identifier.
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.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
void PaintPolyLine3D(Int_t n, Double_t *p)
Paint 3-D polyline in the CurrentPad.
virtual void Paint(Option_t *option="")
Paint this wbox with its current attributes.
Each ROOT class (see TClass) has a linked list of methods.
virtual void GetRange(Float_t *min, Float_t *max)=0
static void SetGrayscale(Bool_t set=kTRUE)
Set whether all colors should return grayscale values.
A Graph is a graphics object made of two arrays X and Y with npoints each.
Int_t GetPadBorderMode() const
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)
virtual void DrawPS(Int_t n, Float_t *xw, Float_t *yw)=0
Width_t GetFrameLineWidth() const
Double_t fHNDC
Height of pad along Y in NDC.
R__EXTERN TVirtualPS * gVirtualPS
TVirtualPad * GetSelectedPad() const
virtual void InvalidateCS()
Empty definition.
virtual TText * DrawText(Double_t x, Double_t y, const char *text)
Draw this text with new coordinates.
Double_t AbsPixeltoX(Int_t px)
virtual void SetTextColor(Color_t tcolor=1)
Set the text color.
virtual TObject * CreateToolTip(const TBox *b, const char *text, Long_t delayms)
Create a tool tip and return its pointer.
virtual void EndScene()=0
virtual void Pop()
Pop pad to the top of the stack.
static Bool_t ContainsTImage(TList *li)
Auxiliary function.
virtual void SetAttTextPS(Int_t align, Float_t angle, Color_t color, Style_t font, Float_t tsize)
Set postscript text attributes.
TObject * fPadPointer
! free pointer
virtual Rectangle_t GetBBox()
Return the bounding Box of the Pad.
Bool_t GetPadGridY() const
void SetPadTickY(Int_t ticky)
Style_t GetTitleFont(Option_t *axis="X") const
Return title font.
void SetBatch(Bool_t batch=kTRUE)
Toggle batch mode.
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 IsVertical() const
virtual Bool_t ExpandPathName(TString &path)
Expand a pathname getting rid of special shell characters like ~.
TExec is a utility class that can be used to execute a C++ command when some event happens in a pad...
virtual void HandleInput(EEventType button, Int_t x, Int_t y)
Handle Input Events.
Double_t Sqrt(Double_t x)
virtual void SetTextSize(Float_t tsize=1)
Set the text size.
virtual void Update()
Update canvas pad buffers.
Draw all kinds of Arrows.
Double_t fY1
Y of lower Y coordinate.
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
Int_t fGLDevice
! OpenGL off-screen pixmap identifier
Float_t GetPadTopMargin() const
RooCmdArg FillStyle(Style_t style)
void SetPadRightMargin(Float_t margin=0.1)
static void SetMaxPickDistance(Int_t maxPick=5)
static function to set the maximum Pick Distance fgMaxPickDistance This parameter is used in TPad::Pi...
virtual void ClearDrawable()=0
const char * AsString() const
Return the date & time as a string (ctime() format).
void PaintFillAreaHatches(Int_t n, Double_t *x, Double_t *y, Int_t FillStyle)
This function paints hatched fill area according to the FillStyle value The convention for the Hatch ...
virtual Double_t GetMaximum(Double_t maxval=FLT_MAX) const
Return maximum value smaller than maxval of bins in the range, unless the value has been overridden b...
virtual Width_t GetLineWidth() const
Return the line width.
virtual void SetLogz(Int_t value=1)
Set Lin/Log scale for Z.
Double_t fX1
X of lower X coordinate.
Int_t GetPixmapID() const
static void Pave(Int_t event, Int_t px, Int_t py, Int_t mode)
Create a new pavetext in gPad.
void SetPadGridY(Bool_t gridy)
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
TObject * fTip
! tool tip associated with box
TList * GetListOfMethods(Bool_t load=kTRUE)
Return list containing the TMethods of a class.
virtual void SetFillStyle(Style_t fstyle)=0
Color_t GetHighLightColor() const
Get highlight color.
virtual void SetY1(Double_t y1)
virtual void x3d(Option_t *type="")
Deprecated: use TPad::GetViewer3D() instead.
void PaintLine(Double_t x1, Double_t y1, Double_t x2, Double_t y2)
Paint line in CurrentPad World coordinates.
virtual TObject * FindObject(const char *name) const
Must be redefined in derived classes.
Double_t AbsPixeltoY(Int_t py)
Short_t GetBorderMode() const
double norm(double *x, double *p)
Int_t VtoPixel(Double_t v) const
Double_t fUxmin
Minimum value on the X axis.
virtual void CopyDrawable(Int_t device, Int_t px, Int_t py)=0
Int_t fTicky
Set to 1 if tick marks along Y.
virtual UInt_t GetWh() const
Get Wh.
virtual void SetBBoxCenterY(const Int_t y)
Set Y coordinate of the center of the Pad.
virtual void Open(const char *filename, Int_t type=-111)=0
virtual void RangeAxisChanged()
virtual Color_t GetLineColor() const =0
void Modified(Bool_t flag=1)
virtual Double_t GetMinimum(Double_t minval=-FLT_MAX) const
Return minimum value larger than minval of bins in the range, unless the value has been overridden by...
To make it possible to use GL for 2D graphic in a TPad/TCanvas.
static Int_t fgMaxPickDistance
Maximum Pick Distance.
UInt_t GetWh() const
Get Wh.
static void Ellipse(Int_t event, Int_t px, Int_t py, Int_t mode)
Create a new arc/ellipse in this gPad.
virtual void Exec(const char *command="")
Execute the command referenced by this object.
Double_t fUtoPixel
xpixel = fUtoPixelk + fUtoPixel*undc
Short_t GetBorderSize() const
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)
const char * AsSQLString() const
Return the date & time in SQL compatible string format, like: 1997-01-15 20:16:28.
Short_t fBorderMode
Bordermode (-1=down, 0 = no border, 1=up)
Double_t fAbsPixeltoXk
Conversion coefficient for absolute pixel to X World.
void SetObject(TObject *obj)
Int_t fLogy
(=0 if Y linear scale, =1 if log scale)
virtual Version_t ReadVersion(UInt_t *start=0, UInt_t *bcnt=0, const TClass *cl=0)=0
void PaintText(Double_t x, Double_t y, const char *text)
Paint text in CurrentPad World coordinates.
This class stores the date and time with a precision of one second in an unsigned 32 bit word (950130...
Double_t fWNDC
Width of pad along X in NDC.
virtual void SetBBoxCenterY(const Int_t y)=0
Style_t fFillStyle
Fill area style.
virtual Bool_t CanLoopOnPrimitives() const
virtual void RecordLatex(const TObject *obj)
Emit RecordLatex() signal.
virtual void SetLeftMargin(Float_t leftmargin)
Set Pad left margin in fraction of the pad width.
void DrawDist(Rectangle_t aBBox, Rectangle_t bBBox, char mode)
Draw Arrows to indicated equal distances of Objects with given BBoxes.
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save a primitive as a C++ statement(s) on output stream "out".
virtual void SetLogy(Int_t value=1)
Set Lin/Log scale for Y.
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.