Skip to content
14 changes: 10 additions & 4 deletions core/base/inc/TVirtualPad.h
Original file line number Diff line number Diff line change
Expand Up @@ -77,8 +77,9 @@ class TVirtualPad : public TObject, public TAttLine, public TAttFill,
Color_t color=19, Short_t bordersize=4, Short_t bordermode=1);
virtual ~TVirtualPad();
virtual void AbsCoordinates(Bool_t set) = 0;
virtual Double_t AbsPixeltoX(Int_t px) = 0;
virtual Double_t AbsPixeltoY(Int_t py) = 0;
virtual Double_t AbsPixeltoX(Double_t px) = 0;
virtual Double_t AbsPixeltoY(Double_t py) = 0;
virtual void AbsPixeltoXY(Double_t xpixel, Double_t ypixel, Double_t &x, Double_t &y) = 0;
virtual void Add(TObject *obj, Option_t *opt = "", Bool_t modified = kTRUE) = 0;
virtual void AddFirst(TObject *obj, Option_t *opt = "", Bool_t modified = kTRUE) = 0;
virtual void AddExec(const char *name, const char *command) = 0;
Expand Down Expand Up @@ -193,8 +194,9 @@ class TVirtualPad : public TObject, public TAttLine, public TAttFill,
virtual void PaintText(Double_t x, Double_t y, const wchar_t *text) = 0;
virtual void PaintTextNDC(Double_t u, Double_t v, const char *text) = 0;
virtual void PaintTextNDC(Double_t u, Double_t v, const wchar_t *text) = 0;
virtual Double_t PixeltoX(Int_t px) = 0;
virtual Double_t PixeltoY(Int_t py) = 0;
virtual Double_t PixeltoX(Double_t px) = 0;
virtual Double_t PixeltoY(Double_t py) = 0;
virtual void PixeltoXY(Double_t xpixel, Double_t ypixel, Double_t &x, Double_t &y) = 0;
void Pop() override = 0;
void Print(const char *filename="") const override = 0;
virtual void Print(const char *filename, Option_t *option) = 0;
Expand Down Expand Up @@ -254,10 +256,14 @@ class TVirtualPad : public TObject, public TAttLine, public TAttFill,
virtual Int_t VtoPixel(Double_t v) const = 0;
virtual Int_t XtoAbsPixel(Double_t x) const = 0;
virtual Int_t YtoAbsPixel(Double_t y) const = 0;
virtual void XYtoAbsPixel(Double_t x, Double_t y, Int_t &xpixel, Int_t &ypixel) const = 0;
virtual void XYtoAbsPixel(Double_t x, Double_t y, Double_t &xpixel, Double_t &ypixel) const = 0;
virtual Double_t XtoPad(Double_t x) const = 0;
virtual Double_t YtoPad(Double_t y) const = 0;
virtual Int_t XtoPixel(Double_t x) const = 0;
virtual Int_t YtoPixel(Double_t y) const = 0;
virtual void XYtoPixel(Double_t x, Double_t y, Int_t &xpixel, Int_t &ypixel) const = 0;
virtual void XYtoPixel(Double_t x, Double_t y, Double_t &xpixel, Double_t &ypixel) const = 0;

