sw/source/writerfilter/dmapper/FontTable.cxx | 70 ++++++++++----------------- sw/source/writerfilter/dmapper/FontTable.hxx | 7 ++ 2 files changed, 34 insertions(+), 43 deletions(-)
New commits: commit ad6cd3ee3fc3b668644c5cf7ff3fe44c66b57d26 Author: Noel Grandin <noelgran...@gmail.com> AuthorDate: Mon Jun 16 16:19:15 2025 +0200 Commit: Mike Kaganski <mike.kagan...@collabora.com> CommitDate: Mon Aug 11 12:49:28 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> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/189337 Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com> Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> 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);