sw/source/writerfilter/dmapper/DomainMapper_Impl.cxx | 8 -- sw/source/writerfilter/dmapper/DomainMapper_Impl.hxx | 14 +-- sw/source/writerfilter/dmapper/FontTable.cxx | 70 +++++++------------ sw/source/writerfilter/dmapper/FontTable.hxx | 7 + 4 files changed, 44 insertions(+), 55 deletions(-)
New commits: commit fa3bdd439dc8f19fd1c465d72ab7d2e8e7f32559 Author: Noel Grandin <noelgran...@gmail.com> AuthorDate: Mon Jun 16 16:19:15 2025 +0200 Commit: Noel Grandin <noelgran...@gmail.com> CommitDate: Wed Jun 18 21:33:10 2025 +0200 remove pimpl from FontTable this class is internal to a sub-section of writer, no need for a pimpl here Change-Id: I7be609d579c6803f8d61cd84fe6e8a3f50ec2e67 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/186673 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/sw/source/writerfilter/dmapper/FontTable.cxx b/sw/source/writerfilter/dmapper/FontTable.cxx index d0f65bc8c742..2c839d3ab1e1 100644 --- a/sw/source/writerfilter/dmapper/FontTable.cxx +++ b/sw/source/writerfilter/dmapper/FontTable.cxx @@ -18,13 +18,11 @@ */ #include "FontTable.hxx" -#include <o3tl/deleter.hxx> #include <ooxml/resourceids.hxx> #include <utility> #include <vector> #include <sal/log.hxx> #include <rtl/tencinfo.h> -#include <vcl/embeddedfontshelper.hxx> #include <unotools/fontdefs.hxx> using namespace com::sun::star; @@ -32,23 +30,11 @@ using namespace com::sun::star; namespace writerfilter::dmapper { -struct FontTable_Impl -{ - std::unique_ptr<EmbeddedFontsHelper, o3tl::default_delete<EmbeddedFontsHelper>> xEmbeddedFontHelper; - std::vector< FontEntry::Pointer_t > aFontEntries; - FontEntry::Pointer_t pCurrentEntry; - bool m_bReadOnly; - FontTable_Impl(bool bReadOnly) - : m_bReadOnly(bReadOnly) - { - } -}; - FontTable::FontTable(bool bReadOnly) : LoggedProperties("FontTable") , LoggedTable("FontTable") , LoggedStream("FontTable") -, m_pImpl( new FontTable_Impl(bReadOnly) ) +, m_bReadOnly(bReadOnly) { } @@ -58,8 +44,8 @@ FontTable::~FontTable() void FontTable::lcl_attribute(Id Name, const Value & val) { - SAL_WARN_IF( !m_pImpl->pCurrentEntry, "writerfilter.dmapper", "current entry has to be set here" ); - if(!m_pImpl->pCurrentEntry) + SAL_WARN_IF( !m_pCurrentEntry, "writerfilter.dmapper", "current entry has to be set here" ); + if(!m_pCurrentEntry) return ; int nIntValue = val.getInt(); OUString sValue = val.getString(); @@ -76,25 +62,25 @@ void FontTable::lcl_attribute(Id Name, const Value & val) SAL_WARN("writerfilter.dmapper", "FontTable::lcl_attribute: unhandled NS_ooxml::CT_Pitch_val: " << nIntValue); break; case NS_ooxml::LN_CT_Font_name: - m_pImpl->pCurrentEntry->sFontName = sValue; + m_pCurrentEntry->sFontName = sValue; break; case NS_ooxml::LN_CT_Charset_val: // w:characterSet has higher priority, set only if that one is not set - if( m_pImpl->pCurrentEntry->nTextEncoding == RTL_TEXTENCODING_DONTKNOW ) + if( m_pCurrentEntry->nTextEncoding == RTL_TEXTENCODING_DONTKNOW ) { - m_pImpl->pCurrentEntry->nTextEncoding = rtl_getTextEncodingFromWindowsCharset( nIntValue ); - if( IsOpenSymbol( m_pImpl->pCurrentEntry->sFontName )) - m_pImpl->pCurrentEntry->nTextEncoding = RTL_TEXTENCODING_SYMBOL; + m_pCurrentEntry->nTextEncoding = rtl_getTextEncodingFromWindowsCharset( nIntValue ); + if( IsOpenSymbol( m_pCurrentEntry->sFontName )) + m_pCurrentEntry->nTextEncoding = RTL_TEXTENCODING_SYMBOL; } break; case NS_ooxml::LN_CT_Charset_characterSet: { OString tmp; sValue.convertToString( &tmp, RTL_TEXTENCODING_ASCII_US, OUSTRING_TO_OSTRING_CVTFLAGS ); - m_pImpl->pCurrentEntry->nTextEncoding = rtl_getTextEncodingFromMimeCharset( tmp.getStr() ); + m_pCurrentEntry->nTextEncoding = rtl_getTextEncodingFromMimeCharset( tmp.getStr() ); // Older LO versions used to write incorrect character set for OpenSymbol, fix. - if( IsOpenSymbol( m_pImpl->pCurrentEntry->sFontName )) - m_pImpl->pCurrentEntry->nTextEncoding = RTL_TEXTENCODING_SYMBOL; + if( IsOpenSymbol( m_pCurrentEntry->sFontName )) + m_pCurrentEntry->nTextEncoding = RTL_TEXTENCODING_SYMBOL; break; } default: ; @@ -103,8 +89,8 @@ void FontTable::lcl_attribute(Id Name, const Value & val) void FontTable::lcl_sprm(Sprm& rSprm) { - SAL_WARN_IF( !m_pImpl->pCurrentEntry, "writerfilter.dmapper", "current entry has to be set here" ); - if(!m_pImpl->pCurrentEntry) + SAL_WARN_IF( !m_pCurrentEntry, "writerfilter.dmapper", "current entry has to be set here" ); + if(!m_pCurrentEntry) return ; sal_uInt32 nSprmId = rSprm.getId(); @@ -122,7 +108,7 @@ void FontTable::lcl_sprm(Sprm& rSprm) writerfilter::Reference< Properties >::Pointer_t pProperties = rSprm.getProps(); if( pProperties ) { - EmbeddedFontHandler handler(*this, m_pImpl->pCurrentEntry->sFontName, + EmbeddedFontHandler handler(*this, m_pCurrentEntry->sFontName, nSprmId == NS_ooxml::LN_CT_Font_embedRegular ? u"" : nSprmId == NS_ooxml::LN_CT_Font_embedBold ? u"b" : nSprmId == NS_ooxml::LN_CT_Font_embedItalic ? u"i" @@ -143,10 +129,10 @@ void FontTable::lcl_sprm(Sprm& rSprm) switch (nIntValue) { case NS_ooxml::LN_Value_ST_FontFamily_roman: - m_pImpl->pCurrentEntry->m_nFontFamily = awt::FontFamily::ROMAN; + m_pCurrentEntry->m_nFontFamily = awt::FontFamily::ROMAN; break; case NS_ooxml::LN_Value_ST_FontFamily_swiss: - m_pImpl->pCurrentEntry->m_nFontFamily = awt::FontFamily::SWISS; + m_pCurrentEntry->m_nFontFamily = awt::FontFamily::SWISS; break; } break; @@ -171,12 +157,12 @@ void FontTable::resolveSprm(Sprm & r_Sprm) void FontTable::lcl_entry(const writerfilter::Reference<Properties>::Pointer_t& ref) { //create a new font entry - SAL_WARN_IF( m_pImpl->pCurrentEntry, "writerfilter.dmapper", "current entry has to be NULL here" ); - m_pImpl->pCurrentEntry = new FontEntry; + SAL_WARN_IF( m_pCurrentEntry, "writerfilter.dmapper", "current entry has to be NULL here" ); + m_pCurrentEntry = new FontEntry; ref->resolve(*this); //append it to the table - m_pImpl->aFontEntries.push_back( m_pImpl->pCurrentEntry ); - m_pImpl->pCurrentEntry.clear(); + m_aFontEntries.push_back( m_pCurrentEntry ); + m_pCurrentEntry.clear(); } void FontTable::lcl_startSectionGroup() @@ -233,19 +219,19 @@ void FontTable::lcl_endShape( ) FontEntry::Pointer_t FontTable::getFontEntry(sal_uInt32 nIndex) { - return (m_pImpl->aFontEntries.size() > nIndex) - ? m_pImpl->aFontEntries[nIndex] + return (m_aFontEntries.size() > nIndex) + ? m_aFontEntries[nIndex] : FontEntry::Pointer_t(); } sal_uInt32 FontTable::size() { - return m_pImpl->aFontEntries.size(); + return m_aFontEntries.size(); } FontEntry::Pointer_t FontTable::getFontEntryByName(std::u16string_view rName) { - for (const auto& pEntry : m_pImpl->aFontEntries) + for (const auto& pEntry : m_aFontEntries) { if (pEntry->sFontName == rName) { @@ -258,7 +244,7 @@ FontEntry::Pointer_t FontTable::getFontEntryByName(std::u16string_view rName) bool FontTable::IsReadOnly() const { - return m_pImpl->m_bReadOnly; + return m_bReadOnly; } void FontTable::addEmbeddedFont(const css::uno::Reference<css::io::XInputStream>& stream, @@ -266,9 +252,9 @@ void FontTable::addEmbeddedFont(const css::uno::Reference<css::io::XInputStream> std::vector<unsigned char> const & key, bool bSubsetted) { - if (!m_pImpl->xEmbeddedFontHelper) - m_pImpl->xEmbeddedFontHelper.reset(new EmbeddedFontsHelper); - m_pImpl->xEmbeddedFontHelper->addEmbeddedFont(stream, fontName, extra, key, + if (!m_xEmbeddedFontHelper) + m_xEmbeddedFontHelper.reset(new EmbeddedFontsHelper); + m_xEmbeddedFontHelper->addEmbeddedFont(stream, fontName, extra, key, /*eot=*/false, bSubsetted); } diff --git a/sw/source/writerfilter/dmapper/FontTable.hxx b/sw/source/writerfilter/dmapper/FontTable.hxx index 476ef98636f0..7f9c545c9f73 100644 --- a/sw/source/writerfilter/dmapper/FontTable.hxx +++ b/sw/source/writerfilter/dmapper/FontTable.hxx @@ -24,6 +24,8 @@ #include "LoggedResources.hxx" #include <com/sun/star/io/XInputStream.hpp> #include <com/sun/star/awt/FontFamily.hpp> +#include <vcl/embeddedfontshelper.hxx> +#include <o3tl/deleter.hxx> namespace writerfilter::dmapper { @@ -44,7 +46,10 @@ struct FontEntry : public virtual SvRefBase class FontTable : public LoggedProperties, public LoggedTable /*,public BinaryObj*/, public LoggedStream { - std::unique_ptr<FontTable_Impl> m_pImpl; + std::unique_ptr<EmbeddedFontsHelper, o3tl::default_delete<EmbeddedFontsHelper>> m_xEmbeddedFontHelper; + std::vector< FontEntry::Pointer_t > m_aFontEntries; + FontEntry::Pointer_t m_pCurrentEntry; + bool m_bReadOnly; public: FontTable(bool bReadOnly); commit 842748dd9bc6d28889405895fdcbbf2faf53cbda Author: Noel Grandin <noelgran...@gmail.com> AuthorDate: Mon Jun 16 16:07:26 2025 +0200 Commit: Noel Grandin <noelgran...@gmail.com> CommitDate: Wed Jun 18 21:33:01 2025 +0200 use more concrete UNO classes Change-Id: I8153889f0886d25a9e37fa5745b02ecf9230002c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/186672 Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> Tested-by: Jenkins diff --git a/sw/source/writerfilter/dmapper/DomainMapper_Impl.cxx b/sw/source/writerfilter/dmapper/DomainMapper_Impl.cxx index c81255112abe..7fe93aa5522c 100644 --- a/sw/source/writerfilter/dmapper/DomainMapper_Impl.cxx +++ b/sw/source/writerfilter/dmapper/DomainMapper_Impl.cxx @@ -6334,16 +6334,14 @@ FieldContext::~FieldContext() { } -void FieldContext::SetTextField(uno::Reference<text::XTextField> const& xTextField) +void FieldContext::SetTextField(rtl::Reference<SwXTextField> const& xTextField) { #ifndef NDEBUG if (xTextField.is()) { - uno::Reference<lang::XServiceInfo> const xServiceInfo(xTextField, uno::UNO_QUERY); - assert(xServiceInfo.is()); // those must be set by SetFormField() - assert(!xServiceInfo->supportsService(u"com.sun.star.text.Fieldmark"_ustr) - && !xServiceInfo->supportsService(u"com.sun.star.text.FormFieldmark"_ustr)); + assert(!xTextField->supportsService(u"com.sun.star.text.Fieldmark"_ustr) + && !xTextField->supportsService(u"com.sun.star.text.FormFieldmark"_ustr)); } #endif m_xTextField = xTextField; diff --git a/sw/source/writerfilter/dmapper/DomainMapper_Impl.hxx b/sw/source/writerfilter/dmapper/DomainMapper_Impl.hxx index e1a9931ef0fd..f578e3f0a229 100644 --- a/sw/source/writerfilter/dmapper/DomainMapper_Impl.hxx +++ b/sw/source/writerfilter/dmapper/DomainMapper_Impl.hxx @@ -55,12 +55,12 @@ #include "FormControlHelper.hxx" #include <unoidx.hxx> #include <unobookmark.hxx> +#include <unofield.hxx> #include <map> class SwXTextDocument; class SwXDocumentSettings; class SwXTextSection; -class SwXTextField; class SwXTextFrame; class SwXTextEmbeddedObject; class SwXText; @@ -312,11 +312,11 @@ public: bool m_bSetDateValue = false; private: - css::uno::Reference<css::text::XTextField> m_xTextField; + rtl::Reference<SwXTextField> m_xTextField; rtl::Reference<SwXFieldmark> m_xFormField; rtl::Reference<SwXSection> m_xTOC; css::uno::Reference<css::beans::XPropertySet> m_xTC; // TOX entry - css::uno::Reference<css::beans::XPropertySet> m_xCustomField; + rtl::Reference<SwXTextField> m_xCustomField; OUString m_sHyperlinkURL; /// A frame for the hyperlink when one exists. @@ -357,10 +357,10 @@ public: void SetFieldLocked() { m_bFieldLocked = true; } bool IsFieldLocked() const { return m_bFieldLocked; } - const css::uno::Reference<css::beans::XPropertySet>& GetCustomField() const { return m_xCustomField; } - void SetCustomField(css::uno::Reference<css::beans::XPropertySet> const& xCustomField) { m_xCustomField = xCustomField; } - const css::uno::Reference<css::text::XTextField>& GetTextField() const { return m_xTextField;} - void SetTextField(css::uno::Reference<css::text::XTextField> const& xTextField); + const rtl::Reference<SwXTextField>& GetCustomField() const { return m_xCustomField; } + void SetCustomField(rtl::Reference<SwXTextField> const& xCustomField) { m_xCustomField = xCustomField; } + const rtl::Reference<SwXTextField>& GetTextField() const { return m_xTextField;} + void SetTextField(rtl::Reference<SwXTextField> const& xTextField); const rtl::Reference<SwXFieldmark>& GetFormField() const { return m_xFormField;} void SetFormField(rtl::Reference<SwXFieldmark> const& xFormField) { m_xFormField = xFormField;}