virtual Int_t IncrementPaletteColor(Int_t i, TString opt) = 0;
virtual Int_t NextPaletteColor() = 0;
Expand Down
18 changes: 10 additions & 8 deletions graf2d/gpad/inc/TPad.h
Original file line number Diff line number Diff line change
Expand Up @@ -165,9 +165,9 @@ friend class TWebCanvas;
Color_t color=-1, Short_t bordersize=-1, Short_t bordermode=-2);
~TPad() override;
void AbsCoordinates(Bool_t set) override { fAbsCoord = set; }
Double_t AbsPixeltoX(Int_t px) override { return fAbsPixeltoXk + px*fPixeltoX; }
Double_t AbsPixeltoY(Int_t py) override { return fAbsPixeltoYk + py*fPixeltoY; }
virtual void AbsPixeltoXY(Int_t xpixel, Int_t ypixel, Double_t &x, Double_t &y);
Double_t AbsPixeltoX(Double_t px) override { return fAbsPixeltoXk + px*fPixeltoX; }
Double_t AbsPixeltoY(Double_t py) override { return fAbsPixeltoYk + py*fPixeltoY; }
void AbsPixeltoXY(Double_t xpixel, Double_t ypixel, Double_t &x, Double_t &y) override;
void Add(TObject *obj, Option_t *opt = "", Bool_t modified = kTRUE) override;
void AddFirst(TObject *obj, Option_t *opt = "", Bool_t modified = kTRUE) override;
void AddExec(const char *name, const char *command) override;
Expand Down Expand Up @@ -307,9 +307,9 @@ friend class TWebCanvas;
void PaintTextNDC(Double_t u, Double_t v, const char *text) override;
void PaintTextNDC(Double_t u, Double_t v, const wchar_t *text) override;
virtual TPad *Pick(Int_t px, Int_t py, TObjLink *&pickobj);
Double_t PixeltoX(Int_t px) override;
Double_t PixeltoY(Int_t py) override;
virtual void PixeltoXY(Int_t xpixel, Int_t ypixel, Double_t &x, Double_t &y);
Double_t PixeltoX(Double_t px) override;
Double_t PixeltoY(Double_t py) override;
void PixeltoXY(Double_t xpixel, Double_t ypixel, Double_t &x, Double_t &y) override;
void Pop() override; // *MENU*
void Print(const char *filename="") const override;
void Print(const char *filename, Option_t *option) override;
Expand Down Expand Up @@ -382,8 +382,10 @@ friend class TWebCanvas;
Double_t YtoPad(Double_t y) const override;
Int_t XtoPixel(Double_t x) const override;
Int_t YtoPixel(Double_t y) const override;
virtual void XYtoAbsPixel(Double_t x, Double_t y, Int_t &xpixel, Int_t &ypixel) const;
virtual void XYtoPixel(Double_t x, Double_t y, Int_t &xpixel, Int_t &ypixel) const;
void XYtoAbsPixel(Double_t x, Double_t y, Int_t &xpixel, Int_t &ypixel) const override;
void XYtoAbsPixel(Double_t x, Double_t y, Double_t &xpixel, Double_t &ypixel) const override;
void XYtoPixel(Double_t x, Double_t y, Int_t &xpixel, Int_t &ypixel) const override;
void XYtoPixel(Double_t x, Double_t y, Double_t &xpixel, Double_t &ypixel) const override;

TObject *CreateToolTip(const TBox *b, const char *text, Long_t delayms) override;
void DeleteToolTip(TObject *tip) override;
Expand Down
77 changes: 39 additions & 38 deletions graf2d/gpad/src/TPad.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -7465,7 +7465,7 @@ void TPad::Modified(Bool_t flag)
////////////////////////////////////////////////////////////////////////////////
/// Convert absolute pixel into X/Y coordinates

