summaryrefslogtreecommitdiff
path: root/writerfilter/source
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@suse.cz>2012-09-17 12:49:32 +0200
committerMiklos Vajna <vmiklos@suse.cz>2012-09-28 15:37:10 +0200
commit30451a6c314dc44ff086e38885084b4fbd31e28f (patch)
tree00dab550fb6fab05aeb170c8626aa705f3f3a17c /writerfilter/source
parent29982fd31b163730ad54c414bf772e021af31e9b (diff)
n#778140 DOCX import of w:doNotUseHTMLParagraphAutoSpacing compat option
This reverts commit 61c94cbe2cbbbcaa1e44edecc4add60eb6d7937d (as it touched values which are not in the spec) and sets the correct paragraph top/bottom margin in case the compat option is enabled. (cherry picked from commit a10bb9a08b7a96477eefce59f8900cf49604316d) Conflicts: writerfilter/source/dmapper/SettingsTable.cxx writerfilter/source/dmapper/SettingsTable.hxx Conflicts: writerfilter/source/dmapper/SettingsTable.cxx Change-Id: I152a76d8fcdef3acf5491783c2ccacd2d48e76b3
Diffstat (limited to 'writerfilter/source')
-rw-r--r--writerfilter/source/dmapper/DomainMapper.cxx16
-rw-r--r--writerfilter/source/dmapper/SettingsTable.cxx10
-rw-r--r--writerfilter/source/dmapper/SettingsTable.hxx2
3 files changed, 22 insertions, 6 deletions
diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx
index 33640ec4b9de..2078994070e4 100644
--- a/writerfilter/source/dmapper/DomainMapper.cxx
+++ b/writerfilter/source/dmapper/DomainMapper.cxx
@@ -1220,15 +1220,19 @@ void DomainMapper::lcl_attribute(Id nName, Value & val)
uno::makeAny( aLocale ) );
}
break;
-#define AUTO_PARA_SPACING sal_Int32(100)
+// This is the value when the compat option is not enabled. No idea where it comes from, the spec doesn't mention it.
+#define AUTO_PARA_SPACING sal_Int32(49)
case NS_ooxml::LN_CT_Spacing_beforeAutospacing:
- //TODO: autospacing depends on some document property (called fDontUseHTMLAutoSpacing in old ww8 filter) 100 or 280 twip
- //and should be set to 0 on start of page
- m_pImpl->GetTopContext()->Insert( PROP_PARA_TOP_MARGIN, false, uno::makeAny( ConversionHelper::convertTwipToMM100(AUTO_PARA_SPACING) ) );
+ if (!m_pImpl->GetSettingsTable()->GetDoNotUseHTMLParagraphAutoSpacing())
+ m_pImpl->GetTopContext()->Insert( PROP_PARA_TOP_MARGIN, false, uno::makeAny( AUTO_PARA_SPACING ) );
+ else
+ m_pImpl->GetTopContext()->Insert( PROP_PARA_TOP_MARGIN, false, uno::makeAny( ConversionHelper::convertTwipToMM100(100) ) );
break;
case NS_ooxml::LN_CT_Spacing_afterAutospacing:
- //TODO: autospacing depends on some document property (called fDontUseHTMLAutoSpacing in old ww8 filter) 100 or 280 twip
- m_pImpl->GetTopContext()->Insert( PROP_PARA_BOTTOM_MARGIN, false, uno::makeAny( ConversionHelper::convertTwipToMM100(AUTO_PARA_SPACING) ) );
+ if (!m_pImpl->GetSettingsTable()->GetDoNotUseHTMLParagraphAutoSpacing())
+ m_pImpl->GetTopContext()->Insert( PROP_PARA_TOP_MARGIN, false, uno::makeAny( AUTO_PARA_SPACING ) );
+ else
+ m_pImpl->GetTopContext()->Insert( PROP_PARA_TOP_MARGIN, false, uno::makeAny( ConversionHelper::convertTwipToMM100(200) ) );
break;
case NS_ooxml::LN_CT_SmartTagRun_uri:
case NS_ooxml::LN_CT_SmartTagRun_element:
diff --git a/writerfilter/source/dmapper/SettingsTable.cxx b/writerfilter/source/dmapper/SettingsTable.cxx
index 21a6b3208002..2e262fc90bf4 100644
--- a/writerfilter/source/dmapper/SettingsTable.cxx
+++ b/writerfilter/source/dmapper/SettingsTable.cxx
@@ -78,6 +78,7 @@ struct SettingsTable_Impl
sal_Int16 m_nZoomFactor;
bool m_bEvenAndOddHeaders;
bool m_bUsePrinterMetrics;
+ bool m_bDoNotUseHTMLParagraphAutoSpacing;
SettingsTable_Impl( DomainMapper& rDMapper, const uno::Reference< lang::XMultiServiceFactory > xTextFactory ) :
m_rDMapper( rDMapper )
@@ -98,6 +99,7 @@ struct SettingsTable_Impl
, m_nZoomFactor(0)
, m_bEvenAndOddHeaders(false)
, m_bUsePrinterMetrics(false)
+ , m_bDoNotUseHTMLParagraphAutoSpacing(false)
{}
};
@@ -208,6 +210,9 @@ void SettingsTable::lcl_sprm(Sprm& rSprm)
case NS_ooxml::LN_CT_Compat_usePrinterMetrics:
m_pImpl->m_bUsePrinterMetrics = nIntValue;
break;
+ case NS_ooxml::LN_CT_Compat_doNotUseHTMLParagraphAutoSpacing:
+ m_pImpl->m_bDoNotUseHTMLParagraphAutoSpacing = nIntValue;
+ break;
default:
{
#ifdef DEBUG_DMAPPER_SETTINGS_TABLE
@@ -250,6 +255,11 @@ bool SettingsTable::GetEvenAndOddHeaders() const
return m_pImpl->m_bEvenAndOddHeaders;
}
+bool SettingsTable::GetDoNotUseHTMLParagraphAutoSpacing() const
+{
+ return m_pImpl->m_bDoNotUseHTMLParagraphAutoSpacing;
+}
+
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 5123a9cea2a9..5dfa0a2941b9 100644
--- a/writerfilter/source/dmapper/SettingsTable.hxx
+++ b/writerfilter/source/dmapper/SettingsTable.hxx
@@ -74,6 +74,8 @@ class WRITERFILTER_DLLPRIVATE SettingsTable : public LoggedProperties, public Lo
bool GetUsePrinterMetrics() const;
+ bool GetDoNotUseHTMLParagraphAutoSpacing() const;
+
void ApplyProperties( uno::Reference< text::XTextDocument > xDoc );
private: