summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBartosz Kosiorek <gang65@poczta.onet.pl>2018-04-13 16:56:29 +0200
committerBartosz Kosiorek <gang65@poczta.onet.pl>2018-04-16 23:09:38 +0200
commit7d829719a25eaeee7022983ca211203c2a48cf51 (patch)
treed29d02c2d740edce41e553d8f4a0695f0bc4b0c7
parent08364d213091e47b91b5fd044c7cda7e71d2647b (diff)
tdf#55058 Properly close shapes with close shape method.
With previous implementation of closing shapes, we are adding new line between last and first point. It was causing wrong border shape during displaying. With this patch proper method was used to fix that. Change-Id: If0a084700401edd9d3b8a57cb27154079828e6ed Reviewed-on: https://gerrit.libreoffice.org/52843 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Patrick Jaap <patrick.jaap@tu-dresden.de> Reviewed-by: Bartosz Kosiorek <gang65@poczta.onet.pl>
-rw-r--r--drawinglayer/source/tools/emfphelperdata.cxx12
-rw-r--r--drawinglayer/source/tools/emfppath.cxx5
2 files changed, 7 insertions, 10 deletions
diff --git a/drawinglayer/source/tools/emfphelperdata.cxx b/drawinglayer/source/tools/emfphelperdata.cxx
index 49ed0f13b734..c4574a62fb45 100644
--- a/drawinglayer/source/tools/emfphelperdata.cxx
+++ b/drawinglayer/source/tools/emfphelperdata.cxx
@@ -1013,7 +1013,7 @@ namespace emfplushelper
// Silent MSVC warning C4701: potentially uninitialized local variable 'brushIndexOrColor' used
sal_uInt32 brushIndexOrColor = 999;
sal_Int32 rectangles;
- bool isColor = (flags & 0x8000);
+ const bool isColor = (flags & 0x8000);
::basegfx::B2DPolygon polygon;
if (EmfPlusRecordTypeFillRects == type)
@@ -1033,14 +1033,14 @@ namespace emfplushelper
{
float x, y, width, height;
ReadRectangle(rMS, x, y, width, height, bool(flags & 0x4000));
-
+ polygon.clear();
polygon.append(Map(x, y));
polygon.append(Map(x + width, y));
polygon.append(Map(x + width, y + height));
polygon.append(Map(x, y + height));
- polygon.append(Map(x, y));
+ polygon.setClosed(true);
- SAL_INFO("drawinglayer", "EMF+\trectangle: " << x << ", " << width << "x" << height);
+ SAL_INFO("drawinglayer", "EMF+\t rectangle: " << x << ", "<< y << " " << width << "x" << height);
::basegfx::B2DPolyPolygon polyPolygon(polygon);
if (type == EmfPlusRecordTypeFillRects)
@@ -1052,13 +1052,13 @@ namespace emfplushelper
}
case EmfPlusRecordTypeFillPolygon:
{
- sal_uInt8 index = flags & 0xff;
+ const sal_uInt8 index = flags & 0xff;
sal_uInt32 brushIndexOrColor;
sal_Int32 points;
rMS.ReadUInt32(brushIndexOrColor);
rMS.ReadInt32(points);
- SAL_INFO("drawinglayer", "EMF+ FillPolygon in slot: " << +index << " points: " << points);
+ SAL_INFO("drawinglayer", "EMF+ FillPolygon in slot: " << index << " points: " << points);
SAL_INFO("drawinglayer", "EMF+\t: " << ((flags & 0x8000) ? "color" : "brush index") << " 0x" << std::hex << brushIndexOrColor << std::dec);
EMFPPath path(points, true);
diff --git a/drawinglayer/source/tools/emfppath.cxx b/drawinglayer/source/tools/emfppath.cxx
index ec9a9e44c328..b3f63bc26e14 100644
--- a/drawinglayer/source/tools/emfppath.cxx
+++ b/drawinglayer/source/tools/emfppath.cxx
@@ -156,10 +156,7 @@ namespace emfplushelper
// Draw an extra line between the last point and the first point, to close the shape.
if (bAddLineToCloseShape)
{
- if (bMapIt)
- polygon.append (rR.Map (pPoints [0], pPoints [1]) );
- else
- polygon.append (::basegfx::B2DPoint (pPoints [0], pPoints [1]) );
+ polygon.setClosed (true);
}
if (polygon.count ())