summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatus Uzak <matus.uzak@gmail.com>2016-04-09 00:43:56 +0200
committerKatarina Behrens <Katarina.Behrens@cib.de>2016-04-29 11:59:11 +0000
commit554158f7d33742284905ed4953dd09041ea04a5d (patch)
tree08d2cbe7ffe4a6e4336df20f39fd3e0048a6d121
parentaafe8426051eff4394d9421a0f4c83bf9b7c5fdf (diff)
tdf#99030: PPTX import: Fixed lost slide background color
Regression from commit f3d1ac7 Change-Id: I5cb9fe1bb6c753c34b49e72194a9fbe4c10c1654 Reviewed-on: https://gerrit.libreoffice.org/23930 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Katarina Behrens <Katarina.Behrens@cib.de>
-rw-r--r--include/oox/ppt/slidepersist.hxx2
-rw-r--r--oox/source/ppt/slidefragmenthandler.cxx3
-rw-r--r--oox/source/ppt/slidepersist.cxx3
-rw-r--r--sd/qa/unit/data/pptx/tdf99030.pptxbin0 -> 59514 bytes
-rw-r--r--sd/qa/unit/import-tests.cxx26
5 files changed, 32 insertions, 2 deletions
diff --git a/include/oox/ppt/slidepersist.hxx b/include/oox/ppt/slidepersist.hxx
index 6fd77941d947..1e75c2c281ba 100644
--- a/include/oox/ppt/slidepersist.hxx
+++ b/include/oox/ppt/slidepersist.hxx
@@ -84,6 +84,7 @@ public:
void setBackgroundProperties( const oox::drawingml::FillPropertiesPtr& rFillPropertiesPtr ){ mpBackgroundPropertiesPtr = rFillPropertiesPtr; }
const oox::drawingml::FillPropertiesPtr& getBackgroundProperties() const { return mpBackgroundPropertiesPtr; }
+ oox::drawingml::Color& getBackgroundColor() { return maBackgroundColor; }
bool isMasterPage() const { return mbMaster; }
bool isNotesPage() const { return mbNotes; }
@@ -127,6 +128,7 @@ private:
SlidePersistPtr mpMasterPagePtr;
oox::drawingml::ShapePtr maShapesPtr;
+ oox::drawingml::Color maBackgroundColor;
oox::drawingml::FillPropertiesPtr mpBackgroundPropertiesPtr;
::std::list< std::shared_ptr< TimeNode > > maTimeNodeList;
diff --git a/oox/source/ppt/slidefragmenthandler.cxx b/oox/source/ppt/slidefragmenthandler.cxx
index 63274c10c236..fc8ff5d1e46d 100644
--- a/oox/source/ppt/slidefragmenthandler.cxx
+++ b/oox/source/ppt/slidefragmenthandler.cxx
@@ -170,7 +170,8 @@ SlideFragmentHandler::~SlideFragmentHandler()
pFillProperties = mpSlidePersistPtr->getTheme()->getFillStyle( rAttribs.getInteger( XML_idx, -1 ) );
FillPropertiesPtr pFillPropertiesPtr( pFillProperties ? new FillProperties( *pFillProperties ) : new FillProperties() );
mpSlidePersistPtr->setBackgroundProperties( pFillPropertiesPtr );
- return this;
+ ContextHandlerRef ret = new ColorContext( *this, mpSlidePersistPtr->getBackgroundColor() );
+ return ret;
}
break;
diff --git a/oox/source/ppt/slidepersist.cxx b/oox/source/ppt/slidepersist.cxx
index 9064a67aecf7..574892aca6f7 100644
--- a/oox/source/ppt/slidepersist.cxx
+++ b/oox/source/ppt/slidepersist.cxx
@@ -167,7 +167,8 @@ void SlidePersist::createBackground( const XmlFilterBase& rFilterBase )
{
if ( mpBackgroundPropertiesPtr )
{
- sal_Int32 nPhClr = mpBackgroundPropertiesPtr->getBestSolidColor().getColor( rFilterBase.getGraphicHelper() );
+ sal_Int32 nPhClr = maBackgroundColor.isUsed() ?
+ maBackgroundColor.getColor( rFilterBase.getGraphicHelper() ) : API_RGB_TRANSPARENT;
::oox::drawingml::ShapePropertyMap aPropMap( rFilterBase.getModelObjectHelper() );
mpBackgroundPropertiesPtr->pushToPropMap( aPropMap, rFilterBase.getGraphicHelper(), 0, nPhClr );
diff --git a/sd/qa/unit/data/pptx/tdf99030.pptx b/sd/qa/unit/data/pptx/tdf99030.pptx
new file mode 100644
index 000000000000..38448f93fefa
--- /dev/null
+++ b/sd/qa/unit/data/pptx/tdf99030.pptx
Binary files differ
diff --git a/sd/qa/unit/import-tests.cxx b/sd/qa/unit/import-tests.cxx
index a9b7f0df067c..3ebd1116b957 100644
--- a/sd/qa/unit/import-tests.cxx
+++ b/sd/qa/unit/import-tests.cxx
@@ -44,6 +44,7 @@
#include <com/sun/star/document/XDocumentPropertiesSupplier.hpp>
#include <com/sun/star/drawing/XDrawPage.hpp>
#include <com/sun/star/drawing/XDrawPagesSupplier.hpp>
+#include <com/sun/star/drawing/XMasterPagesSupplier.hpp>
#include <com/sun/star/animations/XAnimationNodeSupplier.hpp>
#include <com/sun/star/animations/XAnimationNode.hpp>
#include <com/sun/star/animations/XAnimate.hpp>
@@ -114,6 +115,7 @@ public:
void testTdf89927();
void testTdf93868();
void testTdf95932();
+ void testTdf99030();
CPPUNIT_TEST_SUITE(SdImportTest);
@@ -161,6 +163,7 @@ public:
CPPUNIT_TEST(testTdf89927);
CPPUNIT_TEST(testTdf93868);
CPPUNIT_TEST(testTdf95932);
+ CPPUNIT_TEST(testTdf99030);
CPPUNIT_TEST_SUITE_END();
};
@@ -1301,6 +1304,29 @@ void SdImportTest::testTdf95932()
xDocShRef->DoClose();
}
+void SdImportTest::testTdf99030()
+{
+ sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("/sd/qa/unit/data/pptx/tdf99030.pptx"), PPTX);
+
+ uno::Reference< drawing::XMasterPagesSupplier > xDoc(
+ xDocShRef->GetDoc()->getUnoModel(), uno::UNO_QUERY_THROW );
+ uno::Reference< drawing::XDrawPage > xPage(
+ xDoc->getMasterPages()->getByIndex( 0 ), uno::UNO_QUERY_THROW );
+ uno::Reference< beans::XPropertySet > xPropSet( xPage, uno::UNO_QUERY );
+
+ sal_Int32 nFillColor(0);
+ uno::Any aAny = xPropSet->getPropertyValue( "Background" );
+ if (aAny.hasValue())
+ {
+ uno::Reference< beans::XPropertySet > xBackgroundPropSet;
+ aAny >>= xBackgroundPropSet;
+ xBackgroundPropSet->getPropertyValue( "FillColor" ) >>= nFillColor;
+ }
+ CPPUNIT_ASSERT_EQUAL( sal_Int32(0x676A55), nFillColor );
+
+ xDocShRef->DoClose();
+}
+
CPPUNIT_TEST_SUITE_REGISTRATION(SdImportTest);
CPPUNIT_PLUGIN_IMPLEMENT();