60 if (y2 >= y1) {
fY1 =y1;
fY2 = y2;}
122 ((
TBox&)obj).fTip = 0;
137 Int_t pxl, pyl, pxt, pyt;
146 if (
gPad->GetLogx()) {
150 if (
gPad->GetLogy()) {
156 if (px1 < px2) {pxl = px1; pxt = px2;}
157 else {pxl = px2; pxt = px1;}
158 if (py1 < py2) {pyl = py1; pyt = py2;}
159 else {pyl = py2; pyt = py1;}
163 if ( (px >= pxl && px <= pxt) && (py >= pyl && py <= pyt) )
return 0;
169 if (py < pyl) dxl += pyl - py;
170 if (py > pyt) dxl += py - pyt;
172 if (py < pyl) dxt += pyl - py;
173 if (py > pyt) dxt += py - pyt;
175 if (px < pxl) dyl += pxl - px;
176 if (px > pxt) dyl += px - pxt;
178 if (px < pxl) dyt += pxl - px;
179 if (px > pxt) dyt += px - pxt;
181 Int_t distance = dxl;
182 if (dxt < distance) distance = dxt;
183 if (dyl < distance) distance = dyl;
184 if (dyt < distance) distance = dyt;
240 const Int_t kMaxDiff = 7;
241 const Int_t kMinSize = 20;
243 static Int_t px1, px2, py1, py2, pxl, pyl, pxt, pyt, pxold, pyold;
244 static Int_t px1p, px2p, py1p, py2p, pxlp, pylp, pxtp, pytp;
245 static Double_t oldX1, oldY1, oldX2, oldY2;
246 static Bool_t pA, pB, pC, pD, pTop, pL, pR, pBot, pINSIDE;
289 if (
gPad->GetLogx()) {
293 if (
gPad->GetLogy()) {
334 pA = pB = pC = pD = pTop = pL = pR = pBot = pINSIDE =
kFALSE;
338 pxold = pxl; pyold = pyl; pA =
kTRUE;
343 pxold = pxt; pyold = pyl; pB =
kTRUE;
348 pxold = pxt; pyold = pyt; pC =
kTRUE;
353 pxold = pxl; pyold = pyt; pD =
kTRUE;
357 if ((px > pxl+kMaxDiff && px < pxt-kMaxDiff) &&
359 pxold = pxl; pyold = pyl; pTop =
kTRUE;
363 if ((px > pxl+kMaxDiff && px < pxt-kMaxDiff) &&
365 pxold = pxt; pyold = pyt; pBot =
kTRUE;
369 if ((py > pyl+kMaxDiff && py < pyt-kMaxDiff) &&
371 pxold = pxl; pyold = pyl; pL =
kTRUE;
375 if ((py > pyl+kMaxDiff && py < pyt-kMaxDiff) &&
377 pxold = pxt; pyold = pyt; pR =
kTRUE;
381 if ((px > pxl+kMaxDiff && px < pxt-kMaxDiff) &&
382 (py > pyl+kMaxDiff && py < pyt-kMaxDiff)) {
383 pxold = px; pyold = py; pINSIDE =
kTRUE;
391 if (pA || pB || pC || pD || pTop || pL || pR || pBot)
394 if (!pA && !pB && !pC && !pD && !pTop && !pL && !pR && !pBot && !pINSIDE)
406 if (px > pxt-kMinSize) { px = pxt-kMinSize; wx = px; }
407 if (py > pyt-kMinSize) { py = pyt-kMinSize; wy = py; }
408 if (px < pxlp) { px = pxlp; wx = px; }
409 if (py < pylp) { py = pylp; wy = py; }
414 if (px < pxl+kMinSize) { px = pxl+kMinSize; wx = px; }
415 if (py > pyt-kMinSize) { py = pyt-kMinSize; wy = py; }
416 if (px > pxtp) { px = pxtp; wx = px; }
417 if (py < pylp) { py = pylp; wy = py; }
422 if (px < pxl+kMinSize) { px = pxl+kMinSize; wx = px; }
423 if (py < pyl+kMinSize) { py = pyl+kMinSize; wy = py; }
424 if (px > pxtp) { px = pxtp; wx = px; }
425 if (py > pytp) { py = pytp; wy = py; }
430 if (px > pxt-kMinSize) { px = pxt-kMinSize; wx = px; }
431 if (py < pyl+kMinSize) { py = pyl+kMinSize; wy = py; }
432 if (px < pxlp) { px = pxlp; wx = px; }
433 if (py > pytp) { py = pytp; wy = py; }
439 if (py2 > py1-kMinSize) { py2 = py1-kMinSize; wy = py2; }
440 if (py2 < py2p) { py2 = py2p; wy = py2; }
446 if (py1 < py2+kMinSize) { py1 = py2+kMinSize; wy = py1; }
447 if (py1 > py1p) { py1 = py1p; wy = py1; }
453 if (px1 > px2-kMinSize) { px1 = px2-kMinSize; wx = px1; }
454 if (px1 < px1p) { px1 = px1p; wx = px1; }
460 if (px2 < px1+kMinSize) { px2 = px1+kMinSize; wx = px2; }
461 if (px2 > px2p) { px2 = px2p; wx = px2; }
466 Int_t dx = px - pxold;
467 Int_t dy = py - pyold;
468 px1 += dx; py1 += dy; px2 += dx; py2 += dy;
469 if (px1 < px1p) { dx = px1p - px1; px1 += dx; px2 += dx; wx = px+dx; }
470 if (px2 > px2p) { dx = px2 - px2p; px1 -= dx; px2 -= dx; wx = px-dx; }
471 if (py1 > py1p) { dy = py1 - py1p; py1 -= dy; py2 -= dy; wy = py-dy; }
472 if (py2 < py2p) { dy = py2p - py2; py1 += dy; py2 += dy; wy = py+dy; }
486 if ((pINSIDE && opaque) || (
fResizing && ropaque)) {
488 fX1 =
gPad->AbsPixeltoX(pxold);
491 fY2 =
gPad->AbsPixeltoY(pyold);
496 fX2 =
gPad->AbsPixeltoX(pxold);
497 fY2 =
gPad->AbsPixeltoY(pyold);
501 fY1 =
gPad->AbsPixeltoY(pyold);
502 fX2 =
gPad->AbsPixeltoX(pxold);
506 fX1 =
gPad->AbsPixeltoX(pxold);
507 fY1 =
gPad->AbsPixeltoY(pyold);
511 if (pTop || pBot || pL || pR || pINSIDE) {
519 if (
gPad->GetLogx()) {
523 if (
gPad->GetLogy()) {
529 if (pINSIDE)
gPad->ShowGuidelines(
this, event,
'i',
true);
530 if (pTop)
gPad->ShowGuidelines(
this, event,
't',
true);
531 if (pBot)
gPad->ShowGuidelines(
this, event,
'b',
true);
532 if (pL)
gPad->ShowGuidelines(
this, event,
'l',
true);
533 if (pR)
gPad->ShowGuidelines(
this, event,
'r',
true);
534 if (pA)
gPad->ShowGuidelines(
this, event,
'1',
true);
535 if (pB)
gPad->ShowGuidelines(
this, event,
'2',
true);
536 if (pC)
gPad->ShowGuidelines(
this, event,
'3',
true);
537 if (pD)
gPad->ShowGuidelines(
this, event,
'4',
true);
544 if (
gROOT->IsEscaped()) {
557 if (opaque || ropaque) {
558 gPad->ShowGuidelines(
this, event);
562 fX1 =
gPad->AbsPixeltoX(pxold);
565 fY2 =
gPad->AbsPixeltoY(pyold);
570 fX2 =
gPad->AbsPixeltoX(pxold);
571 fY2 =
gPad->AbsPixeltoY(pyold);
575 fY1 =
gPad->AbsPixeltoY(pyold);
576 fX2 =
gPad->AbsPixeltoX(pxold);
580 fX1 =
gPad->AbsPixeltoX(pxold);
581 fY1 =
gPad->AbsPixeltoY(pyold);
585 if (pTop || pBot || pL || pR || pINSIDE) {
593 if (
gPad->GetLogx()) {
597 if (
gPad->GetLogy()) {
609 if (pA || pB || pC || pD || pTop || pL || pR || pBot)
gPad->Modified(
kTRUE);
624 event =
gVirtualX->RequestLocator(1, 1, px, py);
652 if (x < fX1 || x >
fX2)
return 0;
653 if (y < fY1 || y >
fY2)
return 0;
716 out<<
"box = new TBox("<<
fX1<<
","<<
fY1<<
","<<
fX2<<
","<<
fY2<<
");"<<std::endl;
721 out<<
" box->Draw();"<<std::endl;
732 Warning(
"SetToolTipText",
"a canvas must exist before setting the tool tip text");
748 void TBox::Streamer(
TBuffer &R__b)
758 TObject::Streamer(R__b);
759 TAttLine::Streamer(R__b);
760 TAttFill::Streamer(R__b);
763 R__b >> y1;
fY1 = y1;
765 R__b >> y2;
fY2 = y2;
780 Int_t px1, py1, px2, py2;
787 if (px1>px2) { tmp = px1; px1 = px2; px2 = tmp;}
788 if (py1>py2) { tmp = py1; py1 = py2; py2 = tmp;}
804 if (!
gPad)
return (p);