// @(#)root/graf:$Id$ // Author: Otto Schaile 20/11/99 /************************************************************************* * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. * * All rights reserved. * * * * For the licensing terms see $ROOTSYS/LICENSE. * * For the list of contributors see $ROOTSYS/README/CREDITS. * *************************************************************************/ #ifndef ROOT_TCurlyLine #define ROOT_TCurlyLine #include "TPolyLine.h" #include "TAttBBox2D.h" class TPoint; class TCurlyLine : public TPolyLine, public TAttBBox2D { protected: Double_t fX1; ///< start x, center for arc Double_t fY1; ///< start y, center for arc Double_t fX2; ///< end x Double_t fY2; ///< end y Double_t fWaveLength; ///< wavelength of sinusoid in percent of pad height Double_t fAmplitude; ///< amplitude of sinusoid in percent of pad height Int_t fNsteps; ///< used internally (controls precision) Bool_t fIsCurly; ///< true: Gluon, false: Gamma static Double_t fgDefaultWaveLength; ///< default wavelength static Double_t fgDefaultAmplitude; ///< default amplitude static Bool_t fgDefaultIsCurly; ///< default curly type public: TCurlyLine(); TCurlyLine(Double_t x1, Double_t y1, Double_t x2, Double_t y2, Double_t wl = .02, Double_t amp = .01); ~TCurlyLine() override{} virtual void Build(); Int_t DistancetoPrimitive(Int_t px, Int_t py) override; void ExecuteEvent(Int_t event, Int_t px, Int_t py) override; Bool_t GetCurly() const {return fIsCurly;} Double_t GetWaveLength() const{return fWaveLength;} Double_t GetAmplitude() const {return fAmplitude;} Double_t GetStartX() const {return fX1;} Double_t GetEndX() const {return fX2;} Double_t GetStartY() const {return fY1;} Double_t GetEndY() const {return fY2;} virtual void SetCurly(); // *MENU* virtual void SetWavy(); // *MENU* virtual void SetWaveLength(Double_t WaveLength); // *MENU* *ARGS={WaveLength=>fWaveLength} virtual void SetAmplitude(Double_t x); // *MENU* *ARGS={x=>fAmplitude} virtual void SetStartPoint(Double_t x1, Double_t y1); virtual void SetEndPoint (Double_t x2, Double_t y2); void SavePrimitive(std::ostream &out, Option_t * = "") override; static void SetDefaultWaveLength(Double_t WaveLength); static void SetDefaultAmplitude (Double_t Amplitude ); static void SetDefaultIsCurly (Bool_t IsCurly ); static Double_t GetDefaultWaveLength(); static Double_t GetDefaultAmplitude (); static Bool_t GetDefaultIsCurly (); Rectangle_t GetBBox() override; TPoint GetBBoxCenter() override; void SetBBoxCenter(const TPoint &p) override; void SetBBoxCenterX(const Int_t x) override; void SetBBoxCenterY(const Int_t y) override; void SetBBoxX1(const Int_t x) override; void SetBBoxX2(const Int_t x) override; void SetBBoxY1(const Int_t y) override; void SetBBoxY2(const Int_t y) override; ClassDefOverride(TCurlyLine,3) // A curly polyline }; #endif