include/svtools/HtmlWriter.hxx | 1 + svtools/qa/unit/testHtmlWriter.cxx | 2 +- svtools/source/svhtml/HtmlWriter.cxx | 8 ++------ sw/source/filter/html/htmlatr.cxx | 8 ++++---- sw/source/filter/html/htmlflywriter.cxx | 4 ++-- sw/source/filter/html/htmlftn.cxx | 2 +- sw/source/filter/html/htmlplug.cxx | 2 +- sw/source/filter/html/htmltabw.cxx | 2 +- sw/source/filter/html/wrthtml.cxx | 10 ++-------- sw/source/filter/html/wrthtml.hxx | 7 ++++--- 10 files changed, 19 insertions(+), 27 deletions(-)
New commits: commit edaa5c608548ec2878abc5a9dc88f7867a1429a9 Author: Mike Kaganski <mike.kagan...@collabora.com> AuthorDate: Mon May 12 11:36:05 2025 +0200 Commit: Mike Kaganski <mike.kagan...@collabora.com> CommitDate: Mon May 12 17:29:57 2025 +0200 Simplify namespace handling in SwHTMLWriter Previously, it stored the namespace alone; and added ":" each time the value was used, when it was non-empty (either in GetNamespace, or when passed to svt's HtmlWriter). This change only adds the colon once, when maNamespace is set. Change-Id: Ib16586ebbf99bea7d301d3ac7a870ff4e68ee50b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/185203 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com> diff --git a/include/svtools/HtmlWriter.hxx b/include/svtools/HtmlWriter.hxx index a53b41d0522e..208d309a6b63 100644 --- a/include/svtools/HtmlWriter.hxx +++ b/include/svtools/HtmlWriter.hxx @@ -31,6 +31,7 @@ private: OString maNamespace; public: + // rNamespace, when non-empty, must include trailing colon HtmlWriter(SvStream& rStream, std::string_view rNamespace = std::string_view()); ~HtmlWriter(); diff --git a/svtools/qa/unit/testHtmlWriter.cxx b/svtools/qa/unit/testHtmlWriter.cxx index 513978b1f525..5466d4e49f09 100644 --- a/svtools/qa/unit/testHtmlWriter.cxx +++ b/svtools/qa/unit/testHtmlWriter.cxx @@ -139,7 +139,7 @@ CPPUNIT_TEST_FIXTURE(Test, testNamespace) { SvMemoryStream aStream; - HtmlWriter aHtml(aStream, "reqif-xhtml"); + HtmlWriter aHtml(aStream, "reqif-xhtml:"); aHtml.prettyPrint(false); aHtml.single("br"_ostr); diff --git a/svtools/source/svhtml/HtmlWriter.cxx b/svtools/source/svhtml/HtmlWriter.cxx index cd73bad074da..984681976fbe 100644 --- a/svtools/source/svhtml/HtmlWriter.cxx +++ b/svtools/source/svhtml/HtmlWriter.cxx @@ -15,13 +15,9 @@ HtmlWriter::HtmlWriter(SvStream& rStream, std::string_view rNamespace) : mrStream(rStream), - mbPrettyPrint(true) + mbPrettyPrint(true), + maNamespace(rNamespace) { - if (!rNamespace.empty()) - { - // Convert namespace alias to a prefix. - maNamespace = OString::Concat(rNamespace) + ":"; - } } HtmlWriter::~HtmlWriter() diff --git a/sw/source/filter/html/htmlatr.cxx b/sw/source/filter/html/htmlatr.cxx index 4e6256172642..3a15d00a8c3a 100644 --- a/sw/source/filter/html/htmlatr.cxx +++ b/sw/source/filter/html/htmlatr.cxx @@ -2085,7 +2085,7 @@ SwHTMLWriter& OutHTML_SwTextNode( SwHTMLWriter& rWrt, const SwContentNode& rNode rWrt.SetLFPossible(true); - HtmlWriter aHtml(rWrt.Strm(), rWrt.maNamespace); + HtmlWriter aHtml(rWrt.Strm(), rWrt.GetNamespace()); aHtml.prettyPrint(rWrt.IsPrettyPrint()); aHtml.start(OOO_STRING_SVTOOLS_HTML_horzrule ""_ostr); @@ -2539,7 +2539,7 @@ SwHTMLWriter& OutHTML_SwTextNode( SwHTMLWriter& rWrt, const SwContentNode& rNode if( 0x0a == c ) { HTMLOutFuncs::FlushToAscii( rWrt.Strm() ); - HtmlWriter aHtml(rWrt.Strm(), rWrt.maNamespace); + HtmlWriter aHtml(rWrt.Strm(), rWrt.GetNamespace()); aHtml.prettyPrint(rWrt.IsPrettyPrint()); aHtml.single(OOO_STRING_SVTOOLS_HTML_linebreak ""_ostr); } @@ -2618,7 +2618,7 @@ SwHTMLWriter& OutHTML_SwTextNode( SwHTMLWriter& rWrt, const SwContentNode& rNode } else { - HtmlWriter aHtml(rWrt.Strm(), rWrt.maNamespace); + HtmlWriter aHtml(rWrt.Strm(), rWrt.GetNamespace()); aHtml.prettyPrint(rWrt.IsPrettyPrint()); aHtml.single(OOO_STRING_SVTOOLS_HTML_linebreak ""_ostr); const SvxULSpaceItem& rULSpace = pNd->GetSwAttrSet().Get(RES_UL_SPACE); @@ -2645,7 +2645,7 @@ SwHTMLWriter& OutHTML_SwTextNode( SwHTMLWriter& rWrt, const SwContentNode& rNode pString = OOO_STRING_SVTOOLS_HTML_AL_right; } - HtmlWriter aHtml(rWrt.Strm(), rWrt.maNamespace); + HtmlWriter aHtml(rWrt.Strm(), rWrt.GetNamespace()); aHtml.prettyPrint(rWrt.IsPrettyPrint()); aHtml.start(OOO_STRING_SVTOOLS_HTML_linebreak ""_ostr); aHtml.attribute(OOO_STRING_SVTOOLS_HTML_O_clear, pString); diff --git a/sw/source/filter/html/htmlflywriter.cxx b/sw/source/filter/html/htmlflywriter.cxx index 9b8941f7e91e..1b6440ccc7f9 100644 --- a/sw/source/filter/html/htmlflywriter.cxx +++ b/sw/source/filter/html/htmlflywriter.cxx @@ -1907,7 +1907,7 @@ static SwHTMLWriter & OutHTML_FrameFormatAsImage( SwHTMLWriter& rWrt, const SwFr OutHTML_ImageOLEStart(rWrt, aGraphic, rFrameFormat); - HtmlWriter aHtml(rWrt.Strm(), rWrt.maNamespace); + HtmlWriter aHtml(rWrt.Strm(), rWrt.GetNamespace()); OutHTML_ImageStart( aHtml, rWrt, rFrameFormat, GraphicURL, aGraphic, rFrameFormat.GetName().toString(), aSz, HtmlFrmOpts::GenImgMask, "frame", aIMap.GetIMapObjectCount() ? &aIMap : nullptr, aMimeType, true); @@ -2055,7 +2055,7 @@ static SwHTMLWriter& OutHTML_FrameFormatGrfNode( SwHTMLWriter& rWrt, const SwFra OutHTML_ImageOLEStart(rWrt, aGraphic, rFrameFormat); - HtmlWriter aHtml(rWrt.Strm(), rWrt.maNamespace); + HtmlWriter aHtml(rWrt.Strm(), rWrt.GetNamespace()); OutHTML_ImageStart( aHtml, rWrt, rFrameFormat, aGraphicURL, aGraphic, pGrfNd->GetTitle(), pGrfNd->GetTwipSize(), nFrameFlags, "graphic", nullptr, aMimeType, bOwn ); diff --git a/sw/source/filter/html/htmlftn.cxx b/sw/source/filter/html/htmlftn.cxx index caa72fa21e0c..5160914e2ee5 100644 --- a/sw/source/filter/html/htmlftn.cxx +++ b/sw/source/filter/html/htmlftn.cxx @@ -249,7 +249,7 @@ SwHTMLWriter& OutHTML_SwFormatLineBreak(SwHTMLWriter& rWrt, const SfxPoolItem& r { const auto& rLineBreak = static_cast<const SwFormatLineBreak&>(rHt); - HtmlWriter aWriter(rWrt.Strm(), rWrt.maNamespace); + HtmlWriter aWriter(rWrt.Strm(), rWrt.GetNamespace()); aWriter.start(OOO_STRING_SVTOOLS_HTML_linebreak ""_ostr); switch (rLineBreak.GetValue()) { diff --git a/sw/source/filter/html/htmlplug.cxx b/sw/source/filter/html/htmlplug.cxx index b68b3afd75a9..2ff7fbbc5945 100644 --- a/sw/source/filter/html/htmlplug.cxx +++ b/sw/source/filter/html/htmlplug.cxx @@ -1523,7 +1523,7 @@ static void OutHTMLGraphic(SwHTMLWriter& rWrt, const SwFrameFormat& rFrameFormat HtmlFrmOpts nFlags = bInCntnr ? HtmlFrmOpts::GenImgAllMask : HtmlFrmOpts::GenImgMask; if (bObjectOpened) nFlags |= HtmlFrmOpts::Replacement; - HtmlWriter aHtml(rWrt.Strm(), rWrt.maNamespace); + HtmlWriter aHtml(rWrt.Strm(), rWrt.GetNamespace()); OutHTML_ImageStart(aHtml, rWrt, rFrameFormat, aGraphicURL, rGraphic, pOLENd->GetTitle(), pOLENd->GetTwipSize(), nFlags, "ole", nullptr, aMimeType, true); OutHTML_ImageEnd(aHtml, rWrt); diff --git a/sw/source/filter/html/htmltabw.cxx b/sw/source/filter/html/htmltabw.cxx index 94b91692faa0..26b07c024557 100644 --- a/sw/source/filter/html/htmltabw.cxx +++ b/sw/source/filter/html/htmltabw.cxx @@ -738,7 +738,7 @@ void SwHTMLWrtTable::Write( SwHTMLWriter& rWrt, sal_Int16 eAlign, const SwWriteTableCol *pColumn = m_aCols[nCol].get(); - HtmlWriter html(rWrt.Strm(), rWrt.maNamespace); + HtmlWriter html(rWrt.Strm(), rWrt.GetNamespace()); html.prettyPrint(false); // We add newlines ourself html.start(OOO_STRING_SVTOOLS_HTML_col ""_ostr); diff --git a/sw/source/filter/html/wrthtml.cxx b/sw/source/filter/html/wrthtml.cxx index 956641333222..aaf5c41f2e0a 100644 --- a/sw/source/filter/html/wrthtml.cxx +++ b/sw/source/filter/html/wrthtml.cxx @@ -340,6 +340,8 @@ void SwHTMLWriter::SetupFilterFromPropertyValues( // XHTML is always just a fragment inside ReqIF. mbSkipHeaderFooter = true; } + if (!maNamespace.isEmpty()) + maNamespace += ":"; // XHTML namespace implies XHTML. mbXHTML = true; } @@ -1608,14 +1610,6 @@ sal_Int32 SwHTMLWriter::indexOfDotLeaders( sal_uInt16 nPoolId, std::u16string_vi return -1; } -OString SwHTMLWriter::GetNamespace() const -{ - if (maNamespace.isEmpty()) - return OString(); - - return maNamespace + ":"; -} - OUString SwHTMLWriter::normalizeURL(const OUString& url, bool own) const { OUString ret(url); diff --git a/sw/source/filter/html/wrthtml.hxx b/sw/source/filter/html/wrthtml.hxx index 717e45610f46..61368a485b91 100644 --- a/sw/source/filter/html/wrthtml.hxx +++ b/sw/source/filter/html/wrthtml.hxx @@ -271,6 +271,9 @@ enum class Css1Background class SwHTMLWriter : public Writer { + /// XML namespace, in case of XHTML. + OString maNamespace; + SwHTMLPosFlyFrames m_aHTMLPosFlyFrames; std::unique_ptr<SwHTMLNumRuleInfo> m_pNumRuleInfo;// current numbering std::unique_ptr<SwHTMLNumRuleInfo> m_pNextNumRuleInfo; @@ -415,8 +418,6 @@ public: std::unique_ptr<utl::TempFileNamed> mpTempBaseURL; /// If XHTML markup should be written instead of HTML. bool mbXHTML = false; - /// XML namespace, in case of XHTML. - OString maNamespace; /// If the ReqIF subset of XHTML should be written. bool mbReqIF = false; @@ -626,7 +627,7 @@ public: sal_Int32 indexOfDotLeaders( sal_uInt16 nPoolId, std::u16string_view rText ); /// Determines the prefix string needed to respect the requested namespace alias. - OString GetNamespace() const; + OString GetNamespace() const { return maNamespace; } bool IsPrettyPrint() const { return !m_bSpacePreserve && m_bPrettyPrint; } bool IsLFPossible() const { return !m_bSpacePreserve && m_bLFPossible; }