diff --git a/core/base/inc/TVirtualPad.h b/core/base/inc/TVirtualPad.h index b51e86c9d3d2f..ab8a71434d9c2 100644 --- a/core/base/inc/TVirtualPad.h +++ b/core/base/inc/TVirtualPad.h @@ -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; @@ -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; @@ -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; diff --git a/graf2d/gpad/inc/TPad.h b/graf2d/gpad/inc/TPad.h index 698a195439184..5c0d74f3b6c63 100644 --- a/graf2d/gpad/inc/TPad.h +++ b/graf2d/gpad/inc/TPad.h @@ -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; @@ -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; @@ -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; diff --git a/graf2d/gpad/src/TPad.cxx b/graf2d/gpad/src/TPad.cxx index ca189cd8828aa..ca11fa203a18d 100644 --- a/graf2d/gpad/src/TPad.cxx +++ b/graf2d/gpad/src/TPad.cxx @@ -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); @@ -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; @@ -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; @@ -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 { @@ -7509,7 +7509,25 @@ 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 { @@ -7517,17 +7535,21 @@ void TPad::XYtoPixel(Double_t x, Double_t y, Int_t &xpixel, Int_t &ypixel) const 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)); } //////////////////////////////////////////////////////////////////////////////// @@ -7535,12 +7557,7 @@ Int_t TPad::UtoPixel(Double_t u) const 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)); } //////////////////////////////////////////////////////////////////////////////// @@ -7564,10 +7581,7 @@ 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)); } //////////////////////////////////////////////////////////////////////////////// @@ -7575,12 +7589,7 @@ Int_t TPad::XtoAbsPixel(Double_t x) const 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)); } //////////////////////////////////////////////////////////////////////////////// @@ -7588,10 +7597,7 @@ Int_t TPad::XtoPixel(Double_t x) const 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)); } //////////////////////////////////////////////////////////////////////////////// @@ -7599,10 +7605,5 @@ Int_t TPad::YtoAbsPixel(Double_t y) const 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)); } diff --git a/graf2d/graf/inc/TLatex.h b/graf2d/graf/inc/TLatex.h index 41945aee29664..5dd9f35c62cb8 100644 --- a/graf2d/graf/inc/TLatex.h +++ b/graf2d/graf/inc/TLatex.h @@ -15,6 +15,8 @@ #include "TAttLine.h" #include +class TVirtualPad; + class TLatex : public TText, public TAttLine { protected: @@ -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); diff --git a/graf2d/graf/src/TLatex.cxx b/graf2d/graf/src/TLatex.cxx index 023afa97a63c0..944defed98e4b 100644 --- a/graf2d/graf/src/TLatex.cxx +++ b/graf2d/graf/src/TLatex.cxx @@ -485,6 +485,36 @@ void TLatex::Copy(TObject &obj) const ((TLatex&)obj).fItalic = fItalic; } +//////////////////////////////////////////////////////////////////////////////// +/// Rotate array of points around fX, fY coordinate by specified angle + +void TLatex::Rotate(TVirtualPad *pad, Double_t angle, Int_t np, Double_t *x, Double_t *y) +{ + Double_t xOrigin, yOrigin; + pad->XYtoAbsPixel(fX, fY, xOrigin, yOrigin); + + Double_t cos_angle = TMath::Cos(kPI*angle/180.); + Double_t sin_angle = TMath::Sin(kPI*angle/180.); + Double_t xx, yy; + for (Int_t n = 0; n < np; ++n) { + pad->AbsPixeltoXY( cos_angle * (x[n]-xOrigin) + sin_angle * (y[n]-yOrigin) + xOrigin, + -sin_angle * (x[n]-xOrigin) + cos_angle * (y[n]-yOrigin) + yOrigin, + xx, yy); + x[n] = xx; + y[n] = yy; + } +} + +//////////////////////////////////////////////////////////////////////////////// +/// Rotate single point around fX, fY coordinate by specified angle + +void TLatex::Rotate(TVirtualPad *pad, Double_t angle, Double_t x, Double_t y, Double_t &xx, Double_t &yy) +{ + xx = x; + yy = y; + Rotate(pad, angle, 1, &xx, &yy); +} + //////////////////////////////////////////////////////////////////////////////// /// Analyse function. @@ -1173,11 +1203,8 @@ TLatex::TLatexFormSize TLatex::Analyse(Double_t x, Double_t y, const TextSpec_t hbar.SetTextSize(spec.fSize); hbar.SetTextAngle(fTextAngle); hbar.SetTextAlign(11); - Double_t xOrigin = (Double_t)gPad->XtoAbsPixel(fX); - Double_t yOrigin = (Double_t)gPad->YtoAbsPixel(fY); - Double_t angle = kPI*spec.fAngle/180.; - Double_t xx = gPad->AbsPixeltoX(Int_t((x-xOrigin)*TMath::Cos(angle)+(y-yOrigin)*TMath::Sin(angle)+xOrigin)); - Double_t yy = gPad->AbsPixeltoY(Int_t((x-xOrigin)*TMath::Sin(-angle)+(y-yOrigin)*TMath::Cos(angle)+yOrigin)); + Double_t xx, yy; + Rotate(gPad, spec.fAngle, x, y, xx, yy); hbar.PaintText(xx,yy,"h"); DrawLine(x,y-0.8*square,x+0.75*square,y-square,spec); } @@ -1195,11 +1222,8 @@ TLatex::TLatexFormSize TLatex::Analyse(Double_t x, Double_t y, const TextSpec_t minus.SetTextSize(spec.fSize); minus.SetTextAngle(fTextAngle); minus.SetTextAlign(11); - Double_t xOrigin = (Double_t)gPad->XtoAbsPixel(fX); - Double_t yOrigin = (Double_t)gPad->YtoAbsPixel(fY); - Double_t angle = kPI*spec.fAngle/180.; - Double_t xx = gPad->AbsPixeltoX(Int_t((x-xOrigin)*TMath::Cos(angle)+(y-yOrigin)*TMath::Sin(angle)+xOrigin)); - Double_t yy = gPad->AbsPixeltoY(Int_t((x-xOrigin)*TMath::Sin(-angle)+(y-yOrigin)*TMath::Cos(angle)+yOrigin)); + Double_t xx, yy; + Rotate(gPad, spec.fAngle, x, y, xx, yy); minus.PaintText(xx,yy,"-"); } result = fs1 + TLatexFormSize(square,square,0); @@ -1216,11 +1240,8 @@ TLatex::TLatexFormSize TLatex::Analyse(Double_t x, Double_t y, const TextSpec_t plus.SetTextSize(spec.fSize); plus.SetTextAngle(fTextAngle); plus.SetTextAlign(11); - Double_t xOrigin = (Double_t)gPad->XtoAbsPixel(fX); - Double_t yOrigin = (Double_t)gPad->YtoAbsPixel(fY); - Double_t angle = kPI*spec.fAngle/180.; - Double_t xx = gPad->AbsPixeltoX(Int_t((x-xOrigin)*TMath::Cos(angle)+(y-yOrigin)*TMath::Sin(angle)+xOrigin)); - Double_t yy = gPad->AbsPixeltoY(Int_t((x-xOrigin)*TMath::Sin(-angle)+(y-yOrigin)*TMath::Cos(angle)+yOrigin)); + Double_t xx, yy; + Rotate(gPad, spec.fAngle, x, y, xx, yy); plus.PaintText(xx,yy,"+"); } result = fs1 + TLatexFormSize(square,square,0); @@ -1237,11 +1258,8 @@ TLatex::TLatexFormSize TLatex::Analyse(Double_t x, Double_t y, const TextSpec_t mp.SetTextSize(spec.fSize); mp.SetTextAngle(fTextAngle+180); mp.SetTextAlign(11); - Double_t xOrigin = (Double_t)gPad->XtoAbsPixel(fX); - Double_t yOrigin = (Double_t)gPad->YtoAbsPixel(fY); - Double_t angle = kPI*spec.fAngle/180.; - Double_t xx = gPad->AbsPixeltoX(Int_t((x+square-xOrigin)*TMath::Cos(angle)+(y-1.25*square-yOrigin)*TMath::Sin(angle)+xOrigin)); - Double_t yy = gPad->AbsPixeltoY(Int_t((x+square-xOrigin)*TMath::Sin(-angle)+(y-1.25*square-yOrigin)*TMath::Cos(angle)+yOrigin)); + Double_t xx, yy; + Rotate(gPad, spec.fAngle, x+square, y-1.25*square, xx, yy); mp.PaintText(xx,yy,"\261"); } result = fs1 + TLatexFormSize(square,square,0); @@ -1274,11 +1292,8 @@ TLatex::TLatexFormSize TLatex::Analyse(Double_t x, Double_t y, const TextSpec_t bs.SetTextSize(spec.fSize); bs.SetTextAngle(fTextAngle); bs.SetTextAlign(11); - Double_t xOrigin = (Double_t)gPad->XtoAbsPixel(fX); - Double_t yOrigin = (Double_t)gPad->YtoAbsPixel(fY); - Double_t angle = kPI*spec.fAngle/180.; - Double_t xx = gPad->AbsPixeltoX(Int_t((x-xOrigin)*TMath::Cos(angle)+(y-yOrigin)*TMath::Sin(angle)+xOrigin)); - Double_t yy = gPad->AbsPixeltoY(Int_t((x-xOrigin)*TMath::Sin(-angle)+(y-yOrigin)*TMath::Cos(angle)+yOrigin)); + Double_t xx, yy; + Rotate(gPad, spec.fAngle, x, y, xx, yy); bs.PaintText(xx,yy,"\\"); } result = fs1 + TLatexFormSize(square,square,0); @@ -1457,12 +1472,8 @@ TLatex::TLatexFormSize TLatex::Analyse(Double_t x, Double_t y, const TextSpec_t if (gVirtualPS) gVirtualPS = nullptr; Double_t y22 = y2; if (gVirtualX->InheritsFrom("TGCocoa")) y2 -= 4.7*sub; - Double_t sinang = TMath::Sin(spec.fAngle/180*kPI); - Double_t cosang = TMath::Cos(spec.fAngle/180*kPI); - Double_t xOrigin = (Double_t)gPad->XtoAbsPixel(fX); - Double_t yOrigin = (Double_t)gPad->YtoAbsPixel(fY); - Double_t xx = gPad->AbsPixeltoX(Int_t((x2-xOrigin)*cosang+(y2-yOrigin)*sinang+xOrigin)); - Double_t yy = gPad->AbsPixeltoY(Int_t((x2-xOrigin)*-sinang+(y2-yOrigin)*cosang+yOrigin)); + Double_t xx, yy; + Rotate(gPad, spec.fAngle, x2, y2, xx, yy); TText tilde; tilde.SetTextFont(fTextFont); tilde.SetTextColor(spec.fColor); @@ -1473,8 +1484,7 @@ TLatex::TLatexFormSize TLatex::Analyse(Double_t x, Double_t y, const TextSpec_t if (saveps) { gVirtualPS = saveps; if (!strstr(gVirtualPS->GetTitle(),"IMG")) y22 -= 4*sub; - xx = gPad->AbsPixeltoX(Int_t((x2-xOrigin)*cosang+(y22-yOrigin)*sinang+xOrigin)); - yy = gPad->AbsPixeltoY(Int_t((x2-xOrigin)*-sinang+(y22-yOrigin)*cosang+yOrigin)); + Rotate(gPad, spec.fAngle, x2, y22, xx, yy); gVirtualPS->SetTextAlign(22); gVirtualPS->Text(xx, yy, "~"); } @@ -1915,12 +1925,9 @@ TLatex::TLatexFormSize TLatex::Analyse(Double_t x, Double_t y, const TextSpec_t if (fShow) { // paint the Latex sub-expression per sub-expression - Double_t xOrigin = (Double_t)gPad->XtoAbsPixel(fX); - Double_t yOrigin = (Double_t)gPad->YtoAbsPixel(fY); - Double_t angle = kPI*spec.fAngle/180.; - Double_t xx = gPad->AbsPixeltoX(Int_t((x-xOrigin)*TMath::Cos(angle)+(y-yOrigin)*TMath::Sin(angle)+xOrigin)); - Double_t yy = gPad->AbsPixeltoY(Int_t((x-xOrigin)*TMath::Sin(-angle)+(y-yOrigin)*TMath::Cos(angle)+yOrigin)); - gPad->PaintText(xx,yy,text); + Double_t xx, yy; + Rotate(gPad, spec.fAngle, x, y, xx, yy); + gPad->PaintText(xx, yy, text); } else { GetTextExtent(w,h,text); Double_t width = w; @@ -1970,17 +1977,10 @@ TLatex *TLatex::DrawLatexNDC(Double_t x, Double_t y, const char *text) /// If not specified - default line width will be used void TLatex::DrawPolyLine(Int_t npoints, Double_t *xx, Double_t *yy, const TextSpec_t &spec, Double_t scale_width) { - if (!gPad) return ; - Double_t sinang = TMath::Sin(spec.fAngle/180*kPI); - Double_t cosang = TMath::Cos(spec.fAngle/180*kPI); - Double_t xOrigin = (Double_t)gPad->XtoAbsPixel(fX); - Double_t yOrigin = (Double_t)gPad->YtoAbsPixel(fY); - for (Int_t n = 0; n < npoints; ++n) { - Double_t mx = gPad->AbsPixeltoX(Int_t((xx[n]-xOrigin)*cosang+(yy[n]-yOrigin)*sinang+xOrigin)); - Double_t my = gPad->AbsPixeltoY(Int_t((xx[n]-xOrigin)*-sinang+(yy[n]-yOrigin)*cosang+yOrigin)); - xx[n] = mx; - yy[n] = my; - } + if (!gPad) + return; + + Rotate(gPad, spec.fAngle, npoints, xx, yy); if (scale_width >= 1.) { TAttFill fill(spec.fColor, 1001); @@ -2009,20 +2009,13 @@ void TLatex::DrawPolyLine(Int_t npoints, Double_t *xx, Double_t *yy, const TextS void TLatex::DrawLine(Double_t x1, Double_t y1, Double_t x2, Double_t y2, const TextSpec_t &spec) { - if (!gPad) return ; - Double_t sinang = TMath::Sin(spec.fAngle/180*kPI); - Double_t cosang = TMath::Cos(spec.fAngle/180*kPI); - Double_t xOrigin = (Double_t)gPad->XtoAbsPixel(fX); - Double_t yOrigin = (Double_t)gPad->YtoAbsPixel(fY); - Double_t xx = gPad->AbsPixeltoX(Int_t((x1-xOrigin)*cosang+(y1-yOrigin)*sinang+xOrigin)); - Double_t yy = gPad->AbsPixeltoY(Int_t((x1-xOrigin)*-sinang+(y1-yOrigin)*cosang+yOrigin)); - - Double_t xx2 = gPad->AbsPixeltoX(Int_t((x2-xOrigin)*cosang+(y2-yOrigin)*sinang+xOrigin)); - Double_t yy2 = gPad->AbsPixeltoY(Int_t((x2-xOrigin)*-sinang+(y2-yOrigin)*cosang+yOrigin)); - + if (!gPad) return; + Double_t xx[2] = { x1, x2 }; + Double_t yy[2] = { y1, y2 }; + Rotate(gPad, spec.fAngle, 2, xx, yy); SetLineColor(spec.fColor); TAttLine::Modify(); - gPad->PaintLine(xx,yy,xx2,yy2); + gPad->PaintLine(xx[0], yy[0], xx[1], yy[1]); } //////////////////////////////////////////////////////////////////////////////// @@ -2030,29 +2023,26 @@ void TLatex::DrawLine(Double_t x1, Double_t y1, Double_t x2, Double_t y2, const void TLatex::DrawCircle(Double_t x1, Double_t y1, Double_t r, const TextSpec_t &spec) { - if (!gPad) return ; - if (r < 1) r = 1; - Double_t sinang = TMath::Sin(spec.fAngle/180*kPI); - Double_t cosang = TMath::Cos(spec.fAngle/180*kPI); - Double_t xOrigin = (Double_t)gPad->XtoAbsPixel(fX); - Double_t yOrigin = (Double_t)gPad->YtoAbsPixel(fY); + if (!gPad) + return; + if (r < 1) + r = 1; const Int_t np = 40; Double_t dphi = 2*kPI/np; Double_t x[np+3], y[np+3]; - Double_t angle,dx,dy; SetLineColor(spec.fColor); TAttLine::Modify(); //Change line attributes only if necessary - for (Int_t i=0;i<=np;i++) { - angle = Double_t(i)*dphi; - dx = r*TMath::Cos(angle) +x1 -xOrigin; - dy = r*TMath::Sin(angle) +y1 -yOrigin; - x[i] = gPad->AbsPixeltoX(TMath::Nint( dx*cosang+ dy*sinang +xOrigin)); - y[i] = gPad->AbsPixeltoY(TMath::Nint(-dx*sinang+ dy*cosang +yOrigin)); + for (Int_t i = 0; i <= np; i++) { + Double_t angle = i*dphi; + x[i] = x1 + r*TMath::Cos(angle); + y[i] = y1 + r*TMath::Sin(angle); } - gPad->PaintPolyLine(np+1,x,y); + Rotate(gPad, spec.fAngle, np+1, x, y); + + gPad->PaintPolyLine(np+1, x, y); } //////////////////////////////////////////////////////////////////////////////// @@ -2061,29 +2051,28 @@ void TLatex::DrawCircle(Double_t x1, Double_t y1, Double_t r, const TextSpec_t & void TLatex::DrawParenthesis(Double_t x1, Double_t y1, Double_t r1, Double_t r2, Double_t phimin, Double_t phimax, const TextSpec_t &spec) { - if (!gPad) return ; - if (r1 < 1) r1 = 1; - if (r2 < 1) r2 = 1; - Double_t sinang = TMath::Sin(spec.fAngle/180*kPI); - Double_t cosang = TMath::Cos(spec.fAngle/180*kPI); - Double_t xOrigin = (Double_t)gPad->XtoAbsPixel(fX); - Double_t yOrigin = (Double_t)gPad->YtoAbsPixel(fY); + if (!gPad) + return; + if (r1 < 1) + r1 = 1; + if (r2 < 1) + r2 = 1; const Int_t np = 40; Double_t dphi = (phimax-phimin)*kPI/(180*np); Double_t x[np+3], y[np+3]; - Double_t angle,dx,dy ; SetLineColor(spec.fColor); TAttLine::Modify(); //Change line attributes only if necessary - for (Int_t i=0;i<=np;i++) { - angle = phimin*kPI/180 + Double_t(i)*dphi; - dx = r1*TMath::Cos(angle) +x1 -xOrigin; - dy = r2*TMath::Sin(angle) +y1 -yOrigin; - x[i] = gPad->AbsPixeltoX(Int_t( dx*cosang+dy*sinang +xOrigin)); - y[i] = gPad->AbsPixeltoY(Int_t(-dx*sinang+dy*cosang +yOrigin)); + for (Int_t i = 0; i <= np; i++) { + Double_t angle = phimin*kPI/180 + i*dphi; + x[i] = x1 + r1*TMath::Cos(angle); + y[i] = y1 + r2*TMath::Sin(angle); } + + Rotate(gPad, spec.fAngle, np+1, x, y); + gPad->PaintPolyLine(np+1,x,y); } @@ -2207,9 +2196,11 @@ void TLatex::PaintLatex(Double_t x, Double_t y, Double_t angle, Double_t size, c Int_t TLatex::PaintLatex1(Double_t x, Double_t y, Double_t angle, Double_t size, const Char_t *text1) { - if (!gPad) return 0; + if (!gPad) + return 0; TString newText = text1; - if( newText.Length() == 0) return 0; + if(newText.Length() == 0) + return 0; newText.ReplaceAll("#hbox","#mbox"); fError = nullptr; @@ -2221,7 +2212,7 @@ Int_t TLatex::PaintLatex1(Double_t x, Double_t y, Double_t angle, Double_t size, fError = nullptr; // Do not use Latex if font is low precision. - if (fTextFont%10 < 2) { + if (fTextFont % 10 < 2) { if (gVirtualX) gVirtualX->SetTextAngle(angle); if (gVirtualPS) gVirtualPS->SetTextAngle(angle); gPad->PaintText(x,y,text1); @@ -2247,26 +2238,25 @@ Int_t TLatex::PaintLatex1(Double_t x, Double_t y, Double_t angle, Double_t size, } } else { return 1; - }; + } } Double_t saveSize = size; Int_t saveFont = fTextFont; - if (fTextFont%10 > 2) { + if (fTextFont % 10 > 2) { size = GetTextSizePercent(size); SetTextFont(10*(saveFont/10) + 2); } - Int_t length = newText.Length() ; - const Char_t *text = newText.Data() ; + Int_t length = newText.Length(); + const Char_t *text = newText.Data(); Double_t xsave = fX; Double_t ysave = fY; fX = x; fY = y; - x = gPad->XtoAbsPixel(x); - y = gPad->YtoAbsPixel(y); - fShow = kFALSE ; + gPad->XYtoAbsPixel(fX, fY, x, y); + fShow = kFALSE; TLatexFormSize fs = FirstParse(angle,size,text); fOriginSize = size; @@ -2291,14 +2281,14 @@ Int_t TLatex::PaintLatex1(Double_t x, Double_t y, Double_t angle, Double_t size, newSpec.fSize = size; switch (valign) { - case 0: y -= fs.Under() ; break; + case 0: y -= fs.Under(); break; case 1: break; - case 2: y += fs.Height()*0.5-fs.Under(); y++; break; - case 3: y += fs.Over() ; break; + case 2: y += fs.Height()*0.5-fs.Under() + 1.; break; + case 3: y += fs.Over(); break; } switch (halign) { - case 2: x -= fs.Width()/2 ; break; - case 3: x -= fs.Width() ; break; + case 2: x -= fs.Width()/2; break; + case 3: x -= fs.Width(); break; } Analyse(x,y,newSpec,text,length); } @@ -2314,8 +2304,7 @@ Int_t TLatex::PaintLatex1(Double_t x, Double_t y, Double_t angle, Double_t size, fTabSize.clear(); fX = xsave; fY = ysave; - if (fError) return 0; - return 1; + return fError ? 0 : 1; } //////////////////////////////////////////////////////////////////////////////// @@ -2593,7 +2582,7 @@ Double_t TLatex::GetXsize() TLatexFormSize fs = FirstParse(0,GetTextSize(),text); SetTextAngle(angle_old); fTabSize.clear(); - return std::abs(gPad->AbsPixeltoX(Int_t(fs.Width())) - gPad->AbsPixeltoX(0)); + return std::abs(gPad->AbsPixeltoX(fs.Width()) - gPad->AbsPixeltoX(0)); } //////////////////////////////////////////////////////////////////////////////// @@ -2681,7 +2670,7 @@ Double_t TLatex::GetYsize() TLatexFormSize fs = FirstParse(0,GetTextSize(),text); fTextAngle = angsav; fTabSize.clear(); - return std::abs(gPad->AbsPixeltoY(Int_t(fs.Height())) - gPad->AbsPixeltoY(0)); + return std::abs(gPad->AbsPixeltoY(fs.Height()) - gPad->AbsPixeltoY(0)); } //////////////////////////////////////////////////////////////////////////////// diff --git a/roottest/root/treedraw/hsimple.ps.ref b/roottest/root/treedraw/hsimple.ps.ref index d239a81f58acb..540d1fcc8834c 100644 --- a/roottest/root/treedraw/hsimple.ps.ref +++ b/roottest/root/treedraw/hsimple.ps.ref @@ -1,7 +1,7 @@ %!PS-Adobe-2.0 %%Title: hsimple.ps: c1 %%Creator: ROOT Version 6.37.01 -%%CreationDate: Tue Aug 5 09:38:19 2025 +%%CreationDate: Thu Oct 16 12:48:46 2025 %%Orientation: Landscape %%DocumentNeededResources: ProcSet (FontSetInit) %%EndComments @@ -82,43 +82,43 @@ newpath gsave 90 r 0 -594 t 28 20 t .25 .25 scale gsave s 1213 224 m -24 Y s 1263 224 m -24 Y s 1313 224 m -24 Y s 1362 224 m -24 Y s 1412 248 m -48 Y s 1462 224 m -24 Y s 1511 224 m -24 Y s 1561 224 m -24 Y s 1611 224 m -24 Y s 1660 248 m -48 Y s 1710 224 m -24 Y s 1760 224 m -24 Y s 1809 224 m -24 Y s 1859 224 m -24 Y s 1908 248 m -48 Y s 1958 224 m -24 Y s 2008 224 m -24 Y s 2057 224 m -24 Y s 2107 224 m -24 Y s 2157 248 m -48 Y s 2206 224 m -24 Y s 2256 224 m -24 Y s 2306 224 m -24 Y s 2355 224 m -24 Y s 2405 248 m -48 Y s 2455 224 m -24 Y s 2504 224 m -24 Y s 2554 224 m -24 Y s 2604 224 m -24 Y s 2653 248 m -48 Y s 419 248 m -48 Y s 369 224 m -24 Y s 320 224 m -24 Y s 2653 248 m -48 Y s - gsave 2948 1999 0 0 C 419.332 135.542 t 0 r /Helvetica findfont 63.5352 sf 0 0 m (4) show NC gr - gsave 2948 1999 0 0 C 381.211 135.542 t 0 r /Symbol findfont 63.5352 sf 0 0 m (-) show NC gr - gsave 2948 1999 0 0 C 669.237 135.542 t 0 r /Helvetica findfont 63.5352 sf 0 0 m (3) show NC gr - gsave 2948 1999 0 0 C 631.116 135.542 t 0 r /Symbol findfont 63.5352 sf 0 0 m (-) show NC gr - gsave 2948 1999 0 0 C 914.906 135.542 t 0 r /Helvetica findfont 63.5352 sf 0 0 m (2) show NC gr - gsave 2948 1999 0 0 C 876.785 135.542 t 0 r /Symbol findfont 63.5352 sf 0 0 m (-) show NC gr - gsave 2948 1999 0 0 C 1169.05 135.542 t 0 r /Helvetica findfont 63.5352 sf 0 0 m (1) show NC gr - gsave 2948 1999 0 0 C 1130.93 135.542 t 0 r /Symbol findfont 63.5352 sf 0 0 m (-) show NC gr - gsave 2948 1999 0 0 C 1393.54 135.542 t 0 r /Helvetica findfont 63.5352 sf 0 0 m (0) show NC gr - gsave 2948 1999 0 0 C 1647.68 135.542 t 0 r /Helvetica findfont 63.5352 sf 0 0 m (1) show NC gr - gsave 2948 1999 0 0 C 1893.35 135.542 t 0 r /Helvetica findfont 63.5352 sf 0 0 m (2) show NC gr - gsave 2948 1999 0 0 C 2139.02 135.542 t 0 r /Helvetica findfont 63.5352 sf 0 0 m (3) show NC gr - gsave 2948 1999 0 0 C 2388.92 135.542 t 0 r /Helvetica findfont 63.5352 sf 0 0 m (4) show NC gr - gsave 2948 1999 0 0 C 2634.59 135.542 t 0 r /Helvetica findfont 63.5352 sf 0 0 m (5) show NC gr - gsave 2948 1999 0 0 C 2583.76 76.2422 t 0 r /Helvetica findfont 63.5352 sf 0 0 m (py) show NC gr 295 200 m 1599 Y s 366 284 m -71 X s 330 318 m -35 X s 330 351 m -35 X s 330 385 m -35 X s 330 419 m -35 X s 366 452 m -71 X s 330 486 m -35 X s 330 + gsave 2948 1999 0 0 C 419.481 133.949 t 0 r /Helvetica findfont 63.5352 sf 0 0 m (4) show NC gr + gsave 2948 1999 0 0 C 384.495 133.949 t 0 r /Symbol findfont 63.5352 sf 0 0 m (-) show NC gr + gsave 2948 1999 0 0 C 667.737 133.949 t 0 r /Helvetica findfont 63.5352 sf 0 0 m (3) show NC gr + gsave 2948 1999 0 0 C 632.75 133.949 t 0 r /Symbol findfont 63.5352 sf 0 0 m (-) show NC gr + gsave 2948 1999 0 0 C 915.992 133.949 t 0 r /Helvetica findfont 63.5352 sf 0 0 m (2) show NC gr + gsave 2948 1999 0 0 C 881.005 133.949 t 0 r /Symbol findfont 63.5352 sf 0 0 m (-) show NC gr + gsave 2948 1999 0 0 C 1168.48 133.949 t 0 r /Helvetica findfont 63.5352 sf 0 0 m (1) show NC gr + gsave 2948 1999 0 0 C 1133.5 133.949 t 0 r /Symbol findfont 63.5352 sf 0 0 m (-) show NC gr + gsave 2948 1999 0 0 C 1395.01 133.949 t 0 r /Helvetica findfont 63.5352 sf 0 0 m (0) show NC gr + gsave 2948 1999 0 0 C 1647.5 133.949 t 0 r /Helvetica findfont 63.5352 sf 0 0 m (1) show NC gr + gsave 2948 1999 0 0 C 1891.52 133.949 t 0 r /Helvetica findfont 63.5352 sf 0 0 m (2) show NC gr + gsave 2948 1999 0 0 C 2139.78 133.949 t 0 r /Helvetica findfont 63.5352 sf 0 0 m (3) show NC gr + gsave 2948 1999 0 0 C 2388.03 133.949 t 0 r /Helvetica findfont 63.5352 sf 0 0 m (4) show NC gr + gsave 2948 1999 0 0 C 2636.29 133.949 t 0 r /Helvetica findfont 63.5352 sf 0 0 m (5) show NC gr + gsave 2948 1999 0 0 C 2585.46 73.1417 t 0 r /Helvetica findfont 63.5352 sf 0 0 m (py) show NC gr 295 200 m 1599 Y s 366 284 m -71 X s 330 318 m -35 X s 330 351 m -35 X s 330 385 m -35 X s 330 419 m -35 X s 366 452 m -71 X s 330 486 m -35 X s 330 520 m -35 X s 330 553 m -35 X s 330 587 m -35 X s 366 621 m -71 X s 330 654 m -35 X s 330 688 m -35 X s 330 722 m -35 X s 330 756 m -35 X s 366 789 m -71 X s 330 823 m -35 X s 330 857 m -35 X s 330 890 m -35 X s 330 924 m -35 X s 366 958 m -71 X s 330 991 m -35 X s 330 1025 m -35 X s 330 1059 m -35 X s 330 1092 m -35 X s 366 1126 m -71 X s 330 1160 m -35 X s 330 1193 m -35 X s 330 1227 m -35 X s 330 1261 m -35 X s 366 1294 m -71 X s 330 1328 m -35 X s 330 1362 m -35 X s 330 1395 m -35 X s 330 1429 m -35 X s 366 1463 m -71 X s 330 1496 m -35 X s 330 1530 m -35 X s 330 1564 m -35 X s 330 1597 m -35 X s 366 1631 m -71 X s 330 1665 m -35 X s 330 1698 m -35 X s 330 1732 m -35 X s 330 1766 m -35 X s 366 1799 m -71 X s 366 284 m -71 X s 330 250 m -35 X s 330 217 m -35 X s 366 1799 m -71 X s - gsave 2948 1999 0 0 C 245.669 258.376 t 0 r /Helvetica findfont 63.5352 sf 0 0 m (4) show NC gr - gsave 2948 1999 0 0 C 207.548 258.376 t 0 r /Symbol findfont 63.5352 sf 0 0 m (-) show NC gr - gsave 2948 1999 0 0 C 245.669 427.803 t 0 r /Helvetica findfont 63.5352 sf 0 0 m (3) show NC gr - gsave 2948 1999 0 0 C 207.548 427.803 t 0 r /Symbol findfont 63.5352 sf 0 0 m (-) show NC gr - gsave 2948 1999 0 0 C 245.669 597.23 t 0 r /Helvetica findfont 63.5352 sf 0 0 m (2) show NC gr - gsave 2948 1999 0 0 C 207.548 597.23 t 0 r /Symbol findfont 63.5352 sf 0 0 m (-) show NC gr - gsave 2948 1999 0 0 C 254.141 762.422 t 0 r /Helvetica findfont 63.5352 sf 0 0 m (1) show NC gr - gsave 2948 1999 0 0 C 216.02 762.422 t 0 r /Symbol findfont 63.5352 sf 0 0 m (-) show NC gr - gsave 2948 1999 0 0 C 245.669 931.849 t 0 r /Helvetica findfont 63.5352 sf 0 0 m (0) show NC gr - gsave 2948 1999 0 0 C 254.141 1101.28 t 0 r /Helvetica findfont 63.5352 sf 0 0 m (1) show NC gr - gsave 2948 1999 0 0 C 245.669 1270.7 t 0 r /Helvetica findfont 63.5352 sf 0 0 m (2) show NC gr - gsave 2948 1999 0 0 C 245.669 1435.89 t 0 r /Helvetica findfont 63.5352 sf 0 0 m (3) show NC gr - gsave 2948 1999 0 0 C 245.669 1605.32 t 0 r /Helvetica findfont 63.5352 sf 0 0 m (4) show NC gr - gsave 2948 1999 0 0 C 245.669 1774.75 t 0 r /Helvetica findfont 63.5352 sf 0 0 m (5) show NC gr - gsave 2948 1999 0 0 C 135.542 1732.39 t 90 r /Helvetica findfont 63.5352 sf 0 0 m (px) show NC gr 1 1 1 c black - gsave 2948 1999 0 0 C 1368.12 1918.76 t 0 r /Helvetica findfont 88.9492 sf 0 0 m (px:py) show NC gr 0 0 0.6 c 1 1 1 c black /w 2 def /w2 {w 2 div} def /w3 {w 3 div} def 1415 961 1421 1013 1409 908 1424 827 1538 717 949 1006 1511 1242 1538 1192 - 1620 853 1140 884 1698 1134 1376 803 1577 1038 1772 1215 1305 1247 931 857 1715 791 1616 1126 1515 1086 1180 1346 955 936 1599 1160 1307 812 1666 1067 916 1099 1468 739 1378 982 1394 624 1167 798 945 685 1364 762 1179 1350 1105 1150 1258 823 1356 - 779 1589 1041 1665 593 1571 1189 1323 818 1724 910 914 991 1461 1027 1652 941 1576 954 1149 745 1558 1216 1896 951 1638 985 1380 1059 1055 1109 1327 879 906 1003 1697 886 1520 1196 1318 816 1466 598 1377 1241 1244 1147 1544 960 832 647 1652 922 1140 + gsave 2948 1999 0 0 C 246.178 256.571 t 0 r /Helvetica findfont 63.5352 sf 0 0 m (4) show NC gr + gsave 2948 1999 0 0 C 211.191 256.571 t 0 r /Symbol findfont 63.5352 sf 0 0 m (-) show NC gr + gsave 2948 1999 0 0 C 246.178 427.045 t 0 r /Helvetica findfont 63.5352 sf 0 0 m (3) show NC gr + gsave 2948 1999 0 0 C 211.191 427.045 t 0 r /Symbol findfont 63.5352 sf 0 0 m (-) show NC gr + gsave 2948 1999 0 0 C 246.178 593.285 t 0 r /Helvetica findfont 63.5352 sf 0 0 m (2) show NC gr + gsave 2948 1999 0 0 C 211.191 593.285 t 0 r /Symbol findfont 63.5352 sf 0 0 m (-) show NC gr + gsave 2948 1999 0 0 C 254.649 761.642 t 0 r /Helvetica findfont 63.5352 sf 0 0 m (1) show NC gr + gsave 2948 1999 0 0 C 219.662 761.642 t 0 r /Symbol findfont 63.5352 sf 0 0 m (-) show NC gr + gsave 2948 1999 0 0 C 246.178 932.117 t 0 r /Helvetica findfont 63.5352 sf 0 0 m (0) show NC gr + gsave 2948 1999 0 0 C 254.649 1098.36 t 0 r /Helvetica findfont 63.5352 sf 0 0 m (1) show NC gr + gsave 2948 1999 0 0 C 246.178 1266.71 t 0 r /Helvetica findfont 63.5352 sf 0 0 m (2) show NC gr + gsave 2948 1999 0 0 C 246.178 1437.19 t 0 r /Helvetica findfont 63.5352 sf 0 0 m (3) show NC gr + gsave 2948 1999 0 0 C 246.178 1603.43 t 0 r /Helvetica findfont 63.5352 sf 0 0 m (4) show NC gr + gsave 2948 1999 0 0 C 246.178 1773.9 t 0 r /Helvetica findfont 63.5352 sf 0 0 m (5) show NC gr + gsave 2948 1999 0 0 C 138.676 1731.54 t 90 r /Helvetica findfont 63.5352 sf 0 0 m (px) show NC gr 1 1 1 c black + gsave 2948 1999 0 0 C 1368.12 1915.2 t 0 r /Helvetica findfont 88.9492 sf 0 0 m (px:py) show NC gr 0 0 0.6 c 1 1 1 c black /w 2 def /w2 {w 2 div} def /w3 {w 3 div} def 1415 961 1421 1013 1409 908 1424 827 1538 717 949 1006 1511 1242 1538 1192 1620 + 853 1140 884 1698 1134 1376 803 1577 1038 1772 1215 1305 1247 931 857 1715 791 1616 1126 1515 1086 1180 1346 955 936 1599 1160 1307 812 1666 1067 916 1099 1468 739 1378 982 1394 624 1167 798 945 685 1364 762 1179 1350 1105 1150 1258 823 1356 779 + 1589 1041 1665 593 1571 1189 1323 818 1724 910 914 991 1461 1027 1652 941 1576 954 1149 745 1558 1216 1896 951 1638 985 1380 1059 1055 1109 1327 879 906 1003 1697 886 1520 1196 1318 816 1466 598 1377 1241 1244 1147 1544 960 832 647 1652 922 1140 1003 1306 797 1284 1410 1249 1194 1462 910 1180 1059 1272 1328 1099 1146 1088 1044 1495 1053 1840 834 1397 1295 1360 722 1200 957 1211 660 1395 925 1621 917 1565 895 1216 887 1171 1234 1030 716 1451 970 1206 909 1205 991 1045 663 1843 962 1859 1000 1230 1002 1242 1005 1587 1088 1688 882 981 708 1576 1077 1127 681 1121 832 1680 980 1382 948 1160 941 1664 805 100 { m20} R 1660 984 1391 1099 1412 956 1301 884 1371 555 1516 531 1727 1078 1020 1147 1567 985 1541 804 1832 952 1480 892 1237 535 1698 984 1468 856 1465 773 1224 1021 1334 939 1206 769 1772 743 1349 977 1100 1002 1341 1223 1573 936 1413 1013 1267 767 1751 550 1829 724 1308 933 1257 935 1895 717 1685 1041 1319 955 1311 868 1404 1373 1237 865 1327 859 1557 1005 1418 877 1434 863 1001 diff --git a/test/stressGraphics.ref b/test/stressGraphics.ref index 0cdcc5ea1bf63..f81e3fe4bd251 100644 --- a/test/stressGraphics.ref +++ b/test/stressGraphics.ref @@ -5,16 +5,16 @@ Test# PS1Ref# PS1Err# PDFRef# PDFErr# JPGRef# JPGErr# PNGRef# PN 4 23617 1500 19386 200 143320 123000 45665 11000 24908 1500 5 1025 150 12802 200 33468 9900 30846 5000 1072 200 6 430 50 12669 50 9558 100 5325 700 471 50 - 7 4980 50 13893 50 16143 1300 12230 500 5011 70 + 7 5130 50 14030 50 16143 1300 12230 500 5170 70 8 5442 80 13473 50 18430 700 12398 300 5469 80 9 9253 100 14377 150 19851 2400 12199 900 9283 100 10 8863 70 13645 100 24343 1100 23278 1700 8894 70 - 11 12971 100 14444 50 34063 2000 32033 1200 12864 150 + 11 12971 100 14750 50 34063 2000 32033 1200 13070 150 12 7674 100 13533 50 83557 3000 38505 4000 7720 150 13 5600 400 13242 300 16881 400 15063 800 5638 400 14 14190539 4000000 12926 100 23076 9500 25987 3000 14190704 4000000 15 15690 5000 17179 200 23076 9500 14232 1500 10437 5000 - 16 28072 400 23287 200 44462 11000 30062 5000 38007 400 + 16 28072 400 23520 200 44462 11000 30062 5000 38007 400 17 20444 400 21520 150 27511 11000 16867 600 20721 400 18 15894 100 19305 200 27187 10300 15925 350 15925 100 19 22521 300 42926 250 43868 17000 19232 11000 22729 300 @@ -40,7 +40,7 @@ Test# PS1Ref# PS1Err# PDFRef# PDFErr# JPGRef# JPGErr# PNGRef# PN 39 29664 200 19354 300 23024 6500 12821 2000 31317 200 40 46000 400 23482 300 38792 8500 30458 4000 46000 400 41 89233 500 47975 300 65532 27800 37314 12000 90600 500 - 42 36514 300 16815 200 47408 12700 33739 3700 36399 300 + 42 36514 300 17060 200 47408 12700 33739 3700 36399 300 43 207729 750 87126 750 76094 38000 54717 11000 210497 800 44 401670 6500 156361 2000 62719 34100 45592 14000 410114 6500 45 566142 5000 225206 2000 65828 31800 53934 6500 573396 5000 diff --git a/test/stressGraphics_builtinzlib.ref b/test/stressGraphics_builtinzlib.ref index 57cf8f5f1daf0..8263ccbeacca4 100644 --- a/test/stressGraphics_builtinzlib.ref +++ b/test/stressGraphics_builtinzlib.ref @@ -5,18 +5,18 @@ Test# PS1Ref# PS1Err# PDFRef# PDFErr# JPGRef# JPGErr# PNGRef# PN 4 23688 1500 19240 100 143676 123000 47075 11000 24979 1500 5 1025 150 12806 150 32266 9900 29901 5000 1072 200 6 432 50 12683 50 9517 150 5306 700 473 50 - 7 5015 50 13881 50 16377 1300 12462 500 5046 70 + 7 5140 50 13990 50 16377 1300 12462 500 5170 70 8 5488 80 13447 50 18439 700 12408 300 5502 80 9 9154 100 14263 50 20441 2400 12143 900 9283 100 10 8831 70 13645 100 24251 1100 23337 1700 8862 70 - 11 12967 100 14439 50 33842 2000 32100 1200 12970 150 + 11 12967 100 14710 50 33842 2000 32100 1200 12970 150 12 7666 100 13497 50 83044 3000 37165 4100 7713 150 13 5600 400 13242 300 16868 400 15083 800 5638 400 14 14193187 4000000 12924 100 27112 9500 25080 3000 14193352 4000000 15 16185 5000 17071 200 22801 9500 14232 1000 11271 5000 - 16 28087 400 23095 200 44898 11000 30209 5000 38047 400 + 16 28087 400 23310 200 44898 11000 30209 5000 38047 400 17 20424 400 21328 100 27719 11000 16806 600 20704 400 - 18 15874 100 19080 100 27682 10300 16076 450 15905 100 + 18 15874 100 19080 100 27682 10300 15800 550 15905 100 19 22678 300 42680 150 44177 17000 20788 11000 22866 300 20 3817 600 14345 150 19907 6300 10674 900 4523 600 21 17464 600 13900 150 49201 6300 37054 9000 8924 600 @@ -30,7 +30,7 @@ Test# PS1Ref# PS1Err# PDFRef# PDFErr# JPGRef# JPGErr# PNGRef# PN 29 6299 200 15889 100 34556 21600 19438 7000 6596 500 30 9088 500 16789 400 21370 21600 10798 7000 8846 500 31 7437 500 15047 200 18767 21600 7971 7000 7314 500 - 32 18751 5500 17967 100 32484 17400 22128 5000 18905 5500 + 32 18751 5500 18070 100 32484 17400 22128 5000 18905 5500 33 25492 8200 27143 400 50520 18200 35537 5400 32937 8200 34 3304522 100 709947 500 62761 19000 122867 7000 3396789 1000 35 3954 100 14654 300 17378 7800 9629 2000 3794 200