include/oox/export/drawingml.hxx | 2 ++ oox/source/export/drawingml.cxx | 7 +++++++ oox/source/export/shapes.cxx | 13 ++++++++++++- 3 files changed, 21 insertions(+), 1 deletion(-)
New commits: commit 445d3d8484d6e480f461de305c9dc4def067cf20 Author: Miklos Vajna <[email protected]> Date: Fri Dec 13 15:01:35 2013 +0100 drawingml export: handle child shapes when exporting groupshapes Change-Id: I4ed800ad17750c87788108417c8a7b1817853115 diff --git a/include/oox/export/drawingml.hxx b/include/oox/export/drawingml.hxx index 67feca1..00ec32e 100644 --- a/include/oox/export/drawingml.hxx +++ b/include/oox/export/drawingml.hxx @@ -88,6 +88,8 @@ protected: ::com::sun::star::uno::Any mAny; ::sax_fastparser::FSHelperPtr mpFS; ::oox::core::XmlFilterBase* mpFB; + /// If set, this is the parent of the currently handled shape. + com::sun::star::uno::Reference<com::sun::star::drawing::XShape> m_xParent; bool GetProperty( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > rXPropSet, OUString aName ); bool GetPropertyAndState( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > rXPropSet, diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx index 3ed8f02..0e8db87 100644 --- a/oox/source/export/drawingml.cxx +++ b/oox/source/export/drawingml.cxx @@ -670,6 +670,13 @@ void DrawingML::WriteShapeTransformation( Reference< XShape > rXShape, sal_Int32 awt::Point aPos = rXShape->getPosition(); awt::Size aSize = rXShape->getSize(); + if (m_xParent.is()) + { + awt::Point aParentPos = m_xParent->getPosition(); + aPos.X -= aParentPos.X; + aPos.Y -= aParentPos.Y; + } + if ( aSize.Width < 0 ) aSize.Width = 1000; if ( aSize.Height < 0 ) diff --git a/oox/source/export/shapes.cxx b/oox/source/export/shapes.cxx index e2e7a13..3e9a082 100644 --- a/oox/source/export/shapes.cxx +++ b/oox/source/export/shapes.cxx @@ -256,7 +256,18 @@ ShapeExport& ShapeExport::WriteGroupShape(uno::Reference<drawing::XShape> xShape WriteShapeTransformation(xShape, XML_a); pFS->endElementNS(mnXmlNamespace, XML_grpSpPr); - // TODO: children + uno::Reference<drawing::XShapes> xGroupShape(xShape, uno::UNO_QUERY_THROW); + uno::Reference<drawing::XShape> xParent = m_xParent; + m_xParent = xShape; + for (sal_Int32 i = 0; i < xGroupShape->getCount(); ++i) + { + uno::Reference<drawing::XShape> xChild(xGroupShape->getByIndex(i), uno::UNO_QUERY_THROW); + sal_Int32 nSavedNamespace = mnXmlNamespace; + mnXmlNamespace = XML_wps; + WriteShape(xChild); + mnXmlNamespace = nSavedNamespace; + } + m_xParent = xParent; pFS->endElementNS(mnXmlNamespace, XML_wgp); return *this; _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
