Accepting request 391705 from LibreOffice:5.1

- Version update to 5.1.3.1:
  * Various small bugfixes all around 5.1 series

- fix bnc#856729 - LO-L3: Double borders in Calc
  * bnc856729.patch

OBS-URL: https://build.opensuse.org/request/show/391705
OBS-URL: https://build.opensuse.org/package/show/LibreOffice:Factory/libreoffice?expand=0&rev=400
This commit is contained in:
Tomáš Chvátal 2016-04-27 11:29:21 +00:00 committed by Git OBS Bridge
parent 5a1c428b5a
commit bb8f8c342f
9 changed files with 183 additions and 13 deletions

155
bnc856729.patch Normal file
View File

@ -0,0 +1,155 @@
From a5928a57a53df84cacd2975e227f9e03d50456a6 Mon Sep 17 00:00:00 2001
From: Miklos Vajna <vmiklos@collabora.co.uk>
Date: Fri, 15 Apr 2016 15:46:06 +0200
Subject: [PATCH] tdf#99315 VclPixelProcessor2D: fix double border line width
Regression from commit 2c91cb08d65cd35fa8ef6eaca3677aa82fb58cbe (better
drawing support for borders of different width, fdo#33634, 2012-04-04),
the problem is that previously the width of inner/outer double border
lines got rounded to integer values quite early, but after the commit
they are kept at a double precision for much longer, which needs pixel
correction in VclPixelProcessor2D.
Example: if the border with is 1.47, and the line gets moved by 0.2
pixels, then the inner and outer edge of the line will be 0.2 and 1.67,
which gets rounded to 0 -> 2 in the pixel processor. Previously the
input was rounded to 1, so moving by 0.2 resulted in 0.2 -> 1.2, which
got rounded to 0 -> 1. The result is that sometimes the line width is 1
pixel wider than expected.
Fix the problem by allowing VclPixelProcessor2D to request pixel
correction from BorderLinePrimitive2D. It wouldn't be possible to do
pixel correction only in VclPixelProcessor2D, as it has no idea what to
correct: it only gets polygons, so it has no idea if e.g. the top of a
polygon is the outer edge of a top border line or an inner edge of a
bottom border line.
Conflicts:
drawinglayer/source/primitive2d/borderlineprimitive2d.cxx
(cherry picked from commits 1ee570a4e625719f8bf270d372926c0d829ae6f0,
555c9add26e06030402c73f885de98f4b96826f0,
304f50684d3ac08e973fd27e6acf3e821394d164,
422f10c5d7ebe6f4b778636c9c1eb6dbdf708a27,
ce12a5021a080cc1781e0e0256af5e0085e11ef2 and
cac70559013e575009657aa3c5168b88b1f14691)
Change-Id: I1971f3a952fbcdc598ab46c659e12d976c13cbe6
Reviewed-on: https://gerrit.libreoffice.org/24238
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Eike Rathke <erack@redhat.com>
Tested-by: Eike Rathke <erack@redhat.com>
---
drawinglayer/CppunitTest_drawinglayer_border.mk | 52 +++++++
drawinglayer/Module_drawinglayer.mk | 4 +
drawinglayer/qa/unit/border.cxx | 150 +++++++++++++++++++++
.../source/primitive2d/borderlineprimitive2d.cxx | 28 +++-
.../source/processor2d/vclpixelprocessor2d.cxx | 7 +-
.../primitive2d/borderlineprimitive2d.hxx | 2 +
6 files changed, 239 insertions(+), 4 deletions(-)
create mode 100644 drawinglayer/CppunitTest_drawinglayer_border.mk
create mode 100644 drawinglayer/qa/unit/border.cxx
diff --git a/drawinglayer/source/primitive2d/borderlineprimitive2d.cxx b/drawinglayer/source/primitive2d/borderlineprimitive2d.cxx
index 30e656d..30e7dcb 100644
--- a/drawinglayer/source/primitive2d/borderlineprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/borderlineprimitive2d.cxx
@@ -28,6 +28,17 @@
#include <numeric>
#include <algorithm>
+#if defined(ANDROID)
+namespace std
+{
+template<typename T>
+T round(T x)
+{
+ return ::round(x);
+}
+}
+#endif
+
namespace drawinglayer {
namespace {
@@ -63,7 +74,7 @@ primitive2d::Primitive2DReference makeSolidLinePrimitive(
const basegfx::B2DVector& rVector, const basegfx::BColor& rColor, double fLineWidth, double fGap)
{
const basegfx::B2DVector aPerpendicular = basegfx::getPerpendicular(rVector);
- const basegfx::B2DVector aLineWidthOffset = ((fLineWidth + 1.0) * 0.5) * aPerpendicular;
+ const basegfx::B2DVector aLineWidthOffset = (fLineWidth * 0.5) * aPerpendicular;
basegfx::B2DPolygon aPolygon;
aPolygon.append(rStart + aLineWidthOffset);
@@ -163,6 +174,11 @@ primitive2d::Primitive2DReference makeSolidLinePrimitive(
Primitive2DSequence BorderLinePrimitive2D::create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const
{
+ return createDecomposition(rViewInformation, false);
+ }
+
+ Primitive2DSequence BorderLinePrimitive2D::createDecomposition(const geometry::ViewInformation2D& rViewInformation, bool bPixelCorrection) const
+ {
Primitive2DSequence xRetval;
if(!getStart().equal(getEnd()) && ( isInsideUsed() || isOutsideUsed() ) )
@@ -199,8 +215,11 @@ primitive2d::Primitive2DReference makeSolidLinePrimitive(
xRetval[0] = makeHairLinePrimitive(
getStart(), getEnd(), aVector, getRGBColorLeft(), 0.0);
else
+ {
+ double fWidth = bPixelCorrection ? std::round(fLeftWidth) : fLeftWidth;
xRetval[0] = makeSolidLinePrimitive(
- aClipRegion, aTmpStart, aTmpEnd, aVector, getRGBColorLeft(), fLeftWidth, -fLeftWidth/2.0);
+ aClipRegion, aTmpStart, aTmpEnd, aVector, getRGBColorLeft(), fWidth, -fLeftWidth/2.0);
+ }
// "outside" line
@@ -208,8 +227,11 @@ primitive2d::Primitive2DReference makeSolidLinePrimitive(
xRetval[1] = makeHairLinePrimitive(
getStart(), getEnd(), aVector, getRGBColorRight(), fLeftWidth+mfDistance);
else
+ {
+ double fWidth = bPixelCorrection ? std::round(fRightWidth) : fRightWidth;
xRetval[1] = makeSolidLinePrimitive(
- aClipRegion, aTmpStart, aTmpEnd, aVector, getRGBColorRight(), fRightWidth, mfDistance+fRightWidth/2.0);
+ aClipRegion, aTmpStart, aTmpEnd, aVector, getRGBColorRight(), fWidth, mfDistance+fRightWidth/2.0);
+ }
}
else
{
diff --git a/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx b/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx
index 8dcd74e..8398573 100644
--- a/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx
+++ b/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx
@@ -1232,7 +1232,12 @@ namespace drawinglayer
static_cast<const drawinglayer::primitive2d::BorderLinePrimitive2D&>(rCandidate);
if (!tryDrawBorderLinePrimitive2DDirect(rBorder))
- process(rCandidate.get2DDecomposition(getViewInformation2D()));
+ {
+ if (rBorder.getStyle() == table::BorderLineStyle::DOUBLE)
+ process(rBorder.createDecomposition(getViewInformation2D(), true));
+ else
+ process(rCandidate.get2DDecomposition(getViewInformation2D()));
+ }
mpOutputDevice->SetAntialiasing(nAntiAliasing);
break;
diff --git a/include/drawinglayer/primitive2d/borderlineprimitive2d.hxx b/include/drawinglayer/primitive2d/borderlineprimitive2d.hxx
index 72e04d5..f152f2d 100644
--- a/include/drawinglayer/primitive2d/borderlineprimitive2d.hxx
+++ b/include/drawinglayer/primitive2d/borderlineprimitive2d.hxx
@@ -132,6 +132,8 @@ namespace drawinglayer
bool hasGapColor( ) const { return mbHasGapColor; }
short getStyle () const { return mnStyle; }
double getPatternScale() const { return mfPatternScale; }
+ /// Same as create2DDecomposition(), but can do pixel correction if requested.
+ Primitive2DSequence createDecomposition(const geometry::ViewInformation2D& rViewInformation, bool bPixelCorrection) const;
/// compare operator
virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
--
2.6.6

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:54ecdc9e0201a64fb6a0898b2e5ebd6c6e22c36965e3eb797ae351219e441781
size 173763036

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:079898348a8a3402d973d2ac990086530b8bbf8b0c5fa0573c8f377563fd6e16
size 176074904

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:dc4d9fd6ca78ad89069ca1f0187f274c9cd83fb8849716193d25bce6ca072953
size 1900736

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:568cb8371bf0f76186c3f7910f431d84605306e074ad58cadff1200f8c0f4ac7
size 1904828

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:7fbf0d742df7d9a5cf567bb8b8d78e16160936a6f339b9d035e0ac9e1d2455f0
size 131600616

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:669ac36799ffdc8332588bd44f00059d0f31de1ade4632ceb1209330f581ddf6
size 131716304

View File

@ -1,3 +1,15 @@
-------------------------------------------------------------------
Tue Apr 26 09:46:38 UTC 2016 - andras.timar@collabora.com
- Version update to 5.1.3.1:
* Various small bugfixes all around 5.1 series
-------------------------------------------------------------------
Tue Apr 26 09:10:05 UTC 2016 - andras.timar@collabora.com
- fix bnc#856729 - LO-L3: Double borders in Calc
* bnc856729.patch
-------------------------------------------------------------------
Sat Apr 23 07:09:45 UTC 2016 - dmueller@suse.com
@ -48,7 +60,7 @@ Fri Mar 11 20:41:35 UTC 2016 - tchvatal@suse.com
Fri Mar 11 17:17:22 UTC 2016 - tchvatal@suse.com
- Version update to 5.1.1.3:
* Various bugfixes for the first bugfix release of 5.1
* Various bugfixes for the first bugfix release of 5.1
- Update patch to build on sle11
* 0001-liborcus-0.11.patch

View File

@ -22,7 +22,7 @@
%define numbertext_version 0.9.5
# Urls
%define external_url http://dev-www.libreoffice.org/src/
%define tarball_url http://download.documentfoundation.org/libreoffice/src/5.1.2
%define tarball_url http://download.documentfoundation.org/libreoffice/src/5.1.3
# Old Make and bundle or not
%if 0%{?suse_version} > 1230
%bcond_with oldmake
@ -64,7 +64,7 @@ Requires: python-importlib
%endif
# This is used due to the need for beta releases
Name: libreoffice
Version: 5.1.2.2
Version: 5.1.3.1
Release: 0
Summary: A Free Office Suite (Framework)
License: Apache-2.0 and Artistic-1.0 and BSD-3-Clause and BSD-4-Clause and GPL-2.0+ and LPPL-1.3c and LGPL-2.1+ and LGPL-3.0 and MPL-1.1 and MIT and SUSE-Public-Domain and W3C
@ -178,6 +178,8 @@ Patch14: 0002-boost-filesystem1.patch
Patch15: 0003-boost-filesystem2.patch
# PATCH-HOTFIX-UPSTREAM: disable test that rounds wrongly on most archs
Patch16: libreoffice-hotfix-disablebrokenshapetest.patch
# bnc#856729 - LO-L3: fix double borders in Calc
Patch17: bnc856729.patch
# try to save space by using hardlinks
Patch990: install-with-hardlinks.diff
BuildRequires: %{name}-share-linker
@ -507,7 +509,7 @@ and obsoleted the old Industrial theme.
%package glade
Summary: Support for creating LibreOffice dialogs in glade
License: Apache-2.0 and Artistic-1.0 and BSD-3-Clause and BSD-4-Clause and GPL-2.0+ and LPPL-1.3c and LGPL-2.1+ and LGPL-3.0 and MPL-1.1 and MIT and SUSE-Public-Domain and W3C
Group: Productivity/Office/Suite
Group: Productivity/Office/Suite
Requires: %{name} = %{version}
%if %{with noarch_subpkgs}
BuildArch: noarch
@ -1073,6 +1075,7 @@ Provides additional %{langname} translations and resources for %{project}. \
%patch14 -p1
%patch15 -p1
%patch16 -p1
%patch17 -p1
%patch990 -p1
# 256x256 icons
tar -xjf %{SOURCE20}