include/oox/drawingml/diagram/diagramhelper_oox.hxx | 4 + include/svx/diagram/DiagramHelper_svx.hxx | 8 +- include/svx/diagram/datamodel_svx.hxx | 19 +++- oox/source/drawingml/diagram/datamodel_oox.cxx | 8 +- oox/source/drawingml/diagram/datamodel_oox.hxx | 2 oox/source/drawingml/diagram/diagram.cxx | 4 - oox/source/drawingml/diagram/diagram.hxx | 2 oox/source/drawingml/diagram/diagramhelper_oox.cxx | 24 ++++-- svx/source/diagram/DiagramHelper_svx.cxx | 17 ++-- svx/source/diagram/datamodel_svx.cxx | 79 ++++++++++++-------- 10 files changed, 103 insertions(+), 64 deletions(-)
New commits: commit 8848aafecc9a450915f2db3953a0876467aa24b7 Author: Armin Le Grand (collabora) <[email protected]> AuthorDate: Wed Jan 28 18:31:46 2026 +0100 Commit: Armin Le Grand <[email protected]> CommitDate: Thu Jan 29 16:27:28 2026 +0100 SmartArt: Some simplifications/optimizations Also found a wrong URL in writing the Data DomTree. Change-Id: I674036410430db9d7d66937c72a6a31acd466cec Reviewed-on: https://gerrit.libreoffice.org/c/core/+/198326 Tested-by: Jenkins Reviewed-by: Armin Le Grand <[email protected]> diff --git a/include/oox/drawingml/diagram/diagramhelper_oox.hxx b/include/oox/drawingml/diagram/diagramhelper_oox.hxx index 82195e9381d1..f75a87752991 100644 --- a/include/oox/drawingml/diagram/diagramhelper_oox.hxx +++ b/include/oox/drawingml/diagram/diagramhelper_oox.hxx @@ -60,6 +60,10 @@ class DiagramHelper_oox final : public svx::diagram::DiagramHelper_svx const css::uno::Reference<css::drawing::XShape>& xOldShape, const css::uno::Reference<css::drawing::XShape>& xNewShape); +protected: + // access associated SdrObjGroup/XShape/RootShape + virtual css::uno::Reference< css::drawing::XShape >& accessRootShape() override; + public: DiagramHelper_oox( std::shared_ptr< Diagram > xDiagramPtr, diff --git a/include/svx/diagram/DiagramHelper_svx.hxx b/include/svx/diagram/DiagramHelper_svx.hxx index a24b8174802e..f6591f598236 100644 --- a/include/svx/diagram/DiagramHelper_svx.hxx +++ b/include/svx/diagram/DiagramHelper_svx.hxx @@ -81,8 +81,8 @@ private: bool mbForceThemePtrRecreation; // false protected: - // remember associated SdrObjGroup - com::sun::star::uno::Reference< com::sun::star::drawing::XShape > mxGroupShape; + // access associated SdrObjGroup/XShape/RootShape + virtual css::uno::Reference< css::drawing::XShape >& accessRootShape() = 0; public: DiagramHelper_svx(); @@ -114,13 +114,13 @@ public: bool ForceThemePtrRecreation() const { return mbForceThemePtrRecreation; }; // connect/disconnect to/from Group - void connectToSdrObjGroup(com::sun::star::uno::Reference< com::sun::star::drawing::XShape >& rTarget); + void connectToSdrObjGroup(css::uno::Reference< css::drawing::XShape >& rTarget); void disconnectFromSdrObjGroup(); static void AddAdditionalVisualization(const SdrObjGroup& rTarget, SdrHdlList& rHdlList); // access to PropertyValues - virtual com::sun::star::uno::Any getOOXDomValue(svx::diagram::DomMapFlag aDomMapFlag) const = 0; + virtual css::uno::Any getOOXDomValue(svx::diagram::DomMapFlag aDomMapFlag) const = 0; }; }} // end of namespace diff --git a/include/svx/diagram/datamodel_svx.hxx b/include/svx/diagram/datamodel_svx.hxx index 4587678781fc..357c63245894 100644 --- a/include/svx/diagram/datamodel_svx.hxx +++ b/include/svx/diagram/datamodel_svx.hxx @@ -168,6 +168,10 @@ protected: DiagramData_svx(); public: + // access associated SdrObjGroup/XShape/RootShape + css::uno::Reference< css::drawing::XShape >& accessRootShape() { return mxRootShape; } + const css::uno::Reference< css::drawing::XShape >& accessRootShape() const { return mxRootShape; } + virtual ~DiagramData_svx(); // creates temporary processing data from model data @@ -185,8 +189,8 @@ public: PointsNameMap& getPointsPresNameMap() { return maPointsPresNameMap; } ::std::vector<OUString>& getExtDrawings() { return maExtDrawings; } const Point* getRootPoint() const; - OUString getDiagramString(const css::uno::Reference<css::drawing::XShape>& rRootShape) const; - std::vector<std::pair<OUString, OUString>> getDiagramChildren(const OUString& rParentId, const css::uno::Reference<css::drawing::XShape>& rRootShape) const; + OUString getDiagramString() const; + std::vector<std::pair<OUString, OUString>> getDiagramChildren(const OUString& rParentId) const; const css::uno::Reference< css::xml::dom::XDocument >& getThemeDocument() const { return mxThemeDocument; } void setThemeDocument( const css::uno::Reference< css::xml::dom::XDocument >& xRef ) { mxThemeDocument = xRef; } @@ -202,15 +206,18 @@ public: DiagramDataStatePtr extractDiagramDataState() const; void applyDiagramDataState(const DiagramDataStatePtr& rState); - css::uno::Reference<css::drawing::XShape> getMasterXShapeForPoint(const Point& rPoint, const css::uno::Reference<css::drawing::XShape>& rRootShape) const; - OUString getTextForPoint(const Point& rPoint, const css::uno::Reference<css::drawing::XShape>& rRootShape) const; - static css::uno::Reference<css::drawing::XShape> getXShapeByModelID(const css::uno::Reference<css::drawing::XShape>& rxShape, std::u16string_view rModelID); + css::uno::Reference<css::drawing::XShape> getMasterXShapeForPoint(const Point& rPoint) const; + OUString getTextForPoint(const Point& rPoint) const; + css::uno::Reference<css::drawing::XShape> getXShapeByModelID(std::u16string_view rModelID) const; protected: // helpers - void getDiagramChildrenString(OUStringBuffer& rBuf, const Point* pPoint, sal_Int32 nLevel, const css::uno::Reference<css::drawing::XShape>& rRootShape) const; + void getDiagramChildrenString(OUStringBuffer& rBuf, const Point* pPoint, sal_Int32 nLevel) const; void addConnection(TypeConstant nType, const OUString& sSourceId, const OUString& sDestId); + // remember associated SdrObjGroup/XShape/RootShape + css::uno::Reference< css::drawing::XShape > mxRootShape; + // evtl. existing alternative imported visualization identifier ::std::vector<OUString> maExtDrawings; diff --git a/oox/source/drawingml/diagram/datamodel_oox.cxx b/oox/source/drawingml/diagram/datamodel_oox.cxx index 33796886e2e1..2dafea9ff620 100644 --- a/oox/source/drawingml/diagram/datamodel_oox.cxx +++ b/oox/source/drawingml/diagram/datamodel_oox.cxx @@ -59,14 +59,14 @@ Shape* DiagramData_oox::getOrCreateAssociatedShape(const svx::diagram::Point& rP return rShapePtr.get(); } -void DiagramData_oox::writeDiagramData(oox::core::XmlFilterBase& rFB, sax_fastparser::FSHelperPtr& rTarget, const uno::Reference<drawing::XShape>& rRootShape) +void DiagramData_oox::writeDiagramData(oox::core::XmlFilterBase& rFB, sax_fastparser::FSHelperPtr& rTarget) { if (!rTarget) return; // write header infos const OUString aNsDmlDiagram(rFB.getNamespaceURL(OOX_NS(dmlDiagram))); - const OUString aNsDml(rFB.getNamespaceURL(NMSP_dmlDiagram)); + const OUString aNsDml(rFB.getNamespaceURL(OOX_NS(dml))); rTarget->startElementNS(XML_dgm, XML_dataModel, FSNS(XML_xmlns, XML_dgm), aNsDmlDiagram, FSNS(XML_xmlns, XML_a), aNsDml); @@ -85,7 +85,7 @@ void DiagramData_oox::writeDiagramData(oox::core::XmlFilterBase& rFB, sax_fastpa rPoint.writeDiagramData_data(rTarget); - uno::Reference<drawing::XShape> xMasterText(getMasterXShapeForPoint(rPoint, rRootShape)); + uno::Reference<drawing::XShape> xMasterText(getMasterXShapeForPoint(rPoint)); if (xMasterText) { @@ -139,7 +139,7 @@ void DiagramData_oox::writeDiagramData(oox::core::XmlFilterBase& rFB, sax_fastpa // Diagram::createShapeHierarchyFromModel. This will also allow to use existing stuff like standard dialogs // and more for later offering changing the Background of a Diagram. // Note that an incarnation of BG as XShape is also needed to 'carry' the correct Size for that Diagram. - uno::Reference<drawing::XShape> xBgShape(getXShapeByModelID(rRootShape, getBackgroundShapeModelID())); + uno::Reference<drawing::XShape> xBgShape(getXShapeByModelID(getBackgroundShapeModelID())); if (xBgShape.is()) { diff --git a/oox/source/drawingml/diagram/datamodel_oox.hxx b/oox/source/drawingml/diagram/datamodel_oox.hxx index 8833cc602a27..7845ffd5bec2 100644 --- a/oox/source/drawingml/diagram/datamodel_oox.hxx +++ b/oox/source/drawingml/diagram/datamodel_oox.hxx @@ -50,7 +50,7 @@ public: Shape* getOrCreateAssociatedShape(const svx::diagram::Point& rPoint, bool bCreateOnDemand = false) const; - void writeDiagramData(oox::core::XmlFilterBase& rFB, sax_fastparser::FSHelperPtr& rTarget, const css::uno::Reference<css::drawing::XShape>& rRootShape); + void writeDiagramData(oox::core::XmlFilterBase& rFB, sax_fastparser::FSHelperPtr& rTarget); private: // The model definition, the parts *only* available in oox. Also look for already diff --git a/oox/source/drawingml/diagram/diagram.cxx b/oox/source/drawingml/diagram/diagram.cxx index 3ea5eb1fcfb7..70eccc96c93c 100644 --- a/oox/source/drawingml/diagram/diagram.cxx +++ b/oox/source/drawingml/diagram/diagram.cxx @@ -200,7 +200,7 @@ bool Diagram::checkMinimalDataDoms() const return true; } -void Diagram::tryToCreateMissingDataDoms(oox::core::XmlFilterBase& rFB, const uno::Reference<drawing::XShape>& rXRootShape) +void Diagram::tryToCreateMissingDataDoms(oox::core::XmlFilterBase& rFB) { // internal testing: allow to force to always recreate static bool bForceAlwaysReCreate(false); @@ -225,7 +225,7 @@ void Diagram::tryToCreateMissingDataDoms(oox::core::XmlFilterBase& rFB, const un if (xOutput) { sax_fastparser::FSHelperPtr aFS = std::make_shared<sax_fastparser::FastSerializerHelper>(xOutput, true); - getData()->writeDiagramData(rFB, aFS, rXRootShape); + getData()->writeDiagramData(rFB, aFS); xOutput->flush(); // this call is *important*, without it xDocBuilder->parse below fails and some strange diff --git a/oox/source/drawingml/diagram/diagram.hxx b/oox/source/drawingml/diagram/diagram.hxx index 943e33b4e1c4..c97c6699693a 100644 --- a/oox/source/drawingml/diagram/diagram.hxx +++ b/oox/source/drawingml/diagram/diagram.hxx @@ -153,7 +153,7 @@ public: // check if mandatory DiagramDomS exist (or can be created) bool checkMinimalDataDoms() const; - void tryToCreateMissingDataDoms(oox::core::XmlFilterBase& rFB, const css::uno::Reference<css::drawing::XShape>& rXRootShape); + void tryToCreateMissingDataDoms(oox::core::XmlFilterBase& rFB); private: // This contains groups of shapes: automatic font size is the same in each group. diff --git a/oox/source/drawingml/diagram/diagramhelper_oox.cxx b/oox/source/drawingml/diagram/diagramhelper_oox.cxx index 2520f5a4a309..42d4af5a9359 100644 --- a/oox/source/drawingml/diagram/diagramhelper_oox.cxx +++ b/oox/source/drawingml/diagram/diagramhelper_oox.cxx @@ -74,10 +74,16 @@ void DiagramHelper_oox::moveDiagramModelDataFromOldToNewXShape( // maybe copy more stuff... } +uno::Reference<drawing::XShape>& DiagramHelper_oox::accessRootShape() +{ + assert(hasDiagramData() && "Access to XRootShape without DiagramData (!)"); + return mpDiagramPtr->getData()->accessRootShape(); +} + void DiagramHelper_oox::reLayout() { SdrObjGroup* pTarget( - dynamic_cast<SdrObjGroup*>(SdrObject::getSdrObjectFromXShape(mxGroupShape))); + dynamic_cast<SdrObjGroup*>(SdrObject::getSdrObjectFromXShape(accessRootShape()))); if (nullptr == pTarget) return; @@ -167,7 +173,7 @@ void DiagramHelper_oox::reLayout() xFilter->setDiagramFontHeights(&mpDiagramPtr->getDiagramFontHeights()); // Prepare the target for the to-be-created XShapes - uno::Reference<drawing::XShapes> xShapes(mxGroupShape, uno::UNO_QUERY_THROW); + uno::Reference<drawing::XShapes> xShapes(accessRootShape(), uno::UNO_QUERY_THROW); for (auto const& child : pShapePtr->getChildren()) { @@ -274,7 +280,7 @@ OUString DiagramHelper_oox::getDiagramString() const { if (hasDiagramData()) { - return mpDiagramPtr->getData()->getDiagramString(mxGroupShape); + return mpDiagramPtr->getData()->getDiagramString(); } return OUString(); @@ -285,7 +291,7 @@ DiagramHelper_oox::getDiagramChildren(const OUString& rParentId) const { if (hasDiagramData()) { - return mpDiagramPtr->getData()->getDiagramChildren(rParentId, mxGroupShape); + return mpDiagramPtr->getData()->getDiagramChildren(rParentId); } return std::vector<std::pair<OUString, OUString>>(); @@ -362,13 +368,15 @@ void DiagramHelper_oox::TextInformationChange() DomMapFlags aFlags; aFlags.push_back(DomMapFlag::OOXData); - // aFlags.push_back(DomMapFlag::OOXDrawing); - // aFlags.push_back(DomMapFlag::OOXDataRels); + aFlags.push_back(DomMapFlag::OOXDrawing); + aFlags.push_back(DomMapFlag::OOXDataImageRels); + aFlags.push_back(DomMapFlag::OOXDataHlinkRels); + aFlags.push_back(DomMapFlag::OOXDrawingRels); mpDiagramPtr->resetOOXDomValues(std::move(aFlags)); // still reset GrabBag at Associated SdrObjGroup object. There are no "OOX.*" // entries anymore, but others like "mso-rotation-angle" and others - uno::Reference<beans::XPropertySet> xPropSet(mxGroupShape, uno::UNO_QUERY); + uno::Reference<beans::XPropertySet> xPropSet(accessRootShape(), uno::UNO_QUERY); if (xPropSet->getPropertySetInfo()->hasPropertyByName(u"InteropGrabBag"_ustr)) xPropSet->setPropertyValue(u"InteropGrabBag"_ustr, uno::Any(uno::Sequence<beans::PropertyValue>())); @@ -466,7 +474,7 @@ void DiagramHelper_oox::tryToCreateMissingDataDoms(oox::core::XmlFilterBase& rFB if (!mpDiagramPtr) return; - mpDiagramPtr->tryToCreateMissingDataDoms(rFB, mxGroupShape); + mpDiagramPtr->tryToCreateMissingDataDoms(rFB); } } diff --git a/svx/source/diagram/DiagramHelper_svx.cxx b/svx/source/diagram/DiagramHelper_svx.cxx index 94e70d097364..e4ca89d73d4c 100644 --- a/svx/source/diagram/DiagramHelper_svx.cxx +++ b/svx/source/diagram/DiagramHelper_svx.cxx @@ -409,7 +409,6 @@ DiagramHelper_svx::DiagramHelper_svx() : mbUseDiagramThemeData(false) , mbUseDiagramModelData(true) , mbForceThemePtrRecreation(false) -, mxGroupShape() { } @@ -417,20 +416,22 @@ DiagramHelper_svx::~DiagramHelper_svx() {} void DiagramHelper_svx::disconnectFromSdrObjGroup() { - SdrObjGroup* pGroupObject(dynamic_cast<SdrObjGroup*>(SdrObject::getSdrObjectFromXShape(mxGroupShape))); + uno::Reference< drawing::XShape >& rxRootShape(accessRootShape()); + SdrObjGroup* pGroupObject(dynamic_cast<SdrObjGroup*>(SdrObject::getSdrObjectFromXShape(rxRootShape))); if (nullptr != pGroupObject) { - mxGroupShape.clear(); + rxRootShape.clear(); pGroupObject->mp_DiagramHelper.reset(); } } -void DiagramHelper_svx::connectToSdrObjGroup(com::sun::star::uno::Reference< com::sun::star::drawing::XShape >& rTarget) +void DiagramHelper_svx::connectToSdrObjGroup(css::uno::Reference< css::drawing::XShape >& rTarget) { SdrObjGroup* pGroupObject(nullptr); - if (mxGroupShape && rTarget == mxGroupShape) + uno::Reference< drawing::XShape >& rxRootShape(accessRootShape()); + if (rxRootShape && rTarget == rxRootShape) { - pGroupObject = dynamic_cast<SdrObjGroup*>(SdrObject::getSdrObjectFromXShape(mxGroupShape)); + pGroupObject = dynamic_cast<SdrObjGroup*>(SdrObject::getSdrObjectFromXShape(rxRootShape)); if (pGroupObject != nullptr && pGroupObject->mp_DiagramHelper.get() == this) { // connection already established @@ -442,8 +443,8 @@ void DiagramHelper_svx::connectToSdrObjGroup(com::sun::star::uno::Reference< com disconnectFromSdrObjGroup(); // connect to target - mxGroupShape = rTarget; - pGroupObject = dynamic_cast<SdrObjGroup*>(SdrObject::getSdrObjectFromXShape(mxGroupShape)); + rxRootShape = rTarget; + pGroupObject = dynamic_cast<SdrObjGroup*>(SdrObject::getSdrObjectFromXShape(rxRootShape)); if (nullptr != pGroupObject) pGroupObject->mp_DiagramHelper.reset(this);; } diff --git a/svx/source/diagram/datamodel_svx.cxx b/svx/source/diagram/datamodel_svx.cxx index 57787ba78900..6a7bf04612a9 100644 --- a/svx/source/diagram/datamodel_svx.cxx +++ b/svx/source/diagram/datamodel_svx.cxx @@ -212,11 +212,11 @@ const Point* DiagramData_svx::getRootPoint() const return nullptr; } -OUString DiagramData_svx::getDiagramString(const css::uno::Reference<css::drawing::XShape>& rRootShape) const +OUString DiagramData_svx::getDiagramString() const { OUStringBuffer aBuf; const Point* pPoint = getRootPoint(); - getDiagramChildrenString(aBuf, pPoint, 0, rRootShape); + getDiagramChildrenString(aBuf, pPoint, 0); return aBuf.makeStringAndClear(); } @@ -270,9 +270,10 @@ DomMapFlags DiagramData_svx::removeDiagramNode(const OUString& rNodeId) // prepare retval, OOXData and OOXLayout is changed aRetval.push_back(DomMapFlag::OOXData); - // aRetval.push_back(DomMapFlag::OOXDrawing); - // aRetval.push_back(DomMapFlag::OOXDataRels); - // aRetval.push_back(DomMapFlag::OOXLayout); + aRetval.push_back(DomMapFlag::OOXDrawing); + aRetval.push_back(DomMapFlag::OOXDataImageRels); + aRetval.push_back(DomMapFlag::OOXDataHlinkRels); + aRetval.push_back(DomMapFlag::OOXDrawingRels); return aRetval; } @@ -307,8 +308,7 @@ void DiagramData_svx::applyDiagramDataState(const DiagramDataStatePtr& rState) void DiagramData_svx::getDiagramChildrenString( OUStringBuffer& rBuf, const svx::diagram::Point* pPoint, - sal_Int32 nLevel, - const css::uno::Reference<css::drawing::XShape>& rRootShape) const + sal_Int32 nLevel) const { if (!pPoint) return; @@ -319,7 +319,7 @@ void DiagramData_svx::getDiagramChildrenString( rBuf.append(' '); rBuf.append('+'); rBuf.append(' '); - const OUString aText(getTextForPoint(*pPoint, rRootShape)); + const OUString aText(getTextForPoint(*pPoint)); rBuf.append(aText); rBuf.append(' '); } @@ -336,19 +336,16 @@ void DiagramData_svx::getDiagramChildrenString( } for (auto pChild : aChildren) - getDiagramChildrenString(rBuf, pChild, nLevel + 1, rRootShape); + getDiagramChildrenString(rBuf, pChild, nLevel + 1); } -uno::Reference<drawing::XShape> DiagramData_svx::getXShapeByModelID(const uno::Reference<drawing::XShape>& rxShape, std::u16string_view rModelID) +uno::Reference<drawing::XShape> DiagramData_svx::getXShapeByModelID(std::u16string_view rModelID) const { - if (!rxShape) - return rxShape; - uno::Reference<drawing::XShape> xRetval; if (rModelID.empty()) return xRetval; - SdrObject* pCandidate(SdrObject::getSdrObjectFromXShape(rxShape)); + SdrObject* pCandidate(SdrObject::getSdrObjectFromXShape(accessRootShape())); if (nullptr == pCandidate) return xRetval; @@ -363,27 +360,26 @@ uno::Reference<drawing::XShape> DiagramData_svx::getXShapeByModelID(const uno::R return xRetval; } -uno::Reference<drawing::XShape> DiagramData_svx::getMasterXShapeForPoint(const Point& rPoint, const uno::Reference<drawing::XShape>& rRootShape) const +uno::Reference<drawing::XShape> DiagramData_svx::getMasterXShapeForPoint(const Point& rPoint) const { - if (!rPoint.msPlaceholderText.isEmpty()) + for (auto& rCandidate : getPoints()) { - for (auto& rCandidate : getPoints()) + if (!rCandidate.msPresentationAssociationId.isEmpty() + && "textNode" == rCandidate.msPresentationLayoutName + && rCandidate.msPresentationAssociationId == rPoint.msModelId) { - if (!rCandidate.msPresentationAssociationId.isEmpty() && rCandidate.msPresentationAssociationId == rPoint.msModelId) - { - uno::Reference<drawing::XShape> xMasterText = getXShapeByModelID(rRootShape, rCandidate.msModelId); - if (xMasterText) - return xMasterText; - } + const uno::Reference<drawing::XShape> xMasterText = getXShapeByModelID(rCandidate.msModelId); + if (xMasterText) + return xMasterText; } } return uno::Reference<drawing::XShape>(); } -OUString DiagramData_svx::getTextForPoint(const Point& rPoint, const uno::Reference<drawing::XShape>& rRootShape) const +OUString DiagramData_svx::getTextForPoint(const Point& rPoint) const { - uno::Reference<drawing::XShape> xMasterText(getMasterXShapeForPoint(rPoint, rRootShape)); + uno::Reference<drawing::XShape> xMasterText(getMasterXShapeForPoint(rPoint)); uno::Reference<text::XText> xText(xMasterText, uno::UNO_QUERY); if (xText) @@ -392,7 +388,7 @@ OUString DiagramData_svx::getTextForPoint(const Point& rPoint, const uno::Refere return OUString(); } -std::vector<std::pair<OUString, OUString>> DiagramData_svx::getDiagramChildren(const OUString& rParentId, const uno::Reference<drawing::XShape>& rRootShape) const +std::vector<std::pair<OUString, OUString>> DiagramData_svx::getDiagramChildren(const OUString& rParentId) const { const OUString sModelId = rParentId.isEmpty() ? getRootPoint()->msModelId : rParentId; std::vector<std::pair<OUString, OUString>> aChildren; @@ -404,7 +400,7 @@ std::vector<std::pair<OUString, OUString>> DiagramData_svx::getDiagramChildren(c const auto pChild = maPointNameMap.find(rCxn.msDestId); if (pChild != maPointNameMap.end()) { - const OUString aText(getTextForPoint(*pChild->second, rRootShape)); + const OUString aText(getTextForPoint(*pChild->second)); aChildren[rCxn.mnSourceOrder] = std::make_pair( pChild->second->msModelId, aText); @@ -471,9 +467,10 @@ std::pair<OUString, DomMapFlags> DiagramData_svx::addDiagramNode() // prepare retval, OOXData and OOXLayout is changed aRetval.push_back(DomMapFlag::OOXData); - // aRetval.push_back(DomMapFlag::OOXDrawing); - // aRetval.push_back(DomMapFlag::OOXDataRels); - // aRetval.push_back(DomMapFlag::OOXLayout); + aRetval.push_back(DomMapFlag::OOXDrawing); + aRetval.push_back(DomMapFlag::OOXDataImageRels); + aRetval.push_back(DomMapFlag::OOXDataHlinkRels); + aRetval.push_back(DomMapFlag::OOXDrawingRels); return std::make_pair(sNewNodeId, aRetval); } @@ -579,6 +576,28 @@ void DiagramData_svx::buildDiagramDataModel(bool /*bClearOoxShapes*/) output << "];" << std::endl; #endif + // does currpoint have any text set? + const OUString aTextAtPoint(getTextForPoint(point)); + if(!aTextAtPoint.isEmpty()) + { +#ifdef DEBUG_OOX_DIAGRAM + static sal_Int32 nCount=0; + output << " " + << "textNode" << nCount + << " [" + << "label=\"" + << OUStringToOString( + aTextAtPoint, + RTL_TEXTENCODING_UTF8).getStr() + << "\"" << "];" << std::endl; + output << " " + << normalizeDotName(point.msModelId).getStr() + << " -> " + << "textNode" << nCount++ + << ";" << std::endl; +#endif + } + const bool bInserted1 = getPointNameMap().insert( std::make_pair(point.msModelId,&point)).second;
