diff options
-rw-r--r-- | oox/source/drawingml/shape.cxx | 17 | ||||
-rw-r--r-- | sd/qa/unit/data/tdf90403.pptx | bin | 0 -> 39815 bytes | |||
-rw-r--r-- | sd/qa/unit/data/xml/tdf90403_0.xml | 4 | ||||
-rw-r--r-- | sd/qa/unit/import-tests.cxx | 1 |
4 files changed, 22 insertions, 0 deletions
diff --git a/oox/source/drawingml/shape.cxx b/oox/source/drawingml/shape.cxx index d46476a581c2..20d68e4ec8fa 100644 --- a/oox/source/drawingml/shape.cxx +++ b/oox/source/drawingml/shape.cxx @@ -407,6 +407,23 @@ Reference< XShape > Shape::createAndInsert( bool bIsEmbMedia = false; SAL_INFO("oox.drawingml", OSL_THIS_FUNC << " id: " << msId); + // tdf#90403 PowerPoint ignores a:ext cx and cy values of p:xfrm, and uses real table width and height + if ( mpTablePropertiesPtr.get() && rServiceName == "com.sun.star.drawing.TableShape" ) + { + maSize.Width = 0; + for( std::vector< sal_Int32 >::const_iterator aTableColIter(mpTablePropertiesPtr->getTableGrid().begin()); + aTableColIter != mpTablePropertiesPtr->getTableGrid().end(); aTableColIter++ ) + { + maSize.Width += *aTableColIter; + } + maSize.Height = 0; + for( std::vector< ::oox::drawingml::table::TableRow >::const_iterator aTableRowIter(mpTablePropertiesPtr->getTableRows().begin()); + aTableRowIter != mpTablePropertiesPtr->getTableRows().end(); aTableRowIter++ ) + { + maSize.Height += (*aTableRowIter).getHeight(); + } + } + awt::Rectangle aShapeRectHmm( maPosition.X / EMU_PER_HMM, maPosition.Y / EMU_PER_HMM, maSize.Width / EMU_PER_HMM, maSize.Height / EMU_PER_HMM ); OUString aServiceName; diff --git a/sd/qa/unit/data/tdf90403.pptx b/sd/qa/unit/data/tdf90403.pptx Binary files differnew file mode 100644 index 000000000000..fd48d058a260 --- /dev/null +++ b/sd/qa/unit/data/tdf90403.pptx diff --git a/sd/qa/unit/data/xml/tdf90403_0.xml b/sd/qa/unit/data/xml/tdf90403_0.xml new file mode 100644 index 000000000000..297504d4bed3 --- /dev/null +++ b/sd/qa/unit/data/xml/tdf90403_0.xml @@ -0,0 +1,4 @@ +<?xml version="1.0"?> +<XShapes> + <XShape positionX="4233" positionY="3881" sizeX="16932" sizeY="14044" type="com.sun.star.drawing.TableShape" name="Table 1"/> +</XShapes> diff --git a/sd/qa/unit/import-tests.cxx b/sd/qa/unit/import-tests.cxx index d9d92b965563..8da93fb45d58 100644 --- a/sd/qa/unit/import-tests.cxx +++ b/sd/qa/unit/import-tests.cxx @@ -182,6 +182,7 @@ void SdImportTest::testDocumentLayout() { "n593612.pptx", "xml/n593612_", PPTX, -1 }, { "fdo71434.pptx", "xml/fdo71434_", PPTX, -1 }, { "n902652.pptx", "xml/n902652_", PPTX, -1 }, + { "tdf90403.pptx", "xml/tdf90403_", PPTX, -1 }, // { "pptx/n828390.pptx", "pptx/xml/n828390_", PPTX, PPTX }, // Example }; |