diff options
author | Michael Stahl <mstahl@redhat.com> | 2013-08-30 19:13:40 +0200 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2013-08-30 19:29:45 +0200 |
commit | f8307e5ae11e8235fa1fb88ed52625bf9c650dc2 (patch) | |
tree | b958be15c42ebe63f2a76bc2a866acd864fc22fa /writerfilter | |
parent | Add macosx_x86_64 extension platform identifier (diff) | |
download | core-f8307e5ae11e8235fa1fb88ed52625bf9c650dc2.tar.gz core-f8307e5ae11e8235fa1fb88ed52625bf9c650dc2.zip |
fdo#41068: writerfilter: fix image wrap polygon import
Mainly the problem seems to be that Stein's GCD algorithm requires
non-negative input parameters, and the document has this:
<wp:lineTo x="-480" y="6104"/>
(regression from 86898639d4144a078ed295d0a8bef406868802cb)
Change-Id: I8da1272c3caae84f43472aa4acb65ed66dfbd8ae
Diffstat (limited to 'writerfilter')
-rw-r--r-- | writerfilter/source/dmapper/WrapPolygonHandler.hxx | 4 | ||||
-rw-r--r-- | writerfilter/source/resourcemodel/Fraction.cxx | 4 |
2 files changed, 5 insertions, 3 deletions
diff --git a/writerfilter/source/dmapper/WrapPolygonHandler.hxx b/writerfilter/source/dmapper/WrapPolygonHandler.hxx index 52cdf5e56290..dca767fd4a0d 100644 --- a/writerfilter/source/dmapper/WrapPolygonHandler.hxx +++ b/writerfilter/source/dmapper/WrapPolygonHandler.hxx @@ -70,8 +70,8 @@ public: private: WrapPolygon::Pointer_t mpPolygon; - sal_uInt32 mnX; - sal_uInt32 mnY; + sal_Int32 mnX; + sal_Int32 mnY; // Properties virtual void lcl_attribute(Id Name, Value & val); diff --git a/writerfilter/source/resourcemodel/Fraction.cxx b/writerfilter/source/resourcemodel/Fraction.cxx index 9d8a48fa99fc..762b9afed8e6 100644 --- a/writerfilter/source/resourcemodel/Fraction.cxx +++ b/writerfilter/source/resourcemodel/Fraction.cxx @@ -22,6 +22,8 @@ namespace writerfilter { namespace resourcemodel { +// Stein's binary GCD for non-negative integers +// https://en.wikipedia.org/wiki/Binary_GCD_algorithm sal_uInt32 gcd(sal_uInt32 a, sal_uInt32 b) { if (a == 0 || b == 0) @@ -77,7 +79,7 @@ Fraction::~Fraction() void Fraction::init(sal_Int32 nNumerator, sal_Int32 nDenominator) { - sal_uInt32 nGCD = gcd(nNumerator, nDenominator); + sal_uInt32 nGCD = gcd(abs(nNumerator), abs(nDenominator)); mnNumerator = nNumerator/ nGCD; mnDenominator = nDenominator / nGCD; |