[Libreoffice-commits] core.git: Branch 'libreoffice-6-4' - oox/inc oox/source sd/qa

2020-05-29 Thread Miklos Vajna (via logerrit)
 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 ++
 oox/source/drawingml/diagram/diagramfragmenthandler.cxx |   15 +++--
 oox/source/drawingml/diagram/diagramlayoutatoms.cxx |   20 +++-
 oox/source/drawingml/diagram/diagramlayoutatoms.hxx |3 +
 oox/source/drawingml/diagram/layoutatomvisitors.cxx |4 +-
 sd/qa/unit/data/pptx/fill-color-list.pptx   |binary
 sd/qa/unit/import-tests-smartart.cxx|   19 
 10 files changed, 105 insertions(+), 29 deletions(-)

New commits:
commit 50d004fc8fe2c44516c52d22b40a221e8e3b587d
Author: Miklos Vajna 
AuthorDate: Fri May 22 17:58:22 2020 +0200
Commit: Mike Kaganski 
CommitDate: Fri May 29 16:33:44 2020 +0200

smartart import: handle multiple  in 

The TODO in the ColorFragmentHandler ctor was right: we only handled the
last  child, but there can be multiple one.

Use them based on the index of a shape in a  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

Change-Id: I1c5c4f82e621f1110ef06b0490ff79f82f60f214
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/95015
Tested-by: Jenkins
Reviewed-by: Mike Kaganski 

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 
 
+#include 
+
 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& rColors);
+
+virtual ::oox::core::ContextHandlerRef
+onCreateContext(sal_Int32 nElement, const ::oox::AttributeList& rAttribs) 
override;
+
+private:
+std::vector& 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& 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 

[Libreoffice-commits] core.git: Branch 'libreoffice-6-4' - oox/inc oox/source sd/qa

2019-12-06 Thread nd101 (via logerrit)
 oox/inc/drawingml/table/tableproperties.hxx|2 ++
 oox/source/drawingml/table/tablecell.cxx   |6 ++
 oox/source/drawingml/table/tablecontext.cxx|2 ++
 oox/source/drawingml/table/tableproperties.cxx |1 +
 sd/qa/unit/data/pptx/tdf127237.pptx|binary
 sd/qa/unit/export-tests-ooxml1.cxx |   22 ++
 6 files changed, 33 insertions(+)

New commits:
commit 6e873fd94a192f503fd1aff205bdfb5ad465c7ef
Author: nd101 
AuthorDate: Mon Sep 2 10:29:12 2019 +0800
Commit: Xisco FaulĂ­ 
CommitDate: Fri Dec 6 22:41:35 2019 +0100

tdf#127237 fix table background color in Impress import

When the background color is set at the table level in PPTX,
instead of at cell level, the background color fails to
show up in Impress.

Change-Id: I2838e5b56e4a2414494ee99c0f8975b7256ac6dc
Reviewed-on: https://gerrit.libreoffice.org/78377
Tested-by: Jenkins
Reviewed-by: Miklos Vajna 
(cherry picked from commit 4c2254cbebca53c34fa48a1dd90cebe434f24274)
Reviewed-on: https://gerrit.libreoffice.org/84644
Reviewed-by: Xisco FaulĂ­ 

diff --git a/oox/inc/drawingml/table/tableproperties.hxx 
b/oox/inc/drawingml/table/tableproperties.hxx
index dd50cd7a694d..010fc67df416 100644
--- a/oox/inc/drawingml/table/tableproperties.hxx
+++ b/oox/inc/drawingml/table/tableproperties.hxx
@@ -54,6 +54,7 @@ public:
 voidsetBandRow(bool b)  { mbBandRow = b; };
 boolisBandCol() const   { return 
mbBandCol; };
 voidsetBandCol(bool b)  { mbBandCol = b; };
