solenv/clang-format/excludelist | 1 sw/source/writerfilter/inc/ooxml/OOXMLDocument.hxx | 217 +++++++++----- sw/source/writerfilter/ooxml/OOXMLDocumentImpl.cxx | 102 +++--- sw/source/writerfilter/ooxml/OOXMLDocumentImpl.hxx | 176 ----------- sw/source/writerfilter/ooxml/OOXMLFastContextHandler.cxx | 4 sw/source/writerfilter/ooxml/OOXMLFastContextHandler.hxx | 6 sw/source/writerfilter/ooxml/OOXMLFastDocumentHandler.cxx | 2 sw/source/writerfilter/ooxml/OOXMLFastDocumentHandler.hxx | 6 sw/source/writerfilter/ooxml/OOXMLParserState.cxx | 2 sw/source/writerfilter/ooxml/OOXMLParserState.hxx | 8 10 files changed, 218 insertions(+), 306 deletions(-)
New commits: commit bb1550681c17a68aeb5727e6ec09b2166c0f418c Author: Noel Grandin <[email protected]> AuthorDate: Mon Feb 9 21:07:05 2026 +0200 Commit: Miklos Vajna <[email protected]> CommitDate: Tue Feb 24 14:14:01 2026 +0100 merge OOXMLDocumentImpl and OOXMLDocument Since everything is in one module (sw) now, this split is no longer necessary. Change-Id: I5eae7fc503b99f2f701c81f47a5622941e9d3d5d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/199011 Reviewed-by: Miklos Vajna <[email protected]> Tested-by: Jenkins diff --git a/solenv/clang-format/excludelist b/solenv/clang-format/excludelist index d096fc075682..6a4c3b928f4f 100644 --- a/solenv/clang-format/excludelist +++ b/solenv/clang-format/excludelist @@ -13200,7 +13200,6 @@ sw/source/writerfilter/dmapper/WrapPolygonHandler.cxx sw/source/writerfilter/ooxml/Handler.cxx sw/source/writerfilter/ooxml/OOXMLBinaryObjectReference.cxx sw/source/writerfilter/ooxml/OOXMLDocumentImpl.cxx -sw/source/writerfilter/ooxml/OOXMLDocumentImpl.hxx sw/source/writerfilter/ooxml/OOXMLFactory.cxx sw/source/writerfilter/ooxml/OOXMLFactory.hxx sw/source/writerfilter/ooxml/OOXMLFastContextHandler.cxx diff --git a/sw/source/writerfilter/inc/ooxml/OOXMLDocument.hxx b/sw/source/writerfilter/inc/ooxml/OOXMLDocument.hxx index 21c8fb98d925..71bc7b678a4f 100644 --- a/sw/source/writerfilter/inc/ooxml/OOXMLDocument.hxx +++ b/sw/source/writerfilter/inc/ooxml/OOXMLDocument.hxx @@ -30,10 +30,20 @@ #include <com/sun/star/xml/dom/XDocument.hpp> #include <com/sun/star/frame/XModel.hpp> #include <com/sun/star/drawing/XDrawPage.hpp> +#include <com/sun/star/xml/dom/XDocument.hpp> +#include <com/sun/star/graphic/XGraphicMapper.hpp> #include <oox/shape/ShapeContextHandler.hxx> #include <oox/drawingml/theme.hxx> +#include <oox/drawingml/drawingmltypes.hxx> +#include <oox/drawingml/ThemeFilterBase.hxx> +#include <vector> +#include <stack> +#include <set> + + class SwFmDrawPage; +namespace writerfilter::ooxml { class OOXMLPropertySet; } /** @file OOXMLDocument.hxx @@ -107,20 +117,88 @@ public: }; -class OOXMLDocument : public writerfilter::Reference<Stream> +class OOXMLDocument final : public writerfilter::Reference<Stream> { + OOXMLStream::Pointer_t mpStream; + css::uno::Reference<css::task::XStatusIndicator> mxStatusIndicator; + writerfilter::Reference<Stream>::Pointer_t mpXFootnoteStream; + writerfilter::Reference<Stream>::Pointer_t mpXEndnoteStream; + sal_Int32 mnXNoteId; + + css::uno::Reference<css::frame::XModel> mxModel; + rtl::Reference<SwFmDrawPage> mxDrawPage; + css::uno::Reference<css::xml::dom::XDocument> mxGlossaryDocDom; + css::uno::Sequence < css::uno::Sequence< css::beans::NamedValue > > mxGlossaryDomList; + /// Stack of shape contexts, 1 element for VML, 1 element / nesting level for drawingML. + std::stack< rtl::Reference<oox::shape::ShapeContextHandler> > maShapeContexts; + css::uno::Reference<css::xml::dom::XDocument> mxThemeDom; + css::uno::Sequence<css::uno::Reference<css::xml::dom::XDocument> > mxCustomXmlDomList; + css::uno::Sequence<css::uno::Reference<css::xml::dom::XDocument> > mxCustomXmlDomPropsList; + css::uno::Reference<css::xml::dom::XDocument> mxCustomXmlProsDom; + css::uno::Reference<css::io::XInputStream> mxEmbeddings; + css::uno::Sequence < css::beans::PropertyValue > mxEmbeddingsList; + std::vector<css::beans::PropertyValue> m_aEmbeddings; + std::set<OUString> maSeenStreams; + bool mbIsSubstream; + bool mbSkipImages; + /// How many paragraphs equal to 1 percent? + sal_Int32 mnPercentSize; + /// Position progress when it was last updated, possibly not after every paragraph in case of large documents. + sal_Int32 mnProgressLastPos; + /// Current position progress, updated after every paragraph. + sal_Int32 mnProgressCurrentPos; + /// End position, i.e. the estimated number of paragraphs. + sal_Int32 mnProgressEndPos; + /// DocumentBaseURL + OUString m_rBaseURL; + css::uno::Sequence<css::beans::PropertyValue> maMediaDescriptor; + /// Graphic mapper + css::uno::Reference<css::graphic::XGraphicMapper> mxGraphicMapper; + // For a document there is a single theme in document.xml.rels + // and the same is used by header and footer as well. + oox::drawingml::ThemePtr mpTheme; + rtl::Reference<oox::shape::ShapeFilterBase> mxShapeFilterBase; + rtl::Reference<oox::drawingml::ThemeFilterBase> mxThemeFilterBase; + + bool mbCommentsExtendedResolved = false; + +private: + void resolveFastSubStream(Stream & rStream, + OOXMLStream::StreamType_t nType); + + static void resolveFastSubStreamWithId(Stream & rStream, + const writerfilter::Reference<Stream>::Pointer_t& pStream, + sal_uInt32 nId); + + css::uno::Reference<css::xml::dom::XDocument> importSubStream(OOXMLStream::StreamType_t nType); + + void importSubStreamRelations(const OOXMLStream::Pointer_t& pStream, OOXMLStream::StreamType_t nType); + + writerfilter::Reference<Stream>::Pointer_t + getSubStream(const OUString & rId); + + writerfilter::Reference<Stream>::Pointer_t + getXNoteStream(OOXMLStream::StreamType_t nType, const sal_Int32 nNoteId); + + void resolveCustomXmlStream(Stream & rStream); + void resolveGlossaryStream(Stream & rStream); + void resolveEmbeddingsStream(const OOXMLStream::Pointer_t& pStream); + void resolveCommentsExtendedStream(Stream & rStream); + public: - /** - Pointer to this stream. - */ - typedef tools::SvRef<OOXMLDocument> Pointer_t; + OOXMLDocument(OOXMLStream::Pointer_t pStream, + css::uno::Reference<css::task::XStatusIndicator> xStatusIndicator, + bool bSkipImages, + const css::uno::Sequence<css::beans::PropertyValue>& rDescriptor, + const rtl::Reference<oox::shape::ShapeFilterBase>& rxShapeFilterBase); + virtual ~OOXMLDocument() override; /** Resolves this document to a stream handler. @param rStream stream handler to resolve this document to */ - virtual void resolve(Stream & rStream) override = 0; + virtual void resolve(Stream & rStream) override; /** Resolves a footnote to a stream handler. @@ -132,9 +210,9 @@ public: @param rNoteType type of footnote to resolve @param rNoteId id of the footnote to resolve */ - virtual void resolveFootnote(Stream & rStream, - Id aNoteType, - const sal_Int32 nNoteId) = 0; + void resolveFootnote(Stream & rStream, + Id aType, + const sal_Int32 nNoteId); /** Resolves an endnote to a stream handler. @@ -145,27 +223,9 @@ public: @param rNoteType type of footnote to resolve @param rNoteId id of the endnote to resolve */ - virtual void resolveEndnote(Stream & rStream, - Id aNoteType, - const sal_Int32 NoteId) = 0; - - /** - Resolves a comment to a stream handler. - - @param rStream stream handler to resolve to - @param rComment id of the comment to resolve - */ - virtual void resolveComment(Stream & rStream, - const sal_Int32 nCommentId) = 0; - - /** - Resolves a picture to a stream handler. - - @param rStream stream handler to resolve to - @param rPictureId id of the picture to resolve - */ - virtual void resolvePicture(Stream & rStream, - const OUString & rPictureId) = 0; + void resolveEndnote(Stream & rStream, + Id aType, + const sal_Int32 nNoteId); /** Resolves a header to a stream handler. @@ -178,25 +238,30 @@ public: @param rId id of the header */ - virtual void resolveHeader(Stream & rStream, + void resolveHeader(Stream & rStream, + const sal_Int32 type, + const OUString & rId); + void resolveFooter(Stream & rStream, const sal_Int32 type, - const OUString & rId) = 0; + const OUString & rId); /** - Resolves a footer to a stream handler. + Resolves a comment to a stream handler. @param rStream stream handler to resolve to - @param type type of footer to resolve: - NS_ooxml::LN_Value_ST_HrdFtr_even header on even page - NS_ooxml::LN_Value_ST_HrdFtr_default header on right page - NS_ooxml::LN_Value_ST_HrdFtr_first header on first page + @param rComment id of the comment to resolve + */ + void resolveComment(Stream & rStream, const sal_Int32 nId); - @param rId id of the header - */ - virtual void resolveFooter(Stream & rStream, - const sal_Int32 type, - const OUString & rId) = 0; + OOXMLPropertySet * getPicturePropSet(const OUString & rId); + /** + Resolves a picture to a stream handler. + + @param rStream stream handler to resolve to + @param rPictureId id of the picture to resolve + */ + void resolvePicture(Stream & rStream, const OUString & rId); /** Returns target URL from relationships for a given id. @@ -205,30 +270,54 @@ public: @return the URL found or an empty string */ - virtual OUString getTargetForId(const OUString & rId) = 0; - - virtual void setModel(css::uno::Reference<css::frame::XModel> xModel) = 0; - virtual css::uno::Reference<css::frame::XModel> getModel() = 0; - virtual void setDrawPage(const rtl::Reference<SwFmDrawPage>& xDrawPage) = 0; - virtual rtl::Reference<SwFmDrawPage> getDrawPage() = 0; - virtual css::uno::Reference<css::io::XInputStream> getInputStreamForId(const OUString & rId) = 0; - virtual void setXNoteId(const sal_Int32 nId) = 0; - virtual sal_Int32 getXNoteId() const = 0; - virtual const OUString & getTarget() const = 0; - virtual rtl::Reference<oox::shape::ShapeContextHandler> getShapeContext( ) = 0; - virtual void setShapeContext(const rtl::Reference<oox::shape::ShapeContextHandler>& xContext) = 0; - virtual const oox::drawingml::ThemePtr & getTheme() const = 0; - + OUString getTargetForId(const OUString & rId); + + void setModel(const css::uno::Reference<css::frame::XModel>& xModel); + const css::uno::Reference<css::frame::XModel>& getModel() const; + void setDrawPage(const rtl::Reference<SwFmDrawPage>& xDrawPage); + const rtl::Reference<SwFmDrawPage>& getDrawPage() const; + css::uno::Reference<css::io::XInputStream> getInputStreamForId(const OUString & rId); + void setXNoteId(const sal_Int32 nId); + sal_Int32 getXNoteId() const; + const OUString & getTarget() const; + rtl::Reference<oox::shape::ShapeContextHandler> getShapeContext( ); + void setShapeContext(const rtl::Reference<oox::shape::ShapeContextHandler>& xContext); + const oox::drawingml::ThemePtr & getTheme() const + { + return mpTheme; + } /// Push context of drawingML shapes, so nested shapes are handled separately. - virtual void pushShapeContext() = 0; + void pushShapeContext(); /// Pop context of a previously pushed drawingML shape. - virtual void popShapeContext() = 0; - virtual css::uno::Reference<css::xml::dom::XDocument> getThemeDom( ) = 0; - virtual css::uno::Reference<css::xml::dom::XDocument> getGlossaryDocDom( ) = 0; - virtual css::uno::Sequence<css::uno::Sequence< css::beans::NamedValue> > getGlossaryDomList() = 0; - virtual css::uno::Sequence<css::uno::Reference<css::xml::dom::XDocument> > getCustomXmlDomList( ) = 0; - virtual css::uno::Sequence<css::uno::Reference<css::xml::dom::XDocument> > getCustomXmlDomPropsList( ) = 0; - virtual css::uno::Sequence<css::beans::PropertyValue > getEmbeddingsList() = 0; + void popShapeContext(); + const css::uno::Reference<css::xml::dom::XDocument>& getThemeDom() const; + const css::uno::Sequence<css::uno::Reference<css::xml::dom::XDocument> >& getCustomXmlDomList() const; + const css::uno::Sequence<css::uno::Reference<css::xml::dom::XDocument> >& getCustomXmlDomPropsList() const; + const css::uno::Reference<css::xml::dom::XDocument>& getGlossaryDocDom() const; + const css::uno::Sequence<css::uno::Sequence< css::beans::NamedValue> >& getGlossaryDomList() const; + const css::uno::Sequence<css::beans::PropertyValue >& getEmbeddingsList() const; + + void incrementProgress(); + bool IsSkipImages() const { return mbSkipImages; }; + OUString const& GetDocumentBaseURL() const { return m_rBaseURL; }; + const css::uno::Sequence<css::beans::PropertyValue>& getMediaDescriptor() const; + + const css::uno::Reference<css::graphic::XGraphicMapper>& getGraphicMapper() const + { + return mxGraphicMapper; + } + + void setTheme(const oox::drawingml::ThemePtr& pTheme) { mpTheme = pTheme; } + + const rtl::Reference<oox::shape::ShapeFilterBase> & getShapeFilterBase(); + const rtl::Reference<oox::drawingml::ThemeFilterBase> & getThemeFilterBase(); + + + /** + Pointer to this stream. + */ + typedef tools::SvRef<OOXMLDocument> Pointer_t; + }; diff --git a/sw/source/writerfilter/ooxml/OOXMLDocumentImpl.cxx b/sw/source/writerfilter/ooxml/OOXMLDocumentImpl.cxx index 58e729f1a4eb..8c6da1d56232 100644 --- a/sw/source/writerfilter/ooxml/OOXMLDocumentImpl.cxx +++ b/sw/source/writerfilter/ooxml/OOXMLDocumentImpl.cxx @@ -28,7 +28,7 @@ #include <oox/drawingml/theme.hxx> #include <oox/shape/ShapeFilterBase.hxx> #include "OOXMLStreamImpl.hxx" -#include "OOXMLDocumentImpl.hxx" +#include <ooxml/OOXMLDocument.hxx> #include "OOXMLBinaryObjectReference.hxx" #include "OOXMLFastDocumentHandler.hxx" #include "OOXMLPropertySet.hxx" @@ -53,7 +53,7 @@ using namespace ::com::sun::star; namespace writerfilter::ooxml { -OOXMLDocumentImpl::OOXMLDocumentImpl(OOXMLStream::Pointer_t pStream, +OOXMLDocument::OOXMLDocument(OOXMLStream::Pointer_t pStream, uno::Reference<task::XStatusIndicator> xStatusIndicator, bool bSkipImages, const uno::Sequence<beans::PropertyValue>& rDescriptor, @@ -75,11 +75,11 @@ OOXMLDocumentImpl::OOXMLDocumentImpl(OOXMLStream::Pointer_t pStream, pushShapeContext(); } -OOXMLDocumentImpl::~OOXMLDocumentImpl() +OOXMLDocument::~OOXMLDocument() { } -void OOXMLDocumentImpl::resolveFastSubStream(Stream & rStreamHandler, +void OOXMLDocument::resolveFastSubStream(Stream & rStreamHandler, OOXMLStream::StreamType_t nType) { OOXMLStream::Pointer_t pStream; @@ -124,14 +124,14 @@ void OOXMLDocumentImpl::resolveFastSubStream(Stream & rStreamHandler, mpStream = std::move(savedStream); } -void OOXMLDocumentImpl::resolveFastSubStreamWithId(Stream & rStream, +void OOXMLDocument::resolveFastSubStreamWithId(Stream & rStream, const writerfilter::Reference<Stream>::Pointer_t& pStream, sal_uInt32 nId) { rStream.substream(nId, pStream); } -uno::Reference<xml::dom::XDocument> OOXMLDocumentImpl::importSubStream(OOXMLStream::StreamType_t nType) +uno::Reference<xml::dom::XDocument> OOXMLDocument::importSubStream(OOXMLStream::StreamType_t nType) { uno::Reference<xml::dom::XDocument> xRet; @@ -177,7 +177,7 @@ uno::Reference<xml::dom::XDocument> OOXMLDocumentImpl::importSubStream(OOXMLStre } -void OOXMLDocumentImpl::importSubStreamRelations(const OOXMLStream::Pointer_t& pStream, OOXMLStream::StreamType_t nType) +void OOXMLDocument::importSubStreamRelations(const OOXMLStream::Pointer_t& pStream, OOXMLStream::StreamType_t nType) { uno::Reference<xml::dom::XDocument> xRelation; OOXMLStream::Pointer_t cStream; @@ -228,31 +228,31 @@ void OOXMLDocumentImpl::importSubStreamRelations(const OOXMLStream::Pointer_t& p } } -void OOXMLDocumentImpl::setXNoteId(const sal_Int32 nId) +void OOXMLDocument::setXNoteId(const sal_Int32 nId) { mnXNoteId = nId; } -sal_Int32 OOXMLDocumentImpl::getXNoteId() const +sal_Int32 OOXMLDocument::getXNoteId() const { return mnXNoteId; } -const OUString & OOXMLDocumentImpl::getTarget() const +const OUString & OOXMLDocument::getTarget() const { return mpStream->getTarget(); } writerfilter::Reference<Stream>::Pointer_t -OOXMLDocumentImpl::getSubStream(const OUString & rId) +OOXMLDocument::getSubStream(const OUString & rId) { OOXMLStream::Pointer_t pStream (OOXMLDocumentFactory::createStream(mpStream, rId)); - OOXMLDocumentImpl * pTemp; + OOXMLDocument * pTemp; // Do not pass status indicator to sub-streams: they are typically marginal in size, so we just track the main document for now. writerfilter::Reference<Stream>::Pointer_t pRet( pTemp = - new OOXMLDocumentImpl(std::move(pStream), uno::Reference<task::XStatusIndicator>(), + new OOXMLDocument(std::move(pStream), uno::Reference<task::XStatusIndicator>(), mbSkipImages, maMediaDescriptor, getShapeFilterBase())); pTemp->setModel(mxModel); pTemp->setDrawPage(mxDrawPage); @@ -261,10 +261,10 @@ OOXMLDocumentImpl::getSubStream(const OUString & rId) } writerfilter::Reference<Stream>::Pointer_t -OOXMLDocumentImpl::getXNoteStream(OOXMLStream::StreamType_t nType, const sal_Int32 nId) +OOXMLDocument::getXNoteStream(OOXMLStream::StreamType_t nType, const sal_Int32 nId) { // See above, no status indicator for the note stream, either. - OOXMLDocumentImpl * pDocument = new OOXMLDocumentImpl(OOXMLDocumentFactory::createStream(mpStream, nType), + OOXMLDocument * pDocument = new OOXMLDocument(OOXMLDocumentFactory::createStream(mpStream, nType), uno::Reference<task::XStatusIndicator>(), mbSkipImages, maMediaDescriptor, nullptr); pDocument->setXNoteId(nId); pDocument->setModel(getModel()); @@ -273,7 +273,7 @@ OOXMLDocumentImpl::getXNoteStream(OOXMLStream::StreamType_t nType, const sal_Int return writerfilter::Reference<Stream>::Pointer_t(pDocument); } -void OOXMLDocumentImpl::resolveFootnote(Stream & rStream, +void OOXMLDocument::resolveFootnote(Stream & rStream, Id aType, const sal_Int32 nNoteId) { @@ -295,7 +295,7 @@ void OOXMLDocumentImpl::resolveFootnote(Stream & rStream, resolveFastSubStreamWithId(rStream, mpXFootnoteStream, nId); } -void OOXMLDocumentImpl::resolveEndnote(Stream & rStream, +void OOXMLDocument::resolveEndnote(Stream & rStream, Id aType, const sal_Int32 nNoteId) { @@ -317,12 +317,12 @@ void OOXMLDocumentImpl::resolveEndnote(Stream & rStream, resolveFastSubStreamWithId(rStream, mpXEndnoteStream, nId); } -void OOXMLDocumentImpl::resolveCommentsExtendedStream(Stream& rStream) +void OOXMLDocument::resolveCommentsExtendedStream(Stream& rStream) { resolveFastSubStream(rStream, OOXMLStream::StreamType_t::COMMENTS_EXTENDED); } -void OOXMLDocumentImpl::resolveComment(Stream & rStream, +void OOXMLDocument::resolveComment(Stream & rStream, const sal_Int32 nId) { if (!mbCommentsExtendedResolved) @@ -337,7 +337,7 @@ void OOXMLDocumentImpl::resolveComment(Stream & rStream, resolveFastSubStreamWithId(rStream, pStream, NS_ooxml::LN_annotation); } -OOXMLPropertySet * OOXMLDocumentImpl::getPicturePropSet +OOXMLPropertySet * OOXMLDocument::getPicturePropSet (const OUString & rId) { OOXMLStream::Pointer_t xStream @@ -361,7 +361,7 @@ OOXMLPropertySet * OOXMLDocumentImpl::getPicturePropSet return pProps; } -void OOXMLDocumentImpl::resolvePicture(Stream & rStream, +void OOXMLDocument::resolvePicture(Stream & rStream, const OUString & rId) { OOXMLPropertySet::Pointer_t pProps(getPicturePropSet(rId)); @@ -369,12 +369,12 @@ void OOXMLDocumentImpl::resolvePicture(Stream & rStream, rStream.props(pProps.get()); } -OUString OOXMLDocumentImpl::getTargetForId(const OUString & rId) +OUString OOXMLDocument::getTargetForId(const OUString & rId) { return mpStream->getTargetForId(rId); } -void OOXMLDocumentImpl::resolveHeader(Stream & rStream, +void OOXMLDocument::resolveHeader(Stream & rStream, const sal_Int32 type, const OUString & rId) { @@ -396,7 +396,7 @@ void OOXMLDocumentImpl::resolveHeader(Stream & rStream, } } -void OOXMLDocumentImpl::resolveFooter(Stream & rStream, +void OOXMLDocument::resolveFooter(Stream & rStream, const sal_Int32 type, const OUString & rId) { @@ -420,7 +420,7 @@ void OOXMLDocumentImpl::resolveFooter(Stream & rStream, } namespace { -// Ensures that the indicator is reset after exiting OOXMLDocumentImpl::resolve +// Ensures that the indicator is reset after exiting OOXMLDocument::resolve class StatusIndicatorGuard{ public: explicit StatusIndicatorGuard(css::uno::Reference<css::task::XStatusIndicator> xStatusIndicator) @@ -439,7 +439,7 @@ private: }; } -void OOXMLDocumentImpl::resolve(Stream & rStream) +void OOXMLDocument::resolve(Stream & rStream) { StatusIndicatorGuard aStatusIndicatorGuard(mxStatusIndicator); @@ -535,17 +535,17 @@ void OOXMLDocumentImpl::resolve(Stream & rStream) catch (uno::Exception const&) { css::uno::Any anyEx = cppu::getCaughtException(); - SAL_WARN("writerfilter.ooxml", "OOXMLDocumentImpl::resolve(): " << exceptionToString(anyEx)); + SAL_WARN("writerfilter.ooxml", "OOXMLDocument::resolve(): " << exceptionToString(anyEx)); throw lang::WrappedTargetRuntimeException(u""_ustr, nullptr, anyEx); } catch (...) { SAL_WARN("writerfilter.ooxml", - "OOXMLDocumentImpl::resolve(): non-UNO exception"); + "OOXMLDocument::resolve(): non-UNO exception"); } } -void OOXMLDocumentImpl::incrementProgress() +void OOXMLDocument::incrementProgress() { mnProgressCurrentPos++; // 1) If we know the end @@ -559,7 +559,7 @@ void OOXMLDocumentImpl::incrementProgress() } } -void OOXMLDocumentImpl::resolveCustomXmlStream(Stream & rStream) +void OOXMLDocument::resolveCustomXmlStream(Stream & rStream) { // Resolving all item[n].xml files from CustomXml folder. uno::Reference<embed::XRelationshipAccess> xRelationshipAccess; @@ -640,7 +640,7 @@ constexpr OUStringLiteral sFonttableContentType = u"application/vnd.openxmlforma } // See DocxExport::WriteGlossary -void OOXMLDocumentImpl::resolveGlossaryStream(Stream & /*rStream*/) +void OOXMLDocument::resolveGlossaryStream(Stream & /*rStream*/) { OOXMLStream::Pointer_t pStream; try @@ -731,7 +731,7 @@ void OOXMLDocumentImpl::resolveGlossaryStream(Stream & /*rStream*/) mxGlossaryDomList = comphelper::containerToSequence(aGlossaryDomList); } -void OOXMLDocumentImpl::resolveEmbeddingsStream(const OOXMLStream::Pointer_t& pStream) +void OOXMLDocument::resolveEmbeddingsStream(const OOXMLStream::Pointer_t& pStream) { uno::Reference<embed::XRelationshipAccess> xRelationshipAccess; xRelationshipAccess.set(dynamic_cast<OOXMLStreamImpl&>(*pStream).accessDocumentStream(), uno::UNO_QUERY); @@ -817,55 +817,55 @@ void OOXMLDocumentImpl::resolveEmbeddingsStream(const OOXMLStream::Pointer_t& pS mxEmbeddingsList = comphelper::containerToSequence(m_aEmbeddings); } -uno::Reference<xml::dom::XDocument> OOXMLDocumentImpl::getGlossaryDocDom( ) +const uno::Reference<xml::dom::XDocument>& OOXMLDocument::getGlossaryDocDom() const { return mxGlossaryDocDom; } -uno::Sequence<uno::Sequence< beans::NamedValue> > OOXMLDocumentImpl::getGlossaryDomList() +const uno::Sequence<uno::Sequence< beans::NamedValue> >& OOXMLDocument::getGlossaryDomList() const { return mxGlossaryDomList; } -uno::Reference<io::XInputStream> OOXMLDocumentImpl::getInputStreamForId(const OUString & rId) +uno::Reference<io::XInputStream> OOXMLDocument::getInputStreamForId(const OUString & rId) { OOXMLStream::Pointer_t pStream(OOXMLDocumentFactory::createStream(mpStream, rId)); return pStream->getDocumentStream(); } -void OOXMLDocumentImpl::setModel(uno::Reference<frame::XModel> xModel) +void OOXMLDocument::setModel(const uno::Reference<frame::XModel>& xModel) { mxModel.set(xModel); } -uno::Reference<frame::XModel> OOXMLDocumentImpl::getModel() +const uno::Reference<frame::XModel> & OOXMLDocument::getModel() const { return mxModel; } -void OOXMLDocumentImpl::setDrawPage(const rtl::Reference<SwFmDrawPage>& xDrawPage) +void OOXMLDocument::setDrawPage(const rtl::Reference<SwFmDrawPage>& xDrawPage) { mxDrawPage = xDrawPage; } -rtl::Reference<SwFmDrawPage> OOXMLDocumentImpl::getDrawPage() +const rtl::Reference<SwFmDrawPage>& OOXMLDocument::getDrawPage() const { return mxDrawPage; } -const uno::Sequence<beans::PropertyValue>& OOXMLDocumentImpl::getMediaDescriptor() const +const uno::Sequence<beans::PropertyValue>& OOXMLDocument::getMediaDescriptor() const { return maMediaDescriptor; } -void OOXMLDocumentImpl::setShapeContext(const rtl::Reference<oox::shape::ShapeContextHandler>& xContext) +void OOXMLDocument::setShapeContext(const rtl::Reference<oox::shape::ShapeContextHandler>& xContext) { if (!maShapeContexts.empty()) maShapeContexts.top() = xContext; } -rtl::Reference<oox::shape::ShapeContextHandler> OOXMLDocumentImpl::getShapeContext( ) +rtl::Reference<oox::shape::ShapeContextHandler> OOXMLDocument::getShapeContext( ) { if (!maShapeContexts.empty()) return maShapeContexts.top(); @@ -873,45 +873,45 @@ rtl::Reference<oox::shape::ShapeContextHandler> OOXMLDocumentImpl::getShapeConte return {}; } -void OOXMLDocumentImpl::pushShapeContext() +void OOXMLDocument::pushShapeContext() { maShapeContexts.push({}); } -void OOXMLDocumentImpl::popShapeContext() +void OOXMLDocument::popShapeContext() { if (!maShapeContexts.empty()) maShapeContexts.pop(); } -uno::Reference<xml::dom::XDocument> OOXMLDocumentImpl::getThemeDom( ) +const uno::Reference<xml::dom::XDocument> & OOXMLDocument::getThemeDom() const { return mxThemeDom; } -uno::Sequence<uno::Reference<xml::dom::XDocument> > OOXMLDocumentImpl::getCustomXmlDomList( ) +const uno::Sequence<uno::Reference<xml::dom::XDocument> >& OOXMLDocument::getCustomXmlDomList( ) const { return mxCustomXmlDomList; } -uno::Sequence<uno::Reference<xml::dom::XDocument> > OOXMLDocumentImpl::getCustomXmlDomPropsList( ) +const uno::Sequence<uno::Reference<xml::dom::XDocument> >& OOXMLDocument::getCustomXmlDomPropsList( ) const { return mxCustomXmlDomPropsList; } -uno::Sequence<beans::PropertyValue > OOXMLDocumentImpl::getEmbeddingsList( ) +const uno::Sequence<beans::PropertyValue >& OOXMLDocument::getEmbeddingsList( ) const { return mxEmbeddingsList; } -const rtl::Reference<oox::shape::ShapeFilterBase>& OOXMLDocumentImpl::getShapeFilterBase() +const rtl::Reference<oox::shape::ShapeFilterBase>& OOXMLDocument::getShapeFilterBase() { if (!mxShapeFilterBase) mxShapeFilterBase = new oox::shape::ShapeFilterBase(mpStream->getContext()); return mxShapeFilterBase; } -const rtl::Reference<oox::drawingml::ThemeFilterBase>& OOXMLDocumentImpl::getThemeFilterBase() +const rtl::Reference<oox::drawingml::ThemeFilterBase>& OOXMLDocument::getThemeFilterBase() { if (!mxThemeFilterBase) mxThemeFilterBase = new oox::drawingml::ThemeFilterBase(mpStream->getContext()); @@ -924,7 +924,7 @@ OOXMLDocumentFactory::createDocument const uno::Reference<task::XStatusIndicator>& xStatusIndicator, bool mbSkipImages, const uno::Sequence<beans::PropertyValue>& rDescriptor) { - return new OOXMLDocumentImpl(pStream, xStatusIndicator, mbSkipImages, rDescriptor, nullptr); + return new OOXMLDocument(pStream, xStatusIndicator, mbSkipImages, rDescriptor, nullptr); } } diff --git a/sw/source/writerfilter/ooxml/OOXMLDocumentImpl.hxx b/sw/source/writerfilter/ooxml/OOXMLDocumentImpl.hxx deleted file mode 100644 index 1bc9ced84ae2..000000000000 --- a/sw/source/writerfilter/ooxml/OOXMLDocumentImpl.hxx +++ /dev/null @@ -1,176 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed - * with this work for additional information regarding copyright - * ownership. The ASF licenses this file to you under the Apache - * License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 . - */ -#pragma once - -#include <ooxml/OOXMLDocument.hxx> - -#include <com/sun/star/xml/dom/XDocument.hpp> -#include <com/sun/star/graphic/XGraphicMapper.hpp> - -#include <oox/drawingml/drawingmltypes.hxx> -#include <oox/drawingml/ThemeFilterBase.hxx> - -#include "OOXMLPropertySet.hxx" - -#include <vector> -#include <stack> -#include <set> - -namespace writerfilter::ooxml -{ - -class OOXMLDocumentImpl : public OOXMLDocument -{ - OOXMLStream::Pointer_t mpStream; - css::uno::Reference<css::task::XStatusIndicator> mxStatusIndicator; - writerfilter::Reference<Stream>::Pointer_t mpXFootnoteStream; - writerfilter::Reference<Stream>::Pointer_t mpXEndnoteStream; - sal_Int32 mnXNoteId; - - css::uno::Reference<css::frame::XModel> mxModel; - rtl::Reference<SwFmDrawPage> mxDrawPage; - css::uno::Reference<css::xml::dom::XDocument> mxGlossaryDocDom; - css::uno::Sequence < css::uno::Sequence< css::beans::NamedValue > > mxGlossaryDomList; - /// Stack of shape contexts, 1 element for VML, 1 element / nesting level for drawingML. - std::stack< rtl::Reference<oox::shape::ShapeContextHandler> > maShapeContexts; - css::uno::Reference<css::xml::dom::XDocument> mxThemeDom; - css::uno::Sequence<css::uno::Reference<css::xml::dom::XDocument> > mxCustomXmlDomList; - css::uno::Sequence<css::uno::Reference<css::xml::dom::XDocument> > mxCustomXmlDomPropsList; - css::uno::Reference<css::xml::dom::XDocument> mxCustomXmlProsDom; - css::uno::Reference<css::io::XInputStream> mxEmbeddings; - css::uno::Sequence < css::beans::PropertyValue > mxEmbeddingsList; - std::vector<css::beans::PropertyValue> m_aEmbeddings; - std::set<OUString> maSeenStreams; - bool mbIsSubstream; - bool mbSkipImages; - /// How many paragraphs equal to 1 percent? - sal_Int32 mnPercentSize; - /// Position progress when it was last updated, possibly not after every paragraph in case of large documents. - sal_Int32 mnProgressLastPos; - /// Current position progress, updated after every paragraph. - sal_Int32 mnProgressCurrentPos; - /// End position, i.e. the estimated number of paragraphs. - sal_Int32 mnProgressEndPos; - /// DocumentBaseURL - OUString m_rBaseURL; - css::uno::Sequence<css::beans::PropertyValue> maMediaDescriptor; - /// Graphic mapper - css::uno::Reference<css::graphic::XGraphicMapper> mxGraphicMapper; - // For a document there is a single theme in document.xml.rels - // and the same is used by header and footer as well. - oox::drawingml::ThemePtr mpTheme; - rtl::Reference<oox::shape::ShapeFilterBase> mxShapeFilterBase; - rtl::Reference<oox::drawingml::ThemeFilterBase> mxThemeFilterBase; - - bool mbCommentsExtendedResolved = false; - -private: - void resolveFastSubStream(Stream & rStream, - OOXMLStream::StreamType_t nType); - - static void resolveFastSubStreamWithId(Stream & rStream, - const writerfilter::Reference<Stream>::Pointer_t& pStream, - sal_uInt32 nId); - - css::uno::Reference<css::xml::dom::XDocument> importSubStream(OOXMLStream::StreamType_t nType); - - void importSubStreamRelations(const OOXMLStream::Pointer_t& pStream, OOXMLStream::StreamType_t nType); - - writerfilter::Reference<Stream>::Pointer_t - getSubStream(const OUString & rId); - - writerfilter::Reference<Stream>::Pointer_t - getXNoteStream(OOXMLStream::StreamType_t nType, const sal_Int32 nNoteId); - - void resolveCustomXmlStream(Stream & rStream); - void resolveGlossaryStream(Stream & rStream); - void resolveEmbeddingsStream(const OOXMLStream::Pointer_t& pStream); - void resolveCommentsExtendedStream(Stream & rStream); - -public: - OOXMLDocumentImpl(OOXMLStream::Pointer_t pStream, - css::uno::Reference<css::task::XStatusIndicator> xStatusIndicator, - bool bSkipImages, const css::uno::Sequence<css::beans::PropertyValue>& rDescriptor, - const rtl::Reference<oox::shape::ShapeFilterBase>& rxShapeFilterBase); - virtual ~OOXMLDocumentImpl() override; - - virtual void resolve(Stream & rStream) override; - - virtual void resolveFootnote(Stream & rStream, - Id aType, - const sal_Int32 nNoteId) override; - virtual void resolveEndnote(Stream & rStream, - Id aType, - const sal_Int32 nNoteId) override; - virtual void resolveHeader(Stream & rStream, - const sal_Int32 type, - const OUString & rId) override; - virtual void resolveFooter(Stream & rStream, - const sal_Int32 type, - const OUString & rId) override; - - virtual void resolveComment(Stream & rStream, const sal_Int32 nId) override; - - OOXMLPropertySet * getPicturePropSet(const OUString & rId); - virtual void resolvePicture(Stream & rStream, const OUString & rId) override; - - virtual OUString getTargetForId(const OUString & rId) override; - - virtual void setModel(css::uno::Reference<css::frame::XModel> xModel) override; - virtual css::uno::Reference<css::frame::XModel> getModel() override; - virtual void setDrawPage(const rtl::Reference<SwFmDrawPage>& xDrawPage) override; - virtual rtl::Reference<SwFmDrawPage> getDrawPage() override; - virtual css::uno::Reference<css::io::XInputStream> getInputStreamForId(const OUString & rId) override; - virtual void setXNoteId(const sal_Int32 nId) override; - virtual sal_Int32 getXNoteId() const override; - virtual const OUString & getTarget() const override; - virtual rtl::Reference<oox::shape::ShapeContextHandler> getShapeContext( ) override; - virtual void setShapeContext(const rtl::Reference<oox::shape::ShapeContextHandler>& xContext) override; - virtual const oox::drawingml::ThemePtr & getTheme() const override - { - return mpTheme; - } - void pushShapeContext() override; - void popShapeContext() override; - virtual css::uno::Reference<css::xml::dom::XDocument> getThemeDom() override; - virtual css::uno::Sequence<css::uno::Reference<css::xml::dom::XDocument> > getCustomXmlDomList() override; - virtual css::uno::Sequence<css::uno::Reference<css::xml::dom::XDocument> > getCustomXmlDomPropsList() override; - virtual css::uno::Reference<css::xml::dom::XDocument> getGlossaryDocDom() override; - virtual css::uno::Sequence<css::uno::Sequence< css::beans::NamedValue> > getGlossaryDomList() override; - virtual css::uno::Sequence<css::beans::PropertyValue > getEmbeddingsList() override; - - void incrementProgress(); - bool IsSkipImages() const { return mbSkipImages; }; - OUString const& GetDocumentBaseURL() const { return m_rBaseURL; }; - const css::uno::Sequence<css::beans::PropertyValue>& getMediaDescriptor() const; - - const css::uno::Reference<css::graphic::XGraphicMapper>& getGraphicMapper() const - { - return mxGraphicMapper; - } - - void setTheme(const oox::drawingml::ThemePtr& pTheme) { mpTheme = pTheme; } - - const rtl::Reference<oox::shape::ShapeFilterBase> & getShapeFilterBase(); - const rtl::Reference<oox::drawingml::ThemeFilterBase> & getThemeFilterBase(); -}; - -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/source/writerfilter/ooxml/OOXMLFastContextHandler.cxx b/sw/source/writerfilter/ooxml/OOXMLFastContextHandler.cxx index e05d81db11e8..bfbac25dcb62 100644 --- a/sw/source/writerfilter/ooxml/OOXMLFastContextHandler.cxx +++ b/sw/source/writerfilter/ooxml/OOXMLFastContextHandler.cxx @@ -830,12 +830,12 @@ void OOXMLFastContextHandler::setDefaultStringValue() { } -void OOXMLFastContextHandler::setDocument(OOXMLDocumentImpl* pDocument) +void OOXMLFastContextHandler::setDocument(OOXMLDocument* pDocument) { mpParserState->setDocument(pDocument); } -OOXMLDocumentImpl* OOXMLFastContextHandler::getDocument() +OOXMLDocument* OOXMLFastContextHandler::getDocument() { return mpParserState->getDocument(); } diff --git a/sw/source/writerfilter/ooxml/OOXMLFastContextHandler.hxx b/sw/source/writerfilter/ooxml/OOXMLFastContextHandler.hxx index 0e91ff15e5a0..34bd89693c91 100644 --- a/sw/source/writerfilter/ooxml/OOXMLFastContextHandler.hxx +++ b/sw/source/writerfilter/ooxml/OOXMLFastContextHandler.hxx @@ -31,7 +31,7 @@ namespace writerfilter::ooxml { -class OOXMLDocumentImpl; +class OOXMLDocument; class OOXMLFastContextHandler: public ::cppu::WeakImplHelper<css::xml::sax::XFastContextHandler> { @@ -110,8 +110,8 @@ public: OUString getTargetForId(const OUString & rId); - void setDocument(OOXMLDocumentImpl* pDocument); - OOXMLDocumentImpl* getDocument(); + void setDocument(OOXMLDocument* pDocument); + OOXMLDocument* getDocument(); void setXNoteId(const OOXMLValue& pValue); void setXNoteId(const sal_Int32 nId); sal_Int32 getXNoteId() const; diff --git a/sw/source/writerfilter/ooxml/OOXMLFastDocumentHandler.cxx b/sw/source/writerfilter/ooxml/OOXMLFastDocumentHandler.cxx index 0e831bd35627..2ec2a600e0d7 100644 --- a/sw/source/writerfilter/ooxml/OOXMLFastDocumentHandler.cxx +++ b/sw/source/writerfilter/ooxml/OOXMLFastDocumentHandler.cxx @@ -31,7 +31,7 @@ using namespace ::com::sun::star; OOXMLFastDocumentHandler::OOXMLFastDocumentHandler( uno::Reference< uno::XComponentContext > context, Stream* pStream, - OOXMLDocumentImpl* pDocument, + OOXMLDocument* pDocument, sal_Int32 nXNoteId ) : m_xContext(std::move(context)) , mpStream( pStream ) diff --git a/sw/source/writerfilter/ooxml/OOXMLFastDocumentHandler.hxx b/sw/source/writerfilter/ooxml/OOXMLFastDocumentHandler.hxx index 3d28d2bd742c..d85f4c526e1a 100644 --- a/sw/source/writerfilter/ooxml/OOXMLFastDocumentHandler.hxx +++ b/sw/source/writerfilter/ooxml/OOXMLFastDocumentHandler.hxx @@ -23,7 +23,7 @@ #include <cppuhelper/implbase.hxx> #include <com/sun/star/xml/sax/XFastDocumentHandler.hpp> #include <dmapper/resourcemodel.hxx> -#include <ooxml/OOXMLDocumentImpl.hxx> +#include <ooxml/OOXMLDocument.hxx> #include <rtl/ref.hxx> namespace writerfilter::ooxml @@ -37,7 +37,7 @@ public: OOXMLFastDocumentHandler( css::uno::Reference< css::uno::XComponentContext > context, Stream* pStream, - OOXMLDocumentImpl* pDocument, + OOXMLDocument* pDocument, sal_Int32 nXNoteId ); virtual ~OOXMLFastDocumentHandler() override; @@ -80,7 +80,7 @@ private: css::uno::Reference< css::uno::XComponentContext > m_xContext; Stream * mpStream; - OOXMLDocumentImpl* mpDocument; + OOXMLDocument* mpDocument; sal_Int32 mnXNoteId; mutable rtl::Reference<OOXMLFastContextHandler> mxContextHandler; rtl::Reference<OOXMLFastContextHandler> const & getContextHandler() const; diff --git a/sw/source/writerfilter/ooxml/OOXMLParserState.cxx b/sw/source/writerfilter/ooxml/OOXMLParserState.cxx index 9a145bfdd038..34447fc81496 100644 --- a/sw/source/writerfilter/ooxml/OOXMLParserState.cxx +++ b/sw/source/writerfilter/ooxml/OOXMLParserState.cxx @@ -88,7 +88,7 @@ void OOXMLParserState::setHandle() mnHandle = mnContexts; } -void OOXMLParserState::setDocument(OOXMLDocumentImpl* pDocument) +void OOXMLParserState::setDocument(OOXMLDocument* pDocument) { mpDocument = pDocument; } diff --git a/sw/source/writerfilter/ooxml/OOXMLParserState.hxx b/sw/source/writerfilter/ooxml/OOXMLParserState.hxx index 626f8cdf326c..387644eaad67 100644 --- a/sw/source/writerfilter/ooxml/OOXMLParserState.hxx +++ b/sw/source/writerfilter/ooxml/OOXMLParserState.hxx @@ -19,7 +19,7 @@ #pragma once #include <stack> -#include "OOXMLDocumentImpl.hxx" +#include <ooxml/OOXMLDocument.hxx> #include "OOXMLPropertySet.hxx" namespace writerfilter::ooxml @@ -45,7 +45,7 @@ class OOXMLParserState final : public virtual SvRefBase bool mbForwardEvents; unsigned int mnContexts; unsigned int mnHandle; - OOXMLDocumentImpl* mpDocument; + OOXMLDocument* mpDocument; OOXMLPropertySet::Pointer_t mpCharacterProps; std::stack<OOXMLPropertySet::Pointer_t> mCellProps; std::stack<OOXMLPropertySet::Pointer_t> mRowProps; @@ -87,8 +87,8 @@ public: std::string getHandle() const; void setHandle(); - void setDocument(OOXMLDocumentImpl* pDocument); - OOXMLDocumentImpl* getDocument() const { return mpDocument; } + void setDocument(OOXMLDocument* pDocument); + OOXMLDocument* getDocument() const { return mpDocument; } void setXNoteId(const sal_Int32 rId); sal_Int32 getXNoteId() const;
