summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKatarina Behrens <Katarina.Behrens@cib.de>2019-04-26 17:12:41 +0200
committerCaolán McNamara <caolanm@redhat.com>2019-04-29 18:30:05 +0200
commitdc37b4babc3234df7e2bde67ac662324925f0e61 (patch)
treeeeffaf85b6360b0f3cfd9425194d73604263afd2
parentResolves: tdf#124980 drop dangling timer (diff)
downloadcore-dc37b4babc3234df7e2bde67ac662324925f0e61.tar.gz
core-dc37b4babc3234df7e2bde67ac662324925f0e61.zip
tdf#120797: Apply transformation also to the extents of damage
since 7034311dce663c895577267110baadbec312d491 affine transformation is passed down to drawPolyPolygon and drawPolyLine functions. The transformation was correctly applied to cairo context, but not the extents of damage so those had old, untransformed coordinates and were therefore not redrawn Change-Id: I61ce005ef8770ce5c4560a9d953cd92f440043be Reviewed-on: https://gerrit.libreoffice.org/71383 Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com> remove comment in light of fix for tdf#120797 Change-Id: I3093f764a26abdbdb651596352ba74b7fa1c3306 Reviewed-on: https://gerrit.libreoffice.org/71399 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com> Reviewed-on: https://gerrit.libreoffice.org/71511
-rw-r--r--vcl/headless/svpgdi.cxx20
1 files changed, 7 insertions, 13 deletions
diff --git a/vcl/headless/svpgdi.cxx b/vcl/headless/svpgdi.cxx
index 3a785d642301..2e29518a7dac 100644
--- a/vcl/headless/svpgdi.cxx
+++ b/vcl/headless/svpgdi.cxx
@@ -1143,6 +1143,9 @@ bool SvpSalGraphics::drawPolyLine(
fMiterMinimumAngle,
bPixelSnapHairline));
+ // if transformation has been applied, transform also extents (ranges)
+ // of damage so they can be correctly redrawn
+ aExtents.transform(rObjectToDevice);
releaseCairoContext(cr, false, aExtents);
return bRetval;
@@ -1343,21 +1346,9 @@ bool SvpSalGraphics::drawPolyLine(
}
// extract extents
- if(nullptr != pExtents)
- {
- // This uses cairo_stroke_extents and combines with cairo_clip_extents, so
- // referring to Cairo-documentation:
- // "Computes a bounding box in user coordinates covering the area that would
- // be affected, (the "inked" area), by a cairo_stroke() operation given the
- // current path and stroke parameters."
- // It *should* use the current set cairo_matrix_t.
+ if (pExtents)
*pExtents = getClippedStrokeDamage(cr);
- // If not - the following code needs to be used to correct that:
- // if(!pExtents->isEmpty() && !bObjectToDeviceIsIdentity)
- // pExtents->transform(rObjectToDevice);
- }
-
// draw and consume
cairo_stroke(cr);
@@ -1490,6 +1481,9 @@ bool SvpSalGraphics::drawPolyPolygon(
cairo_stroke_preserve(cr);
}
+ // if transformation has been applied, transform also extents (ranges)
+ // of damage so they can be correctly redrawn
+ extents.transform(rObjectToDevice);
releaseCairoContext(cr, true, extents);
return true;