+Color&  getBgColor(){ return maBgColor; };
 
 void pushToPropSet( const ::oox::core::XmlFilterBase& rFilterBase,
 const css::uno::Reference < css::beans::XPropertySet > & xPropSet,
@@ -70,6 +71,7 @@ private:
 std::shared_ptr< TableStyle >   mpTableStyle;   // or the 
complete TableStyle
 std::vector< sal_Int32 >mvTableGrid;
 std::vector< TableRow > mvTableRows;
+Color   maBgColor;
 
 boolmbFirstRow;
 boolmbFirstCol;
diff --git a/oox/source/drawingml/table/tablecell.cxx 
b/oox/source/drawingml/table/tablecell.cxx
index f27117fd2b42..50dda7080bb0 100644
--- a/oox/source/drawingml/table/tablecell.cxx
+++ b/oox/source/drawingml/table/tablecell.cxx
@@ -424,6 +424,12 @@ void TableCell::pushToXCell( const 
::oox::core::XmlFilterBase& rFilterBase, cons
 applyLineAttributes( rFilterBase, xPropSet, 
aLinePropertiesTopLeftToBottomRight, PROP_DiagonalTLBR );
 applyLineAttributes( rFilterBase, xPropSet, 
aLinePropertiesBottomLeftToTopRight, PROP_DiagonalBLTR );
 
+if (rProperties.getBgColor().isUsed() && 
!maFillProperties.maFillColor.isUsed() && maFillProperties.moFillType.get() == 
XML_noFill)
+{
+maFillProperties.moFillType = XML_solidFill;
+maFillProperties.maFillColor = rProperties.getBgColor();
+}
+
 aFillProperties.assignUsed( maFillProperties );
 ShapePropertyMap aPropMap( rFilterBase.getModelObjectHelper() );
 
diff --git a/oox/source/drawingml/table/tablecontext.cxx 
b/oox/source/drawingml/table/tablecontext.cxx
index 3371e105f691..90191f615d4d 100644
--- a/oox/source/drawingml/table/tablecontext.cxx
+++ b/oox/source/drawingml/table/tablecontext.cxx
@@ -57,6 +57,8 @@ TableContext::onCreateContext( ::sal_Int32 aElementToken, 
const AttributeList& r
 mrTableProperties.setBandCol( rAttribs.getBool( XML_bandCol, false 
) );
 }
 break;
+case A_TOKEN(solidFill):
+return new ColorContext(*this, mrTableProperties.getBgColor());
 case A_TOKEN( tableStyle ): // CT_TableStyle
 {
 std::shared_ptr< TableStyle >& rTableStyle = 
mrTableProperties.getTableStyle();
diff --git a/oox/source/drawingml/table/tableproperties.cxx 
b/oox/source/drawingml/table/tableproperties.cxx
index b6f9a8a59cfc..a32353d52f1f 100644
--- a/oox/source/drawingml/table/tableproperties.cxx
+++ b/oox/source/drawingml/table/tableproperties.cxx
@@ -49,6 +49,7 @@ TableProperties::TableProperties()
 , mbBandRow( false )
 , mbBandCol( false )
 {
+maBgColor.setUnused();
 }
 
 static void CreateTableRows( const uno::Reference< XTableRows >& xTableRows, 
const std::vector< TableRow >& rvTableRows )
diff --git a/sd/qa/unit/data/pptx/tdf127237.pptx 
b/sd/qa/unit/data/pptx/tdf127237.pptx
new file mode 100644
index ..f63423cd47e8
Binary files /dev/null and b/sd/qa/unit/data/pptx/tdf127237.pptx differ
diff --git a/sd/qa/unit/export-tests-ooxml1.cxx 
b/sd/qa/unit/export-tests-ooxml1.cxx
index 79b18b7cb914..769bf6e52456 100644
--- a/sd/qa/unit/export-tests-ooxml1.cxx
+++ b/sd/qa/unit/export-tests-ooxml1.cxx
@@ -55,6 +55,7 @@ class SdOOXMLExportTest1 : public SdModelTestBaseXML
 {
 public:
 void testFdo90607();
+