Kaydet (Commit) dc37b4ba authored tarafından Katarina Behrens's avatar Katarina Behrens Kaydeden (comit) Caolán McNamara

tdf#120797: Apply transformation also to the extents of damage

since 7034311d 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/71383Reviewed-by: 's avatarCaolán McNamara <caolanm@redhat.com>
Tested-by: 's avatarCaolá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: 's avatarCaolán McNamara <caolanm@redhat.com>
Tested-by: 's avatarCaolán McNamara <caolanm@redhat.com>
Reviewed-on: https://gerrit.libreoffice.org/71511
üst 8eb4ad05
......@@ -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;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment