summaryrefslogtreecommitdiff
path: root/writerfilter/source/rtftok/rtfdocumentimpl.cxx
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.co.uk>2014-03-03 20:29:13 +0100
committerMiklos Vajna <vmiklos@collabora.co.uk>2014-03-03 20:33:08 +0100
commita6158500abb906b62bb36b5c17802ecbb3ec8119 (patch)
treef213d9770e6e0fca5ab58169020e6edb5d8ddf63 /writerfilter/source/rtftok/rtfdocumentimpl.cxx
parent4452fa9a2e741834a19c9b322fc8d9c8b06450de (diff)
writerfilter: convert sprm:C{Lid,LidBi,RgLid0,RgLid1}
Change-Id: I07e73a792230e6dc344c7120e3ad3c5f92a40769
Diffstat (limited to 'writerfilter/source/rtftok/rtfdocumentimpl.cxx')
-rw-r--r--writerfilter/source/rtftok/rtfdocumentimpl.cxx28
1 files changed, 21 insertions, 7 deletions
diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
index 712690dfce7b..6dbe1fb27fdb 100644
--- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx
+++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
@@ -2988,17 +2988,29 @@ int RTFDocumentImpl::dispatchValue(RTFKeyword nKeyword, int nParam)
case RTF_EXPNDTW: nSprm = NS_ooxml::LN_EG_RPrBase_spacing; break;
case RTF_KERNING: nSprm = NS_ooxml::LN_EG_RPrBase_kern; break;
case RTF_CHARSCALEX: nSprm = NS_ooxml::LN_EG_RPrBase_w; break;
- case RTF_LANG: nSprm = NS_sprm::LN_CRgLid0; break;
- case RTF_LANGFE: nSprm = NS_sprm::LN_CRgLid1; break;
- case RTF_ALANG: nSprm = NS_sprm::LN_CLidBi; break;
default: break;
}
if (nSprm > 0)
{
m_aStates.top().aCharacterSprms.set(nSprm, pIntValue);
+ return 0;
+ }
+ // Trivial character attributes.
+ switch (nKeyword)
+ {
+ case RTF_LANG: nSprm = NS_ooxml::LN_CT_Language_val; break;
+ case RTF_LANGFE: nSprm = NS_ooxml::LN_CT_Language_eastAsia; break;
+ case RTF_ALANG: nSprm = NS_ooxml::LN_CT_Language_bidi; break;
+ default: break;
+ }
+ if (nSprm > 0)
+ {
+ LanguageTag aTag((LanguageType)nParam);
+ RTFValue::Pointer_t pValue(new RTFValue(aTag.getBcp47()));
+ lcl_putNestedAttribute(m_aStates.top().aCharacterSprms, NS_ooxml::LN_EG_RPrBase_lang, nSprm, pValue);
// Language is a character property, but we should store it at a paragraph level as well for fields.
if (nKeyword == RTF_LANG && m_bNeedPap)
- m_aStates.top().aParagraphSprms.set(nSprm, pIntValue);
+ lcl_putNestedAttribute(m_aStates.top().aParagraphSprms, NS_ooxml::LN_EG_RPrBase_lang, nSprm, pValue);
return 0;
}
// Trivial paragraph sprms.
@@ -3221,10 +3233,12 @@ int RTFDocumentImpl::dispatchValue(RTFKeyword nKeyword, int nParam)
m_aDefaultState.aCharacterSprms.set(NS_sprm::LN_CRgFtc0, pIntValue);
break;
case RTF_DEFLANG:
- m_aDefaultState.aCharacterSprms.set(NS_sprm::LN_CRgLid0, pIntValue);
- break;
case RTF_ADEFLANG:
- m_aDefaultState.aCharacterSprms.set(NS_sprm::LN_CLidBi, pIntValue);
+ {
+ LanguageTag aTag((LanguageType)nParam);
+ RTFValue::Pointer_t pValue(new RTFValue(aTag.getBcp47()));
+ lcl_putNestedAttribute(m_aStates.top().aCharacterSprms, (nKeyword == RTF_DEFLANG ? NS_ooxml::LN_EG_RPrBase_lang : NS_ooxml::LN_CT_Language_bidi), nSprm, pValue);
+ }
break;
case RTF_CHCBPAT:
{