include/svtools/embedhlp.hxx | 3 ++ svtools/Library_svt.mk | 1 svtools/source/misc/embedhlp.cxx | 40 +++++++++++++++++++++++++++++++++++++++ sw/source/core/ole/ndole.cxx | 13 ------------ 4 files changed, 45 insertions(+), 12 deletions(-)
New commits: commit 4e9a52c7f5ed12e4bb2a716d992edff7aa6c2a7d Author: Miklos Vajna <vmik...@collabora.com> AuthorDate: Thu Feb 17 08:33:04 2022 +0100 Commit: Miklos Vajna <vmik...@collabora.com> CommitDate: Thu Feb 17 09:21:34 2022 +0100 svtools: extract EmbeddedObjectRef::dumpAsXml() from SwOLEObj Because sw/ doesn't have access to the internals, but dumping should show the state as-is, without calling getters that change the state. Especially GetGraphic() is not a trivial wrapper around mpImpl->pGraphic. Change-Id: I2cf43130d4eeab63611e37b4a978bb7aa546c7f7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/130056 Reviewed-by: Miklos Vajna <vmik...@collabora.com> Tested-by: Jenkins diff --git a/include/svtools/embedhlp.hxx b/include/svtools/embedhlp.hxx index 05b0b5644122..9ba2a0166c2b 100644 --- a/include/svtools/embedhlp.hxx +++ b/include/svtools/embedhlp.hxx @@ -37,6 +37,7 @@ namespace com::sun::star::embed { } class OutputDevice; +typedef struct _xmlTextWriter* xmlTextWriterPtr; namespace svt { @@ -122,6 +123,8 @@ public: // fetching the Graphic what would be too expensive e.g. for charts sal_uInt32 getGraphicVersion() const; void SetDefaultSizeForChart( const Size& rSizeIn_100TH_MM );//#i103460# charts do not necessarily have an own size within ODF files, in this case they need to use the size settings from the surrounding frame, which is made available with this method + + void dumpAsXml(xmlTextWriterPtr pWriter) const; }; } diff --git a/svtools/Library_svt.mk b/svtools/Library_svt.mk index 31685bbd300c..643481368caa 100644 --- a/svtools/Library_svt.mk +++ b/svtools/Library_svt.mk @@ -64,6 +64,7 @@ $(eval $(call gb_Library_use_externals,svt,\ icui18n \ icuuc \ icu_headers \ + libxml2 \ )) $(eval $(call gb_Library_add_exception_objects,svt,\ diff --git a/svtools/source/misc/embedhlp.cxx b/svtools/source/misc/embedhlp.cxx index 1ef6cd579b0e..4f4a5ce3e364 100644 --- a/svtools/source/misc/embedhlp.cxx +++ b/svtools/source/misc/embedhlp.cxx @@ -17,6 +17,7 @@ * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ +#include <libxml/xmlwriter.h> #include <svtools/embedhlp.hxx> #include <vcl/graphicfilter.hxx> @@ -54,6 +55,7 @@ #include <vcl/svapp.hxx> #include <tools/diagnose_ex.h> #include <tools/debug.hxx> +#include <sfx2/xmldump.hxx> #include <memory> using namespace com::sun::star; @@ -275,6 +277,34 @@ struct EmbeddedObjectRef_Impl if (r.pGraphic && !r.bNeedUpdate) pGraphic.reset( new Graphic(*r.pGraphic) ); } + + void dumpAsXml(xmlTextWriterPtr pWriter) const + { + (void)xmlTextWriterStartElement(pWriter, BAD_CAST("EmbeddedObjectRef_Impl")); + (void)xmlTextWriterWriteFormatAttribute(pWriter, BAD_CAST("ptr"), "%p", this); + + (void)xmlTextWriterStartElement(pWriter, BAD_CAST("mxObj")); + (void)xmlTextWriterWriteAttribute(pWriter, BAD_CAST("symbol"), + BAD_CAST(typeid(*mxObj).name())); + auto pComponent = dynamic_cast<sfx2::XmlDump*>(mxObj->getComponent().get()); + if (pComponent) + { + pComponent->dumpAsXml(pWriter); + } + (void)xmlTextWriterEndElement(pWriter); + + (void)xmlTextWriterStartElement(pWriter, BAD_CAST("pGraphic")); + (void)xmlTextWriterWriteFormatAttribute(pWriter, BAD_CAST("ptr"), "%p", pGraphic.get()); + if (pGraphic) + { + (void)xmlTextWriterWriteAttribute( + pWriter, BAD_CAST("is-none"), + BAD_CAST(OString::boolean(pGraphic->IsNone()).getStr())); + } + (void)xmlTextWriterEndElement(pWriter); + + (void)xmlTextWriterEndElement(pWriter); + } }; const uno::Reference <embed::XEmbeddedObject>& EmbeddedObjectRef::operator->() const @@ -993,6 +1023,16 @@ void EmbeddedObjectRef::SetDefaultSizeForChart( const Size& rSizeIn_100TH_MM ) xSizeTransmitter->setDefaultSize( mpImpl->aDefaultSizeForChart_In_100TH_MM ); } +void EmbeddedObjectRef::dumpAsXml(xmlTextWriterPtr pWriter) const +{ + (void)xmlTextWriterStartElement(pWriter, BAD_CAST("EmbeddedObjectRef")); + (void)xmlTextWriterWriteFormatAttribute(pWriter, BAD_CAST("ptr"), "%p", this); + + mpImpl->dumpAsXml(pWriter); + + (void)xmlTextWriterEndElement(pWriter); +} + } // namespace svt /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/source/core/ole/ndole.cxx b/sw/source/core/ole/ndole.cxx index 531a76a30c48..0b77de3e3742 100644 --- a/sw/source/core/ole/ndole.cxx +++ b/sw/source/core/ole/ndole.cxx @@ -1162,18 +1162,7 @@ void SwOLEObj::dumpAsXml(xmlTextWriterPtr pWriter) const (void)xmlTextWriterStartElement(pWriter, BAD_CAST("SwOLEObj")); (void)xmlTextWriterWriteFormatAttribute(pWriter, BAD_CAST("ptr"), "%p", this); - (void)xmlTextWriterStartElement(pWriter, BAD_CAST("m_xOLERef")); - (void)xmlTextWriterWriteAttribute(pWriter, BAD_CAST("symbol"), - BAD_CAST(typeid(*m_xOLERef.GetObject()).name())); - - uno::Reference<embed::XEmbeddedObject> xIP = m_xOLERef.GetObject(); - auto pComponent = dynamic_cast<sfx2::XmlDump*>(xIP->getComponent().get()); - if (pComponent) - { - pComponent->dumpAsXml(pWriter); - } - - (void)xmlTextWriterEndElement(pWriter); + m_xOLERef.dumpAsXml(pWriter); (void)xmlTextWriterEndElement(pWriter); }