Accepting request 810707 from LibreOffice:Factory
OBS-URL: https://build.opensuse.org/request/show/810707 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/libreoffice?expand=0&rev=204
This commit is contained in:
commit
3311affae0
501
bsc1146025.diff
Normal file
501
bsc1146025.diff
Normal file
@ -0,0 +1,501 @@
|
||||
From bc15a8241b1c8e113bcbb83343652b2c84820e87 Mon Sep 17 00:00:00 2001
|
||||
From: Miklos Vajna <vmiklos@collabora.com>
|
||||
Date: Fri, 22 May 2020 17:58:22 +0200
|
||||
Subject: [PATCH] bsc1146025.diff
|
||||
|
||||
smartart import: handle multiple <a:schemeClr> in <dgm:fillClrLst>
|
||||
|
||||
The TODO in the ColorFragmentHandler ctor was right: we only handled the
|
||||
last <a:schemeClr> child, but there can be multiple one.
|
||||
|
||||
Use them based on the index of a shape in a <dgm:forEach> loop.
|
||||
|
||||
Move the TODO to the only place which still assumes a single color in
|
||||
the color list.
|
||||
|
||||
(cherry picked from commit 12bea6c897822964ad4705418da54411cb15749e)
|
||||
|
||||
Conflicts:
|
||||
oox/source/drawingml/colorchoicecontext.cxx
|
||||
oox/source/drawingml/diagram/diagram.cxx
|
||||
sd/qa/unit/import-tests-smartart.cxx
|
||||
|
||||
oox smartart import: fix aspect ratio of shape with composite algo
|
||||
|
||||
The layout node has alg=composite, then a parTx and a desTx child layout
|
||||
nodes. No matter what order is used (parent first, child first), the
|
||||
result will be wrong, as the constraints refer to each other. I did not
|
||||
spot any description in ISO 29500-1 that would describe what is the
|
||||
expected behavior.
|
||||
|
||||
Researching this, found "One other consideration when specifying
|
||||
composite constraints is that the constraints must be specified in the
|
||||
same order as the nested layout nodes." at
|
||||
<http://web.archive.org/web/20111015151600/http://msdn.microsoft.com/en-us/magazine/cc163470.aspx>,
|
||||
which suggests to handle constraints for each shape in a parent -> child
|
||||
order, but keep a shared state when iterating over the children which
|
||||
gives us:
|
||||
|
||||
- parent node, all direct constraints
|
||||
- for each child node:
|
||||
- child's constraints from parent
|
||||
- child's own constraints
|
||||
|
||||
This way the desTx top value can depend on the parTx's height, and it's
|
||||
supported to define parTx's height only in the parTx layout node, not in
|
||||
the composite parent.
|
||||
|
||||
And after all, it matches what PowerPoint does, so the column headings
|
||||
in the bugdoc have a 4:10 height:width aspect ratio.
|
||||
|
||||
(cherry picked from commit 414586649582e182b2603702f4f586f4beeed8a9)
|
||||
|
||||
oox smartart import, composite alg: implement vertical centering
|
||||
|
||||
The bugdoc's case was that the total height would be used by 2 shapes,
|
||||
but then a constraint decreases the height of one shape, so not all
|
||||
vertical space is used.
|
||||
|
||||
We used to just count from the top, need to center vertically, as
|
||||
PowerPoint does it.
|
||||
|
||||
(cherry picked from commit acdde3c643fde015214c546b1567727272ea799e)
|
||||
|
||||
Change-Id: I1c5c4f82e621f1110ef06b0490ff79f82f60f214
|
||||
deb76c1ddd1ffff8d2a217cddf81106d1bb97eb9
|
||||
436019e9e837b73130e387c9bcd309e20045b0f9
|
||||
---
|
||||
oox/inc/drawingml/colorchoicecontext.hxx | 15 ++
|
||||
oox/source/drawingml/colorchoicecontext.cxx | 25 +++
|
||||
oox/source/drawingml/diagram/diagram.cxx | 17 +-
|
||||
oox/source/drawingml/diagram/diagram.hxx | 16 +-
|
||||
.../diagram/diagramfragmenthandler.cxx | 15 +-
|
||||
.../drawingml/diagram/diagramlayoutatoms.cxx | 162 ++++++++++++++----
|
||||
.../drawingml/diagram/diagramlayoutatoms.hxx | 3 +-
|
||||
.../drawingml/diagram/layoutatomvisitors.cxx | 4 +-
|
||||
8 files changed, 208 insertions(+), 49 deletions(-)
|
||||
|
||||
diff --git a/oox/inc/drawingml/colorchoicecontext.hxx b/oox/inc/drawingml/colorchoicecontext.hxx
|
||||
index 29889f494e3d..dae8d7fb8e25 100644
|
||||
--- a/oox/inc/drawingml/colorchoicecontext.hxx
|
||||
+++ b/oox/inc/drawingml/colorchoicecontext.hxx
|
||||
@@ -22,6 +22,8 @@
|
||||
|
||||
#include <oox/core/contexthandler2.hxx>
|
||||
|
||||
+#include <vector>
|
||||
+
|
||||
namespace oox {
|
||||
namespace drawingml {
|
||||
|
||||
@@ -65,6 +67,19 @@ private:
|
||||
Color& mrColor;
|
||||
};
|
||||
|
||||
+/// Same as ColorContext, but handles multiple colors.
|
||||
+class ColorsContext : public ::oox::core::ContextHandler2
|
||||
+{
|
||||
+public:
|
||||
+ explicit ColorsContext(::oox::core::ContextHandler2Helper const& rParent,
|
||||
+ std::vector<Color>& rColors);
|
||||
+
|
||||
+ virtual ::oox::core::ContextHandlerRef
|
||||
+ onCreateContext(sal_Int32 nElement, const ::oox::AttributeList& rAttribs) override;
|
||||
+
|
||||
+private:
|
||||
+ std::vector<Color>& mrColors;
|
||||
+};
|
||||
|
||||
} // namespace drawingml
|
||||
} // namespace oox
|
||||
diff --git a/oox/source/drawingml/colorchoicecontext.cxx b/oox/source/drawingml/colorchoicecontext.cxx
|
||||
index cf6c17ecd3b4..a9e0d91ef32e 100644
|
||||
--- a/oox/source/drawingml/colorchoicecontext.cxx
|
||||
+++ b/oox/source/drawingml/colorchoicecontext.cxx
|
||||
@@ -149,6 +149,31 @@ ColorContext::ColorContext( ContextHandler2Helper const & rParent, Color& rColor
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
+ColorsContext::ColorsContext(ContextHandler2Helper const& rParent, std::vector<Color>& rColors)
|
||||
+ : ContextHandler2(rParent)
|
||||
+ , mrColors(rColors)
|
||||
+{
|
||||
+}
|
||||
+
|
||||
+::oox::core::ContextHandlerRef ColorsContext::onCreateContext(sal_Int32 nElement,
|
||||
+ const AttributeList&)
|
||||
+{
|
||||
+ switch (nElement)
|
||||
+ {
|
||||
+ case A_TOKEN(scrgbClr):
|
||||
+ case A_TOKEN(srgbClr):
|
||||
+ case A_TOKEN(hslClr):
|
||||
+ case A_TOKEN(sysClr):
|
||||
+ case A_TOKEN(schemeClr):
|
||||
+ case A_TOKEN(prstClr):
|
||||
+ {
|
||||
+ mrColors.emplace_back();
|
||||
+ return new ColorValueContext(*this, mrColors.back());
|
||||
+ }
|
||||
+ }
|
||||
+ return nullptr;
|
||||
+}
|
||||
+
|
||||
} // namespace drawingml
|
||||
} // namespace oox
|
||||
|
||||
diff --git a/oox/source/drawingml/diagram/diagram.cxx b/oox/source/drawingml/diagram/diagram.cxx
|
||||
index b2f3373ad113..a03a06c39125 100644
|
||||
--- a/oox/source/drawingml/diagram/diagram.cxx
|
||||
+++ b/oox/source/drawingml/diagram/diagram.cxx
|
||||
@@ -321,9 +321,11 @@ void loadDiagram( ShapePtr const & pShape,
|
||||
if( !pData->getExtDrawings().empty() )
|
||||
{
|
||||
const DiagramColorMap::const_iterator aColor = pDiagram->getColors().find("node0");
|
||||
- if( aColor != pDiagram->getColors().end() )
|
||||
+ if( aColor != pDiagram->getColors().end() && !aColor->second.maTextFillColors.empty())
|
||||
{
|
||||
- pShape->setFontRefColorForNodes(aColor->second.maTextFillColor);
|
||||
+ // TODO(F1): well, actually, there might be *several* color
|
||||
+ // definitions in it, after all it's called list.
|
||||
+ pShape->setFontRefColorForNodes(DiagramColor::getColorByIndex(aColor->second.maTextFillColors, -1));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -425,6 +427,17 @@ void reloadDiagram(SdrObject* pObj, core::XmlFilterBase& rFilter)
|
||||
child->addShape(rFilter, rFilter.getCurrentTheme(), xShapes, aTransformation, pShape->getFillProperties());
|
||||
}
|
||||
|
||||
+const oox::drawingml::Color&
|
||||
+DiagramColor::getColorByIndex(const std::vector<oox::drawingml::Color>& rColors, sal_Int32 nIndex)
|
||||
+{
|
||||
+ assert(!rColors.empty());
|
||||
+ if (nIndex == -1)
|
||||
+ {
|
||||
+ return rColors[rColors.size() - 1];
|
||||
+ }
|
||||
+
|
||||
+ return rColors[nIndex % rColors.size()];
|
||||
+}
|
||||
} }
|
||||
|
||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
||||
diff --git a/oox/source/drawingml/diagram/diagram.hxx b/oox/source/drawingml/diagram/diagram.hxx
|
||||
index 576c4007e29f..a674e248961e 100644
|
||||
--- a/oox/source/drawingml/diagram/diagram.hxx
|
||||
+++ b/oox/source/drawingml/diagram/diagram.hxx
|
||||
@@ -22,6 +22,7 @@
|
||||
|
||||
#include <map>
|
||||
#include <memory>
|
||||
+#include <vector>
|
||||
|
||||
#include <rtl/ustring.hxx>
|
||||
|
||||
@@ -111,12 +112,15 @@ typedef std::map<OUString,DiagramStyle> DiagramQStyleMap;
|
||||
|
||||
struct DiagramColor
|
||||
{
|
||||
- oox::drawingml::Color maFillColor;
|
||||
- oox::drawingml::Color maLineColor;
|
||||
- oox::drawingml::Color maEffectColor;
|
||||
- oox::drawingml::Color maTextFillColor;
|
||||
- oox::drawingml::Color maTextLineColor;
|
||||
- oox::drawingml::Color maTextEffectColor;
|
||||
+ std::vector<oox::drawingml::Color> maFillColors;
|
||||
+ std::vector<oox::drawingml::Color> maLineColors;
|
||||
+ std::vector<oox::drawingml::Color> maEffectColors;
|
||||
+ std::vector<oox::drawingml::Color> maTextFillColors;
|
||||
+ std::vector<oox::drawingml::Color> maTextLineColors;
|
||||
+ std::vector<oox::drawingml::Color> maTextEffectColors;
|
||||
+
|
||||
+ static const oox::drawingml::Color&
|
||||
+ getColorByIndex(const std::vector<oox::drawingml::Color>& rColors, sal_Int32 nIndex);
|
||||
};
|
||||
|
||||
typedef std::map<OUString,DiagramColor> DiagramColorMap;
|
||||
diff --git a/oox/source/drawingml/diagram/diagramfragmenthandler.cxx b/oox/source/drawingml/diagram/diagramfragmenthandler.cxx
|
||||
index 6e1000af3627..7eae543dc6f9 100644
|
||||
--- a/oox/source/drawingml/diagram/diagramfragmenthandler.cxx
|
||||
+++ b/oox/source/drawingml/diagram/diagramfragmenthandler.cxx
|
||||
@@ -196,21 +196,18 @@ ColorFragmentHandler::ColorFragmentHandler( ::oox::core::XmlFilterBase& rFilter,
|
||||
{
|
||||
// the actual colors - defer to color fragment handlers.
|
||||
|
||||
- // TODO(F1): well, actually, there might be *several* color
|
||||
- // definitions in it, after all it's called list. But
|
||||
- // apparently ColorContext doesn't handle that anyway...
|
||||
case DGM_TOKEN(fillClrLst):
|
||||
- return new ColorContext( *this, maColorEntry.maFillColor );
|
||||
+ return new ColorsContext( *this, maColorEntry.maFillColors );
|
||||
case DGM_TOKEN(linClrLst):
|
||||
- return new ColorContext( *this, maColorEntry.maLineColor );
|
||||
+ return new ColorsContext( *this, maColorEntry.maLineColors );
|
||||
case DGM_TOKEN(effectClrLst):
|
||||
- return new ColorContext( *this, maColorEntry.maEffectColor );
|
||||
+ return new ColorsContext( *this, maColorEntry.maEffectColors );
|
||||
case DGM_TOKEN(txFillClrLst):
|
||||
- return new ColorContext( *this, maColorEntry.maTextFillColor );
|
||||
+ return new ColorsContext( *this, maColorEntry.maTextFillColors );
|
||||
case DGM_TOKEN(txLinClrLst):
|
||||
- return new ColorContext( *this, maColorEntry.maTextLineColor );
|
||||
+ return new ColorsContext( *this, maColorEntry.maTextLineColors );
|
||||
case DGM_TOKEN(txEffectClrLst):
|
||||
- return new ColorContext( *this, maColorEntry.maTextEffectColor );
|
||||
+ return new ColorsContext( *this, maColorEntry.maTextEffectColors );
|
||||
}
|
||||
break;
|
||||
}
|
||||
diff --git a/oox/source/drawingml/diagram/diagramlayoutatoms.cxx b/oox/source/drawingml/diagram/diagramlayoutatoms.cxx
|
||||
index ff83dde63fa3..19b1d10679f4 100644
|
||||
--- a/oox/source/drawingml/diagram/diagramlayoutatoms.cxx
|
||||
+++ b/oox/source/drawingml/diagram/diagramlayoutatoms.cxx
|
||||
@@ -430,6 +430,42 @@ sal_Int32 AlgAtom::getVerticalShapesCount(const ShapePtr& rShape)
|
||||
return nCount;
|
||||
}
|
||||
|
||||
+namespace
|
||||
+{
|
||||
+/**
|
||||
+ * Apply rConstraint to the rProperties shared layout state.
|
||||
+ *
|
||||
+ * Note that the order in which constraints are applied matters, given that constraints can refer to
|
||||
+ * each other, and in case A depends on B and A is applied before B, the effect of A won't be
|
||||
+ * updated when B is applied.
|
||||
+ */
|
||||
+void ApplyConstraintToLayout(const Constraint& rConstraint, LayoutPropertyMap& rProperties)
|
||||
+{
|
||||
+ const LayoutPropertyMap::const_iterator aRef = rProperties.find(rConstraint.msRefForName);
|
||||
+ if (aRef != rProperties.end())
|
||||
+ {
|
||||
+ const LayoutProperty::const_iterator aRefType = aRef->second.find(rConstraint.mnRefType);
|
||||
+ if (aRefType != aRef->second.end())
|
||||
+ rProperties[rConstraint.msForName][rConstraint.mnType]
|
||||
+ = aRefType->second * rConstraint.mfFactor;
|
||||
+ else
|
||||
+ {
|
||||
+ // Values are never in EMU, while oox::drawingml::Shape position and size are always in
|
||||
+ // EMU.
|
||||
+ double fUnitFactor = 0;
|
||||
+ if (isFontUnit(rConstraint.mnRefType))
|
||||
+ // Points -> EMU.
|
||||
+ fUnitFactor = EMU_PER_PT;
|
||||
+ else
|
||||
+ // Millimeters -> EMU.
|
||||
+ fUnitFactor = EMU_PER_HMM * 100;
|
||||
+ rProperties[rConstraint.msForName][rConstraint.mnType]
|
||||
+ = rConstraint.mfValue * fUnitFactor;
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
+}
|
||||
+
|
||||
void AlgAtom::layoutShape( const ShapePtr& rShape,
|
||||
const std::vector<Constraint>& rConstraints )
|
||||
{
|
||||
@@ -443,6 +479,11 @@ void AlgAtom::layoutShape( const ShapePtr& rShape,
|
||||
LayoutProperty& rParent = aProperties[""];
|
||||
|
||||
sal_Int32 nParentXOffset = 0;
|
||||
+
|
||||
+ // Track min/max vertical positions, so we can center everything at the end, if needed.
|
||||
+ sal_Int32 nVertMin = std::numeric_limits<sal_Int32>::max();
|
||||
+ sal_Int32 nVertMax = 0;
|
||||
+
|
||||
if (mfAspectRatio != 1.0)
|
||||
{
|
||||
rParent[XML_w] = rShape->getSize().Width;
|
||||
@@ -467,31 +508,74 @@ void AlgAtom::layoutShape( const ShapePtr& rShape,
|
||||
|
||||
for (const auto & rConstr : rConstraints)
|
||||
{
|
||||
- const LayoutPropertyMap::const_iterator aRef = aProperties.find(rConstr.msRefForName);
|
||||
- if (aRef != aProperties.end())
|
||||
+ // Apply direct constraints for all layout nodes.
|
||||
+ ApplyConstraintToLayout(rConstr, aProperties);
|
||||
+ }
|
||||
+
|
||||
+ for (auto& aCurrShape : rShape->getChildren())
|
||||
+ {
|
||||
+ // Apply constraints from the current layout node for this child shape.
|
||||
+ // Previous child shapes may have changed aProperties.
|
||||
+ for (const auto& rConstr : rConstraints)
|
||||
{
|
||||
- const LayoutProperty::const_iterator aRefType = aRef->second.find(rConstr.mnRefType);
|
||||
- if (aRefType != aRef->second.end())
|
||||
- aProperties[rConstr.msForName][rConstr.mnType] = aRefType->second * rConstr.mfFactor;
|
||||
- else
|
||||
+ if (rConstr.msForName != aCurrShape->getInternalName())
|
||||
{
|
||||
- // Values are never in EMU, while oox::drawingml::Shape
|
||||
- // position and size are always in EMU.
|
||||
- double fUnitFactor = 0;
|
||||
- if (isFontUnit(rConstr.mnRefType))
|
||||
- // Points -> EMU.
|
||||
- fUnitFactor = EMU_PER_PT;
|
||||
- else
|
||||
- // Millimeters -> EMU.
|
||||
- fUnitFactor = EMU_PER_HMM * 100;
|
||||
- aProperties[rConstr.msForName][rConstr.mnType]
|
||||
- = rConstr.mfValue * fUnitFactor;
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ ApplyConstraintToLayout(rConstr, aProperties);
|
||||
+ }
|
||||
+
|
||||
+ // Apply constraints from the child layout node for this child shape.
|
||||
+ // This builds on top of the own parent state + the state of previous shapes in the
|
||||
+ // same composite algorithm.
|
||||
+ const LayoutNode& rLayoutNode = getLayoutNode();
|
||||
+ for (const auto& pDirectChild : rLayoutNode.getChildren())
|
||||
+ {
|
||||
+ auto pLayoutNode = dynamic_cast<LayoutNode*>(pDirectChild.get());
|
||||
+ if (!pLayoutNode)
|
||||
+ {
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ if (pLayoutNode->getName() != aCurrShape->getInternalName())
|
||||
+ {
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ for (const auto& pChild : pLayoutNode->getChildren())
|
||||
+ {
|
||||
+ auto pConstraintAtom = dynamic_cast<ConstraintAtom*>(pChild.get());
|
||||
+ if (!pConstraintAtom)
|
||||
+ {
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ const Constraint& rConstraint = pConstraintAtom->getConstraint();
|
||||
+ if (!rConstraint.msForName.isEmpty())
|
||||
+ {
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ if (!rConstraint.msRefForName.isEmpty())
|
||||
+ {
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ // Either an absolute value or a factor of a property.
|
||||
+ if (rConstraint.mfValue == 0.0 && rConstraint.mnRefType == XML_none)
|
||||
+ {
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ Constraint aConstraint(rConstraint);
|
||||
+ aConstraint.msForName = pLayoutNode->getName();
|
||||
+ aConstraint.msRefForName = pLayoutNode->getName();
|
||||
+
|
||||
+ ApplyConstraintToLayout(aConstraint, aProperties);
|
||||
}
|
||||
}
|
||||
- }
|
||||
|
||||
- for (auto & aCurrShape : rShape->getChildren())
|
||||
- {
|
||||
awt::Size aSize = rShape->getSize();
|
||||
awt::Point aPos(0, 0);
|
||||
|
||||
@@ -535,6 +619,24 @@ void AlgAtom::layoutShape( const ShapePtr& rShape,
|
||||
aCurrShape->setSize(aSize);
|
||||
aCurrShape->setChildSize(aSize);
|
||||
aCurrShape->setPosition(aPos);
|
||||
+
|
||||
+ nVertMin = std::min(aPos.Y, nVertMin);
|
||||
+ nVertMax = std::max(aPos.Y + aSize.Height, nVertMax);
|
||||
+ }
|
||||
+
|
||||
+ // See if all vertical space is used or we have to center the content.
|
||||
+ if (nVertMin >= 0 && nVertMax <= rParent[XML_h])
|
||||
+ {
|
||||
+ sal_Int32 nDiff = rParent[XML_h] - (nVertMax - nVertMin);
|
||||
+ if (nDiff > 0)
|
||||
+ {
|
||||
+ for (auto& aCurrShape : rShape->getChildren())
|
||||
+ {
|
||||
+ awt::Point aPosition = aCurrShape->getPosition();
|
||||
+ aPosition.Y += nDiff / 2;
|
||||
+ aCurrShape->setPosition(aPosition);
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -1275,7 +1377,7 @@ void LayoutNode::accept( LayoutAtomVisitor& rVisitor )
|
||||
rVisitor.visit(*this);
|
||||
}
|
||||
|
||||
-bool LayoutNode::setupShape( const ShapePtr& rShape, const dgm::Point* pPresNode ) const
|
||||
+bool LayoutNode::setupShape( const ShapePtr& rShape, const dgm::Point* pPresNode, sal_Int32 nCurrIdx ) const
|
||||
{
|
||||
SAL_INFO(
|
||||
"oox.drawingml",
|
||||
@@ -1413,15 +1515,17 @@ bool LayoutNode::setupShape( const ShapePtr& rShape, const dgm::Point* pPresNode
|
||||
const DiagramColorMap::const_iterator aColor = mrDgm.getColors().find(aStyleLabel);
|
||||
if( aColor != mrDgm.getColors().end() )
|
||||
{
|
||||
+ // Take the nth color from the color list in case we are the nth shape in a
|
||||
+ // <dgm:forEach> loop.
|
||||
const DiagramColor& rColor=aColor->second;
|
||||
- if( rColor.maFillColor.isUsed() )
|
||||
- rShape->getShapeStyleRefs()[XML_fillRef].maPhClr = rColor.maFillColor;
|
||||
- if( rColor.maLineColor.isUsed() )
|
||||
- rShape->getShapeStyleRefs()[XML_lnRef].maPhClr = rColor.maLineColor;
|
||||
- if( rColor.maEffectColor.isUsed() )
|
||||
- rShape->getShapeStyleRefs()[XML_effectRef].maPhClr = rColor.maEffectColor;
|
||||
- if( rColor.maTextFillColor.isUsed() )
|
||||
- rShape->getShapeStyleRefs()[XML_fontRef].maPhClr = rColor.maTextFillColor;
|
||||
+ if( !rColor.maFillColors.empty() )
|
||||
+ rShape->getShapeStyleRefs()[XML_fillRef].maPhClr = DiagramColor::getColorByIndex(rColor.maFillColors, nCurrIdx);
|
||||
+ if( !rColor.maLineColors.empty() )
|
||||
+ rShape->getShapeStyleRefs()[XML_lnRef].maPhClr = DiagramColor::getColorByIndex(rColor.maLineColors, nCurrIdx);
|
||||
+ if( !rColor.maEffectColors.empty() )
|
||||
+ rShape->getShapeStyleRefs()[XML_effectRef].maPhClr = DiagramColor::getColorByIndex(rColor.maEffectColors, nCurrIdx);
|
||||
+ if( !rColor.maTextFillColors.empty() )
|
||||
+ rShape->getShapeStyleRefs()[XML_fontRef].maPhClr = DiagramColor::getColorByIndex(rColor.maTextFillColors, nCurrIdx);
|
||||
}
|
||||
}
|
||||
|
||||
diff --git a/oox/source/drawingml/diagram/diagramlayoutatoms.hxx b/oox/source/drawingml/diagram/diagramlayoutatoms.hxx
|
||||
index 91028971473e..2e4551642389 100644
|
||||
--- a/oox/source/drawingml/diagram/diagramlayoutatoms.hxx
|
||||
+++ b/oox/source/drawingml/diagram/diagramlayoutatoms.hxx
|
||||
@@ -260,7 +260,8 @@ public:
|
||||
{ mpNodeShapes.push_back(pShape); }
|
||||
|
||||
bool setupShape( const ShapePtr& rShape,
|
||||
- const dgm::Point* pPresNode ) const;
|
||||
+ const dgm::Point* pPresNode,
|
||||
+ sal_Int32 nCurrIdx ) const;
|
||||
|
||||
const LayoutNode* getParentLayoutNode() const;
|
||||
|
||||
diff --git a/oox/source/drawingml/diagram/layoutatomvisitors.cxx b/oox/source/drawingml/diagram/layoutatomvisitors.cxx
|
||||
index 4bfadc3affe8..c616ca3a9010 100644
|
||||
--- a/oox/source/drawingml/diagram/layoutatomvisitors.cxx
|
||||
+++ b/oox/source/drawingml/diagram/layoutatomvisitors.cxx
|
||||
@@ -73,7 +73,7 @@ void ShapeCreationVisitor::visit(LayoutNode& rAtom)
|
||||
{
|
||||
// reuse existing shape
|
||||
ShapePtr pShape = rAtom.getExistingShape();
|
||||
- if (rAtom.setupShape(pShape, pNewNode))
|
||||
+ if (rAtom.setupShape(pShape, pNewNode, mnCurrIdx))
|
||||
{
|
||||
pShape->setInternalName(rAtom.getName());
|
||||
rAtom.addNodeShape(pShape);
|
||||
@@ -92,7 +92,7 @@ void ShapeCreationVisitor::visit(LayoutNode& rAtom)
|
||||
"oox.drawingml",
|
||||
"processing shape type " << (pShape->getCustomShapeProperties()->getShapePresetType()));
|
||||
|
||||
- if (rAtom.setupShape(pShape, pNewNode))
|
||||
+ if (rAtom.setupShape(pShape, pNewNode, mnCurrIdx))
|
||||
{
|
||||
pShape->setInternalName(rAtom.getName());
|
||||
pCurrParent->addChild(pShape);
|
||||
--
|
||||
2.26.1
|
||||
|
@ -1,90 +0,0 @@
|
||||
From fda60625c9e8bbc0259c790e7da76e608a012451 Mon Sep 17 00:00:00 2001
|
||||
From: Miklos Vajna <vmiklos@collabora.com>
|
||||
Date: Mon, 27 Apr 2020 10:54:27 +0200
|
||||
Subject: [PATCH] DOCX import: handle <wp:positionH
|
||||
relativeFrom="insideMargin">
|
||||
|
||||
This is the same as page, but it is from-left on odd pages and
|
||||
from-right on even pages, i.e. our "mirror on even pages" mode.
|
||||
|
||||
(cherry picked from commit fccbb557add457db16e0556c3f0172cafc2cf981)
|
||||
|
||||
Conflicts:
|
||||
writerfilter/qa/cppunittests/dmapper/GraphicImport.cxx
|
||||
|
||||
Change-Id: I018e0ac165a3d802f64cfc314d5c5f58da3cb580
|
||||
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93003
|
||||
Tested-by: Jenkins
|
||||
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
|
||||
---
|
||||
|
||||
diff --git a/writerfilter/source/dmapper/GraphicHelpers.cxx b/writerfilter/source/dmapper/GraphicHelpers.cxx
|
||||
index 3339156ae3b2..9168ad51eebd 100644
|
||||
--- a/writerfilter/source/dmapper/GraphicHelpers.cxx
|
||||
+++ b/writerfilter/source/dmapper/GraphicHelpers.cxx
|
||||
@@ -102,6 +102,11 @@ void PositionHandler::lcl_attribute( Id aName, Value& rVal )
|
||||
m_nRelation = text::RelOrientation::PAGE_FRAME;
|
||||
break;
|
||||
|
||||
+ case NS_ooxml::LN_Value_wordprocessingDrawing_ST_RelFromH_insideMargin:
|
||||
+ m_nRelation = text::RelOrientation::PAGE_FRAME;
|
||||
+ m_bPageToggle = true;
|
||||
+ break;
|
||||
+
|
||||
case NS_ooxml::LN_Value_wordprocessingDrawing_ST_RelFromH_column:
|
||||
m_nRelation = text::RelOrientation::FRAME;
|
||||
break;
|
||||
diff --git a/writerfilter/source/dmapper/GraphicHelpers.hxx b/writerfilter/source/dmapper/GraphicHelpers.hxx
|
||||
index dbfe9ddd9f13..d28f2fb50bf7 100644
|
||||
--- a/writerfilter/source/dmapper/GraphicHelpers.hxx
|
||||
+++ b/writerfilter/source/dmapper/GraphicHelpers.hxx
|
||||
@@ -37,6 +37,7 @@ public:
|
||||
sal_Int16 orientation() const;
|
||||
sal_Int16 relation() const { return m_nRelation;}
|
||||
sal_Int32 position() const { return m_nPosition;}
|
||||
+ bool GetPageToggle() const { return m_bPageToggle; }
|
||||
private:
|
||||
virtual void lcl_attribute( Id aName, Value& rVal ) override;
|
||||
virtual void lcl_sprm( Sprm& rSprm ) override;
|
||||
@@ -45,6 +46,7 @@ public:
|
||||
sal_Int32 m_nPosition;
|
||||
std::pair<OUString, OUString>& m_rPositionOffsets;
|
||||
std::pair<OUString, OUString>& m_rAligns;
|
||||
+ bool m_bPageToggle = false;
|
||||
};
|
||||
|
||||
class WrapHandler: public LoggedProperties
|
||||
diff --git a/writerfilter/source/dmapper/GraphicImport.cxx b/writerfilter/source/dmapper/GraphicImport.cxx
|
||||
index 97c807752f60..a2c19383c95d 100644
|
||||
--- a/writerfilter/source/dmapper/GraphicImport.cxx
|
||||
+++ b/writerfilter/source/dmapper/GraphicImport.cxx
|
||||
@@ -193,6 +193,7 @@ public:
|
||||
|
||||
sal_Int16 nHoriOrient;
|
||||
sal_Int16 nHoriRelation;
|
||||
+ bool bPageToggle = false;
|
||||
sal_Int16 nVertOrient;
|
||||
sal_Int16 nVertRelation;
|
||||
text::WrapTextMode nWrap;
|
||||
@@ -343,8 +344,8 @@ public:
|
||||
uno::makeAny(nLeftPosition));
|
||||
xGraphicObjectProperties->setPropertyValue(getPropertyName( PROP_HORI_ORIENT_RELATION ),
|
||||
uno::makeAny(nHoriRelation));
|
||||
- xGraphicObjectProperties->setPropertyValue(getPropertyName( PROP_PAGE_TOGGLE ),
|
||||
- uno::makeAny(false));
|
||||
+ xGraphicObjectProperties->setPropertyValue(getPropertyName(PROP_PAGE_TOGGLE),
|
||||
+ uno::makeAny(bPageToggle));
|
||||
if (!bRelativeOnly)
|
||||
xGraphicObjectProperties->setPropertyValue(getPropertyName( PROP_VERT_ORIENT_POSITION),
|
||||
uno::makeAny(nTopPosition));
|
||||
@@ -1089,6 +1090,7 @@ void GraphicImport::lcl_sprm(Sprm& rSprm)
|
||||
if( !m_pImpl->bUseSimplePos )
|
||||
{
|
||||
m_pImpl->nHoriRelation = pHandler->relation();
|
||||
+ m_pImpl->bPageToggle = pHandler->GetPageToggle();
|
||||
m_pImpl->nHoriOrient = pHandler->orientation();
|
||||
m_pImpl->nLeftPosition = pHandler->position();
|
||||
|
||||
--
|
||||
2.26.1
|
||||
|
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 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:bc14547c188efa15f4cb36cfb3da7cacb3037a7448d1bba8a58ed6a320ccabb2
|
||||
size 230409812
|
@ -1,16 +0,0 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAABCAAdFiEEwoOeytlAj76VMcPp9DSh76/urqMFAl6MoIwACgkQ9DSh76/u
|
||||
rqNYWRAAqbxZP1XEWo4ibIfzorZWxFSx3aU/pw2BjSDRGIck0Eo5SNn5wPxxqI0U
|
||||
epwn7hsH8U7VrjT1o2YqO9gmsCmFDq1eooilEopSvy4rlgz//jUdMmd80EzOXoxG
|
||||
/dKrx8LRSqVDCrh12UfFb+p9l2BfWGdrIrH19RbTqlNprcBdMzOhSTAhtBwVc9Ok
|
||||
uJUjWh/v1UMxfrKwVwc0J+ywBW/VSik+KaSSXgapwSZXS4EbdIbJWhrBg/72G92w
|
||||
78ToErqxJwrzJcSR4blcug+emNzvvuZH5X/xJZNstfaaHhCvBwGSxXUwwRizxKEm
|
||||
UELuQ2C2NJVtcvJPLDNHGeKO57Yra+zhPxgE1jTzwoHpG8kMeY1RhBMI0cfmebci
|
||||
nnlfjXVKno9GoThrbHYNDgn5gK9whcMQn6ESVcgVfbzzBISBgfokojh6BUKJ+lCc
|
||||
cBWOez/VRxYWJsuXXT/hIDRQ7X2yuSWYTXLWEzgR8rBrAz2eQ9e3W+36IMpyiZyG
|
||||
rfieB3wuWLaY3fwDTQ1X2HnfGLRNZ2Ayx94soG0XQvATGW3vjwm/6Bie3jg4cpSG
|
||||
+iu8fPgyWc7jes6jhGgoCEBFbJr3zor80jKCf+9rDs+Gh5t91XRXgt7P1mDs4Agq
|
||||
8yPmKQXptFSv5ZvNYUfts03sCmSCRjIpjXn9K5xn+O8shCj6Y8s=
|
||||
=MjL/
|
||||
-----END PGP SIGNATURE-----
|
3
libreoffice-6.4.4.2.tar.xz
Normal file
3
libreoffice-6.4.4.2.tar.xz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:54388597dffc9c32f81446e6e634f7af76ca0e0e5a0d27bc3fe89033a011c078
|
||||
size 231325236
|
16
libreoffice-6.4.4.2.tar.xz.asc
Normal file
16
libreoffice-6.4.4.2.tar.xz.asc
Normal file
@ -0,0 +1,16 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAABCAAdFiEEwoOeytlAj76VMcPp9DSh76/urqMFAl676X8ACgkQ9DSh76/u
|
||||
rqNCFw/+NZHnL5hxsyxa0UF0vnEofwFl1oYMfNK0ab7iM1GqeNIRAoZDsRNGFrqE
|
||||
wQNpxA3zK6L1wC09Qgg7p2U2jpOlKMrppiCE7TOvZ4hoZDQVDr2vMzfQeaY/IkLt
|
||||
Hm5GGGxIq7HAmgkRTomtfJZHQerbBa+h0GQ7cyO3HWV0wZ+yxH8dYeSFllpPuori
|
||||
3lHVULa2dw8ZCZcS05PDc5sACZiuG0otu3kzVXJ8j+9HpKBO5msrnBPaHq6/xilg
|
||||
Oh/TP3HJ2xOEHBnlh2Ng1aHK+rTzsMr4woNvvrJq0t8wFHBPxWRv9s9dnbPTnC4i
|
||||
G7F34F0/Tjd6iajXUhA5bXQl+zxCDg/bCTdobMBzCIsoWxAqVbIYFaruV8Db8i4n
|
||||
w/IOz+BIuZYc/kvXQrgCl8aLqfkv66ATxtaSaiHXrhPT0R2G4Uyhz0wcEba9QN/u
|
||||
vyBsxTxkPGhktlfSSRjd8Om3XQpq1qJ8ciC6mMOBB0XQUYXRsJYVLXW7Z6kSqKsd
|
||||
82Vk1q67njNBS0IuhjEQ3F4ubrJCyVJTSBKZ7RQv13N0vwXQe4wHcywEdwo7/EAH
|
||||
ciVX8IN/crnirM3fQYCYSb8C4/wb8fbj34+AgKlD07HYTwuFUADtS9iw2JcW49od
|
||||
L2aRiVIsTyBnWWstZu/ryrapSzMWhSKUDHMedU7TXonXrcWVj4o=
|
||||
=G7OO
|
||||
-----END PGP SIGNATURE-----
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:8570eaa8903e4fb747500adbf06d69d2d3cb6ed3a11a3a804403878f1ecfef56
|
||||
size 88297704
|
@ -1,16 +0,0 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAABCAAdFiEEwoOeytlAj76VMcPp9DSh76/urqMFAl6MoJEACgkQ9DSh76/u
|
||||
rqN2CRAAid8Yd7XXHE/zNk4iRsKhXvZ3QGilno1F4NTu3y9OK48F3Nxo+CF/pSBm
|
||||
KNUmVFzFrd58D8gPwmh8Ka6yipjArHi2NJUoGUBqCrTkz615ZF+10nO6c/mwPYJb
|
||||
te/gz+M0fC8DcRxydZdJqxZPNbQSGC1T6tRqqfJUZK7y6Q9VQZQG55UMaDBcGb6q
|
||||
OBQFdQgRLGhwrF+KyvTXu5vIvWtk8CLOp3qwQKYU+zlTECWZ3SCgPnHPbE3sF8So
|
||||
RX/ATUY/xM2qdoihBtuGi6TPRnW/SZWa+jqaeNdKP0ode6/0N54Thcl8RS7ao8pb
|
||||
hMWEsGUUPZs8xo8B4qxFmQZld+zmlyroaYl0AGu1KEAdj1JJexxXyKH5UY5DJduN
|
||||
t2DU0fyUdqMzEPT5cU8XztjfY7rVVUaSbvp7RpZZbnkPw3++14e6sxAIkAcZ6+Cl
|
||||
T9b7mcVRBnqGLiAsNskvF8QIKJGG83CZrARPr/++suoZzZNU4vnUkhV9+lLywZ7k
|
||||
1VgH4wYKsGX3QnOzFCOwK2X3RFJfOrdtxSA2YkQhfxf7XYLSSX7CW6g+b+7paHVU
|
||||
tCCWTvIh8RdQavJ/lmvxGckJrunefTS6Qako2DiGGLH7OM20Hna/PoVZVovej8yi
|
||||
inpxxVJb7jufRy922Yt2a7Vi59tyBeZC2rJGo0upacd/3YpDg60=
|
||||
=f4yA
|
||||
-----END PGP SIGNATURE-----
|
3
libreoffice-help-6.4.4.2.tar.xz
Normal file
3
libreoffice-help-6.4.4.2.tar.xz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:c61ac7b9ceac9aa0813bce405ce25b13dc1b698509ce33827ff7c65dffde25ac
|
||||
size 88296340
|
16
libreoffice-help-6.4.4.2.tar.xz.asc
Normal file
16
libreoffice-help-6.4.4.2.tar.xz.asc
Normal file
@ -0,0 +1,16 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAABCAAdFiEEwoOeytlAj76VMcPp9DSh76/urqMFAl676YMACgkQ9DSh76/u
|
||||
rqOy8RAAlD39J0T8PxoyiiJ+NFLNhWbywavtjHDbAObvSN4x83MbYEbRNzayQCSU
|
||||
MnFxustGK9jJzZ9DI4edZ8rjUBO7zOSsHcd5MXpupL8ye0Fp8YYafBeHiS8Q+FF8
|
||||
x3e5EpPotZxx5ne54VqG46C3+PzqA9YZ+GIyBRVkrO4YWKfJYA6rlxJn0AQXEX2A
|
||||
lNU/oZq6JX4BafG0bX0Qcz4KGKNtrpCqoHyj9auzLF+kV8c1zzPqU5A6pW2B8kQk
|
||||
mZfz57bIomtmVSO7gqhc7ZSe7wHLmhsx79NZo/LPjxWxQ8c/P12dbHPxmQkIaPmQ
|
||||
96kfoakR+ExAMzrHPSniATgipJrhdvX+HJXVvl7cPYwtLihM+CwzamMjUcaEszqG
|
||||
EWFnaoVcIoX6KNvGIO8hZ9IoNwdgPkhaYMp9U1gIcmryHak+AAeLBNDVK4hMQEZQ
|
||||
cPS95gCofaY2TzoQMpAy8qe600+oGZIsvWX9212w+NhqO5oYhtq2URrQkyeFobtw
|
||||
hFe0/BjPlS4HEPGC8kM80TfWmc+oOL0sjLb5Uccb8WMoZ4/PGttBFSe5Kbdo/ivH
|
||||
bRCXtSe3dwinKFcf97SLlWhUsIvPRq1zMLeTl475KiCBxnNZnE2Nt4hV1FBEaHla
|
||||
fzd9z7OPmV2zCgcERX+834RTVtWlYQ0EwbAGlaCOcKqUXAQh9yg=
|
||||
=jDpN
|
||||
-----END PGP SIGNATURE-----
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:03260badad37d1d96c9bcac79ee48ab2ab00000aba78c3a4a4accd51c987e91b
|
||||
size 172348568
|
@ -1,16 +0,0 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAABCAAdFiEEwoOeytlAj76VMcPp9DSh76/urqMFAl6MoJIACgkQ9DSh76/u
|
||||
rqMKKA/9FHGaXiRnc8azGnAkNXBJPVFctd0/HD0mfAc8DEesznj7Zo4yzWCR4Luj
|
||||
SKErnPq7Zqx6ijcYI1dLggppihWThQzs5CzOffQpFuWpT8dmHxPSV4quck+aGVE7
|
||||
/9jlFzD1SX7UiyJu8fqelJtPbtZUiJT9gG7uo2MzGaOTYWQkxwYwGoO2xD5ivH9U
|
||||
CGsnxJWX3YlMCI+0q6XHgJ/FVijdD6RIUhZHgmgbCglQ7o5f5MwEmew5dJcOY4Qv
|
||||
80FMaUdMQOATOtbGbFP/etWVgPGAVFCUHnF31MT6ZF4BCgI09fy16PELNmQQWFUz
|
||||
r2sDwFQez3whjjxE2JFqjSqsPOZ9YARz9+j2exTg6rDWrkQy9vXNGfoqba4Wh76Q
|
||||
3xbwrosTXHM0JWoKlIbiwlbm1kg8wS5kg9FtX4P3pj67fGDGvvDBGJ6sQa6rEblz
|
||||
2A5uKbx9XGjFQBpPdYbIBk7uFLYQSOpf9sP6spITATxIIUnp6z4iBTkSJOoeZHLL
|
||||
Iy/hn4L6YGGsZHYZmIfcw9xYlU2eCaangFDzIlR0/DgU533X//wmLGD+Nu0FM0oe
|
||||
1FM3cGmltVZJrK0C7124eJBxcaKRsJv6h5V+0NPc8+IkyMnwOZqMHnwPVRoE46m/
|
||||
gyn2wQ7RRUkhAUsC52cUJ+3/6sfg3IYbuLWi1jfIMw/8ejrydqY=
|
||||
=+KxM
|
||||
-----END PGP SIGNATURE-----
|
3
libreoffice-translations-6.4.4.2.tar.xz
Normal file
3
libreoffice-translations-6.4.4.2.tar.xz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:49cd385aabe7f197447ac0645a8fcdba75b04642b38fac49342aace2055098bd
|
||||
size 172568720
|
16
libreoffice-translations-6.4.4.2.tar.xz.asc
Normal file
16
libreoffice-translations-6.4.4.2.tar.xz.asc
Normal file
@ -0,0 +1,16 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAABCAAdFiEEwoOeytlAj76VMcPp9DSh76/urqMFAl676YQACgkQ9DSh76/u
|
||||
rqOzARAAp6IVNSlCoMHryOk9Zx6LsWhsYnAQdyi7ZwxNecHU/PkzuadIlFIfXxYi
|
||||
omUTCf8elq+NSjpMnnois+FjBFZsdzMmYX8w5ktyWwO0Y6c5tzZbfX/gbz3QU0Hn
|
||||
/eY3UR8323Pkrpgag5yK/v8F+Z74OFuQrJC368kwPX4sQHBSrhtqAQ5eu5Q7rJif
|
||||
N7KREGDu22Tjy9/+8XzaP6kj71QYhYQKybrGOOdfjg15spdK4zUW7cgtXgVZ2pB5
|
||||
rG0yK7/fTOaM7A0fQOVoV3Aj1EGbC7E6Jd+spYJBnjYVrDH9JwseIulrCBAguBGo
|
||||
c60+vPyFj6yGFFUXqlcyEBPmJ4mmZDYdSYdyxjXQkbhduEE2okoXl2cCA9yWPL8r
|
||||
8uGOU5Ze7LAQWV1xRO2oVu2UsceP/3OasbrnIy24A4LNzFG0JhJqavjQawRmWYey
|
||||
iXqpz1Kjj5RaEUTFV8G8x3zVq8bi0s5d0QqDTgajsSmUjaWyhw02i9vyMGW6utW2
|
||||
3jieB3Ndre2B6Xjg+n6MeIkrzl/c+PVRiQ/17zjMFSpNTksm0HNj78rkrI6F0vH6
|
||||
OkLUlimeKgS4907wL0AVqws350PIsS6iXIYTCfYLh2ougKOgwIpSfmfW4a5lMuf1
|
||||
O9nsAcZWousnZDjqOg7Yom51X86VkQdV0Vf69gtkFP1bfwDw5Ps=
|
||||
=fuqE
|
||||
-----END PGP SIGNATURE-----
|
@ -1,3 +1,24 @@
|
||||
-------------------------------------------------------------------
|
||||
Mon Jun 1 18:25:46 UTC 2020 - Andras Timar <andras.timar@collabora.com>
|
||||
|
||||
- Fix bsc#1146025 - LO-L3: Colored textboxes in PPTX look very odd (SmartArt)
|
||||
* bsc1146025.diff
|
||||
|
||||
-------------------------------------------------------------------
|
||||
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>
|
||||
|
||||
- Update to 6.4.4.2:
|
||||
* 6.4.4 release
|
||||
- Remove merged patch bsc1160687-1.diff
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue May 12 08:57:23 UTC 2020 - Andras Timar <andras.timar@collabora.com>
|
||||
|
||||
@ -20,8 +41,8 @@ Tue May 5 12:36:00 UTC 2020 - Andras Timar <andras.timar@collabora.com>
|
||||
-------------------------------------------------------------------
|
||||
Wed Apr 8 11:13:30 UTC 2020 - Tomáš Chvátal <tchvatal@suse.com>
|
||||
|
||||
- Update to 6.4.3.2:
|
||||
* 6.4.2 RC2 release
|
||||
- Update to 6.4.3.2 bsc#1171997 CVE-2020-12801:
|
||||
* 6.4.3 RC2 release
|
||||
- Drop merged patch adapt-o3tl-span-to-removal-of-std-span-cbegin-et-al.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
|
@ -50,7 +50,7 @@
|
||||
%bcond_with system_gpgme
|
||||
%endif
|
||||
Name: libreoffice
|
||||
Version: 6.4.3.2
|
||||
Version: 6.4.4.2
|
||||
Release: 0
|
||||
Summary: A Free Office Suite (Framework)
|
||||
License: LGPL-3.0-or-later AND MPL-2.0+
|
||||
@ -104,7 +104,6 @@ Patch8: replace-boost-bimap-in-sdext-pdfimport.patch
|
||||
# Bug 1165870 - LO-L3: Image shadow that should be invisible shown as extraneous line below
|
||||
Patch9: bsc1165870.diff
|
||||
# Bug 1160687 - LO-L3: Elements on title page mixed up
|
||||
Patch10: bsc1160687-1.diff
|
||||
Patch11: bsc1160687-2.diff
|
||||
Patch12: bsc1160687-3.diff
|
||||
Patch13: bsc1160687-4.diff
|
||||
@ -112,6 +111,12 @@ Patch14: bsc1160687-5.diff
|
||||
Patch15: bsc1160687-6.diff
|
||||
Patch16: bsc1160687-7.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
|
||||
# Bug 1146025 - LO-L3: Colored textboxes in PPTX look very odd (SmartArt)
|
||||
Patch21: bsc1146025.diff
|
||||
# try to save space by using hardlinks
|
||||
Patch990: install-with-hardlinks.diff
|
||||
# save time by relying on rpm check rather than doing stupid find+grep
|
||||
@ -971,7 +976,6 @@ Provides %{langname} translations and additional resources (help files, etc.) fo
|
||||
%patch7 -p1
|
||||
%patch8 -p1
|
||||
%patch9 -p1
|
||||
%patch10 -p1
|
||||
%patch11 -p1
|
||||
%patch12 -p1
|
||||
%patch13 -p1
|
||||
@ -979,6 +983,10 @@ Provides %{langname} translations and additional resources (help files, etc.) fo
|
||||
%patch15 -p1
|
||||
%patch16 -p1
|
||||
%patch17 -p1
|
||||
%patch18 -p1
|
||||
%patch19 -p1
|
||||
%patch20 -p1
|
||||
%patch21 -p1
|
||||
%patch990 -p1
|
||||
%patch991 -p1
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user