drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx |   16 ++++++++-----
 drawinglayer/source/processor2d/vclprocessor2d.cxx         |    2 -
 2 files changed, 12 insertions(+), 6 deletions(-)

New commits:
commit f8ca5b1b95b92e9410df6037781680dcd35ff963
Author: Michael Meeks <michael.me...@suse.com>
Date:   Mon Mar 25 21:33:00 2013 +0000

    fdo#61789 - move metafile line width scaling somewhere more sensible.
    (cherry picked from commit 432b6ab482d6fcef05514ab17e4bc762ee552139)
    
    Signed-off-by: Michael Stahl <mst...@redhat.com>

diff --git a/drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx 
b/drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx
index f9d583d..9663384 100644
--- a/drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx
+++ b/drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx
@@ -444,6 +444,15 @@ namespace drawinglayer
                     // pre-fill fLineWidth
                     fLineWidth = pLineAttribute->getWidth();
 
+                    // #i113922# the LineWidth is duplicated in the 
MetaPolylineAction,
+                    // and also inside the SvtGraphicStroke and needs 
transforming into
+                    // the same space as its co-ordinates here cf. fdo#61789
+                    // This is a partial fix. When a object transformation is 
used which
+                    // e.g. contains a scaleX != scaleY, an unproportional 
scaling will happen.
+                    const basegfx::B2DVector 
aDiscreteUnit(maCurrentTransformation *
+                                                           
basegfx::B2DVector(pLineAttribute->getWidth(), 0.0 ));
+                    fLineWidth = aDiscreteUnit.getLength();
+
                     // pre-fill fMiterLength
                     fMiterLength = fLineWidth;
 
@@ -1233,11 +1242,8 @@ namespace drawinglayer
                             mpOutputDevice->SetFillColor();
                             
aHairLinePolyPolygon.transform(maCurrentTransformation);
 
-                            // #i113922# LineWidth needs to be transformed, too
-                            const basegfx::B2DVector 
aDiscreteUnit(maCurrentTransformation * basegfx::B2DVector(rLine.getWidth(), 
0.0));
-                            const double 
fDiscreteLineWidth(aDiscreteUnit.getLength());
-
-                            LineInfo aLineInfo(LINE_SOLID, 
basegfx::fround(fDiscreteLineWidth));
+                            // use the transformed line width from the stroke 
info.
+                            LineInfo aLineInfo(LINE_SOLID, 
basegfx::fround(pSvtGraphicStroke->getStrokeWidth()));
                             aLineInfo.SetLineJoin(rLine.getLineJoin());
                             aLineInfo.SetLineCap(rLine.getLineCap());
 
diff --git a/drawinglayer/source/processor2d/vclprocessor2d.cxx 
b/drawinglayer/source/processor2d/vclprocessor2d.cxx
index adde6aa..1a50490 100644
--- a/drawinglayer/source/processor2d/vclprocessor2d.cxx
+++ b/drawinglayer/source/processor2d/vclprocessor2d.cxx
@@ -1350,7 +1350,7 @@ namespace drawinglayer
                     {
                         // #i101491# If the polygon complexity uses more than 
a given amount, do
                         // use OuputDevice::DrawPolyLine directly; this will 
avoid buffering all
-                        // decompositions in primtives (memory) and fallback 
to old line painting
+                        // decompositions in primitives (memory) and fallback 
to old line painting
                         // for very complex polygons, too
                         for(sal_uInt32 a(0); a < nCount; a++)
                         {
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to