47 line.TLine::Copy(*
this);
55 src.TLine::Copy(*
this);
122 static Int_t d1,d2,px1,px2,py1,py2;
123 static Int_t pxold, pyold, px1old, py1old, px2old, py2old;
124 static Double_t oldX1, oldY1, oldX2, oldY2;
125 static Bool_t p1, p2, pL, ndcsav;
131 if (!
gPad->IsEditable())
return;
164 d1 = abs(px1 - px) + abs(py1-py);
166 px1old = px1; py1old = py1;
171 d2 = abs(px2 - px) + abs(py2-py);
173 px2old = px2; py2old = py2;
180 pxold = px; pyold = py;
190 gVirtualX->DrawLine(px1old, py1old, px2, py2);
202 gVirtualX->DrawLine(px1, py1, px2old, py2old);
213 if (!opaque)
gVirtualX->DrawLine(px1, py1, px2, py2);
214 dx = px-pxold; dy = py-pyold;
215 px1 += dx; py1 += dy; px2 += dx; py2 += dy;
216 if (!opaque)
gVirtualX->DrawLine(px1, py1, px2, py2);
232 gPad->ShowGuidelines(
this, event,
'2',
true);
234 gPad->ShowGuidelines(
this, event,
'3',
true);
237 gPad->ShowGuidelines(
this, event,
'1',
true);
239 gPad->ShowGuidelines(
this, event,
'4',
true);
246 gPad->ShowGuidelines(
this, event,
'4',
true);
248 gPad->ShowGuidelines(
this, event,
'1',
true);
251 gPad->ShowGuidelines(
this, event,
'3',
true);
253 gPad->ShowGuidelines(
this, event,
'2',
true);
257 gPad->ShowGuidelines(
this, event,
'i',
true);
266 if (
gROOT->IsEscaped()) {
286 gPad->ShowGuidelines(
this, event);
289 dpx =
gPad->GetX2() -
gPad->GetX1();
290 dpy =
gPad->GetY2() -
gPad->GetY1();
294 fX1 = (
gPad->AbsPixeltoX(px)-xp1)/dpx;
295 fY1 = (
gPad->AbsPixeltoY(py)-yp1)/dpy;
298 fX2 = (
gPad->AbsPixeltoX(px)-xp1)/dpx;
299 fY2 = (
gPad->AbsPixeltoY(py)-yp1)/dpy;
302 fX1 = (
gPad->AbsPixeltoX(px1)-xp1)/dpx;
303 fY1 = (
gPad->AbsPixeltoY(py1)-yp1)/dpy;
304 fX2 = (
gPad->AbsPixeltoX(px2)-xp1)/dpx;
305 fY2 = (
gPad->AbsPixeltoY(py2)-yp1)/dpy;
333 if (!opaque)
gVirtualX->SetLineColor(-1);
342 event =
gVirtualX->RequestLocator(1,1,px,py);
387 gPad->PaintLineNDC(u1,v1,u2,v2);
412 out<<
"line = new TLine("<<
fX1<<
","<<
fY1<<
","<<
fX2<<
","<<
fY2
417 out<<
" line->Draw();"<<std::endl;
461 else fX2 =
gPad->AbsPixeltoX(px1-
l);
482 else fY2 =
gPad->AbsPixeltoY(py1+
l);
490void TLine::Streamer(
TBuffer &R__b)
500 TObject::Streamer(R__b);
501 TAttLine::Streamer(R__b);
504 R__b >> y1;
fY1 = y1;
506 R__b >> y2;
fY2 = y2;
519 Int_t px1, py1, px2, py2;
526 if (px1>px2) { tmp = px1; px1 = px2; px2 = tmp;}
527 if (py1>py2) { tmp = py1; py1 = py2; py2 = tmp;}
static const double x2[5]
static const double x1[5]
Abstract base class for elements drawn in the editor.
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.
virtual Int_t ReadClassBuffer(const TClass *cl, void *pointer, const TClass *onfile_class=0)=0
virtual Version_t ReadVersion(UInt_t *start=0, UInt_t *bcnt=0, const TClass *cl=0)=0
virtual Int_t WriteClassBuffer(const TClass *cl, void *pointer)=0
virtual void SetY2(Double_t y2)
virtual void SetBBoxCenterX(const Int_t x)
Set X coordinate of the center of the BoundingBox.
Double_t fY1
Y of 1st point.
Double_t fX1
X of 1st point.
virtual void SetX2(Double_t x2)
Bool_t IsVertical()
Check whether this line is to be drawn vertically.
virtual void ls(Option_t *option="") const
List this line with its attributes.
virtual TLine * DrawLine(Double_t x1, Double_t y1, Double_t x2, Double_t y2)
Draw this line with new coordinates.
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.
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
Compute distance from point px,py to a line.
virtual void SetBBoxCenter(const TPoint &p)
Set center of the BoundingBox.
virtual Rectangle_t GetBBox()
Return the bounding Box of the Line.
virtual TLine * DrawLineNDC(Double_t x1, Double_t y1, Double_t x2, Double_t y2)
Draw this line with new coordinates in NDC.
virtual void Print(Option_t *option="") const
Dump this line with its attributes.
virtual void SetBBoxX2(const Int_t x)
Set right hand side of BoundingBox to a value (resize in x direction on right)
Bool_t IsHorizontal()
Check whether this line is to be drawn horizontally.
Double_t fX2
X of 2nd point.
virtual void SetBBoxY1(const Int_t y)
Set top of BoundingBox to a value (resize in y direction on top)
virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py)
Execute action corresponding to one event.
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.
virtual void SetBBoxCenterY(const Int_t y)
Set Y coordinate of the center of the BoundingBox.
virtual void SetBBoxY2(const Int_t y)
Set bottom of BoundingBox to a value (resize in y direction on bottom)
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save primitive as a C++ statement(s) on output stream out.
void Copy(TObject &line) const
Copy this line to line.
virtual void SetY1(Double_t y1)
virtual void SetBBoxX1(const Int_t x)
Set left hand side of BoundingBox to a value (resize in x direction on left)
virtual void SetNDC(Bool_t isNDC=kTRUE)
Set NDC mode on if isNDC = kTRUE, off otherwise.
virtual TPoint GetBBoxCenter()
Return the center of the BoundingBox as TPoint in pixels.
@ kLineNDC
Use NDC coordinates.
@ kHorizontal
Line is horizontal.
@ kVertical
Line is vertical.
void SetHorizontal(Bool_t set=kTRUE)
Force the line to be drawn horizontally.
virtual void Paint(Option_t *option="")
Paint this line with its current attributes.
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 AppendPad(Option_t *option="")
Append graphics object to current pad.
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.
@ kCanDelete
if object in a list can be deleted
static void IndentLevel()
Functions used by ls() to indent an object hierarchy.
Short_t Max(Short_t a, Short_t b)
Double_t Sqrt(Double_t x)
Short_t Min(Short_t a, Short_t b)