diff options
author | Andras Timar <andras.timar@collabora.com> | 2015-04-02 13:42:11 +0200 |
---|---|---|
committer | Andras Timar <andras.timar@collabora.com> | 2015-04-14 15:08:09 +0200 |
commit | 0f7a9012e175d6b7629ae1d78fb4435192016e47 (patch) | |
tree | 5abd5a22772fc84ae8389ad0dee8d56f0a568667 /oox | |
parent | b9dc8c566d0e32048b91d1902b8b36f7f9e4d874 (diff) |
tdf#90403 PPTX import: use real table size
PowerPoint ignores a:ext cx and cy value of p:xfrm, and uses
real table width and height. PowerPoint 2010 saves files where
cx and cy contains good values, but I found files in the wild
whose cx and cy values did not match to actual table width and
height, and there was a visible difference between rendering
of Impress and PowerPoint.
Reviewed-on: https://gerrit.libreoffice.org/15123
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Andras Timar <andras.timar@collabora.com>
(cherry picked from commit 037fe3671cbdad51f52d2f69f72f47f463dba7c2)
Conflicts:
oox/source/drawingml/shape.cxx
sd/qa/unit/import-tests.cxx
Change-Id: I3f80c0cea4cac46763d449f918bb78dca1a6562d
Reviewed-on: https://gerrit.libreoffice.org/15133
Tested-by: Christian Lohmaier <lohmaier+LibreOffice@googlemail.com>
Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice@googlemail.com>
Diffstat (limited to 'oox')
-rw-r--r-- | oox/source/drawingml/shape.cxx | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/oox/source/drawingml/shape.cxx b/oox/source/drawingml/shape.cxx index d6f45c9df9c0..e3062325f3f2 100644 --- a/oox/source/drawingml/shape.cxx +++ b/oox/source/drawingml/shape.cxx @@ -416,6 +416,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 / 360, maPosition.Y / 360, maSize.Width / 360, maSize.Height / 360 ); OUString aServiceName; |