Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
TText.h
Go to the documentation of this file.
1 // @(#)root/graf:$Id$
2 // Author: Nicolas Brun 12/12/94
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
6  * All rights reserved. *
7  * *
8  * For the licensing terms see $ROOTSYS/LICENSE. *
9  * For the list of contributors see $ROOTSYS/README/CREDITS. *
10  *************************************************************************/
11 
12 #ifndef ROOT_TText
13 #define ROOT_TText
14 
15 
16 #include "TAttText.h"
17 #include "TNamed.h"
18 #include "TAttBBox2D.h"
19 #include "TPoint.h"
20 #include "GuiTypes.h"
21 
22 
23 class TText : public TNamed, public TAttText, public TAttBBox2D {
24 
25 protected:
26  Double_t fX{0}; ///< X position of text (left,center,etc..)
27  Double_t fY{0}; ///< Y position of text (left,center,etc..)
28  void *fWcsTitle{nullptr}; ///<!Used by TMathText
29 
30 public:
31  // TText status bits
32  enum {
33  kTextNDC = BIT(14) ///< The text position is in the NDC space
34  };
35 
36  TText() {} // NOLINT: not allowed to use = default because of TObject::kIsOnHeap detection, see ROOT-10300
37  TText(Double_t x, Double_t y, const char *text);
38  TText(Double_t x, Double_t y, const wchar_t *text);
39  TText(const TText &text);
40  virtual ~TText();
41 
42  TText &operator=(const TText &src);
43 
44  void Copy(TObject &text) const;
45  virtual Int_t DistancetoPrimitive(Int_t px, Int_t py);
46  virtual TText *DrawText(Double_t x, Double_t y, const char *text);
47  virtual TText *DrawText(Double_t x, Double_t y, const wchar_t *text);
48  virtual TText *DrawTextNDC(Double_t x, Double_t y, const char *text);
49  virtual TText *DrawTextNDC(Double_t x, Double_t y, const wchar_t *text);
50  virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py);
51 
52  virtual void GetControlBox(Int_t x, Int_t y, Double_t theta,
53  Int_t cBoxX[4], Int_t cBoxY[4]);
54  Double_t GetX() const { return fX; }
55  virtual void GetBoundingBox(UInt_t &w, UInt_t &h, Bool_t angle = kFALSE);
56  virtual void GetTextAscentDescent(UInt_t &a, UInt_t &d, const char *text) const;
57  virtual void GetTextAscentDescent(UInt_t &a, UInt_t &d, const wchar_t *text) const;
58  virtual void GetTextExtent(UInt_t &w, UInt_t &h, const char *text) const;
59  virtual void GetTextExtent(UInt_t &w, UInt_t &h, const wchar_t *text) const;
60  virtual void GetTextAdvance(UInt_t &a, const char *text, const Bool_t kern=kTRUE) const;
61  const void * GetWcsTitle(void) const;
62  Double_t GetY() const { return fY; }
63 
64  virtual void ls(Option_t *option="") const;
65  virtual void Paint(Option_t *option="");
66  virtual void PaintControlBox(Int_t x, Int_t y, Double_t theta);
67  virtual void PaintText(Double_t x, Double_t y, const char *text);
68  virtual void PaintText(Double_t x, Double_t y, const wchar_t *text);
69  virtual void PaintTextNDC(Double_t u, Double_t v, const char *text);
70  virtual void PaintTextNDC(Double_t u, Double_t v, const wchar_t *text);
71  virtual void Print(Option_t *option="") const;
72  virtual void SavePrimitive(std::ostream &out, Option_t *option = "");
73  virtual void SetMbTitle(const wchar_t *title=L"");
74  virtual void SetNDC(Bool_t isNDC=kTRUE);
75  virtual void SetText(Double_t x, Double_t y, const char *text) {fX=x; fY=y; SetTitle(text);} // *MENU* *ARGS={x=>fX,y=>fY,text=>fTitle}
76  virtual void SetText(Double_t x, Double_t y, const wchar_t *text) {fX=x; fY=y; SetMbTitle(text);}
77  virtual void SetX(Double_t x) { fX = x; } // *MENU*
78  virtual void SetY(Double_t y) { fY = y; } // *MENU*
79 
80  virtual Rectangle_t GetBBox();
81  virtual TPoint GetBBoxCenter();
82  virtual void SetBBoxCenter(const TPoint &p);
83  virtual void SetBBoxCenterX(const Int_t x);
84  virtual void SetBBoxCenterY(const Int_t y);
85  virtual void SetBBoxX1(const Int_t x); //Not Implemented
86  virtual void SetBBoxX2(const Int_t x); //Not Implemented
87  virtual void SetBBoxY1(const Int_t y); //Not Implemented
88  virtual void SetBBoxY2(const Int_t y); //Not Implemented
89 
90  ClassDef(TText,3) //Text
91 };
92 
93 #endif