54 constexpr Int_t kMaxDiff = 7;
64 }
else if ((px >
px1 + kMaxDiff && px <
px2 - kMaxDiff) &&
TMath::Abs(py -
py2) < kMaxDiff) {
66 }
else if ((px >
px1 + kMaxDiff && px <
px2 - kMaxDiff) &&
TMath::Abs(py -
py1) < kMaxDiff) {
68 }
else if ((py >
py2 + kMaxDiff && py <
py1 - kMaxDiff) &&
TMath::Abs(px -
px1) < kMaxDiff) {
70 }
else if ((py >
py2 + kMaxDiff && py <
py1 - kMaxDiff) &&
TMath::Abs(px -
px2) < kMaxDiff) {
72 }
else if ((px >
px1 + kMaxDiff && px <
px2 - kMaxDiff) && (py >
py2 + kMaxDiff && py <
py1 - kMaxDiff)) {
89 constexpr Int_t kMaxDiff = 7;
97 for (
Int_t i = 0; i < 4; ++i)
134 constexpr Int_t kMinSize = 20;
141 std::swap(px1p, px2p);
143 std::swap(py1p, py2p);
145 enum { noAdjust = 1111, adjWidth = 11, adjBot = -1, adjHeight = 0, adjTop = 1 } choise = noAdjust;
147 prevpy1 =
py1, prevpy2 =
py2;
215 if (!aspectRatio || (choise == noAdjust))
218 if (choise == adjWidth) {
220 Int_t npx1 = (
px1 +
px2) / 2 - dx / 2, npx2 = npx1 + dx;
221 if ((npx1 >= px1p) && (npx2 <= px2p)) {
229 if (choise == adjBot)
231 else if (choise == adjTop)
233 else if (choise == adjHeight) {
234 npy2 = (
py1 +
py2) / 2 - dy / 2;
237 if ((npy1 <= py1p) && (npy2 >= py2p)) {
310 case pTop:
return 't';
311 case pBot:
return 'b';
Option_t Option_t TPoint TPoint const char x2
Option_t Option_t TPoint TPoint const char x1
Option_t Option_t TPoint TPoint const char y2
Option_t Option_t TPoint TPoint const char y1
virtual void ModifyOn(TVirtualPad &pad)
Change current line attributes on specified pad.
char GetGuideChar() const
Return character for selecting guide action.
Bool_t IsOpaque(const TVirtualPad &parent) const
Return selected opaque mode.
void ApplyChanges(TVirtualPad &parent)
Apply pixel coordinates changes back to box coordinates.
Bool_t ProcessMouseMove(const TVirtualPad &parent, Int_t px, Int_t py, Bool_t canX=kTRUE, Bool_t canY=kTRUE, Double_t aspectRatio=0.)
Process change of moue position during dragging.
Bool_t IsResizing() const
Return true if doing resize.
enum TBoxInteractive::EMode fMode
void CalcPixelCoord(const TVirtualPad &parent, Double_t x1, Double_t y1, Double_t x2, Double_t y2)
Calculate pixel coordinates.
Bool_t SelectCorner(Int_t px, Int_t py, Bool_t canX=kTRUE, Bool_t canY=kTRUE)
Select corner or side for the inetarctive action.
TBoxInteractive(Bool_t bx=kTRUE, Double_t x1=0., Double_t y1=0., Double_t x2=0., Double_t y2=0.)
Constructor.
void SetCursor(TVirtualPad &parent, Bool_t is_down) const
Set cursor for current mode.
Bool_t SelectDiamondCorner(Int_t px, Int_t py, Bool_t testInside=kTRUE)
Select diamond corner - or inside area Returns true if any mode was selected Can be reused for diamon...
void PaintDiamondCorners(TVirtualPad &parent, const char *id="idiamond")
Paint diamond corners outline.
virtual void PaintOutline(TVirtualPad &parent)
Paint object outline.
TVirtualPad is an abstract base class for the Pad and Canvas classes.
virtual Double_t PadtoX(Double_t x) const =0
virtual Int_t YtoAbsPixel(Double_t y) const =0
virtual Double_t GetX2() const =0
virtual void UpdateAsync()=0
virtual void PaintPolyMarker(Int_t n, Float_t *x, Float_t *y, Option_t *option="")=0
virtual Double_t AbsPixeltoX(Double_t px)=0
virtual Int_t XtoAbsPixel(Double_t x) const =0
virtual Double_t GetY1() const =0
virtual void PaintBox(Double_t x1, Double_t y1, Double_t x2, Double_t y2, Option_t *option="")=0
virtual Double_t PadtoY(Double_t y) const =0
virtual Double_t YtoPad(Double_t y) const =0
virtual Int_t VtoPixel(Double_t v) const =0
virtual Double_t XtoPad(Double_t x) const =0
virtual Double_t GetY2() const =0
virtual Int_t UtoPixel(Double_t u) const =0
virtual Bool_t OpaqueResizing() const =0
virtual Double_t AbsPixeltoY(Double_t py)=0
virtual void SetCursor(ECursor cursor)=0
virtual Short_t GetBorderSize() const =0
virtual Double_t GetX1() const =0
virtual Bool_t OpaqueMoving() const =0
Short_t Max(Short_t a, Short_t b)
Returns the largest of a and b.
Bool_t IsInside(T xp, T yp, Int_t np, T *x, T *y)
Function which returns kTRUE if point xp,yp lies inside the polygon defined by the np points in array...
Short_t Min(Short_t a, Short_t b)
Returns the smallest of a and b.
Short_t Abs(Short_t d)
Returns the absolute value of parameter Short_t d.