Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
TVirtualPad.h
Go to the documentation of this file.
1 // @(#)root/base:$Id$
2 // Author: Rene Brun 05/12/95
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_TVirtualPad
13 #define ROOT_TVirtualPad
14 
15 
16 //////////////////////////////////////////////////////////////////////////
17 // //
18 // TVirtualPad //
19 // //
20 // Abstract base class for Pads and Canvases //
21 // //
22 // //
23 //////////////////////////////////////////////////////////////////////////
24 
25 #include "TAttPad.h"
26 
27 #include "TVirtualX.h"
28 
29 #include "TString.h"
30 
31 #include "Buttons.h"
32 
33 #include "TQObject.h"
34 
35 // forward declarations
36 class TAxis;
37 class TObject;
38 class TObjLink;
39 class TView;
40 class TCanvas;
41 class TCanvasImp;
42 class TH1F;
43 class TFrame;
44 class TLegend;
45 class TBox;
46 class TVirtualViewer3D;
47 class TVirtualPadPainter;
48 
49 class TVirtualPad : public TObject, public TAttLine, public TAttFill,
50  public TAttPad, public TQObject {
51 
52 protected:
53  Bool_t fResizing; //!true when resizing the pad
54 
55  virtual void *GetSender() { return this; } //used to set gTQSender
56 
57 public:
58  TVirtualPad();
59  TVirtualPad(const char *name, const char *title, Double_t xlow,
60  Double_t ylow, Double_t xup, Double_t yup,
61  Color_t color=19, Short_t bordersize=4, Short_t bordermode=1);
62  virtual ~TVirtualPad();
63  virtual void AbsCoordinates(Bool_t set) = 0;
64  virtual Double_t AbsPixeltoX(Int_t px) = 0;
65  virtual Double_t AbsPixeltoY(Int_t py) = 0;
66  virtual void AddExec(const char *name, const char *command) = 0;
67  virtual TLegend *BuildLegend(Double_t x1=0.3, Double_t y1=0.21, Double_t x2=0.3, Double_t y2=0.21, const char *title="", Option_t *option = "") = 0;
68  virtual TVirtualPad* cd(Int_t subpadnumber=0) = 0;
69  virtual void Clear(Option_t *option="") = 0;
70  virtual Int_t Clip(Double_t *x, Double_t *y, Double_t xclipl, Double_t yclipb, Double_t xclipr, Double_t yclipt) = 0;
71  virtual void Close(Option_t *option="") = 0;
72  virtual void CopyPixmap() = 0;
73  virtual void CopyPixmaps() = 0;
74  virtual void DeleteExec(const char *name) = 0;
75  virtual void Divide(Int_t nx=1, Int_t ny=1, Float_t xmargin=0.01, Float_t ymargin=0.01, Int_t color=0) = 0;
76  virtual void Draw(Option_t *option="") = 0;
77  virtual void DrawClassObject(const TObject *obj, Option_t *option="") = 0;
78  virtual TH1F *DrawFrame(Double_t xmin, Double_t ymin, Double_t xmax, Double_t ymax, const char *title="") = 0;
79  virtual void ExecuteEventAxis(Int_t event, Int_t px, Int_t py, TAxis *axis) = 0;
80  virtual void UnZoomed() { Emit("UnZoomed()"); } // *SIGNAL*
81  virtual Short_t GetBorderMode() const = 0;
82  virtual Short_t GetBorderSize() const = 0;
83  virtual Int_t GetCanvasID() const = 0;
84  virtual TCanvasImp *GetCanvasImp() const = 0;
85  virtual TCanvas *GetCanvas() const = 0;
86  virtual TVirtualPad *GetVirtCanvas() const = 0;
87  virtual Int_t GetEvent() const = 0;
88  virtual Int_t GetEventX() const = 0;
89  virtual Int_t GetEventY() const = 0;
90  virtual TFrame *GetFrame() = 0;
91  virtual Color_t GetHighLightColor() const = 0;
92  virtual Int_t GetNumber() const = 0;
93  virtual void GetRange(Double_t &x1, Double_t &y1, Double_t &x2, Double_t &y2) = 0;
94  virtual void GetRangeAxis(Double_t &xmin, Double_t &ymin, Double_t &xmax, Double_t &ymax) = 0;
95  virtual void GetPadPar(Double_t &xlow, Double_t &ylow, Double_t &xup, Double_t &yup) = 0;
96  virtual Double_t GetXlowNDC() const = 0;
97  virtual Double_t GetYlowNDC() const = 0;
98  virtual Double_t GetWNDC() const = 0;
99  virtual Double_t GetHNDC() const = 0;
100  virtual UInt_t GetWw() const = 0;
101  virtual UInt_t GetWh() const = 0;
102  virtual Double_t GetAbsXlowNDC() const = 0;
103  virtual Double_t GetAbsYlowNDC() const = 0;
104  virtual Double_t GetAbsWNDC() const = 0;
105  virtual Double_t GetAbsHNDC() const = 0;
106  virtual Double_t GetAspectRatio() const = 0;
107  virtual Double_t GetPhi() const = 0;
108  virtual Double_t GetTheta() const = 0;
109  virtual Double_t GetUxmin() const = 0;
110  virtual Double_t GetUymin() const = 0;
111  virtual Double_t GetUxmax() const = 0;
112  virtual Double_t GetUymax() const = 0;
113  virtual Bool_t GetGridx() const = 0;
114  virtual Bool_t GetGridy() const = 0;
115  virtual Int_t GetTickx() const = 0;
116  virtual Int_t GetTicky() const = 0;
117  virtual Double_t GetX1() const = 0;
118  virtual Double_t GetX2() const = 0;
119  virtual Double_t GetY1() const = 0;
120  virtual Double_t GetY2() const = 0;
121  virtual TList *GetListOfPrimitives() const = 0;
122  virtual TList *GetListOfExecs() const = 0;
123  virtual TObject *GetPrimitive(const char *name) const = 0;
124  virtual TObject *GetSelected() const = 0;
125  virtual TVirtualPad *GetPad(Int_t subpadnumber) const = 0;
126  virtual TObject *GetPadPointer() const = 0;
127  virtual TVirtualPad *GetPadSave() const = 0;
128  virtual TVirtualPad *GetSelectedPad() const = 0;
129  virtual TView *GetView() const = 0;
130  virtual Int_t GetLogx() const = 0;
131  virtual Int_t GetLogy() const = 0;
132  virtual Int_t GetLogz() const = 0;
133  virtual TVirtualPad *GetMother() const = 0;
134  virtual const char *GetName() const = 0;
135  virtual const char *GetTitle() const = 0;
136  virtual Int_t GetPadPaint() const = 0;
137  virtual Int_t GetPixmapID() const = 0;
138  virtual TObject *GetView3D() const = 0;
139  virtual Bool_t HasCrosshair() const = 0;
140  virtual void HighLight(Color_t col=kRed, Bool_t set=kTRUE) = 0;
141  virtual Bool_t HasFixedAspectRatio() const = 0;
142  virtual Bool_t IsBatch() const = 0;
143  Bool_t IsBeingResized() const { return fResizing; }
144  virtual Bool_t IsEditable() const = 0;
145  virtual Bool_t IsModified() const = 0;
146  virtual Bool_t IsRetained() const = 0;
147  virtual Bool_t IsVertical() const = 0;
148  virtual void ls(Option_t *option="") const = 0;
149  virtual void Modified(Bool_t flag=1) = 0;
150  virtual Bool_t OpaqueMoving() const = 0;
151  virtual Bool_t OpaqueResizing() const = 0;
152  virtual Double_t PadtoX(Double_t x) const = 0;
153  virtual Double_t PadtoY(Double_t y) const = 0;
154  virtual void Paint(Option_t *option="") = 0;
155  virtual void PaintBorderPS(Double_t xl,Double_t yl,Double_t xt,Double_t yt,Int_t bmode,Int_t bsize,Int_t dark,Int_t light) = 0;
156  virtual void PaintBox(Double_t x1, Double_t y1, Double_t x2, Double_t y2, Option_t *option="") = 0;
157  virtual void PaintFillArea(Int_t n, Float_t *x, Float_t *y, Option_t *option="") = 0;
158  virtual void PaintFillArea(Int_t n, Double_t *x, Double_t *y, Option_t *option="") = 0;
159  virtual void PaintFillAreaNDC(Int_t n, Double_t *x, Double_t *y, Option_t *option="") = 0;
160  virtual void PaintPadFrame(Double_t xmin, Double_t ymin, Double_t xmax, Double_t ymax) = 0;
161  virtual void PaintLine(Double_t x1, Double_t y1, Double_t x2, Double_t y2) = 0;
162  virtual void PaintLineNDC(Double_t u1, Double_t v1,Double_t u2, Double_t v2) = 0;
163  virtual void PaintLine3D(Float_t *p1, Float_t *p2) = 0;
164  virtual void PaintLine3D(Double_t *p1, Double_t *p2) = 0;
165  virtual void PaintPolyLine(Int_t n, Float_t *x, Float_t *y, Option_t *option="") = 0;
166  virtual void PaintPolyLine(Int_t n, Double_t *x, Double_t *y, Option_t *option="") = 0;
167  virtual void PaintPolyLine3D(Int_t n, Double_t *p) = 0;
168  virtual void PaintPolyLineNDC(Int_t n, Double_t *x, Double_t *y, Option_t *option="") = 0;
169  virtual void PaintPolyMarker(Int_t n, Float_t *x, Float_t *y, Option_t *option="") = 0;
170  virtual void PaintPolyMarker(Int_t n, Double_t *x, Double_t *y, Option_t *option="") = 0;
171  virtual void PaintModified() = 0;
172  virtual void PaintText(Double_t x, Double_t y, const char *text) = 0;
173  virtual void PaintText(Double_t x, Double_t y, const wchar_t *text) = 0;
174  virtual void PaintTextNDC(Double_t u, Double_t v, const char *text) = 0;
175  virtual void PaintTextNDC(Double_t u, Double_t v, const wchar_t *text) = 0;
176  virtual Double_t PixeltoX(Int_t px) = 0;
177  virtual Double_t PixeltoY(Int_t py) = 0;
178  virtual void Pop() = 0;
179  virtual void Print(const char *filename="") const = 0;
180  virtual void Print(const char *filename, Option_t *option) = 0;
181  virtual void Range(Double_t x1, Double_t y1, Double_t x2, Double_t y2) = 0;
182  virtual void RangeAxis(Double_t xmin, Double_t ymin, Double_t xmax, Double_t ymax) = 0;
183  virtual void RecursiveRemove(TObject *obj) = 0;
184  virtual void RedrawAxis(Option_t *option="") = 0;
185  virtual void ResetView3D(TObject *view=0) = 0;
186  virtual void ResizePad(Option_t *option="") = 0;
187  virtual void SaveAs(const char *filename="",Option_t *option="") const = 0;
188  virtual void SetBatch(Bool_t batch=kTRUE) = 0;
189  virtual void SetBorderMode(Short_t bordermode) = 0;
190  virtual void SetBorderSize(Short_t bordersize) = 0;
191  virtual void SetCanvas(TCanvas *c) = 0;
192  virtual void SetCanvasSize(UInt_t ww, UInt_t wh) = 0;
193  virtual void SetCrosshair(Int_t crhair=1) = 0;
194  virtual void SetCursor(ECursor cursor) = 0;
195  virtual void SetDoubleBuffer(Int_t mode=1) = 0;
196  virtual void SetEditable(Bool_t mode=kTRUE) = 0;
197  virtual void SetFixedAspectRatio(Bool_t fixed = kTRUE) = 0;
198  virtual void SetGrid(Int_t valuex = 1, Int_t valuey = 1) = 0;
199  virtual void SetGridx(Int_t value = 1) = 0;
200  virtual void SetGridy(Int_t value = 1) = 0;
201  virtual void SetLogx(Int_t value = 1) = 0;
202  virtual void SetLogy(Int_t value = 1) = 0;
203  virtual void SetLogz(Int_t value = 1) = 0;
204  virtual void SetPad(const char *name, const char *title,
205  Double_t xlow, Double_t ylow, Double_t xup,
206  Double_t yup, Color_t color=35,
207  Short_t bordersize=5, Short_t bordermode=-1) = 0;
208  virtual void SetPad(Double_t xlow, Double_t ylow, Double_t xup, Double_t yup) = 0;
209  virtual void SetAttFillPS(Color_t color, Style_t style) = 0;
210  virtual void SetAttLinePS(Color_t color, Style_t style, Width_t lwidth) = 0;
211  virtual void SetAttMarkerPS(Color_t color, Style_t style, Size_t msize) = 0;
212  virtual void SetAttTextPS(Int_t align, Float_t angle, Color_t color, Style_t font, Float_t tsize) = 0;
213  virtual void SetName(const char *name) = 0;
214  virtual void SetSelected(TObject *obj) = 0;
215  virtual void SetTicks(Int_t valuex = 1, Int_t valuey = 1) = 0;
216  virtual void SetTickx(Int_t value = 1) = 0;
217  virtual void SetTicky(Int_t value = 1) = 0;
218  virtual void SetTitle(const char *title="") = 0;
219  virtual void SetTheta(Double_t theta=30) = 0;
220  virtual void SetPhi(Double_t phi=30) = 0;
221  virtual void SetToolTipText(const char *text, Long_t delayms = 1000) = 0;
222  virtual void SetVertical(Bool_t vert=kTRUE) = 0;
223  virtual void SetView(TView *view=0) = 0;
224  virtual void SetViewer3D(TVirtualViewer3D * /*viewer3d*/) {}
225  virtual void ShowGuidelines(TObject *object, const Int_t event, const char mode = 'i', const bool cling = true) = 0;
226  virtual TObject *WaitPrimitive(const char *pname="", const char *emode="") = 0;
227  virtual void Update() = 0;
228  virtual Int_t UtoAbsPixel(Double_t u) const = 0;
229  virtual Int_t VtoAbsPixel(Double_t v) const = 0;
230  virtual Int_t UtoPixel(Double_t u) const = 0;
231  virtual Int_t VtoPixel(Double_t v) const = 0;
232  virtual Int_t XtoAbsPixel(Double_t x) const = 0;
233  virtual Int_t YtoAbsPixel(Double_t y) const = 0;
234  virtual Double_t XtoPad(Double_t x) const = 0;
235  virtual Double_t YtoPad(Double_t y) const = 0;
236  virtual Int_t XtoPixel(Double_t x) const = 0;
237  virtual Int_t YtoPixel(Double_t y) const = 0;
238 
239  virtual Int_t IncrementPaletteColor(Int_t i, TString opt) = 0;
240  virtual Int_t NextPaletteColor() = 0;
241 
242  virtual Bool_t PlaceBox(TObject *o, Double_t w, Double_t h, Double_t &xl, Double_t &yb) = 0;
243 
244  virtual TObject *CreateToolTip(const TBox *b, const char *text, Long_t delayms) = 0;
245  virtual void DeleteToolTip(TObject *tip) = 0;
246  virtual void ResetToolTip(TObject *tip) = 0;
247  virtual void CloseToolTip(TObject *tip) = 0;
248 
249  virtual TVirtualViewer3D *GetViewer3D(Option_t * type = "") = 0;
250  virtual Bool_t HasViewer3D() const = 0;
251  virtual void ReleaseViewer3D(Option_t * type = "") = 0;
252 
253  virtual Int_t GetGLDevice() = 0;
254  virtual void SetCopyGLDevice(Bool_t copy) = 0;
255  virtual TVirtualPadPainter *GetPainter() = 0;
256 
257  virtual Bool_t PadInSelectionMode() const;
258  virtual Bool_t PadInHighlightMode() const;
259 
260  virtual void PushTopLevelSelectable(TObject *top);
261  virtual void PushSelectableObject(TObject *obj);
262  virtual void PopTopLevelSelectable();
263 
264  static TVirtualPad *&Pad();
265 
266  ClassDef(TVirtualPad,3) //Abstract base class for Pads and Canvases
267 };
268 
269 //
270 //Small scope-guard class to add/remove object's into pad's stack of selectable objects.
271 //Does nothing, unless you implement non-standard picking.
272 //
273 
274 class TPickerStackGuard {
275 public:
276  TPickerStackGuard(TObject *obj);
277  ~TPickerStackGuard();
278 
279 private:
280  TPickerStackGuard(const TPickerStackGuard &rhs);
281  TPickerStackGuard &operator = (const TPickerStackGuard &rhs);
282 };
283 
284 
285 #ifndef __CINT__
286 #define gPad (TVirtualPad::Pad())
287 #endif
288 R__EXTERN Int_t (*gThreadXAR)(const char *xact, Int_t nb, void **ar, Int_t *iret);
289 
290 #endif