diff options
author | Tibor Nagy <nagy.tibor2@nisz.hu> | 2022-03-10 08:42:12 +0100 |
---|---|---|
committer | László Németh <nemeth@numbertext.org> | 2022-03-29 16:12:45 +0200 |
commit | cbf66ec3e60d07efb7c3cceed9b4f0fb4f0510c8 (patch) | |
tree | c7e02c1e50525e42d7b15d000398631be3c7c697 | |
parent | bc601af632861896bdfaa14c96daf1a7ffdfcf71 (diff) |
tdf#89449 PPTX import: fix line connectors
Line connectors were imported as plain shapes, losing
their functionality during editing, i.e. keeping
connections of boxes and other shapes.
Change-Id: I0f1562be2dbcce0e45eb209c6ca4e035731039e1
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/131303
Tested-by: László Németh <nemeth@numbertext.org>
Reviewed-by: László Németh <nemeth@numbertext.org>
20 files changed, 288 insertions, 542 deletions
diff --git a/include/oox/drawingml/connectorshapecontext.hxx b/include/oox/drawingml/connectorshapecontext.hxx index 1efdd2e40611..c9819ae85137 100644 --- a/include/oox/drawingml/connectorshapecontext.hxx +++ b/include/oox/drawingml/connectorshapecontext.hxx @@ -25,16 +25,29 @@ #include <oox/drawingml/drawingmltypes.hxx> #include <oox/drawingml/shapecontext.hxx> #include <sal/types.h> +#include <vector> namespace oox { class AttributeList; } namespace oox::core { class ContextHandler2Helper; } namespace oox::drawingml { + struct ConnectorShapeProperties + { + bool mbStartShape; + OUString maDestShapeId; + sal_Int32 mnDestGlueId; + }; + class OOX_DLLPUBLIC ConnectorShapeContext final : public ShapeContext { + std::vector<ConnectorShapeProperties>& mrConnectorShapePropertiesList; + ShapePtr mpConnectorShapePtr; + public: - ConnectorShapeContext( ::oox::core::ContextHandler2Helper const & rParent, const ShapePtr& pMasterShapePtr, const ShapePtr& pGroupShapePtr ); + ConnectorShapeContext(::oox::core::ContextHandler2Helper const& rParent, + const ShapePtr& pMasterShapePtr, const ShapePtr& pGroupShapePtr, + std::vector<ConnectorShapeProperties>& rConnectorShapePropertiesList); virtual ~ConnectorShapeContext() override; virtual ::oox::core::ContextHandlerRef onCreateContext( ::sal_Int32 Element, const ::oox::AttributeList& rAttribs ) override; }; diff --git a/include/oox/drawingml/shape.hxx b/include/oox/drawingml/shape.hxx index 734e805ccac5..a16e65a71ef1 100644 --- a/include/oox/drawingml/shape.hxx +++ b/include/oox/drawingml/shape.hxx @@ -34,6 +34,7 @@ #include <oox/core/xmlfilterbase.hxx> #include <oox/dllapi.h> #include <oox/drawingml/color.hxx> +#include <oox/drawingml/connectorshapecontext.hxx> #include <oox/drawingml/drawingmltypes.hxx> #include <oox/helper/helper.hxx> #include <oox/helper/propertymap.hxx> @@ -73,6 +74,8 @@ typedef std::shared_ptr< CustomShapeProperties > CustomShapePropertiesPtr; typedef ::std::map< OUString, ShapePtr > ShapeIdMap; +typedef std::vector<ConnectorShapeProperties> ConnectorShapePropertiesList; + struct ShapeStyleRef { Color maPhClr; @@ -128,6 +131,10 @@ public: CustomShapePropertiesPtr& getCustomShapeProperties(){ return mpCustomShapePropertiesPtr; } + ConnectorShapePropertiesList& getConnectorShapeProperties() { return maConnectorShapePropertiesList; } + void setConnectorShape(bool bConnector) { mbConnector = bConnector; } + bool isConnectorShape() const { return mbConnector; } + Shape3DProperties& get3DProperties() { return *mp3DPropertiesPtr; } const Shape3DProperties& get3DProperties() const { return *mp3DPropertiesPtr; } @@ -332,6 +339,7 @@ protected: PropertyMap maDefaultShapeProperties; TextListStylePtr mpMasterTextListStyle; css::uno::Reference< css::drawing::XShape > mxShape; + ConnectorShapePropertiesList maConnectorShapePropertiesList; OUString msServiceName; OUString msName; @@ -394,6 +402,9 @@ private: /// The shape fill should be set to that of the slide background surface. bool mbUseBgFill = false; + // Is this a connector shape? + bool mbConnector = false; + // temporary space for DiagramHelper in preparation for collecting data // Note: I tried to use a unique_ptr here, but existing constructor func does not allow that IDiagramHelper* mpDiagramHelper; diff --git a/include/oox/ppt/slidepersist.hxx b/include/oox/ppt/slidepersist.hxx index c09e5f0b0da0..1b0a92c70783 100644 --- a/include/oox/ppt/slidepersist.hxx +++ b/include/oox/ppt/slidepersist.hxx @@ -125,6 +125,8 @@ public: CommentList& getCommentsList() { return maCommentsList; } CommentAuthorList& getCommentAuthors() { return maCommentAuthors; } + void createConnectorShapeConnection(); + private: OUString maPath; OUString maLayoutPath; @@ -156,6 +158,8 @@ private: // slide comments CommentList maCommentsList; CommentAuthorList maCommentAuthors; + + std::vector<OUString> maConnectorShapeId; }; } diff --git a/oox/inc/drawingml/customshapeproperties.hxx b/oox/inc/drawingml/customshapeproperties.hxx index 779003412fbb..ea9b9e9d53af 100644 --- a/oox/inc/drawingml/customshapeproperties.hxx +++ b/oox/inc/drawingml/customshapeproperties.hxx @@ -98,7 +98,6 @@ public: CustomShapeProperties(); void pushToPropSet( const css::uno::Reference < css::beans::XPropertySet > & xPropSet, - const css::uno::Reference < css::drawing::XShape > & xShape, const css::awt::Size &aSize ); sal_Int32 getShapePresetType() const { return mnShapePresetType; } diff --git a/oox/source/drawingml/chart/chartdrawingfragment.cxx b/oox/source/drawingml/chart/chartdrawingfragment.cxx index c41e2db49821..9509ad4ea01e 100644 --- a/oox/source/drawingml/chart/chartdrawingfragment.cxx +++ b/oox/source/drawingml/chart/chartdrawingfragment.cxx @@ -157,7 +157,8 @@ ContextHandlerRef ChartDrawingFragment::onCreateContext( sal_Int32 nElement, con return new ShapeContext( *this, ShapePtr(), mxShape ); case CDR_TOKEN( cxnSp ): mxShape = std::make_shared<Shape>( "com.sun.star.drawing.ConnectorShape" ); - return new ConnectorShapeContext( *this, ShapePtr(), mxShape ); + return new ConnectorShapeContext(*this, ShapePtr(), mxShape, + mxShape->getConnectorShapeProperties()); case CDR_TOKEN( pic ): mxShape = std::make_shared<Shape>( "com.sun.star.drawing.GraphicObjectShape" ); return new GraphicShapeContext( *this, ShapePtr(), mxShape ); diff --git a/oox/source/drawingml/connectorshapecontext.cxx b/oox/source/drawingml/connectorshapecontext.cxx index e815d56994d9..b1ea90c357af 100644 --- a/oox/source/drawingml/connectorshapecontext.cxx +++ b/oox/source/drawingml/connectorshapecontext.cxx @@ -22,6 +22,7 @@ #include <oox/drawingml/connectorshapecontext.hxx> #include <oox/drawingml/drawingmltypes.hxx> +#include <oox/drawingml/shape.hxx> #include <oox/helper/attributelist.hxx> #include <oox/token/namespaces.hxx> #include <oox/token/tokens.hxx> @@ -35,30 +36,93 @@ using namespace ::com::sun::star::xml::sax; namespace oox::drawingml { -ConnectorShapeContext::ConnectorShapeContext( ContextHandler2Helper const & rParent, - const ShapePtr& pMasterShapePtr, const ShapePtr& pGroupShapePtr ) -: ShapeContext( rParent, pMasterShapePtr, pGroupShapePtr ) +namespace { +class ConnectorShapePropertiesContext : public ::oox::core::ContextHandler2 +{ + std::vector<ConnectorShapeProperties>& mrConnectorShapePropertiesList; + ShapePtr mpConnectorShapePtr; + +public: + ConnectorShapePropertiesContext( + ::oox::core::ContextHandler2Helper const& rParent, ShapePtr& pShapePtr, + std::vector<ConnectorShapeProperties>& rConnectorShapePropertiesList); + + virtual ::oox::core::ContextHandlerRef onCreateContext(sal_Int32 aElementToken, + const AttributeList& rAttribs) override; +}; } -ConnectorShapeContext::~ConnectorShapeContext() +ConnectorShapePropertiesContext::ConnectorShapePropertiesContext( + ContextHandler2Helper const& rParent, ShapePtr& pShapePtr, + std::vector<ConnectorShapeProperties>& rConnectorShapePropertiesList) + : ContextHandler2(rParent) + , mrConnectorShapePropertiesList(rConnectorShapePropertiesList) + , mpConnectorShapePtr(pShapePtr) { + mpConnectorShapePtr->setConnectorShape(true); } -ContextHandlerRef ConnectorShapeContext::onCreateContext( sal_Int32 aElementToken, const AttributeList& rAttribs ) +::oox::core::ContextHandlerRef +ConnectorShapePropertiesContext::onCreateContext(sal_Int32 aElementToken, + const AttributeList& rAttribs) { - switch( getBaseToken( aElementToken ) ) + switch (getBaseToken(aElementToken)) { - case XML_nvCxnSpPr : - break; - + case XML_cNvPr: + mpConnectorShapePtr->setId(rAttribs.getString(XML_id).get()); + mpConnectorShapePtr->setName(rAttribs.getString(XML_name).get()); + break; + case XML_stCxn: + { + ConnectorShapeProperties aConnectorShapeProps; + aConnectorShapeProps.mbStartShape = true; + aConnectorShapeProps.maDestShapeId = rAttribs.getString(XML_id).get(); + aConnectorShapeProps.mnDestGlueId = rAttribs.getInteger(XML_idx).get(); + mrConnectorShapePropertiesList.push_back(aConnectorShapeProps); + break; + } + case XML_endCxn: + { + ConnectorShapeProperties aConnectorShapeProps; + aConnectorShapeProps.mbStartShape = false; + aConnectorShapeProps.maDestShapeId = rAttribs.getString(XML_id).get(); + aConnectorShapeProps.mnDestGlueId = rAttribs.getInteger(XML_idx).get(); + mrConnectorShapePropertiesList.push_back(aConnectorShapeProps); + break; + } default: - return ShapeContext::onCreateContext( aElementToken, rAttribs ); + break; } return this; } +ConnectorShapeContext::ConnectorShapeContext( + ContextHandler2Helper const& rParent, const ShapePtr& pMasterShapePtr, + const ShapePtr& pGroupShapePtr, + std::vector<ConnectorShapeProperties>& rConnectorShapePropertiesList) + : ShapeContext(rParent, pMasterShapePtr, pGroupShapePtr) + , mrConnectorShapePropertiesList(rConnectorShapePropertiesList) + , mpConnectorShapePtr(pGroupShapePtr) +{ +} + +ConnectorShapeContext::~ConnectorShapeContext() {} + +ContextHandlerRef ConnectorShapeContext::onCreateContext(sal_Int32 aElementToken, + const AttributeList& rAttribs) +{ + switch (getBaseToken(aElementToken)) + { + case XML_nvCxnSpPr: + return new ConnectorShapePropertiesContext(*this, mpConnectorShapePtr, + mrConnectorShapePropertiesList); + } + + return ShapeContext::onCreateContext(aElementToken, rAttribs); +} + } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/oox/source/drawingml/customshapeproperties.cxx b/oox/source/drawingml/customshapeproperties.cxx index efe7c0ad03af..b748deb48702 100644 --- a/oox/source/drawingml/customshapeproperties.cxx +++ b/oox/source/drawingml/customshapeproperties.cxx @@ -97,25 +97,8 @@ bool CustomShapeProperties::representsDefaultShape() const CustomShapeProperties::PresetDataMap CustomShapeProperties::maPresetDataMap; -static OUString GetConnectorShapeType( sal_Int32 nType ) -{ - SAL_INFO( - "oox.drawingml", "preset: " << nType << " " << XML_straightConnector1); - - OUString sType; - switch( nType ) - { - case XML_straightConnector1: - sType = "mso-spt32"; - break; - default: - break; - } - return sType; -} - void CustomShapeProperties::pushToPropSet( - const Reference < XPropertySet >& xPropSet, const Reference < XShape > & xShape, const awt::Size &aSize ) + const Reference < XPropertySet >& xPropSet, const awt::Size &aSize ) { if ( mnShapePresetType >= 0 ) { @@ -127,22 +110,7 @@ void CustomShapeProperties::pushToPropSet( PropertyMap aPropertyMap; PropertySet aPropSet( xPropSet ); - OUString sConnectorShapeType = GetConnectorShapeType( mnShapePresetType ); - - if (sConnectorShapeType.getLength() > 0) - { - SAL_INFO( - "oox.drawingml", - "connector shape: " << sConnectorShapeType << " (" - << mnShapePresetType << ")"); - //const uno::Reference < drawing::XShape > xShape( xPropSet, UNO_QUERY ); - Reference< drawing::XEnhancedCustomShapeDefaulter > xDefaulter( xShape, UNO_QUERY ); - if( xDefaulter.is() ) { - xDefaulter->createCustomShapeDefaults( sConnectorShapeType ); - aPropertyMap.setProperty( PROP_Type, sConnectorShapeType ); - } - } - else if (maPresetDataMap.find(mnShapePresetType) != maPresetDataMap.end()) + if (maPresetDataMap.find(mnShapePresetType) != maPresetDataMap.end()) { SAL_INFO( "oox.drawingml", diff --git a/oox/source/drawingml/shape.cxx b/oox/source/drawingml/shape.cxx index cc988699292e..2ef801c5ee08 100644 --- a/oox/source/drawingml/shape.cxx +++ b/oox/source/drawingml/shape.cxx @@ -78,6 +78,7 @@ #include <com/sun/star/drawing/EnhancedCustomShapeAdjustmentValue.hpp> #include <com/sun/star/drawing/XEnhancedCustomShapeDefaulter.hpp> #include <com/sun/star/drawing/EnhancedCustomShapeTextPathMode.hpp> +#include <com/sun/star/drawing/ConnectorType.hpp> #include <com/sun/star/embed/XEmbeddedObject.hpp> #include <com/sun/star/text/XText.hpp> #include <com/sun/star/table/BorderLine2.hpp> @@ -867,10 +868,8 @@ Reference< XShape > const & Shape::createAndInsert( bool bIsCroppedGraphic = (aServiceName == "com.sun.star.drawing.GraphicObjectShape" && !mpCustomShapePropertiesPtr->representsDefaultShape()); - // ToDo: Why is ConnectorShape here treated as custom shape, but below with start and end point? - bool bIsCustomShape = ( aServiceName == "com.sun.star.drawing.CustomShape" || - aServiceName == "com.sun.star.drawing.ConnectorShape" || - bIsCroppedGraphic); + bool bIsCustomShape = (aServiceName == "com.sun.star.drawing.CustomShape" || bIsCroppedGraphic); + bool bIsConnectorShape = (aServiceName == "com.sun.star.drawing.ConnectorShape"); if(bIsCroppedGraphic) { aServiceName = "com.sun.star.drawing.CustomShape"; @@ -1653,6 +1652,34 @@ Reference< XShape > const & Shape::createAndInsert( if (mbWps && aServiceName == "com.sun.star.drawing.LineShape" && !pParentGroupShape) mxShape->setPosition(maPosition); + if (bIsConnectorShape) + { + ConnectorType aConnectorType; + sal_Int32 nType = mpCustomShapePropertiesPtr->getShapePresetType(); + switch (nType) + { + case XML_line: + case XML_straightConnector1: + aConnectorType = ConnectorType_LINE; + break; + case XML_bentConnector2: + case XML_bentConnector3: + case XML_bentConnector4: + case XML_bentConnector5: + aConnectorType = ConnectorType_STANDARD; + break; + case XML_curvedConnector2: + case XML_curvedConnector3: + case XML_curvedConnector4: + case XML_curvedConnector5: + aConnectorType = ConnectorType_CURVE; + break; + default: + break; + } + xSet->setPropertyValue("EdgeKind", Any(aConnectorType)); + } + if( bIsCustomShape ) { if ( mbFlipH ) @@ -1701,7 +1728,7 @@ Reference< XShape > const & Shape::createAndInsert( // for these ==cscode== and ==csdata== markers, so don't "clean up" these SAL_INFOs SAL_INFO("oox.cscode", "==cscode== shape name: '" << msName << "'"); SAL_INFO("oox.csdata", "==csdata== shape name: '" << msName << "'"); - mpCustomShapePropertiesPtr->pushToPropSet( xSet, mxShape, maSize ); + mpCustomShapePropertiesPtr->pushToPropSet(xSet, maSize); if (mpTextBody) { diff --git a/oox/source/drawingml/shapegroupcontext.cxx b/oox/source/drawingml/shapegroupcontext.cxx index 61aadb45d862..1a9cb4113871 100644 --- a/oox/source/drawingml/shapegroupcontext.cxx +++ b/oox/source/drawingml/shapegroupcontext.cxx @@ -85,7 +85,8 @@ ContextHandlerRef ShapeGroupContext::onCreateContext( sal_Int32 aElementToken, c { ShapePtr pShape = std::make_shared<Shape>("com.sun.star.drawing.ConnectorShape"); pShape->setLockedCanvas(mpGroupShapePtr->getLockedCanvas()); - return new ConnectorShapeContext( *this, mpGroupShapePtr, pShape ); + return new ConnectorShapeContext(*this, mpGroupShapePtr, pShape, + pShape->getConnectorShapeProperties()); } case XML_grpSp: // group shape return new ShapeGroupContext( *this, mpGroupShapePtr, std::make_shared<Shape>( "com.sun.star.drawing.GroupShape" ) ); diff --git a/oox/source/drawingml/shapepropertiescontext.cxx b/oox/source/drawingml/shapepropertiescontext.cxx index e0fc3274c731..935cc4970c7c 100644 --- a/oox/source/drawingml/shapepropertiescontext.cxx +++ b/oox/source/drawingml/shapepropertiescontext.cxx @@ -62,16 +62,10 @@ ContextHandlerRef ShapePropertiesContext::onCreateContext( sal_Int32 aElementTok { sal_Int32 nToken = rAttribs.getToken( XML_prst, 0 ); // TODO: Move the following checks to a separate place or as a separate function - if ( nToken == XML_line ) + if (nToken == XML_line && !mrShape.isConnectorShape()) { mrShape.getServiceName() = "com.sun.star.drawing.LineShape"; } - if( ( nToken >= XML_bentConnector2 && nToken <= XML_bentConnector5 ) || - ( nToken >= XML_curvedConnector2 && nToken <= XML_curvedConnector5 ) || - nToken == XML_straightConnector1 ) - { - mrShape.getServiceName() = "com.sun.star.drawing.CustomShape"; - } // We got a preset geometry, forget the geometry inherited from the placeholder shape. mrShape.getCustomShapeProperties() = std::make_shared<CustomShapeProperties>(); diff --git a/oox/source/export/shapes.cxx b/oox/source/export/shapes.cxx index ea0e21f457d8..0405c975db0a 100644 --- a/oox/source/export/shapes.cxx +++ b/oox/source/export/shapes.cxx @@ -1496,7 +1496,8 @@ ShapeExport& ShapeExport::WriteConnectorShape( const Reference< XShape >& xShape pFS->startElementNS(mnXmlNamespace, XML_cNvCxnSpPr); WriteConnectorConnections(aConnectorEntry, GetShapeID(rXShapeA), GetShapeID(rXShapeB)); pFS->endElementNS(mnXmlNamespace, XML_cNvCxnSpPr); - pFS->singleElementNS(mnXmlNamespace, XML_nvPr); + if (GetDocumentType() == DOCUMENT_PPTX) + pFS->singleElementNS(mnXmlNamespace, XML_nvPr); pFS->endElementNS(mnXmlNamespace, XML_nvCxnSpPr); } diff --git a/oox/source/ppt/pptshapegroupcontext.cxx b/oox/source/ppt/pptshapegroupcontext.cxx index 4355f951bc8b..4ca58a383af8 100644 --- a/oox/source/ppt/pptshapegroupcontext.cxx +++ b/oox/source/ppt/pptshapegroupcontext.cxx @@ -90,7 +90,11 @@ ContextHandlerRef PPTShapeGroupContext::onCreateContext( sal_Int32 aElementToken return new ShapeStyleContext( getParser() ); */ case PPT_TOKEN( cxnSp ): // connector shape - return new oox::drawingml::ConnectorShapeContext( *this, mpGroupShapePtr, std::make_shared<PPTShape>( meShapeLocation, "com.sun.star.drawing.ConnectorShape" ) ); + { + auto pShape = std::make_shared<PPTShape>(meShapeLocation, "com.sun.star.drawing.ConnectorShape"); + return new oox::drawingml::ConnectorShapeContext(*this, mpGroupShapePtr, pShape, + pShape->getConnectorShapeProperties()); + } case PPT_TOKEN( grpSp ): // group shape return new PPTShapeGroupContext( *this, mpSlidePersistPtr, meShapeLocation, mpGroupShapePtr, std::make_shared<PPTShape>( meShapeLocation, "com.sun.star.drawing.GroupShape" ) ); case PPT_TOKEN( sp ): // Shape diff --git a/oox/source/ppt/slidepersist.cxx b/oox/source/ppt/slidepersist.cxx index ae9f0f567a7c..061dda725551 100644 --- a/oox/source/ppt/slidepersist.cxx +++ b/oox/source/ppt/slidepersist.cxx @@ -41,6 +41,9 @@ #include <com/sun/star/style/XStyleFamiliesSupplier.hpp> #include <com/sun/star/container/XNamed.hpp> #include <com/sun/star/animations/XAnimationNodeSupplier.hpp> +#include <com/sun/star/drawing/XGluePointsSupplier.hpp> +#include <com/sun/star/container/XIdentifierContainer.hpp> +#include <com/sun/star/drawing/EnhancedCustomShapeGluePointType.hpp> using namespace ::com::sun::star; using namespace ::oox::core; @@ -143,12 +146,19 @@ void SlidePersist::createXShapes( XmlFilterBase& rFilterBase ) PPTShape* pPPTShape = dynamic_cast< PPTShape* >( child.get() ); basegfx::B2DHomMatrix aTransformation; if ( pPPTShape ) + { pPPTShape->addShape( rFilterBase, *this, getTheme().get(), xShapes, aTransformation, &getShapeMap() ); + if (pPPTShape->isConnectorShape()) + maConnectorShapeId.push_back(pPPTShape->getId()); + } else child->addShape( rFilterBase, getTheme().get(), xShapes, aTransformation, maShapesPtr->getFillProperties(), &getShapeMap() ); } } + if (!maConnectorShapeId.empty()) + createConnectorShapeConnection(); + Reference< XAnimationNodeSupplier > xNodeSupplier( getPage(), UNO_QUERY); if( !xNodeSupplier.is() ) return; @@ -330,6 +340,66 @@ Reference<XAnimationNode> SlidePersist::getAnimationNode(const OUString& sId) co return aResult; } +// create connection between two shape with a connector shape. +void SlidePersist::createConnectorShapeConnection() +{ + sal_Int32 nConnectorShapeCount = maConnectorShapeId.size(); + for (sal_Int32 i = 0; i < nConnectorShapeCount; i++) + { + const auto& pIt = maShapeMap.find(maConnectorShapeId[i]); + oox::drawingml::ConnectorShapePropertiesList aConnectorShapeProperties + = pIt->second->getConnectorShapeProperties(); + uno::Reference<drawing::XShape> xConnector(pIt->second->getXShape(), uno::UNO_QUERY); + uno::Reference<beans::XPropertySet> xPropertySet(xConnector, uno::UNO_QUERY); + + if (xConnector.is()) + { + sal_Int32 nCount = aConnectorShapeProperties.size(); + for (sal_Int32 j = 0; j < nCount; j++) + { + OUString aDestShapeId = aConnectorShapeProperties[j].maDestShapeId; + const auto& pShape = maShapeMap.find(aDestShapeId); + uno::Reference<drawing::XShape> xShape(pShape->second->getXShape(), uno::UNO_QUERY); + uno::Reference<beans::XPropertySet> xSet(xShape, uno::UNO_QUERY); + if (xShape.is()) + { + uno::Reference<drawing::XGluePointsSupplier> xSupplier(xShape, uno::UNO_QUERY); + css::uno::Reference<css::container::XIdentifierContainer> xGluePoints( + xSupplier->getGluePoints(), uno::UNO_QUERY); + + sal_Int32 nCountGluePoints = xGluePoints->getIdentifiers().getLength(); + sal_Int32 nGlueId = aConnectorShapeProperties[j].mnDestGlueId; + + // The first 4 glue points belong to the bounding box. + if (nCountGluePoints > 4) + nGlueId += 4; + else + { + // change id of the left and right glue points of the bounding box (1 <-> 3) + if (nGlueId == 1) + nGlueId = 3; // Right + else if (nGlueId == 3) + nGlueId = 1; // Left + } + + bool bStart = aConnectorShapeProperties[j].mbStartShape; + if (bStart) + { + xPropertySet->setPropertyValue("StartShape", uno::Any(xShape)); + xPropertySet->setPropertyValue("StartGluePointIndex", uno::Any(nGlueId)); + } + else + { + xPropertySet->setPropertyValue("EndShape", uno::Any(xShape)); + xPropertySet->setPropertyValue("EndGluePointIndex", uno::Any(nGlueId)); + } + } + } + } + } + maConnectorShapeId.clear(); +} + } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/oox/source/shape/LockedCanvasContext.cxx b/oox/source/shape/LockedCanvasContext.cxx index 5eac3b5ceff7..19267954cf06 100644 --- a/oox/source/shape/LockedCanvasContext.cxx +++ b/oox/source/shape/LockedCanvasContext.cxx @@ -51,9 +51,10 @@ LockedCanvasContext::onCreateContext(sal_Int32 nElementToken, const ::oox::Attri } case XML_cxnSp: // CT_GvmlConnector { - return new oox::drawingml::ConnectorShapeContext( - *this, mpShapePtr, - std::make_shared<oox::drawingml::Shape>("com.sun.star.drawing.ConnectorShape")); + oox::drawingml::ShapePtr pShape + = std::make_shared<oox::drawingml::Shape>("com.sun.star.drawing.ConnectorShape"); + return new oox::drawingml::ConnectorShapeContext(*this, mpShapePtr, pShape, + pShape->getConnectorShapeProperties()); } case XML_pic: // CT_GvmlPicture { diff --git a/sc/source/filter/oox/drawingfragment.cxx b/sc/source/filter/oox/drawingfragment.cxx index 5ce7b2d21ce5..033720a1bf1e 100644 --- a/sc/source/filter/oox/drawingfragment.cxx +++ b/sc/source/filter/oox/drawingfragment.cxx @@ -139,7 +139,8 @@ GroupShapeContext::GroupShapeContext( const FragmentHandler2& rParent, { ShapePtr xShape = std::make_shared<Shape>( rHelper, rAttribs, "com.sun.star.drawing.ConnectorShape" ); if( pxShape ) *pxShape = xShape; - return new ConnectorShapeContext( rParent, rxParentShape, xShape ); + return new ConnectorShapeContext(rParent, rxParentShape, xShape, + xShape->getConnectorShapeProperties()); } case XDR_TOKEN( pic ): { diff --git a/sd/qa/unit/data/pptx/tdf89449.pptx b/sd/qa/unit/data/pptx/tdf89449.pptx Binary files differnew file mode 100644 index 000000000000..e55cbf21a927 --- /dev/null +++ b/sd/qa/unit/data/pptx/tdf89449.pptx diff --git a/sd/qa/unit/data/xml/fdo47434_0.xml b/sd/qa/unit/data/xml/fdo47434_0.xml index 512f422fd198..24dc47005623 100644 --- a/sd/qa/unit/data/xml/fdo47434_0.xml +++ b/sd/qa/unit/data/xml/fdo47434_0.xml @@ -1,10 +1,6 @@ <?xml version="1.0"?> <XShapes> - <XShape positionX="5358" positionY="4366" sizeX="5555" sizeY="1" type="com.sun.star.drawing.CustomShape" name="Straight Arrow Connector 4" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName=""> - <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/> - <FillGradient style="LINEAR" startColor="3465a4" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/> - <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/> - <FillBitmap width="32" height="32"/> + <XShape positionX="5357" positionY="4365" sizeX="5557" sizeY="1" type="com.sun.star.drawing.ConnectorShape" name="Straight Arrow Connector 4" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID"> <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/> <LineStart/> <LineEnd> @@ -21,53 +17,8 @@ <point positionX="175" positionY="0" polygonFlags="NORMAL"/> </pointSequence> </LineEnd> - <Transformation> - <Line1 column1="5556.000000" column2="0.000000" column3="5358.000000"/> - <Line2 column1="0.000000" column2="2.000000" column3="4366.000000"/> - <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/> - </Transformation> - <CustomShapeGeometry> - <PropertyValue name="MirroredX" value="false" handle="0" propertyState="DIRECT_VALUE"/> - <PropertyValue name="MirroredY" value="false" handle="0" propertyState="DIRECT_VALUE"/> - <PropertyValue name="TextCameraZRotateAngle" value="0" handle="0" propertyState="DIRECT_VALUE"/> - <PropertyValue name="TextPreRotateAngle" value="0" handle="0" propertyState="DIRECT_VALUE"/> - <PropertyValue name="Type" value="mso-spt32" handle="0" propertyState="DIRECT_VALUE"/> - <PropertyValue name="AdjustmentValues"> - <AdjustmentValues/> - </PropertyValue> - <PropertyValue name="ViewBox"> - <ViewBox x="0" y="0" width="21600" height="21600"/> - </PropertyValue> - <PropertyValue name="Path"> - <Path> - <PropertyValue name="Coordinates"> - <Coordinates> - <EnhancedCustomShapeParameterPair> - <First value="0" type="0"/> - <Second value="0" type="0"/> - </EnhancedCustomShapeParameterPair> - <EnhancedCustomShapeParameterPair> - <First value="21600" type="0"/> - <Second value="21600" type="0"/> - </EnhancedCustomShapeParameterPair> - </Coordinates> - </PropertyValue> - <PropertyValue name="Segments"> - <Segments> - <EnhancedCustomShapeSegment command="1" count="1"/> - <EnhancedCustomShapeSegment command="2" count="1"/> - <EnhancedCustomShapeSegment command="5" count="0"/> - </Segments> - </PropertyValue> - </Path> - </PropertyValue> - </CustomShapeGeometry> </XShape> - <XShape positionX="5356" positionY="5159" sizeX="5555" sizeY="1" type="com.sun.star.drawing.CustomShape" name="Straight Arrow Connector 5" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName=""> - <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/> - <FillGradient style="LINEAR" startColor="3465a4" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/> - <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/> - <FillBitmap width="32" height="32"/> + <XShape positionX="5357" positionY="5159" sizeX="5557" sizeY="0" type="com.sun.star.drawing.ConnectorShape" name="Straight Arrow Connector 5" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID"> <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/> <LineStart/> <LineEnd> @@ -84,53 +35,8 @@ <point positionX="175" positionY="0" polygonFlags="NORMAL"/> </pointSequence> </LineEnd> - <Transformation> - <Line1 column1="5556.000000" column2="0.000000" column3="5356.000000"/> - <Line2 column1="0.000000" column2="2.000000" column3="5159.000000"/> - <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/> - </Transformation> - <CustomShapeGeometry> - <PropertyValue name="MirroredX" value="true" handle="0" propertyState="DIRECT_VALUE"/> - <PropertyValue name="MirroredY" value="false" handle="0" propertyState="DIRECT_VALUE"/> - <PropertyValue name="TextCameraZRotateAngle" value="0" handle="0" propertyState="DIRECT_VALUE"/> - <PropertyValue name="TextPreRotateAngle" value="0" handle="0" propertyState="DIRECT_VALUE"/> - <PropertyValue name="Type" value="mso-spt32" handle="0" propertyState="DIRECT_VALUE"/> - <PropertyValue name="AdjustmentValues"> - <AdjustmentValues/> - </PropertyValue> - <PropertyValue name="ViewBox"> - <ViewBox x="0" y="0" width="21600" height="21600"/> - </PropertyValue> - <PropertyValue name="Path"> - <Path> - <PropertyValue name="Coordinates"> - <Coordinates> - <EnhancedCustomShapeParameterPair> - <First value="0" type="0"/> - <Second value="0" type="0"/> - </EnhancedCustomShapeParameterPair> - <EnhancedCustomShapeParameterPair> - <First value="21600" type="0"/> - <Second value="21600" type="0"/> - </EnhancedCustomShapeParameterPair> - </Coordinates> - </PropertyValue> - <PropertyValue name="Segments"> - <Segments> - <EnhancedCustomShapeSegment command="1" count="1"/> - <EnhancedCustomShapeSegment command="2" count="1"/> - <EnhancedCustomShapeSegment command="5" count="0"/> - </Segments> - </PropertyValue> - </Path> - </PropertyValue> - </CustomShapeGeometry> </XShape> - <XShape positionX="14486" positionY="4366" sizeX="5555" sizeY="1" type="com.sun.star.drawing.CustomShape" name="Straight Arrow Connector 6" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName=""> - <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/> - <FillGradient style="LINEAR" startColor="3465a4" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/> - <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/> - <FillBitmap width="32" height="32"/> + <XShape positionX="14485" positionY="4365" sizeX="5557" sizeY="1" type="com.sun.star.drawing.ConnectorShape" name="Straight Arrow Connector 6" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID"> <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/> <LineStart/> <LineEnd> @@ -147,53 +53,8 @@ <point positionX="175" positionY="0" polygonFlags="NORMAL"/> </pointSequence> </LineEnd> - <Transformation> - <Line1 column1="5556.000000" column2="0.000000" column3="14486.000000"/> - <Line2 column1="0.000000" column2="2.000000" column3="4366.000000"/> - <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/> - </Transformation> - <CustomShapeGeometry> - <PropertyValue name="MirroredX" value="false" handle="0" propertyState="DIRECT_VALUE"/> - <PropertyValue name="MirroredY" value="false" handle="0" propertyState="DIRECT_VALUE"/> - <PropertyValue name="TextCameraZRotateAngle" value="0" handle="0" propertyState="DIRECT_VALUE"/> - <PropertyValue name="TextPreRotateAngle" value="0" handle="0" propertyState="DIRECT_VALUE"/> - <PropertyValue name="Type" value="mso-spt32" handle="0" propertyState="DIRECT_VALUE"/> - <PropertyValue name="AdjustmentValues"> - <AdjustmentValues/> - </PropertyValue> - <PropertyValue name="ViewBox"> - <ViewBox x="0" y="0" width="21600" height="21600"/> - </PropertyValue> - <PropertyValue name="Path"> - <Path> - <PropertyValue name="Coordinates"> - <Coordinates> - <EnhancedCustomShapeParameterPair> - <First value="0" type="0"/> - <Second value="0" type="0"/> - </EnhancedCustomShapeParameterPair> - <EnhancedCustomShapeParameterPair> - <First value="21600" type="0"/> - <Second value="21600" type="0"/> - </EnhancedCustomShapeParameterPair> - </Coordinates> - </PropertyValue> - <PropertyValue name="Segments"> - <Segments> - <EnhancedCustomShapeSegment command="1" count="1"/> - <EnhancedCustomShapeSegment command="2" count="1"/> - <EnhancedCustomShapeSegment command="5" count="0"/> - </Segments> - </PropertyValue> - </Path> - </PropertyValue> - </CustomShapeGeometry> </XShape> - <XShape positionX="14484" positionY="5159" sizeX="5555" sizeY="1" type="com.sun.star.drawing.CustomShape" name="Straight Arrow Connector 8" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName=""> - <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/> - <FillGradient style="LINEAR" startColor="3465a4" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/> - <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/> - <FillBitmap width="32" height="32"/> + <XShape positionX="14485" positionY="5159" sizeX="5557" sizeY="0" type="com.sun.star.drawing.ConnectorShape" name="Straight Arrow Connector 8" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID"> <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/> <LineStart/> <LineEnd> @@ -210,46 +71,5 @@ <point positionX="175" positionY="0" polygonFlags="NORMAL"/> </pointSequence> </LineEnd> - <Transformation> - <Line1 column1="5556.000000" column2="0.000000" column3="14484.000000"/> - <Line2 column1="0.000000" column2="2.000000" column3="5159.000000"/> - <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/> - </Transformation> - <CustomShapeGeometry> - <PropertyValue name="MirroredX" value="true" handle="0" propertyState="DIRECT_VALUE"/> - <PropertyValue name="MirroredY" value="false" handle="0" propertyState="DIRECT_VALUE"/> - <PropertyValue name="TextCameraZRotateAngle" value="0" handle="0" propertyState="DIRECT_VALUE"/> - <PropertyValue name="TextPreRotateAngle" value="0" handle="0" propertyState="DIRECT_VALUE"/> - <PropertyValue name="Type" value="mso-spt32" handle="0" propertyState="DIRECT_VALUE"/> - <PropertyValue name="AdjustmentValues"> - <AdjustmentValues/> - </PropertyValue> - <PropertyValue name="ViewBox"> - <ViewBox x="0" y="0" width="21600" height="21600"/> - </PropertyValue> - <PropertyValue name="Path"> - <Path> - <PropertyValue name="Coordinates"> - <Coordinates> - <EnhancedCustomShapeParameterPair> - <First value="0" type="0"/> - <Second value="0" type="0"/> - </EnhancedCustomShapeParameterPair> - <EnhancedCustomShapeParameterPair> - <First value="21600" type="0"/> - <Second value="21600" type="0"/> - </EnhancedCustomShapeParameterPair> - </Coordinates> - </PropertyValue> - <PropertyValue name="Segments"> - <Segments> - <EnhancedCustomShapeSegment command="1" count="1"/> - <EnhancedCustomShapeSegment command="2" count="1"/> - <EnhancedCustomShapeSegment command="5" count="0"/> - </Segments> - </PropertyValue> - </Path> - </PropertyValue> - </CustomShapeGeometry> </XShape> </XShapes> diff --git a/sd/qa/unit/data/xml/tdf100491_0.xml b/sd/qa/unit/data/xml/tdf100491_0.xml index 0c250e6fc840..e45eba130ebf 100644 --- a/sd/qa/unit/data/xml/tdf100491_0.xml +++ b/sd/qa/unit/data/xml/tdf100491_0.xml @@ -1,6 +1,6 @@ <?xml version="1.0"?> <XShapes> - <XShape positionX="3680" positionY="2451" sizeX="6" sizeY="2990" type="com.sun.star.drawing.LineShape" name="Straight Connector 3" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID"> + <XShape positionX="3680" positionY="2451" sizeX="6" sizeY="2990" type="com.sun.star.drawing.ConnectorShape" name="Straight Connector 3" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID"> <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/> <LineStart> <pointSequence> @@ -17,25 +17,8 @@ </pointSequence> </LineStart> <LineEnd/> - <PolyPolygon> - <pointSequence> - <point positionX="3686" positionY="2451"/> - <point positionX="3680" positionY="5441"/> - </pointSequence> - </PolyPolygon> - <Geometry> - <pointSequence> - <point positionX="6" positionY="0"/> - <point positionX="0" positionY="2990"/> - </pointSequence> - </Geometry> - <Transformation> - <Line1 column1="6.000000" column2="0.000000" column3="3680.000000"/> - <Line2 column1="0.000000" column2="2990.000000" column3="2451.000000"/> - <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/> - </Transformation> </XShape> - <XShape positionX="4324" positionY="2449" sizeX="5" sizeY="2990" type="com.sun.star.drawing.LineShape" name="Straight Connector 4" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID"> + <XShape positionX="4324" positionY="2449" sizeX="5" sizeY="2990" type="com.sun.star.drawing.ConnectorShape" name="Straight Connector 4" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID"> <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/> <LineStart> <pointSequence> @@ -52,25 +35,8 @@ </pointSequence> </LineStart> <LineEnd/> - <PolyPolygon> - <pointSequence> - <point positionX="4329" positionY="2449"/> - <point positionX="4324" positionY="5439"/> - </pointSequence> - </PolyPolygon> - <Geometry> - <pointSequence> - <point positionX="5" positionY="0"/> - <point positionX="0" positionY="2990"/> - </pointSequence> - </Geometry> - <Transformation> - <Line1 column1="5.000000" column2="0.000000" column3="4324.000000"/> - <Line2 column1="0.000000" column2="2990.000000" column3="2449.000000"/> - <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/> - </Transformation> </XShape> - <XShape positionX="4947" positionY="2449" sizeX="5" sizeY="2990" type="com.sun.star.drawing.LineShape" name="Straight Connector 5" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID"> + <XShape positionX="4947" positionY="2449" sizeX="5" sizeY="2990" type="com.sun.star.drawing.ConnectorShape" name="Straight Connector 5" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID"> <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/> <LineStart> <pointSequence> @@ -87,25 +53,8 @@ </pointSequence> </LineStart> <LineEnd/> - <PolyPolygon> - <pointSequence> - <point positionX="4952" positionY="2449"/> - <point positionX="4947" positionY="5439"/> - </pointSequence> - </PolyPolygon> - <Geometry> - <pointSequence> - <point positionX="5" positionY="0"/> - <point positionX="0" positionY="2990"/> - </pointSequence> - </Geometry> - <Transformation> - <Line1 column1="5.000000" column2="0.000000" column3="4947.000000"/> - <Line2 column1="0.000000" column2="2990.000000" column3="2449.000000"/> - <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/> - </Transformation> </XShape> - <XShape positionX="9401" positionY="2435" sizeX="5" sizeY="2988" type="com.sun.star.drawing.LineShape" name="Straight Connector 6" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID"> + <XShape positionX="9401" positionY="2435" sizeX="5" sizeY="2988" type="com.sun.star.drawing.ConnectorShape" name="Straight Connector 6" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID"> <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/> <LineStart> <pointSequence> @@ -122,25 +71,8 @@ </pointSequence> </LineStart> <LineEnd/> - <PolyPolygon> - <pointSequence> - <point positionX="9406" positionY="2435"/> - <point positionX="9401" positionY="5423"/> - </pointSequence> - </PolyPolygon> - <Geometry> - <pointSequence> - <point positionX="5" positionY="0"/> - <point positionX="0" positionY="2988"/> - </pointSequence> - </Geometry> - <Transformation> - <Line1 column1="5.000000" column2="0.000000" column3="9401.000000"/> - <Line2 column1="0.000000" column2="2988.000000" column3="2435.000000"/> - <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/> - </Transformation> </XShape> - <XShape positionX="10043" positionY="2433" sizeX="5" sizeY="2988" type="com.sun.star.drawing.LineShape" name="Straight Connector 7" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID"> + <XShape positionX="10043" positionY="2433" sizeX="5" sizeY="2988" type="com.sun.star.drawing.ConnectorShape" name="Straight Connector 7" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID"> <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/> <LineStart> <pointSequence> @@ -157,25 +89,8 @@ </pointSequence> </LineStart> <LineEnd/> - <PolyPolygon> - <pointSequence> - <point positionX="10048" positionY="2433"/> - <point positionX="10043" positionY="5421"/> - </pointSequence> - </PolyPolygon> - <Geometry> - <pointSequence> - <point positionX="5" positionY="0"/> - <point positionX="0" positionY="2988"/> - </pointSequence> - </Geometry> - <Transformation> - <Line1 column1="5.000000" column2="0.000000" column3="10043.000000"/> - <Line2 column1="0.000000" column2="2988.000000" column3="2433.000000"/> - <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/> - </Transformation> </XShape> - <XShape positionX="10669" positionY="2435" sizeX="5" sizeY="2990" type="com.sun.star.drawing.LineShape" name="Straight Connector 8" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID"> + <XShape positionX="10669" positionY="2435" sizeX="5" sizeY="2990" type="com.sun.star.drawing.ConnectorShape" name="Straight Connector 8" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID"> <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/> <LineStart> <pointSequence> @@ -192,25 +107,8 @@ </pointSequence> </LineStart> <LineEnd/> - <PolyPolygon> - <pointSequence> - <point positionX="10674" positionY="2435"/> - <point positionX="10669" positionY="5425"/> - </pointSequence> - </PolyPolygon> - <Geometry> - <pointSequence> - <point positionX="5" positionY="0"/> - <point positionX="0" positionY="2990"/> - </pointSequence> - </Geometry> - <Transformation> - <Line1 column1="5.000000" column2="0.000000" column3="10669.000000"/> - <Line2 column1="0.000000" column2="2990.000000" column3="2435.000000"/> - <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/> - </Transformation> </XShape> - <XShape positionX="12466" positionY="2433" sizeX="6" sizeY="2988" type="com.sun.star.drawing.LineShape" name="Straight Connector 9" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID"> + <XShape positionX="12466" positionY="2433" sizeX="6" sizeY="2988" type="com.sun.star.drawing.ConnectorShape" name="Straight Connector 9" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID"> <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/> <LineStart> <pointSequence> @@ -227,25 +125,8 @@ </pointSequence> </LineStart> <LineEnd/> - <PolyPolygon> - <pointSequence> - <point positionX="12472" positionY="2433"/> - <point positionX="12466" positionY="5421"/> - </pointSequence> - </PolyPolygon> - <Geometry> - <pointSequence> - <point positionX="6" positionY="0"/> - <point positionX="0" positionY="2988"/> - </pointSequence> - </Geometry> - <Transformation> - <Line1 column1="6.000000" column2="0.000000" column3="12466.000000"/> - <Line2 column1="0.000000" column2="2988.000000" column3="2433.000000"/> - <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/> - </Transformation> </XShape> - <XShape positionX="13107" positionY="2431" sizeX="5" sizeY="2988" type="com.sun.star.drawing.LineShape" name="Straight Connector 10" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID"> + <XShape positionX="13107" positionY="2431" sizeX="5" sizeY="2988" type="com.sun.star.drawing.ConnectorShape" name="Straight Connector 10" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID"> <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/> <LineStart> <pointSequence> @@ -262,25 +143,8 @@ </pointSequence> </LineStart> <LineEnd/> - <PolyPolygon> - <pointSequence> - <point positionX="13112" positionY="2431"/> - <point positionX="13107" positionY="5419"/> - </pointSequence> - </PolyPolygon> - <Geometry> - <pointSequence> - <point positionX="5" positionY="0"/> - <point positionX="0" positionY="2988"/> - </pointSequence> - </Geometry> - <Transformation> - <Line1 column1="5.000000" column2="0.000000" column3="13107.000000"/> - <Line2 column1="0.000000" column2="2988.000000" column3="2431.000000"/> - <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/> - </Transformation> </XShape> - <XShape positionX="13731" positionY="2431" sizeX="5" sizeY="2988" type="com.sun.star.drawing.LineShape" name="Straight Connector 11" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID"> + <XShape positionX="13731" positionY="2431" sizeX="5" sizeY="2988" type="com.sun.star.drawing.ConnectorShape" name="Straight Connector 11" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID"> <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/> <LineStart> <pointSequence> @@ -297,25 +161,8 @@ </pointSequence> </LineStart> <LineEnd/> - <PolyPolygon> - <pointSequence> - <point positionX="13736" positionY="2431"/> - <point positionX="13731" positionY="5419"/> - </pointSequence> - </PolyPolygon> - <Geometry> - <pointSequence> - <point positionX="5" positionY="0"/> - <point positionX="0" positionY="2988"/> - </pointSequence> - </Geometry> - <Transformation> - <Line1 column1="5.000000" column2="0.000000" column3="13731.000000"/> - <Line2 column1="0.000000" column2="2988.000000" column3="2431.000000"/> - <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/> - </Transformation> </XShape> - <XShape positionX="15872" positionY="2431" sizeX="6" sizeY="2988" type="com.sun.star.drawing.LineShape" name="Straight Connector 12" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID"> + <XShape positionX="15872" positionY="2431" sizeX="6" sizeY="2988" type="com.sun.star.drawing.ConnectorShape" name="Straight Connector 12" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID"> <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/> <LineStart> <pointSequence> @@ -332,25 +179,8 @@ </pointSequence> </LineStart> <LineEnd/> - <PolyPolygon> - <pointSequence> - <point positionX="15878" positionY="2431"/> - <point positionX="15872" positionY="5419"/> - </pointSequence> - </PolyPolygon> - <Geometry> - <pointSequence> - <point positionX="6" positionY="0"/> - <point positionX="0" positionY="2988"/> - </pointSequence> - </Geometry> - <Transformation> - <Line1 column1="6.000000" column2="0.000000" column3="15872.000000"/> - <Line2 column1="0.000000" column2="2988.000000" column3="2431.000000"/> - <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/> - </Transformation> </XShape> - <XShape positionX="16513" positionY="2430" sizeX="5" sizeY="2988" type="com.sun.star.drawing.LineShape" name="Straight Connector 13" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID"> + <XShape positionX="16513" positionY="2430" sizeX="5" sizeY="2988" type="com.sun.star.drawing.ConnectorShape" name="Straight Connector 13" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID"> <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/> <LineStart> <pointSequence> @@ -367,25 +197,8 @@ </pointSequence> </LineStart> <LineEnd/> - <PolyPolygon> - <pointSequence> - <point positionX="16518" positionY="2430"/> - <point positionX="16513" positionY="5418"/> - </pointSequence> - </PolyPolygon> - <Geometry> - <pointSequence> - <point positionX="5" positionY="0"/> - <point positionX="0" positionY="2988"/> - </pointSequence> - </Geometry> - <Transformation> - <Line1 column1="5.000000" column2="0.000000" column3="16513.000000"/> - <Line2 column1="0.000000" column2="2988.000000" column3="2430.000000"/> - <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/> - </Transformation> </XShape> - <XShape positionX="17137" positionY="2430" sizeX="5" sizeY="2988" type="com.sun.star.drawing.LineShape" name="Straight Connector 14" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID"> + <XShape positionX="17137" positionY="2430" sizeX="5" sizeY="2988" type="com.sun.star.drawing.ConnectorShape" name="Straight Connector 14" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID"> <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/> <LineStart> <pointSequence> @@ -402,25 +215,8 @@ </pointSequence> </LineStart> <LineEnd/> - <PolyPolygon> - <pointSequence> - <point positionX="17142" positionY="2430"/> - <point positionX="17137" positionY="5418"/> - </pointSequence> - </PolyPolygon> - <Geometry> - <pointSequence> - <point positionX="5" positionY="0"/> - <point positionX="0" positionY="2988"/> - </pointSequence> - </Geometry> - <Transformation> - <Line1 column1="5.000000" column2="0.000000" column3="17137.000000"/> - <Line2 column1="0.000000" column2="2988.000000" column3="2430.000000"/> - <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/> - </Transformation> </XShape> - <XShape positionX="17772" positionY="2430" sizeX="5" sizeY="2988" type="com.sun.star.drawing.LineShape" name="Straight Connector 15" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID"> + <XShape positionX="17772" positionY="2430" sizeX="5" sizeY="2988" type="com.sun.star.drawing.ConnectorShape" name="Straight Connector 15" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID"> <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/> <LineStart> <pointSequence> @@ -437,25 +233,8 @@ </pointSequence> </LineStart> <LineEnd/> - <PolyPolygon> - <pointSequence> - <point positionX="17777" positionY="2430"/> - <point positionX="17772" positionY="5418"/> - </pointSequence> - </PolyPolygon> - <Geometry> - <pointSequence> - <point positionX="5" positionY="0"/> - <point positionX="0" positionY="2988"/> - </pointSequence> - </Geometry> - <Transformation> - <Line1 column1="5.000000" column2="0.000000" column3="17772.000000"/> - <Line2 column1="0.000000" column2="2988.000000" column3="2430.000000"/> - <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/> - </Transformation> </XShape> - <XShape positionX="6549" positionY="2438" sizeX="6" sizeY="2990" type="com.sun.star.drawing.LineShape" name="Straight Connector 16" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID"> + <XShape positionX="6549" positionY="2438" sizeX="6" sizeY="2990" type="com.sun.star.drawing.ConnectorShape" name="Straight Connector 16" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID"> <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/> <LineStart> <pointSequence> @@ -472,25 +251,8 @@ </pointSequence> </LineStart> <LineEnd/> - <PolyPolygon> - <pointSequence> - <point positionX="6555" positionY="2438"/> - <point positionX="6549" positionY="5428"/> - </pointSequence> - </PolyPolygon> - <Geometry> - <pointSequence> - <point positionX="6" positionY="0"/> - <point positionX="0" positionY="2990"/> - </pointSequence> - </Geometry> - <Transformation> - <Line1 column1="6.000000" column2="0.000000" column3="6549.000000"/> - <Line2 column1="0.000000" column2="2990.000000" column3="2438.000000"/> - <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/> - </Transformation> </XShape> - <XShape positionX="7193" positionY="2435" sizeX="5" sizeY="2990" type="com.sun.star.drawing.LineShape" name="Straight Connector 17" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID"> + <XShape positionX="7193" positionY="2435" sizeX="5" sizeY="2990" type="com.sun.star.drawing.ConnectorShape" name="Straight Connector 17" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID"> <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/> <LineStart> <pointSequence> @@ -507,25 +269,8 @@ </pointSequence> </LineStart> <LineEnd/> - <PolyPolygon> - <pointSequence> - <point positionX="7198" positionY="2435"/> - <point positionX="7193" positionY="5425"/> - </pointSequence> - </PolyPolygon> - <Geometry> - <pointSequence> - <point positionX="5" positionY="0"/> - <point positionX="0" positionY="2990"/> - </pointSequence> - </Geometry> - <Transformation> - <Line1 column1="5.000000" column2="0.000000" column3="7193.000000"/> - <Line2 column1="0.000000" column2="2990.000000" column3="2435.000000"/> - <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/> - </Transformation> </XShape> - <XShape positionX="7816" positionY="2435" sizeX="5" sizeY="2990" type="com.sun.star.drawing.LineShape" name="Straight Connector 18" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID"> + <XShape positionX="7816" positionY="2435" sizeX="5" sizeY="2990" type="com.sun.star.drawing.ConnectorShape" name="Straight Connector 18" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID"> <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/> <LineStart> <pointSequence> @@ -542,22 +287,5 @@ </pointSequence> </LineStart> <LineEnd/> - <PolyPolygon> - <pointSequence> - <point positionX="7821" positionY="2435"/> - <point positionX="7816" positionY="5425"/> - </pointSequence> - </PolyPolygon> - <Geometry> - <pointSequence> - <point positionX="5" positionY="0"/> - <point positionX="0" positionY="2990"/> - </pointSequence> - </Geometry> - <Transformation> - <Line1 column1="5.000000" column2="0.000000" column3="7816.000000"/> - <Line2 column1="0.000000" column2="2990.000000" column3="2435.000000"/> - <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/> - </Transformation> </XShape> </XShapes> diff --git a/sd/qa/unit/export-tests-ooxml2.cxx b/sd/qa/unit/export-tests-ooxml2.cxx index e99ac6168dd5..6be1222b5c7d 100644 --- a/sd/qa/unit/export-tests-ooxml2.cxx +++ b/sd/qa/unit/export-tests-ooxml2.cxx @@ -1540,10 +1540,10 @@ void SdOOXMLExportTest2::testTdf114845_rotateShape() xDocShRef->DoClose(); xmlDocUniquePtr pXmlDocContent = parseExport(tempFile, "ppt/slides/slide1.xml"); - assertXPath(pXmlDocContent, "/p:sld/p:cSld/p:spTree/p:sp[5]/p:nvSpPr/p:cNvPr", "name", "Straight Arrow Connector 9"); - assertXPath(pXmlDocContent, "/p:sld/p:cSld/p:spTree/p:sp[5]/p:spPr/a:xfrm", "flipV", "1"); - double dX = getXPath(pXmlDocContent, "/p:sld/p:cSld/p:spTree/p:sp[5]/p:spPr/a:xfrm/a:off", "x").toDouble(); - double dY = getXPath(pXmlDocContent, "/p:sld/p:cSld/p:spTree/p:sp[5]/p:spPr/a:xfrm/a:off", "y").toDouble(); + assertXPath(pXmlDocContent, "/p:sld/p:cSld/p:spTree/p:cxnSp[2]/p:nvCxnSpPr/p:cNvPr", "name", "Straight Arrow Connector 9"); + assertXPath(pXmlDocContent, "/p:sld/p:cSld/p:spTree/p:cxnSp[2]/p:spPr/a:xfrm", "flipV", "1"); + double dX = getXPath(pXmlDocContent, "/p:sld/p:cSld/p:spTree/p:cxnSp[2]/p:spPr/a:xfrm/a:off", "x").toDouble(); + double dY = getXPath(pXmlDocContent, "/p:sld/p:cSld/p:spTree/p:cxnSp[2]/p:spPr/a:xfrm/a:off", "y").toDouble(); CPPUNIT_ASSERT_DOUBLES_EQUAL( 4059000.0, dX, dX * .001); CPPUNIT_ASSERT_DOUBLES_EQUAL( 3287520.0, dY, dY * .001); } diff --git a/sd/qa/unit/import-tests.cxx b/sd/qa/unit/import-tests.cxx index 215d668b2f3f..100c9e784875 100644 --- a/sd/qa/unit/import-tests.cxx +++ b/sd/qa/unit/import-tests.cxx @@ -52,6 +52,7 @@ #include <com/sun/star/frame/Desktop.hpp> #include <com/sun/star/presentation/XCustomPresentationSupplier.hpp> #include <com/sun/star/drawing/EnhancedCustomShapeParameterPair.hpp> +#include <com/sun/star/drawing/ConnectorType.hpp> #include <stlpool.hxx> #include <comphelper/sequenceashashmap.hxx> @@ -80,6 +81,7 @@ public: virtual void setUp() override; void testDocumentLayout(); + void testTdf89449(); void testTdf147459(); void testTdf146223(); void testTdf144918(); @@ -147,6 +149,7 @@ public: CPPUNIT_TEST_SUITE(SdImportTest); CPPUNIT_TEST(testDocumentLayout); + CPPUNIT_TEST(testTdf89449); CPPUNIT_TEST(testTdf147459); CPPUNIT_TEST(testTdf146223); CPPUNIT_TEST(testTdf144918); @@ -292,6 +295,42 @@ void SdImportTest::testDocumentLayout() } } +void SdImportTest::testTdf89449() +{ + sd::DrawDocShellRef xDocShRef + = loadURL(m_directories.getURLFromSrc(u"/sd/qa/unit/data/pptx/tdf89449.pptx"), PPTX); + + sal_Int32 nStartGlueId; + sal_Int32 nEndGlueId; + css::drawing::ConnectorType aConnectorType; + + uno::Reference<beans::XPropertySet> xCurvedConnector(getShapeFromPage(3, 0, xDocShRef)); + xCurvedConnector->getPropertyValue("EdgeKind") >>= aConnectorType; + CPPUNIT_ASSERT_EQUAL(drawing::ConnectorType::ConnectorType_CURVE, aConnectorType); + nStartGlueId = xCurvedConnector->getPropertyValue("StartGluePointIndex").get<sal_Int32>(); + CPPUNIT_ASSERT_EQUAL(sal_Int32(1), nStartGlueId); + nEndGlueId = xCurvedConnector->getPropertyValue("EndGluePointIndex").get<sal_Int32>(); + CPPUNIT_ASSERT_EQUAL(sal_Int32(0), nEndGlueId); + + uno::Reference<beans::XPropertySet> xStraightConnector(getShapeFromPage(4, 0, xDocShRef)); + xStraightConnector->getPropertyValue("EdgeKind") >>= aConnectorType; + CPPUNIT_ASSERT_EQUAL(drawing::ConnectorType::ConnectorType_LINE, aConnectorType); + nStartGlueId = xStraightConnector->getPropertyValue("StartGluePointIndex").get<sal_Int32>(); + CPPUNIT_ASSERT_EQUAL(sal_Int32(1), nStartGlueId); + nEndGlueId = xStraightConnector->getPropertyValue("EndGluePointIndex").get<sal_Int32>(); + CPPUNIT_ASSERT_EQUAL(sal_Int32(3), nEndGlueId); + + uno::Reference<beans::XPropertySet> xStandardConnector(getShapeFromPage(5, 0, xDocShRef)); + xStandardConnector->getPropertyValue("EdgeKind") >>= aConnectorType; + CPPUNIT_ASSERT_EQUAL(drawing::ConnectorType::ConnectorType_STANDARD, aConnectorType); + nStartGlueId = xStandardConnector->getPropertyValue("StartGluePointIndex").get<sal_Int32>(); + CPPUNIT_ASSERT_EQUAL(sal_Int32(3), nStartGlueId); + nEndGlueId = xStandardConnector->getPropertyValue("EndGluePointIndex").get<sal_Int32>(); + CPPUNIT_ASSERT_EQUAL(sal_Int32(2), nEndGlueId); + + xDocShRef->DoClose(); +} + void SdImportTest::testTdf147459() { sd::DrawDocShellRef xDocShRef |