Accepting request 809054 from LibreOffice:6.4
- Fix bsc#1165849 - LO-L3: Shadow size for rectangle is only a fraction of Office 365 * bsc1165849-1.diff * bsc1165849-2.diff * bsc1165849-3.diff OBS-URL: https://build.opensuse.org/request/show/809054 OBS-URL: https://build.opensuse.org/package/show/LibreOffice:Factory/libreoffice?expand=0&rev=882
This commit is contained in:
parent
546ed1ed65
commit
d750944db6
132
bsc1165849-1.diff
Normal file
132
bsc1165849-1.diff
Normal file
@ -0,0 +1,132 @@
|
|||||||
|
From b4ed373a15b1e8d90c94ec7030ee3d3785f7e8f9 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Miklos Vajna <vmiklos@collabora.com>
|
||||||
|
Date: Fri, 8 May 2020 16:43:22 +0200
|
||||||
|
Subject: [PATCH] Related: tdf#129916 svx: improve shadow size of custom shapes
|
||||||
|
|
||||||
|
There are multiple problems with this bug document, the first is that
|
||||||
|
the shadow primitive got the default position (0) of the owning shape.
|
||||||
|
Do it the same way as commit 6454b6336b8de9a4c5899adeab552af6f794cdc4
|
||||||
|
(tdf#130058 Import shadow size., 2020-04-14) did for graphic objects.
|
||||||
|
|
||||||
|
This requires constructing a transform matrix in
|
||||||
|
ViewContactOfSdrObjCustomShape::createViewIndependentPrimitive2DSequence(),
|
||||||
|
include position and size in that as a start.
|
||||||
|
|
||||||
|
(cherry picked from commit e2b0e614e1185c960b3015414919f69a1ed35aa0)
|
||||||
|
|
||||||
|
Change-Id: Ia51df555c1984971afe7c52ba3f2658099a4e7b3
|
||||||
|
---
|
||||||
|
.../primitive2d/sdrcustomshapeprimitive2d.hxx | 5 ++++-
|
||||||
|
.../viewcontactofsdrobjcustomshape.cxx | 19 +++++++++++++------
|
||||||
|
.../primitive2d/sdrcustomshapeprimitive2d.cxx | 14 +++++++++++---
|
||||||
|
3 files changed, 28 insertions(+), 10 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/svx/inc/sdr/primitive2d/sdrcustomshapeprimitive2d.hxx b/svx/inc/sdr/primitive2d/sdrcustomshapeprimitive2d.hxx
|
||||||
|
index 285185684f15..84488906470a 100644
|
||||||
|
--- a/svx/inc/sdr/primitive2d/sdrcustomshapeprimitive2d.hxx
|
||||||
|
+++ b/svx/inc/sdr/primitive2d/sdrcustomshapeprimitive2d.hxx
|
||||||
|
@@ -47,6 +47,8 @@ namespace drawinglayer
|
||||||
|
// making exceptions with shadow generation
|
||||||
|
bool const mb3DShape : 1;
|
||||||
|
|
||||||
|
+ basegfx::B2DHomMatrix maTransform;
|
||||||
|
+
|
||||||
|
protected:
|
||||||
|
// local decomposition.
|
||||||
|
virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& aViewInformation) const override;
|
||||||
|
@@ -57,7 +59,8 @@ namespace drawinglayer
|
||||||
|
const Primitive2DContainer& rSubPrimitives,
|
||||||
|
const basegfx::B2DHomMatrix& rTextBox,
|
||||||
|
bool bWordWrap,
|
||||||
|
- bool b3DShape);
|
||||||
|
+ bool b3DShape,
|
||||||
|
+ const basegfx::B2DHomMatrix& rObjectMatrix);
|
||||||
|
|
||||||
|
// data access
|
||||||
|
const attribute::SdrShadowTextAttribute& getSdrSTAttribute() const { return maSdrSTAttribute; }
|
||||||
|
diff --git a/svx/source/sdr/contact/viewcontactofsdrobjcustomshape.cxx b/svx/source/sdr/contact/viewcontactofsdrobjcustomshape.cxx
|
||||||
|
index 8630b6dd1923..7a5c0487a13f 100644
|
||||||
|
--- a/svx/source/sdr/contact/viewcontactofsdrobjcustomshape.cxx
|
||||||
|
+++ b/svx/source/sdr/contact/viewcontactofsdrobjcustomshape.cxx
|
||||||
|
@@ -157,13 +157,13 @@ namespace sdr
|
||||||
|
basegfx::B2DHomMatrix aTextBoxMatrix;
|
||||||
|
bool bWordWrap(false);
|
||||||
|
|
||||||
|
+ // take unrotated snap rect as default, then get the
|
||||||
|
+ // unrotated text box. Rotation needs to be done centered
|
||||||
|
+ const tools::Rectangle aObjectBound(GetCustomShapeObj().GetGeoRect());
|
||||||
|
+ const basegfx::B2DRange aObjectRange = vcl::unotools::b2DRectangleFromRectangle(aObjectBound);
|
||||||
|
+
|
||||||
|
if(bHasText)
|
||||||
|
{
|
||||||
|
- // take unrotated snap rect as default, then get the
|
||||||
|
- // unrotated text box. Rotation needs to be done centered
|
||||||
|
- const tools::Rectangle aObjectBound(GetCustomShapeObj().GetGeoRect());
|
||||||
|
- const basegfx::B2DRange aObjectRange = vcl::unotools::b2DRectangleFromRectangle(aObjectBound);
|
||||||
|
-
|
||||||
|
// #i101684# get the text range unrotated and absolute to the object range
|
||||||
|
const basegfx::B2DRange aTextRange(getCorrectedTextBoundRect());
|
||||||
|
|
||||||
|
@@ -238,6 +238,12 @@ namespace sdr
|
||||||
|
bWordWrap = GetCustomShapeObj().GetMergedItem(SDRATTR_TEXT_WORDWRAP).GetValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
+ // fill object matrix
|
||||||
|
+ const basegfx::B2DHomMatrix aObjectMatrix(basegfx::utils::createScaleShearXRotateTranslateB2DHomMatrix(
|
||||||
|
+ aObjectRange.getWidth(), aObjectRange.getHeight(),
|
||||||
|
+ /*fShearX=*/0, /*fRotate=*/0,
|
||||||
|
+ aObjectRange.getMinX(), aObjectRange.getMinY()));
|
||||||
|
+
|
||||||
|
// create primitive
|
||||||
|
const drawinglayer::primitive2d::Primitive2DReference xReference(
|
||||||
|
new drawinglayer::primitive2d::SdrCustomShapePrimitive2D(
|
||||||
|
@@ -245,7 +251,8 @@ namespace sdr
|
||||||
|
xGroup,
|
||||||
|
aTextBoxMatrix,
|
||||||
|
bWordWrap,
|
||||||
|
- b3DShape));
|
||||||
|
+ b3DShape,
|
||||||
|
+ aObjectMatrix));
|
||||||
|
xRetval = drawinglayer::primitive2d::Primitive2DContainer { xReference };
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/svx/source/sdr/primitive2d/sdrcustomshapeprimitive2d.cxx b/svx/source/sdr/primitive2d/sdrcustomshapeprimitive2d.cxx
|
||||||
|
index fb3018f7ff88..3e0350aaf56c 100644
|
||||||
|
--- a/svx/source/sdr/primitive2d/sdrcustomshapeprimitive2d.cxx
|
||||||
|
+++ b/svx/source/sdr/primitive2d/sdrcustomshapeprimitive2d.cxx
|
||||||
|
@@ -68,7 +68,13 @@ namespace drawinglayer
|
||||||
|
// shadow will be correct (using ColorModifierStack), but expensive.
|
||||||
|
if(!get3DShape())
|
||||||
|
{
|
||||||
|
- aRetval = createEmbeddedShadowPrimitive(aRetval, getSdrSTAttribute().getShadow());
|
||||||
|
+ basegfx::B2DTuple aScale;
|
||||||
|
+ basegfx::B2DTuple aTranslate;
|
||||||
|
+ double fRotate = 0;
|
||||||
|
+ double fShearX = 0;
|
||||||
|
+ maTransform.decompose(aScale, aTranslate, fRotate, fShearX);
|
||||||
|
+ aRetval = createEmbeddedShadowPrimitive(aRetval, getSdrSTAttribute().getShadow(),
|
||||||
|
+ aTranslate.getX(), aTranslate.getY());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -80,13 +86,15 @@ namespace drawinglayer
|
||||||
|
const Primitive2DContainer& rSubPrimitives,
|
||||||
|
const basegfx::B2DHomMatrix& rTextBox,
|
||||||
|
bool bWordWrap,
|
||||||
|
- bool b3DShape)
|
||||||
|
+ bool b3DShape,
|
||||||
|
+ const basegfx::B2DHomMatrix& rTransform)
|
||||||
|
: BufferedDecompositionPrimitive2D(),
|
||||||
|
maSdrSTAttribute(rSdrSTAttribute),
|
||||||
|
maSubPrimitives(rSubPrimitives),
|
||||||
|
maTextBox(rTextBox),
|
||||||
|
mbWordWrap(bWordWrap),
|
||||||
|
- mb3DShape(b3DShape)
|
||||||
|
+ mb3DShape(b3DShape),
|
||||||
|
+ maTransform(rTransform)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
2.26.1
|
||||||
|
|
141
bsc1165849-2.diff
Normal file
141
bsc1165849-2.diff
Normal file
@ -0,0 +1,141 @@
|
|||||||
|
From f9dcb113bc2f81ef6abd2044d8512cd4e02f176c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Miklos Vajna <vmiklos@collabora.com>
|
||||||
|
Date: Mon, 11 May 2020 10:10:34 +0200
|
||||||
|
Subject: [PATCH] Related: tdf#129916 svx: clean up duplicated matrix decompose
|
||||||
|
for shadow size
|
||||||
|
|
||||||
|
Pass the object's transform matrix to createEmbeddedShadowPrimitive(),
|
||||||
|
this allows decomposing it only at a single place. Also, this will allow
|
||||||
|
creating the shadow based on the object size.
|
||||||
|
|
||||||
|
(cherry picked from commit 4ba368a3dd793bdc703858f358e1af7112decadd)
|
||||||
|
|
||||||
|
Conflicts:
|
||||||
|
svx/inc/sdr/primitive2d/sdrdecompositiontools.hxx
|
||||||
|
svx/source/sdr/primitive2d/sdrdecompositiontools.cxx
|
||||||
|
|
||||||
|
Change-Id: I8d8bf59934b00e13cda1da0398910aa9f1ce3c59
|
||||||
|
---
|
||||||
|
.../svx/sdr/primitive2d/sdrdecompositiontools.hxx | 4 ++--
|
||||||
|
.../sdr/primitive2d/sdrcustomshapeprimitive2d.cxx | 7 +------
|
||||||
|
.../sdr/primitive2d/sdrdecompositiontools.cxx | 13 +++++++++----
|
||||||
|
svx/source/sdr/primitive2d/sdrgrafprimitive2d.cxx | 8 +-------
|
||||||
|
4 files changed, 13 insertions(+), 19 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/include/svx/sdr/primitive2d/sdrdecompositiontools.hxx b/include/svx/sdr/primitive2d/sdrdecompositiontools.hxx
|
||||||
|
index 844da339c111..8635981dc0ae 100644
|
||||||
|
--- a/include/svx/sdr/primitive2d/sdrdecompositiontools.hxx
|
||||||
|
+++ b/include/svx/sdr/primitive2d/sdrdecompositiontools.hxx
|
||||||
|
@@ -21,6 +21,7 @@
|
||||||
|
#define INCLUDED_SVX_SDR_PRIMITIVE2D_SDRDECOMPOSITIONTOOLS_HXX
|
||||||
|
|
||||||
|
#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
|
||||||
|
+#include <basegfx/matrix/b2dhommatrix.hxx>
|
||||||
|
|
||||||
|
#include <svx/svxdllapi.h>
|
||||||
|
|
||||||
|
@@ -72,8 +73,7 @@ namespace drawinglayer
|
||||||
|
Primitive2DContainer SVX_DLLPUBLIC createEmbeddedShadowPrimitive(
|
||||||
|
const Primitive2DContainer& rContent,
|
||||||
|
const attribute::SdrShadowAttribute& rShadow,
|
||||||
|
- sal_Int32 nGraphicTranslateX = 0,
|
||||||
|
- sal_Int32 nGraphicTranslateY = 0);
|
||||||
|
+ const basegfx::B2DHomMatrix& rObjectMatrix = basegfx::B2DHomMatrix());
|
||||||
|
|
||||||
|
} // end of namespace primitive2d
|
||||||
|
} // end of namespace drawinglayer
|
||||||
|
diff --git a/svx/source/sdr/primitive2d/sdrcustomshapeprimitive2d.cxx b/svx/source/sdr/primitive2d/sdrcustomshapeprimitive2d.cxx
|
||||||
|
index 3e0350aaf56c..2334b1d7fef6 100644
|
||||||
|
--- a/svx/source/sdr/primitive2d/sdrcustomshapeprimitive2d.cxx
|
||||||
|
+++ b/svx/source/sdr/primitive2d/sdrcustomshapeprimitive2d.cxx
|
||||||
|
@@ -68,13 +68,8 @@ namespace drawinglayer
|
||||||
|
// shadow will be correct (using ColorModifierStack), but expensive.
|
||||||
|
if(!get3DShape())
|
||||||
|
{
|
||||||
|
- basegfx::B2DTuple aScale;
|
||||||
|
- basegfx::B2DTuple aTranslate;
|
||||||
|
- double fRotate = 0;
|
||||||
|
- double fShearX = 0;
|
||||||
|
- maTransform.decompose(aScale, aTranslate, fRotate, fShearX);
|
||||||
|
aRetval = createEmbeddedShadowPrimitive(aRetval, getSdrSTAttribute().getShadow(),
|
||||||
|
- aTranslate.getX(), aTranslate.getY());
|
||||||
|
+ maTransform);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/svx/source/sdr/primitive2d/sdrdecompositiontools.cxx b/svx/source/sdr/primitive2d/sdrdecompositiontools.cxx
|
||||||
|
index d6822bfd1519..42c0bb60ecc9 100644
|
||||||
|
--- a/svx/source/sdr/primitive2d/sdrdecompositiontools.cxx
|
||||||
|
+++ b/svx/source/sdr/primitive2d/sdrdecompositiontools.cxx
|
||||||
|
@@ -44,6 +44,7 @@
|
||||||
|
#include <drawinglayer/attribute/sdrlineattribute.hxx>
|
||||||
|
#include <drawinglayer/attribute/sdrlinestartendattribute.hxx>
|
||||||
|
#include <drawinglayer/attribute/sdrshadowattribute.hxx>
|
||||||
|
+#include <sal/log.hxx>
|
||||||
|
|
||||||
|
|
||||||
|
using namespace com::sun::star;
|
||||||
|
@@ -482,8 +483,7 @@ namespace drawinglayer
|
||||||
|
Primitive2DContainer createEmbeddedShadowPrimitive(
|
||||||
|
const Primitive2DContainer& rContent,
|
||||||
|
const attribute::SdrShadowAttribute& rShadow,
|
||||||
|
- sal_Int32 nGraphicTranslateX,
|
||||||
|
- sal_Int32 nGraphicTranslateY)
|
||||||
|
+ const basegfx::B2DHomMatrix& rObjectMatrix)
|
||||||
|
{
|
||||||
|
if(!rContent.empty())
|
||||||
|
{
|
||||||
|
@@ -493,10 +493,15 @@ namespace drawinglayer
|
||||||
|
{
|
||||||
|
if(rShadow.getSize().getX() != 100000)
|
||||||
|
{
|
||||||
|
+ basegfx::B2DTuple aScale;
|
||||||
|
+ basegfx::B2DTuple aTranslate;
|
||||||
|
+ double fRotate = 0;
|
||||||
|
+ double fShearX = 0;
|
||||||
|
+ rObjectMatrix.decompose(aScale, aTranslate, fRotate, fShearX);
|
||||||
|
// Scale the shadow
|
||||||
|
- aShadowOffset.translate(-nGraphicTranslateX, -nGraphicTranslateY);
|
||||||
|
+ aShadowOffset.translate(-aTranslate.getX(), -aTranslate.getY());
|
||||||
|
aShadowOffset.scale(rShadow.getSize().getX() * 0.00001, rShadow.getSize().getY() * 0.00001);
|
||||||
|
- aShadowOffset.translate(nGraphicTranslateX, nGraphicTranslateY);
|
||||||
|
+ aShadowOffset.translate(aTranslate.getX(), aTranslate.getY());
|
||||||
|
}
|
||||||
|
|
||||||
|
aShadowOffset.translate(rShadow.getOffset().getX(), rShadow.getOffset().getY());
|
||||||
|
diff --git a/svx/source/sdr/primitive2d/sdrgrafprimitive2d.cxx b/svx/source/sdr/primitive2d/sdrgrafprimitive2d.cxx
|
||||||
|
index 676b26183b09..be25a1278e64 100644
|
||||||
|
--- a/svx/source/sdr/primitive2d/sdrgrafprimitive2d.cxx
|
||||||
|
+++ b/svx/source/sdr/primitive2d/sdrgrafprimitive2d.cxx
|
||||||
|
@@ -35,7 +35,6 @@ namespace drawinglayer
|
||||||
|
void SdrGrafPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& /*aViewInformation*/) const
|
||||||
|
{
|
||||||
|
Primitive2DContainer aRetval;
|
||||||
|
- basegfx::B2DTuple aTranslateGrf;
|
||||||
|
|
||||||
|
// create unit outline polygon
|
||||||
|
const basegfx::B2DPolygon& aUnitOutline(basegfx::utils::createUnitPolygon());
|
||||||
|
@@ -62,10 +61,6 @@ namespace drawinglayer
|
||||||
|
getTransform(),
|
||||||
|
getGraphicObject(),
|
||||||
|
getGraphicAttr()));
|
||||||
|
- double fRotate = 0;
|
||||||
|
- double fShearX = 0;
|
||||||
|
- basegfx::B2DTuple aScaleGrf;
|
||||||
|
- getTransform().decompose(aScaleGrf, aTranslateGrf, fRotate, fShearX);
|
||||||
|
aRetval.push_back(xGraphicContentPrimitive);
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -127,8 +122,7 @@ namespace drawinglayer
|
||||||
|
aRetval = createEmbeddedShadowPrimitive(
|
||||||
|
aRetval,
|
||||||
|
getSdrLFSTAttribute().getShadow(),
|
||||||
|
- aTranslateGrf.getX(),
|
||||||
|
- aTranslateGrf.getY());
|
||||||
|
+ getTransform());
|
||||||
|
}
|
||||||
|
|
||||||
|
rContainer.insert(rContainer.end(), aRetval.begin(), aRetval.end());
|
||||||
|
--
|
||||||
|
2.26.1
|
||||||
|
|
173
bsc1165849-3.diff
Normal file
173
bsc1165849-3.diff
Normal file
@ -0,0 +1,173 @@
|
|||||||
|
From 74f3a7b9161ede870fbe2642158601ea3eaa073e Mon Sep 17 00:00:00 2001
|
||||||
|
From: Miklos Vajna <vmiklos@collabora.com>
|
||||||
|
Date: Wed, 20 Nov 2019 10:18:37 +0100
|
||||||
|
Subject: [PATCH] drawinglayer: handle more primitives in the xml dump
|
||||||
|
|
||||||
|
In preparation of writing a test for semi-transparent shape text.
|
||||||
|
|
||||||
|
Change-Id: I2dac94a6cd9da48de9a5e407ceab78fb8be933d7
|
||||||
|
Reviewed-on: https://gerrit.libreoffice.org/83264
|
||||||
|
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
|
||||||
|
Tested-by: Jenkins
|
||||||
|
(cherry picked from commit b6d794e14e65697fbf47a5b425d9d264e26e0161)
|
||||||
|
|
||||||
|
tdf#129916 svx: fix origin of scaled shadow
|
||||||
|
|
||||||
|
We assumed that the top left corner is the origin for scaling, but that
|
||||||
|
is not necessarily the case. The intention is that the shadow direction
|
||||||
|
can be determined from its x and y offset, and the origin is the
|
||||||
|
opposite corner of the shape.
|
||||||
|
|
||||||
|
(cherry picked from commit e21d522dddce2590ed435890ae8d5fe39658a71a)
|
||||||
|
|
||||||
|
Conflicts:
|
||||||
|
svx/CppunitTest_svx_unit.mk
|
||||||
|
|
||||||
|
Change-Id: I6759302767d20739b6e2be79d379740dd06f70f5
|
||||||
|
---
|
||||||
|
.../source/tools/primitive2dxmldump.cxx | 83 ++++++++++++++-
|
||||||
|
svx/qa/unit/sdr.cxx | 96 ++++++++++++++++++
|
||||||
|
.../sdr/primitive2d/sdrdecompositiontools.cxx | 14 ++-
|
||||||
|
4 files changed, 189 insertions(+), 4 deletions(-)
|
||||||
|
create mode 100644 svx/qa/unit/data/shadow-scale-origin.pptx
|
||||||
|
create mode 100644 svx/qa/unit/sdr.cxx
|
||||||
|
|
||||||
|
diff --git a/drawinglayer/source/tools/primitive2dxmldump.cxx b/drawinglayer/source/tools/primitive2dxmldump.cxx
|
||||||
|
index 65170ae096f2..64117de878bd 100644
|
||||||
|
--- a/drawinglayer/source/tools/primitive2dxmldump.cxx
|
||||||
|
+++ b/drawinglayer/source/tools/primitive2dxmldump.cxx
|
||||||
|
@@ -34,6 +34,7 @@
|
||||||
|
|
||||||
|
#include <basegfx/polygon/b2dpolypolygontools.hxx>
|
||||||
|
#include <basegfx/polygon/b2dpolygontools.hxx>
|
||||||
|
+#include <svx/sdr/primitive2d/svx_primitivetypes2d.hxx>
|
||||||
|
|
||||||
|
using namespace drawinglayer::primitive2d;
|
||||||
|
|
||||||
|
@@ -155,7 +156,7 @@ void Primitive2dXmlDump::decomposeAndWrite(
|
||||||
|
if (!pBasePrimitive)
|
||||||
|
continue;
|
||||||
|
sal_uInt32 nId = pBasePrimitive->getPrimitive2DID();
|
||||||
|
- if (maFilter[nId])
|
||||||
|
+ if (nId < maFilter.size() && maFilter[nId])
|
||||||
|
continue;
|
||||||
|
|
||||||
|
OUString sCurrentElementTag = drawinglayer::primitive2d::idToString(nId);
|
||||||
|
@@ -336,9 +337,87 @@ void Primitive2dXmlDump::decomposeAndWrite(
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
+ case PRIMITIVE2D_ID_SDRRECTANGLEPRIMITIVE2D:
|
||||||
|
+ {
|
||||||
|
+ // SdrRectanglePrimitive2D is private to us.
|
||||||
|
+ rWriter.startElement("sdrrectangle");
|
||||||
|
+ drawinglayer::primitive2d::Primitive2DContainer aPrimitiveContainer;
|
||||||
|
+ pBasePrimitive->get2DDecomposition(aPrimitiveContainer,
|
||||||
|
+ drawinglayer::geometry::ViewInformation2D());
|
||||||
|
+ decomposeAndWrite(aPrimitiveContainer, rWriter);
|
||||||
|
+ rWriter.endElement();
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ case PRIMITIVE2D_ID_SDRBLOCKTEXTPRIMITIVE2D:
|
||||||
|
+ {
|
||||||
|
+ // SdrBlockTextPrimitive2D is private to us.
|
||||||
|
+ rWriter.startElement("sdrblocktext");
|
||||||
|
+ drawinglayer::primitive2d::Primitive2DContainer aPrimitiveContainer;
|
||||||
|
+ pBasePrimitive->get2DDecomposition(aPrimitiveContainer,
|
||||||
|
+ drawinglayer::geometry::ViewInformation2D());
|
||||||
|
+ decomposeAndWrite(aPrimitiveContainer, rWriter);
|
||||||
|
+ rWriter.endElement();
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ case PRIMITIVE2D_ID_TEXTHIERARCHYBLOCKPRIMITIVE2D:
|
||||||
|
+ {
|
||||||
|
+ // TextHierarchyBlockPrimitive2D.
|
||||||
|
+ rWriter.startElement("texthierarchyblock");
|
||||||
|
+ drawinglayer::primitive2d::Primitive2DContainer aPrimitiveContainer;
|
||||||
|
+ pBasePrimitive->get2DDecomposition(aPrimitiveContainer,
|
||||||
|
+ drawinglayer::geometry::ViewInformation2D());
|
||||||
|
+ decomposeAndWrite(aPrimitiveContainer, rWriter);
|
||||||
|
+ rWriter.endElement();
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ case PRIMITIVE2D_ID_TEXTHIERARCHYPARAGRAPHPRIMITIVE2D:
|
||||||
|
+ {
|
||||||
|
+ // TextHierarchyParagraphPrimitive2D.
|
||||||
|
+ rWriter.startElement("texthierarchyparagraph");
|
||||||
|
+ drawinglayer::primitive2d::Primitive2DContainer aPrimitiveContainer;
|
||||||
|
+ pBasePrimitive->get2DDecomposition(aPrimitiveContainer,
|
||||||
|
+ drawinglayer::geometry::ViewInformation2D());
|
||||||
|
+ decomposeAndWrite(aPrimitiveContainer, rWriter);
|
||||||
|
+ rWriter.endElement();
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ case PRIMITIVE2D_ID_TEXTHIERARCHYLINEPRIMITIVE2D:
|
||||||
|
+ {
|
||||||
|
+ // TextHierarchyLinePrimitive2D.
|
||||||
|
+ rWriter.startElement("texthierarchyline");
|
||||||
|
+ drawinglayer::primitive2d::Primitive2DContainer aPrimitiveContainer;
|
||||||
|
+ pBasePrimitive->get2DDecomposition(aPrimitiveContainer,
|
||||||
|
+ drawinglayer::geometry::ViewInformation2D());
|
||||||
|
+ decomposeAndWrite(aPrimitiveContainer, rWriter);
|
||||||
|
+ rWriter.endElement();
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ case PRIMITIVE2D_ID_SHADOWPRIMITIVE2D:
|
||||||
|
+ {
|
||||||
|
+ // ShadowPrimitive2D.
|
||||||
|
+ rWriter.startElement("shadow");
|
||||||
|
+ drawinglayer::primitive2d::Primitive2DContainer aPrimitiveContainer;
|
||||||
|
+ pBasePrimitive->get2DDecomposition(aPrimitiveContainer,
|
||||||
|
+ drawinglayer::geometry::ViewInformation2D());
|
||||||
|
+ decomposeAndWrite(aPrimitiveContainer, rWriter);
|
||||||
|
+ rWriter.endElement();
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
- rWriter.element(OUStringToOString(sCurrentElementTag, RTL_TEXTENCODING_UTF8));
|
||||||
|
+ rWriter.startElement("unhandled");
|
||||||
|
+ rWriter.attribute("id", OUStringToOString(sCurrentElementTag, RTL_TEXTENCODING_UTF8));
|
||||||
|
+ drawinglayer::primitive2d::Primitive2DContainer aPrimitiveContainer;
|
||||||
|
+ pBasePrimitive->get2DDecomposition(aPrimitiveContainer,
|
||||||
|
+ drawinglayer::geometry::ViewInformation2D());
|
||||||
|
+ decomposeAndWrite(aPrimitiveContainer, rWriter);
|
||||||
|
+ rWriter.endElement();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
diff --git a/svx/source/sdr/primitive2d/sdrdecompositiontools.cxx b/svx/source/sdr/primitive2d/sdrdecompositiontools.cxx
|
||||||
|
index 42c0bb60ecc9..48575d3b4917 100644
|
||||||
|
--- a/svx/source/sdr/primitive2d/sdrdecompositiontools.cxx
|
||||||
|
+++ b/svx/source/sdr/primitive2d/sdrdecompositiontools.cxx
|
||||||
|
@@ -499,9 +499,19 @@ namespace drawinglayer
|
||||||
|
double fShearX = 0;
|
||||||
|
rObjectMatrix.decompose(aScale, aTranslate, fRotate, fShearX);
|
||||||
|
// Scale the shadow
|
||||||
|
- aShadowOffset.translate(-aTranslate.getX(), -aTranslate.getY());
|
||||||
|
+ double nTranslateX = aTranslate.getX();
|
||||||
|
+ double nTranslateY = aTranslate.getY();
|
||||||
|
+
|
||||||
|
+ // The origin for scaling is the top left corner by default. A negative
|
||||||
|
+ // shadow offset changes the origin.
|
||||||
|
+ if (rShadow.getOffset().getX() < 0)
|
||||||
|
+ nTranslateX += aScale.getX();
|
||||||
|
+ if (rShadow.getOffset().getY() < 0)
|
||||||
|
+ nTranslateY += aScale.getY();
|
||||||
|
+
|
||||||
|
+ aShadowOffset.translate(-nTranslateX, -nTranslateY);
|
||||||
|
aShadowOffset.scale(rShadow.getSize().getX() * 0.00001, rShadow.getSize().getY() * 0.00001);
|
||||||
|
- aShadowOffset.translate(aTranslate.getX(), aTranslate.getY());
|
||||||
|
+ aShadowOffset.translate(nTranslateX, nTranslateY);
|
||||||
|
}
|
||||||
|
|
||||||
|
aShadowOffset.translate(rShadow.getOffset().getX(), rShadow.getOffset().getY());
|
||||||
|
--
|
||||||
|
2.26.1
|
||||||
|
|
@ -1,3 +1,11 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue May 26 11:25:10 UTC 2020 - Andras Timar <andras.timar@collabora.com>
|
||||||
|
|
||||||
|
- Fix bsc#1165849 - LO-L3: Shadow size for rectangle is only a fraction of Office 365
|
||||||
|
* bsc1165849-1.diff
|
||||||
|
* bsc1165849-2.diff
|
||||||
|
* bsc1165849-3.diff
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Thu May 21 09:12:27 UTC 2020 - Tomáš Chvátal <tchvatal@suse.com>
|
Thu May 21 09:12:27 UTC 2020 - Tomáš Chvátal <tchvatal@suse.com>
|
||||||
|
|
||||||
|
@ -111,6 +111,10 @@ Patch14: bsc1160687-5.diff
|
|||||||
Patch15: bsc1160687-6.diff
|
Patch15: bsc1160687-6.diff
|
||||||
Patch16: bsc1160687-7.diff
|
Patch16: bsc1160687-7.diff
|
||||||
Patch17: bsc1160687-8.diff
|
Patch17: bsc1160687-8.diff
|
||||||
|
# Bug 1165849 - LO-L3: Shadow size for rectangle is only a fraction of Office 365
|
||||||
|
Patch18: bsc1165849-1.diff
|
||||||
|
Patch19: bsc1165849-2.diff
|
||||||
|
Patch20: bsc1165849-3.diff
|
||||||
# try to save space by using hardlinks
|
# try to save space by using hardlinks
|
||||||
Patch990: install-with-hardlinks.diff
|
Patch990: install-with-hardlinks.diff
|
||||||
# save time by relying on rpm check rather than doing stupid find+grep
|
# save time by relying on rpm check rather than doing stupid find+grep
|
||||||
@ -977,6 +981,9 @@ Provides %{langname} translations and additional resources (help files, etc.) fo
|
|||||||
%patch15 -p1
|
%patch15 -p1
|
||||||
%patch16 -p1
|
%patch16 -p1
|
||||||
%patch17 -p1
|
%patch17 -p1
|
||||||
|
%patch18 -p1
|
||||||
|
%patch19 -p1
|
||||||
|
%patch20 -p1
|
||||||
%patch990 -p1
|
%patch990 -p1
|
||||||
%patch991 -p1
|
%patch991 -p1
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user