void TPad::AbsPixeltoXY(Int_t xpixel, Int_t ypixel, Double_t &x, Double_t &y)
void TPad::AbsPixeltoXY(Double_t xpixel, Double_t ypixel, Double_t &x, Double_t &y)
{
x = AbsPixeltoX(xpixel);
y = AbsPixeltoY(ypixel);
Expand All @@ -7475,7 +7475,7 @@ void TPad::AbsPixeltoXY(Int_t xpixel, Int_t ypixel, Double_t &x, Double_t &y)
////////////////////////////////////////////////////////////////////////////////
/// Convert pixel to X coordinate

Double_t TPad::PixeltoX(Int_t px)
Double_t TPad::PixeltoX(Double_t px)
{
if (fAbsCoord) return fAbsPixeltoXk + px*fPixeltoX;
else return fPixeltoXk + px*fPixeltoX;
Expand All @@ -7484,7 +7484,7 @@ Double_t TPad::PixeltoX(Int_t px)
////////////////////////////////////////////////////////////////////////////////
/// Convert pixel to Y coordinate

Double_t TPad::PixeltoY(Int_t py)
Double_t TPad::PixeltoY(Double_t py)
{
if (fAbsCoord) return fAbsPixeltoYk + py*fPixeltoY;
else return fPixeltoYk + py*fPixeltoY;
Expand All @@ -7493,14 +7493,14 @@ Double_t TPad::PixeltoY(Int_t py)
////////////////////////////////////////////////////////////////////////////////
/// Convert pixel to X/Y coordinates

void TPad::PixeltoXY(Int_t xpixel, Int_t ypixel, Double_t &x, Double_t &y)
void TPad::PixeltoXY(Double_t xpixel, Double_t ypixel, Double_t &x, Double_t &y)
{
x = PixeltoX(xpixel);
y = PixeltoY(ypixel);
}

////////////////////////////////////////////////////////////////////////////////
/// Convert X/Y into absolute pixel coordinates
/// Convert X/Y into absolute pixel coordinates - integer

void TPad::XYtoAbsPixel(Double_t x, Double_t y, Int_t &xpixel, Int_t &ypixel) const
{
Expand All @@ -7509,38 +7509,55 @@ void TPad::XYtoAbsPixel(Double_t x, Double_t y, Int_t &xpixel, Int_t &ypixel) co
}

////////////////////////////////////////////////////////////////////////////////
/// Convert X/Y into pixel coordinates
/// Check value for valid range for pixel values

Double_t pixel_boundary(Double_t v)
{
return v < -kMaxPixel ? -kMaxPixel : (v > kMaxPixel ? kMaxPixel : v);
}

////////////////////////////////////////////////////////////////////////////////
/// Convert X/Y into absolute pixel coordinates - doble
/// Introduced to avoid pixel rounding problems

void TPad::XYtoAbsPixel(Double_t x, Double_t y, Double_t &xpixel, Double_t &ypixel) const
{
xpixel = pixel_boundary(fXtoAbsPixelk + x*fXtoPixel);
ypixel = pixel_boundary(fYtoAbsPixelk + y*fYtoPixel);
}

////////////////////////////////////////////////////////////////////////////////
/// Convert X/Y into pixel coordinates - integer

void TPad::XYtoPixel(Double_t x, Double_t y, Int_t &xpixel, Int_t &ypixel) const
{
xpixel = XtoPixel(x);
ypixel = YtoPixel(y);
}

////////////////////////////////////////////////////////////////////////////////
/// Convert X/Y into pixel coordinates - double

void TPad::XYtoPixel(Double_t x, Double_t y, Double_t &xpixel, Double_t &ypixel) const
{
xpixel = pixel_boundary(fAbsCoord ? fXtoAbsPixelk + x*fXtoPixel : fXtoPixelk + x*fXtoPixel);
ypixel = pixel_boundary(fAbsCoord ? fYtoAbsPixelk + y*fYtoPixel : fYtoPixelk + y*fYtoPixel);
}

////////////////////////////////////////////////////////////////////////////////
/// Convert X NDC to pixel

Int_t TPad::UtoPixel(Double_t u) const
{
Double_t val;
if (fAbsCoord) val = fUtoAbsPixelk + u*fUtoPixel;
else val = u*fUtoPixel;
if (val < -kMaxPixel) return -kMaxPixel;
if (val > kMaxPixel) return kMaxPixel;
return TMath::Nint(val);
return TMath::Nint(pixel_boundary(fAbsCoord ? fUtoAbsPixelk + u*fUtoPixel : fUtoPixelk + u*fUtoPixel));
}

////////////////////////////////////////////////////////////////////////////////
/// Convert Y NDC to pixel

Int_t TPad::VtoPixel(Double_t v) const
{
Double_t val;
if (fAbsCoord) val = fVtoAbsPixelk + v*fVtoPixel;
else val = fVtoPixelk + v*fVtoPixel;
if (val < -kMaxPixel) return -kMaxPixel;
if (val > kMaxPixel) return kMaxPixel;
return TMath::Nint(val);
return TMath::Nint(pixel_boundary(fAbsCoord ? fVtoAbsPixelk + v*fVtoPixel : fVtoPixelk + v*fVtoPixel));
}

////////////////////////////////////////////////////////////////////////////////
Expand All @@ -7564,45 +7581,29 @@ Int_t TPad::VtoAbsPixel(Double_t v) const

Int_t TPad::XtoAbsPixel(Double_t x) const
{
Double_t val = fXtoAbsPixelk + x*fXtoPixel;
if (val < -kMaxPixel) return -kMaxPixel;
if (val > kMaxPixel) return kMaxPixel;
return TMath::Nint(val);
return TMath::Nint(pixel_boundary(fXtoAbsPixelk + x*fXtoPixel));
}

////////////////////////////////////////////////////////////////////////////////
/// Convert X coordinate to pixel

Int_t TPad::XtoPixel(Double_t x) const
{
Double_t val;
if (fAbsCoord) val = fXtoAbsPixelk + x*fXtoPixel;
else val = fXtoPixelk + x*fXtoPixel;
if (val < -kMaxPixel) return -kMaxPixel;
if (val > kMaxPixel) return kMaxPixel;
return TMath::Nint(val);
return TMath::Nint(pixel_boundary(fAbsCoord ? fXtoAbsPixelk + x*fXtoPixel : fXtoPixelk + x*fXtoPixel));
}

////////////////////////////////////////////////////////////////////////////////
/// Convert Y coordinate to absolute pixel

Int_t TPad::YtoAbsPixel(Double_t y) const
{
Double_t val = fYtoAbsPixelk + y*fYtoPixel;
if (val < -kMaxPixel) return -kMaxPixel;
if (val > kMaxPixel) return kMaxPixel;
return TMath::Nint(val);
return TMath::Nint(pixel_boundary(fYtoAbsPixelk + y*fYtoPixel));
}

////////////////////////////////////////////////////////////////////////////////
/// Convert Y coordinate to pixel

Int_t TPad::YtoPixel(Double_t y) const
{
Double_t val;
if (fAbsCoord) val = fYtoAbsPixelk + y*fYtoPixel;
else val = fYtoPixelk + y*fYtoPixel;
if (val < -kMaxPixel) return -kMaxPixel;
if (val > kMaxPixel) return kMaxPixel;
return TMath::Nint(val);
return TMath::Nint(pixel_boundary(fAbsCoord ? fYtoAbsPixelk + y*fYtoPixel : fYtoPixelk + y*fYtoPixel));
}
5 changes: 5 additions & 0 deletions graf2d/graf/inc/TLatex.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
#include "TAttLine.h"
#include <vector>

class TVirtualPad;

class TLatex : public TText, public TAttLine {
protected:

Expand Down Expand Up @@ -74,6 +76,9 @@ class TLatex : public TText, public TAttLine {
TLatexFormSize Analyse(Double_t x, Double_t y, const TextSpec_t &spec, const Char_t *t,Int_t length);
TLatexFormSize Anal1(const TextSpec_t &spec, const Char_t *t,Int_t length);

void Rotate(TVirtualPad *pad, Double_t angle, Int_t np, Double_t *x, Double_t *y);
void Rotate(TVirtualPad *pad, Double_t angle, Double_t x, Double_t y, Double_t &xx, Double_t &yy);

void DrawPolyLine(Int_t npoints, Double_t *xx, Double_t *yy, const TextSpec_t &spec, Double_t scale_width = 0.);
void DrawLine(Double_t x1, Double_t y1, Double_t x2, Double_t y2, const TextSpec_t &spec);
void DrawCircle(Double_t x1, Double_t y1, Double_t r, const TextSpec_t &spec);
Expand Down
Loading
Loading