diff options
author | Matúš Kukan <matus.kukan@collabora.com> | 2014-07-04 15:12:59 +0200 |
---|---|---|
committer | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2014-07-10 05:10:09 +0000 |
commit | 9e3adc0ee35d9922a12b63d0b36f7790247dec0f (patch) | |
tree | 98d49630a5c7667547aca966f17f7bf913d7018f /oox/source/drawingml/shape.cxx | |
parent | 2ced18a6e90e3c9494e48994af39c5d710188c44 (diff) |
bnc#882383: Do not ignore themeOverride for charts in .pptx
Otherwise wrong colors are displayed.
(cherry picked from commit 08818d8a45e034ad825c7fafbb76766f106f1d1d)
Conflicts:
oox/source/drawingml/shape.cxx
Change-Id: I5d7444100355fdbc5fcd2aaa1c01202ace54312d
Reviewed-on: https://gerrit.libreoffice.org/10134
Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
Tested-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
Diffstat (limited to 'oox/source/drawingml/shape.cxx')
-rw-r--r-- | oox/source/drawingml/shape.cxx | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/oox/source/drawingml/shape.cxx b/oox/source/drawingml/shape.cxx index 0737830ece35..21a559795509 100644 --- a/oox/source/drawingml/shape.cxx +++ b/oox/source/drawingml/shape.cxx @@ -25,10 +25,12 @@ #include "oox/drawingml/effectproperties.hxx" #include "oox/drawingml/shapepropertymap.hxx" #include "oox/drawingml/textbody.hxx" +#include "oox/drawingml/ThemeOverrideFragmentHandler.hxx" #include "oox/drawingml/table/tableproperties.hxx" #include "oox/drawingml/chart/chartconverter.hxx" #include "oox/drawingml/chart/chartspacefragment.hxx" #include "oox/drawingml/chart/chartspacemodel.hxx" +#include "oox/ppt/pptimport.hxx" #include "oox/vml/vmldrawing.hxx" #include "oox/vml/vmlshape.hxx" #include "oox/vml/vmlshapecontainer.hxx" @@ -47,6 +49,7 @@ #include <com/sun/star/beans/XMultiPropertySet.hpp> #include <com/sun/star/lang/XMultiServiceFactory.hpp> #include <com/sun/star/xml/AttributeData.hpp> +#include <com/sun/star/xml/sax/XFastSAXSerializable.hpp> #include <com/sun/star/drawing/HomogenMatrix3.hpp> #include <com/sun/star/drawing/TextVerticalAdjust.hpp> #include <com/sun/star/drawing/GraphicExportFilter.hpp> @@ -1236,7 +1239,22 @@ void Shape::finalizeXShape( XmlFilterBase& rFilter, const Reference< XShapes >& // load the chart data from the XML fragment chart::ChartSpaceModel aModel; - rFilter.importFragment( new chart::ChartSpaceFragment( rFilter, mxChartShapeInfo->maFragmentPath, aModel ) ); + chart::ChartSpaceFragment *pChartSpaceFragment = new chart::ChartSpaceFragment( + rFilter, mxChartShapeInfo->maFragmentPath, aModel ); + const OUString aThemeOverrideFragmentPath( pChartSpaceFragment-> + getFragmentPathFromFirstTypeFromOfficeDoc("themeOverride") ); + rFilter.importFragment( pChartSpaceFragment ); + ::oox::ppt::PowerPointImport *pPowerPointImport = + dynamic_cast< ::oox::ppt::PowerPointImport* >(&rFilter); + if (!aThemeOverrideFragmentPath.isEmpty() && pPowerPointImport) + { + uno::Reference< xml::sax::XFastSAXSerializable > xDoc( + rFilter.importFragment(aThemeOverrideFragmentPath), uno::UNO_QUERY_THROW); + ThemePtr pTheme = pPowerPointImport->getActualSlidePersist()->getTheme(); + rFilter.importFragment(new ThemeOverrideFragmentHandler( + rFilter, aThemeOverrideFragmentPath, *pTheme), xDoc); + pPowerPointImport->getActualSlidePersist()->setTheme(pTheme); + } // convert imported chart model to chart document Reference< drawing::XShapes > xExternalPage; |