File indexing completed on 2025-12-15 10:30:28
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 #ifndef ROOT_TVirtualPad
0013 #define ROOT_TVirtualPad
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026 #include "TObject.h"
0027 #include "TAttLine.h"
0028 #include "TAttFill.h"
0029 #include "TAttPad.h"
0030 #include "TQObject.h"
0031
0032 #include "GuiTypes.h"
0033 #include "TString.h"
0034 #include "Buttons.h"
0035
0036
0037 class TAxis;
0038 class TObject;
0039 class TObjLink;
0040 class TView;
0041 class TCanvas;
0042 class TCanvasImp;
0043 class TH1F;
0044 class TFrame;
0045 class TLegend;
0046 class TBox;
0047 class TVirtualViewer3D;
0048 class TVirtualPadPainter;
0049
0050 class TVirtualPad : public TObject, public TAttLine, public TAttFill,
0051 public TAttPad, public TQObject {
0052
0053 protected:
0054 Bool_t fResizing;
0055
0056 void *GetSender() override { return this; }
0057
0058 public:
0059
0060
0061 class TContext {
0062 Bool_t fInteractive{kFALSE};
0063 TVirtualPad *fSaved{nullptr};
0064 public:
0065 TContext(Bool_t _interactive = kFALSE);
0066 TContext(TVirtualPad *gpad, Bool_t interactive = kFALSE, Bool_t not_null = kFALSE);
0067 ~TContext();
0068 auto IsInteractive() const { return fInteractive; }
0069 auto GetSaved() const { return fSaved; }
0070 void PadDeleted(TVirtualPad *pad);
0071 };
0072
0073
0074 TVirtualPad();
0075 TVirtualPad(const char *name, const char *title, Double_t xlow,
0076 Double_t ylow, Double_t xup, Double_t yup,
0077 Color_t color=19, Short_t bordersize=4, Short_t bordermode=1);
0078 virtual ~TVirtualPad();
0079 virtual void AbsCoordinates(Bool_t set) = 0;
0080 virtual Double_t AbsPixeltoX(Double_t px) = 0;
0081 virtual Double_t AbsPixeltoY(Double_t py) = 0;
0082 virtual void AbsPixeltoXY(Double_t xpixel, Double_t ypixel, Double_t &x, Double_t &y) = 0;
0083 virtual void Add(TObject *obj, Option_t *opt = "", Bool_t modified = kTRUE) = 0;
0084 virtual void AddFirst(TObject *obj, Option_t *opt = "", Bool_t modified = kTRUE) = 0;
0085 virtual void AddExec(const char *name, const char *command) = 0;
0086 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;
0087 virtual TVirtualPad* cd(Int_t subpadnumber=0) = 0;
0088 void Clear(Option_t *option="") override = 0;
0089 virtual Int_t Clip(Double_t *x, Double_t *y, Double_t xclipl, Double_t yclipb, Double_t xclipr, Double_t yclipt) = 0;
0090 virtual void Close(Option_t *option="") = 0;
0091 virtual void CopyPixmap() = 0;
0092 virtual void CopyPixmaps() = 0;
0093 virtual void DeleteExec(const char *name) = 0;
0094 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;
0095 void Draw(Option_t *option="") override = 0;
0096 virtual void DrawClassObject(const TObject *obj, Option_t *option="") = 0;
0097 virtual TH1F *DrawFrame(Double_t xmin, Double_t ymin, Double_t xmax, Double_t ymax, const char *title="") = 0;
0098 virtual void ExecuteEventAxis(Int_t event, Int_t px, Int_t py, TAxis *axis) = 0;
0099 virtual void UnZoomed() { Emit("UnZoomed()"); }
0100 virtual Short_t GetBorderMode() const = 0;
0101 virtual Short_t GetBorderSize() const = 0;
0102 virtual Int_t GetCanvasID() const = 0;
0103 virtual TCanvasImp *GetCanvasImp() const = 0;
0104 virtual TCanvas *GetCanvas() const = 0;
0105 virtual TVirtualPad *GetVirtCanvas() const = 0;
0106 virtual Int_t GetEvent() const = 0;
0107 virtual Int_t GetEventX() const = 0;
0108 virtual Int_t GetEventY() const = 0;
0109 virtual TFrame *GetFrame() = 0;
0110 virtual Color_t GetHighLightColor() const = 0;
0111 virtual Int_t GetNumber() const = 0;
0112 virtual void GetRange(Double_t &x1, Double_t &y1, Double_t &x2, Double_t &y2) = 0;
0113 virtual void GetRangeAxis(Double_t &xmin, Double_t &ymin, Double_t &xmax, Double_t &ymax) = 0;
0114 virtual void GetPadPar(Double_t &xlow, Double_t &ylow, Double_t &xup, Double_t &yup) = 0;
0115 virtual Double_t GetXlowNDC() const = 0;
0116 virtual Double_t GetYlowNDC() const = 0;
0117 virtual Double_t GetWNDC() const = 0;
0118 virtual Double_t GetHNDC() const = 0;
0119 virtual UInt_t GetWw() const = 0;
0120 virtual UInt_t GetWh() const = 0;
0121 virtual Double_t GetAbsXlowNDC() const = 0;
0122 virtual Double_t GetAbsYlowNDC() const = 0;
0123 virtual Double_t GetAbsWNDC() const = 0;
0124 virtual Double_t GetAbsHNDC() const = 0;
0125 virtual Double_t GetAspectRatio() const = 0;
0126 virtual Double_t GetPhi() const = 0;
0127 virtual Double_t GetTheta() const = 0;
0128 virtual Double_t GetUxmin() const = 0;
0129 virtual Double_t GetUymin() const = 0;
0130 virtual Double_t GetUxmax() const = 0;
0131 virtual Double_t GetUymax() const = 0;
0132 virtual Bool_t GetGridx() const = 0;
0133 virtual Bool_t GetGridy() const = 0;
0134 virtual Int_t GetTickx() const = 0;
0135 virtual Int_t GetTicky() const = 0;
0136 virtual Double_t GetX1() const = 0;
0137 virtual Double_t GetX2() const = 0;
0138 virtual Double_t GetY1() const = 0;
0139 virtual Double_t GetY2() const = 0;
0140 virtual TList *GetListOfPrimitives() const = 0;
0141 virtual TList *GetListOfExecs() const = 0;
0142 virtual TObject *GetPrimitive(const char *name) const = 0;
0143 virtual TObject *GetSelected() const = 0;
0144 virtual TVirtualPad *GetPad(Int_t subpadnumber) const = 0;
0145 virtual TObject *GetPadPointer() const = 0;
0146 virtual TVirtualPad *GetPadSave() const = 0;
0147 virtual TVirtualPad *GetSelectedPad() const = 0;
0148 virtual TView *GetView() const = 0;
0149 virtual Int_t GetLogx() const = 0;
0150 virtual Int_t GetLogy() const = 0;
0151 virtual Int_t GetLogz() const = 0;
0152 virtual TVirtualPad *GetMother() const = 0;
0153 const char *GetName() const override = 0;
0154 const char *GetTitle() const override = 0;
0155 virtual Int_t GetPadPaint() const = 0;
0156 virtual Int_t GetPixmapID() const = 0;
0157 virtual TObject *GetView3D() const = 0;
0158 virtual Bool_t HasCrosshair() const = 0;
0159 virtual void HighLight(Color_t col=kRed, Bool_t set=kTRUE) = 0;
0160 virtual Bool_t HasFixedAspectRatio() const = 0;
0161 virtual Bool_t IsBatch() const = 0;
0162 Bool_t IsBeingResized() const { return fResizing; }
0163 virtual Bool_t IsEditable() const = 0;
0164 virtual Bool_t IsModified() const = 0;
0165 virtual Bool_t IsRetained() const = 0;
0166 virtual Bool_t IsVertical() const = 0;
0167 virtual Bool_t IsWeb() const { return kFALSE; }
0168 void ls(Option_t *option="") const override = 0;
0169 virtual void Modified(Bool_t flag=1) = 0;
0170 virtual void ModifiedUpdate() = 0;
0171 virtual Bool_t OpaqueMoving() const = 0;
0172 virtual Bool_t OpaqueResizing() const = 0;
0173 virtual Double_t PadtoX(Double_t x) const = 0;
0174 virtual Double_t PadtoY(Double_t y) const = 0;
0175 void Paint(Option_t *option="") override = 0;
0176 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;
0177 virtual void PaintBox(Double_t x1, Double_t y1, Double_t x2, Double_t y2, Option_t *option="") = 0;
0178 virtual void PaintFillArea(Int_t n, Float_t *x, Float_t *y, Option_t *option="") = 0;
0179 virtual void PaintFillArea(Int_t n, Double_t *x, Double_t *y, Option_t *option="") = 0;
0180 virtual void PaintFillAreaNDC(Int_t n, Double_t *x, Double_t *y, Option_t *option="") = 0;
0181 virtual void PaintPadFrame(Double_t xmin, Double_t ymin, Double_t xmax, Double_t ymax) = 0;
0182 virtual void PaintLine(Double_t x1, Double_t y1, Double_t x2, Double_t y2) = 0;
0183 virtual void PaintLineNDC(Double_t u1, Double_t v1,Double_t u2, Double_t v2) = 0;
0184 virtual void PaintLine3D(Float_t *p1, Float_t *p2) = 0;
0185 virtual void PaintLine3D(Double_t *p1, Double_t *p2) = 0;
0186 virtual void PaintPolyLine(Int_t n, Float_t *x, Float_t *y, Option_t *option="") = 0;
0187 virtual void PaintPolyLine(Int_t n, Double_t *x, Double_t *y, Option_t *option="") = 0;
0188 virtual void PaintPolyLine3D(Int_t n, Double_t *p) = 0;
0189 virtual void PaintPolyLineNDC(Int_t n, Double_t *x, Double_t *y, Option_t *option="") = 0;
0190 virtual void PaintPolyMarker(Int_t n, Float_t *x, Float_t *y, Option_t *option="") = 0;
0191 virtual void PaintPolyMarker(Int_t n, Double_t *x, Double_t *y, Option_t *option="") = 0;
0192 virtual void PaintMarker3D(Double_t x, Double_t y, Double_t z) = 0;
0193 virtual void PaintModified() = 0;
0194 virtual void PaintText(Double_t x, Double_t y, const char *text) = 0;
0195 virtual void PaintText(Double_t x, Double_t y, const wchar_t *text) = 0;
0196 virtual void PaintTextNDC(Double_t u, Double_t v, const char *text) = 0;
0197 virtual void PaintTextNDC(Double_t u, Double_t v, const wchar_t *text) = 0;
0198 virtual Double_t PixeltoX(Double_t px) = 0;
0199 virtual Double_t PixeltoY(Double_t py) = 0;
0200 virtual void PixeltoXY(Double_t xpixel, Double_t ypixel, Double_t &x, Double_t &y) = 0;
0201 void Pop() override = 0;
0202 void Print(const char *filename="") const override = 0;
0203 virtual void Print(const char *filename, Option_t *option) = 0;
0204 virtual void Range(Double_t x1, Double_t y1, Double_t x2, Double_t y2) = 0;
0205 virtual void RangeAxis(Double_t xmin, Double_t ymin, Double_t xmax, Double_t ymax) = 0;
0206 virtual void RangeAxisChanged() { Emit("RangeAxisChanged()"); }
0207 void RecursiveRemove(TObject *obj) override = 0;
0208 virtual TObject *Remove(TObject *obj, Bool_t modified = kTRUE) = 0;
0209 virtual void RedrawAxis(Option_t *option="") = 0;
0210 virtual void ResetView3D(TObject *view = nullptr) = 0;
0211 virtual void ResizePad(Option_t *option="") = 0;
0212 void SaveAs(const char *filename="",Option_t *option="") const override = 0;
0213 virtual void SetBatch(Bool_t batch=kTRUE) = 0;
0214 virtual void SetBorderMode(Short_t bordermode) = 0;
0215 virtual void SetBorderSize(Short_t bordersize) = 0;
0216 virtual void SetCanvas(TCanvas *c) = 0;
0217 virtual void SetCanvasSize(UInt_t ww, UInt_t wh) = 0;
0218 virtual void SetCrosshair(Int_t crhair=1) = 0;
0219 virtual void SetCursor(ECursor cursor) = 0;
0220 virtual void SetDoubleBuffer(Int_t mode=1) = 0;
0221 virtual void SetEditable(Bool_t mode=kTRUE) = 0;
0222 virtual void SetFixedAspectRatio(Bool_t fixed = kTRUE) = 0;
0223 virtual void SetGrid(Int_t valuex = 1, Int_t valuey = 1) = 0;
0224 virtual void SetGridx(Int_t value = 1) = 0;
0225 virtual void SetGridy(Int_t value = 1) = 0;
0226 virtual void SetLogx(Int_t value = 1) = 0;
0227 virtual void SetLogy(Int_t value = 1) = 0;
0228 virtual void SetLogz(Int_t value = 1) = 0;
0229 virtual void SetPad(const char *name, const char *title,
0230 Double_t xlow, Double_t ylow, Double_t xup,
0231 Double_t yup, Color_t color=35,
0232 Short_t bordersize=5, Short_t bordermode=-1) = 0;
0233 virtual void SetPad(Double_t xlow, Double_t ylow, Double_t xup, Double_t yup) = 0;
0234 virtual void SetAttFillPS(Color_t color, Style_t style) = 0;
0235 virtual void SetAttLinePS(Color_t color, Style_t style, Width_t lwidth) = 0;
0236 virtual void SetAttMarkerPS(Color_t color, Style_t style, Size_t msize) = 0;
0237 virtual void SetAttTextPS(Int_t align, Float_t angle, Color_t color, Style_t font, Float_t tsize) = 0;
0238 virtual void SetName(const char *name) = 0;
0239 virtual void SetSelected(TObject *obj) = 0;
0240 virtual void SetTicks(Int_t valuex = 1, Int_t valuey = 1) = 0;
0241 virtual void SetTickx(Int_t value = 1) = 0;
0242 virtual void SetTicky(Int_t value = 1) = 0;
0243 virtual void SetTitle(const char *title="") = 0;
0244 virtual void SetTheta(Double_t theta=30) = 0;
0245 virtual void SetPhi(Double_t phi=30) = 0;
0246 virtual void SetToolTipText(const char *text, Long_t delayms = 1000) = 0;
0247 virtual void SetVertical(Bool_t vert=kTRUE) = 0;
0248 virtual void SetView(TView *view = nullptr) = 0;
0249 virtual void SetViewer3D(TVirtualViewer3D * ) {}
0250 virtual void ShowGuidelines(TObject *object, const Int_t event, const char mode = 'i', const bool cling = true) = 0;
0251 virtual TObject *WaitPrimitive(const char *pname="", const char *emode="") = 0;
0252 virtual void Update() = 0;
0253 virtual void UpdateAsync() = 0;
0254 virtual Int_t UtoAbsPixel(Double_t u) const = 0;
0255 virtual Int_t VtoAbsPixel(Double_t v) const = 0;
0256 virtual Int_t UtoPixel(Double_t u) const = 0;
0257 virtual Int_t VtoPixel(Double_t v) const = 0;
0258 virtual Int_t XtoAbsPixel(Double_t x) const = 0;
0259 virtual Int_t YtoAbsPixel(Double_t y) const = 0;
0260 virtual void XYtoAbsPixel(Double_t x, Double_t y, Int_t &xpixel, Int_t &ypixel) const = 0;
0261 virtual void XYtoAbsPixel(Double_t x, Double_t y, Double_t &xpixel, Double_t &ypixel) const = 0;
0262 virtual Double_t XtoPad(Double_t x) const = 0;
0263 virtual Double_t YtoPad(Double_t y) const = 0;
0264 virtual Int_t XtoPixel(Double_t x) const = 0;
0265 virtual Int_t YtoPixel(Double_t y) const = 0;
0266 virtual void XYtoPixel(Double_t x, Double_t y, Int_t &xpixel, Int_t &ypixel) const = 0;
0267 virtual void XYtoPixel(Double_t x, Double_t y, Double_t &xpixel, Double_t &ypixel) const = 0;
0268
0269 virtual Int_t IncrementPaletteColor(Int_t i, TString opt) = 0;
0270 virtual Int_t NextPaletteColor() = 0;
0271
0272 virtual Bool_t PlaceBox(TObject *o, Double_t w, Double_t h, Double_t &xl, Double_t &yb, Option_t* opt = "lb") = 0;
0273
0274 virtual TObject *CreateToolTip(const TBox *b, const char *text, Long_t delayms) = 0;
0275 virtual void DeleteToolTip(TObject *tip) = 0;
0276 virtual void ResetToolTip(TObject *tip) = 0;
0277 virtual void CloseToolTip(TObject *tip) = 0;
0278
0279 virtual TVirtualViewer3D *GetViewer3D(Option_t * type = "") = 0;
0280 virtual Bool_t HasViewer3D() const = 0;
0281 virtual void ReleaseViewer3D(Option_t * type = "") = 0;
0282
0283 virtual Int_t GetGLDevice() = 0;
0284 virtual void SetCopyGLDevice(Bool_t copy) = 0;
0285 virtual TVirtualPadPainter *GetPainter() = 0;
0286
0287 virtual Bool_t PadInSelectionMode() const;
0288 virtual Bool_t PadInHighlightMode() const;
0289
0290 virtual void PushTopLevelSelectable(TObject *top);
0291 virtual void PushSelectableObject(TObject *obj);
0292 virtual void PopTopLevelSelectable();
0293
0294 static TVirtualPad *&Pad();
0295
0296 ClassDefOverride(TVirtualPad,3)
0297 };
0298
0299
0300
0301
0302
0303
0304 class TPickerStackGuard {
0305 public:
0306 TPickerStackGuard(TObject *obj);
0307 ~TPickerStackGuard();
0308
0309 private:
0310 TPickerStackGuard(const TPickerStackGuard &rhs) = delete;
0311 TPickerStackGuard &operator = (const TPickerStackGuard &rhs) = delete;
0312 };
0313
0314
0315 #define gPad (TVirtualPad::Pad())
0316 R__EXTERN Int_t (*gThreadXAR)(const char *xact, Int_t nb, void **ar, Int_t *iret);
0317
0318 #endif