61 line.TLine::Copy(*
this);
69 src.TLine::Copy(*
this);
91 if (!
gPad)
return 9999;
134 if (!
gPad || !
gPad->IsEditable())
return;
151 x1 = (1. * _x1 / parent->GetWw() - parent->GetAbsXlowNDC()) / parent->GetAbsWNDC();
152 y1 = ((1 - 1. *
_y1 / parent->GetWh()) - parent->GetAbsYlowNDC()) / parent->GetAbsHNDC();
153 x2 = (1. * _x2 / parent->GetWw() - parent->GetAbsXlowNDC()) / parent->GetAbsWNDC();
154 y2 = ((1 - 1. *
_y2 / parent->GetWh()) - parent->GetAbsYlowNDC()) / parent->GetAbsHNDC();
156 x1 = parent->AbsPixeltoX(_x1);
157 y1 = parent->AbsPixeltoY(
_y1);
158 x2 = parent->AbsPixeltoX(_x2);
159 y2 = parent->AbsPixeltoY(
_y2);
162 auto pp = parent->GetPainter();
163 pp->SetAttLine(*
this);
169 if (!
isndc && parent->GetLogx()) {
173 if (!
isndc && parent->GetLogy()) {
215 px1 = parent->UtoAbsPixel(
GetX1());
216 py1 = parent->VtoAbsPixel(
GetY1());
217 px2 = parent->UtoAbsPixel(
GetX2());
218 py2 = parent->VtoAbsPixel(
GetY2());
220 px1 = parent->XtoAbsPixel(parent->XtoPad(
GetX1()));
221 py1 = parent->YtoAbsPixel(parent->YtoPad(
GetY1()));
222 px2 = parent->XtoAbsPixel(parent->XtoPad(
GetX2()));
223 py2 = parent->YtoAbsPixel(parent->YtoPad(
GetY2()));
227 if (abs(px1 - px) + abs(py1 - py) <
kMaxDiff) {
230 }
else if (abs(px2 - px) + abs(py2 - py) <
kMaxDiff) {
237 parent->SetCursor(
kMove);
245 action(0, px1, py1, px2, py2);
265 parent->ShowGuidelines(
this, event,
GetY1() >
GetY2() ?
'2' :
'3',
true);
267 parent->ShowGuidelines(
this, event,
GetY1() >
GetY2() ?
'1' :
'4',
true);
271 parent->ShowGuidelines(
this, event,
GetY1() >
GetY2() ?
'4' :
'1',
true);
273 parent->ShowGuidelines(
this, event,
GetY1() >
GetY2() ?
'3' :
'2',
true);
275 parent->ShowGuidelines(
this, event,
'i',
true);
277 parent->Modified(
kTRUE);
284 if (
gROOT->IsEscaped()) {
291 parent->ShowGuidelines(
this, event);
292 parent->Modified(
kTRUE);
298 parent->ShowGuidelines(
this, event);
301 parent->Modified(
kTRUE);
313 event = parent->GetCanvasImp()->RequestLocator(px, py);
332 Error(
"GetSlope",
"This line is vertical. The slope in undefined");
347 Error(
"GetYIntercept",
"This line is vertical. The Y-Intercept in undefined");
411 SavePrimitiveConstructor(out,
Class(),
"line",
TString::Format(
"%g, %g, %g, %g",
fX1,
fY1,
fX2,
fY2),
kFALSE);
416 out <<
" line->SetNDC();\n";
419 out <<
" line->SetBit(TLine::kVertical);\n";
422 out <<
" line->SetBit(TLine::kHorizontal);\n";
467 else fX2 =
gPad->AbsPixeltoX(px1-
l);
488 else fY2 =
gPad->AbsPixeltoY(py1+
l);
498 if (
R__b.IsReading()) {
544 BBox.fWidth = px2 - px1;
545 BBox.fHeight = py2 - py1;
int Int_t
Signed integer 4 bytes (int)
short Version_t
Class version identifier (short)
float Float_t
Float 4 bytes (float)
const char Option_t
Option string (const char)
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
winID h TVirtualViewer3D TVirtualGLPainter p
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 DrawLine
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t src
Option_t Option_t TPoint TPoint const char y1
Abstract base class for elements drawn in the editor.
virtual void Streamer(TBuffer &)
virtual Color_t GetLineColor() const
Return the line color.
virtual Width_t GetLineWidth() const
Return the line width.
virtual Style_t GetLineStyle() const
Return the line style.
virtual void Modify()
Change current line attributes if necessary.
void Copy(TAttLine &attline) const
Copy this line attributes to a new TAttLine.
Int_t DistancetoLine(Int_t px, Int_t py, Double_t xp1, Double_t yp1, Double_t xp2, Double_t yp2)
Compute distance from point px,py to a line.
virtual void SaveLineAttributes(std::ostream &out, const char *name, Int_t coldef=1, Int_t stydef=1, Int_t widdef=1)
Save line attributes as C++ statement(s) on output stream out.
Buffer base class used for serializing objects.
Use the TLine constructor to create a simple line.
void ls(Option_t *option="") const override
List this line with its attributes.
virtual void SetY2(Double_t y2)
Double_t fY1
Y of 1st point.
Double_t fX1
X of 1st point.
Double_t GetYIntercept() const
Get the Y-Intercept of this TLine.
virtual void SetX2(Double_t x2)
@ kLineNDC
Use NDC coordinates.
@ kHorizontal
Line is horizontal.
@ kVertical
Line is vertical.
Bool_t IsVertical()
Check whether this line is to be drawn vertically.
virtual TLine * DrawLine(Double_t x1, Double_t y1, Double_t x2, Double_t y2)
Draw this line with new coordinates.
void SetBBoxY1(const Int_t y) override
Set top of BoundingBox to a value (resize in y direction on top)
void SetVertical(Bool_t set=kTRUE)
Force the line to be drawn vertically.
virtual void PaintLine(Double_t x1, Double_t y1, Double_t x2, Double_t y2)
Draw this line with new coordinates.
Double_t GetSlope() const
Get the slope of this TLine.
void SetBBoxCenterY(const Int_t y) override
Set Y coordinate of the center of the BoundingBox.
void SetBBoxX2(const Int_t x) override
Set right hand side of BoundingBox to a value (resize in x direction on right)
virtual TLine * DrawLineNDC(Double_t x1, Double_t y1, Double_t x2, Double_t y2)
Draw this line with new coordinates in NDC.
Bool_t IsHorizontal()
Check whether this line is to be drawn horizontally.
void SavePrimitive(std::ostream &out, Option_t *option="") override
Save primitive as a C++ statement(s) on output stream out.
void Copy(TObject &line) const override
Copy this line to line.
void Print(Option_t *option="") const override
Dump this line with its attributes.
Double_t fX2
X of 2nd point.
void SetBBoxX1(const Int_t x) override
Set left hand side of BoundingBox to a value (resize in x direction on left)
void Paint(Option_t *option="") override
Paint this line with its current attributes.
void SetBBoxY2(const Int_t y) override
Set bottom of BoundingBox to a value (resize in y direction on bottom)
Int_t DistancetoPrimitive(Int_t px, Int_t py) override
Compute distance from point px,py to a line.
TPoint GetBBoxCenter() override
Return the center of the BoundingBox as TPoint in pixels.
virtual void SetX1(Double_t x1)
TLine & operator=(const TLine &src)
Assignment operator.
Double_t fY2
Y of 2nd point.
virtual void PaintLineNDC(Double_t u1, Double_t v1, Double_t u2, Double_t v2)
Draw this line with new coordinates in NDC.
void Streamer(TBuffer &) override
Stream an object of class TLine.
void SetBBoxCenterX(const Int_t x) override
Set X coordinate of the center of the BoundingBox.
TClass * IsA() const override
virtual void SetY1(Double_t y1)
virtual void SetNDC(Bool_t isNDC=kTRUE)
Set NDC mode on if isNDC = kTRUE, off otherwise.
void SetBBoxCenter(const TPoint &p) override
Set center of the BoundingBox.
void ExecuteEvent(Int_t event, Int_t px, Int_t py) override
Execute action corresponding to one event.
Rectangle_t GetBBox() override
Return the bounding Box of the Line.
void SetHorizontal(Bool_t set=kTRUE)
Force the line to be drawn horizontally.
Mother of all ROOT objects.
virtual const char * GetName() const
Returns name of object.
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
virtual void Streamer(TBuffer &)
Stream an object of class TObject.
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
virtual void Copy(TObject &object) const
Copy this to obj.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
static void SavePrimitiveDraw(std::ostream &out, const char *variable_name, Option_t *option=nullptr)
Save invocation of primitive Draw() method Skipped if option contains "nodraw" string.
static void SavePrimitiveConstructor(std::ostream &out, TClass *cl, const char *variable_name, const char *constructor_agrs="", Bool_t empty_line=kTRUE)
Save object constructor in the output stream "out".
@ kCanDelete
if object in a list can be deleted
static void IndentLevel()
Functions used by ls() to indent an object hierarchy.
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
Short_t Max(Short_t a, Short_t b)
Returns the largest of a and b.
Double_t Sqrt(Double_t x)
Returns the square root of x.
LongDouble_t Power(LongDouble_t x, LongDouble_t y)
Returns x raised to the power y.
Short_t Min(Short_t a, Short_t b)
Returns the smallest of a and b.
Double_t Infinity()
Returns an infinity as defined by the IEEE standard.
Rectangle structure (maps to the X11 XRectangle structure)