diff options
author | Luboš Luňák <l.lunak@suse.cz> | 2012-09-06 17:34:08 +0200 |
---|---|---|
committer | Luboš Luňák <l.lunak@suse.cz> | 2012-09-06 17:35:48 +0200 |
commit | 7a045f48bad2177538c43f76019c1caecdd5baf7 (patch) | |
tree | e2bf7d81f67a33eb772c7cffcf6be956977345f9 /writerfilter | |
parent | basic .docx read support for embedded fonts (w:embedRegular etc.) (diff) | |
download | core-7a045f48bad2177538c43f76019c1caecdd5baf7.tar.gz core-7a045f48bad2177538c43f76019c1caecdd5baf7.zip |
read support for docx w:embedTrueTypeFonts/w:embedSystemFonts
No write support yet.
Change-Id: Ia10239acc77cf9ebc4f511e30c007da36abf43cb
Diffstat (limited to 'writerfilter')
-rw-r--r-- | writerfilter/source/dmapper/DomainMapper_Impl.cxx | 8 | ||||
-rw-r--r-- | writerfilter/source/dmapper/PropertyIds.cxx | 2 | ||||
-rw-r--r-- | writerfilter/source/dmapper/PropertyIds.hxx | 2 | ||||
-rw-r--r-- | writerfilter/source/dmapper/SettingsTable.cxx | 20 | ||||
-rw-r--r-- | writerfilter/source/dmapper/SettingsTable.hxx | 3 |
5 files changed, 32 insertions, 3 deletions
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx index bc0871cf9507..40acc306f3f2 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx @@ -3665,11 +3665,13 @@ void DomainMapper_Impl::ApplySettingsTable() xViewDataSupplier->setViewData(xIndexAccess); } + uno::Reference< beans::XPropertySet > xSettings(m_xTextFactory->createInstance("com.sun.star.document.Settings"), uno::UNO_QUERY); if (m_pSettingsTable->GetUsePrinterMetrics()) - { - uno::Reference< beans::XPropertySet > xSettings(m_xTextFactory->createInstance("com.sun.star.document.Settings"), uno::UNO_QUERY); xSettings->setPropertyValue("PrinterIndependentLayout", uno::makeAny(document::PrinterIndependentLayout::DISABLED)); - } + if( m_pSettingsTable->GetEmbedTrueTypeFonts()) + xSettings->setPropertyValue( PropertyNameSupplier::GetPropertyNameSupplier().GetName( PROP_EMBED_FONTS ), uno::makeAny(true) ); + if( m_pSettingsTable->GetEmbedSystemFonts()) + xSettings->setPropertyValue( PropertyNameSupplier::GetPropertyNameSupplier().GetName( PROP_EMBED_SYSTEM_FONTS ), uno::makeAny(true) ); } catch(const uno::Exception&) { diff --git a/writerfilter/source/dmapper/PropertyIds.cxx b/writerfilter/source/dmapper/PropertyIds.cxx index 66aecf68262c..1b4e8abe4082 100644 --- a/writerfilter/source/dmapper/PropertyIds.cxx +++ b/writerfilter/source/dmapper/PropertyIds.cxx @@ -316,6 +316,8 @@ const OUString& PropertyNameSupplier::GetName( PropertyIds eId ) const case PROP_IS_VISIBLE: sName = "IsVisible"; break; case PROP_PAGE_STYLE_LAYOUT: sName = "PageStyleLayout"; break; case PROP_Z_ORDER: sName = "ZOrder"; break; + case PROP_EMBED_FONTS: sName = "EmbedFonts"; break; + case PROP_EMBED_SYSTEM_FONTS: sName = "EmbedSystemFonts"; break; } ::std::pair<PropertyNameMap_t::iterator,bool> aInsertIt = m_pImpl->aNameMap.insert( PropertyNameMap_t::value_type( eId, sName )); diff --git a/writerfilter/source/dmapper/PropertyIds.hxx b/writerfilter/source/dmapper/PropertyIds.hxx index 8a55b829d440..5f21ee1504e0 100644 --- a/writerfilter/source/dmapper/PropertyIds.hxx +++ b/writerfilter/source/dmapper/PropertyIds.hxx @@ -289,6 +289,8 @@ enum PropertyIds ,PROP_PARA_CONTEXT_MARGIN ,PROP_PAGE_STYLE_LAYOUT ,PROP_Z_ORDER + ,PROP_EMBED_FONTS + ,PROP_EMBED_SYSTEM_FONTS }; struct PropertyNameSupplier_Impl; class PropertyNameSupplier diff --git a/writerfilter/source/dmapper/SettingsTable.cxx b/writerfilter/source/dmapper/SettingsTable.cxx index c28b45bd482a..74161ed48ef7 100644 --- a/writerfilter/source/dmapper/SettingsTable.cxx +++ b/writerfilter/source/dmapper/SettingsTable.cxx @@ -69,6 +69,8 @@ struct SettingsTable_Impl sal_Int16 m_nZoomFactor; bool m_bEvenAndOddHeaders; bool m_bUsePrinterMetrics; + bool embedTrueTypeFonts; + bool embedSystemFonts; SettingsTable_Impl( DomainMapper& rDMapper, const uno::Reference< lang::XMultiServiceFactory > xTextFactory ) : m_rDMapper( rDMapper ) @@ -89,6 +91,8 @@ struct SettingsTable_Impl , m_nZoomFactor(0) , m_bEvenAndOddHeaders(false) , m_bUsePrinterMetrics(false) + , embedTrueTypeFonts(false) + , embedSystemFonts(false) {} }; @@ -199,6 +203,12 @@ void SettingsTable::lcl_sprm(Sprm& rSprm) case NS_ooxml::LN_CT_Compat_usePrinterMetrics: m_pImpl->m_bUsePrinterMetrics = nIntValue; break; + case NS_ooxml::LN_CT_Settings_embedTrueTypeFonts: + m_pImpl->embedTrueTypeFonts = nIntValue != 0; + break; + case NS_ooxml::LN_CT_Settings_embedSystemFonts: + m_pImpl->embedSystemFonts = nIntValue != 0; + break; default: { #ifdef DEBUG_DMAPPER_SETTINGS_TABLE @@ -241,6 +251,16 @@ bool SettingsTable::GetEvenAndOddHeaders() const return m_pImpl->m_bEvenAndOddHeaders; } +bool SettingsTable::GetEmbedTrueTypeFonts() const +{ + return m_pImpl->embedTrueTypeFonts; +} + +bool SettingsTable::GetEmbedSystemFonts() const +{ + return m_pImpl->embedSystemFonts; +} + void SettingsTable::ApplyProperties( uno::Reference< text::XTextDocument > xDoc ) { uno::Reference< beans::XPropertySet> xDocProps( xDoc, uno::UNO_QUERY ); diff --git a/writerfilter/source/dmapper/SettingsTable.hxx b/writerfilter/source/dmapper/SettingsTable.hxx index 6c30f37cc4d1..d8a88c9a6656 100644 --- a/writerfilter/source/dmapper/SettingsTable.hxx +++ b/writerfilter/source/dmapper/SettingsTable.hxx @@ -65,6 +65,9 @@ class WRITERFILTER_DLLPRIVATE SettingsTable : public LoggedProperties, public Lo bool GetUsePrinterMetrics() const; + bool GetEmbedTrueTypeFonts() const; + bool GetEmbedSystemFonts() const; + void ApplyProperties( uno::Reference< text::XTextDocument > xDoc ); private: |