writerfilter/source/rtftok/rtfdocumentimpl.cxx | 95 ++++++++----------------- writerfilter/source/rtftok/rtfdocumentimpl.hxx | 2 2 files changed, 33 insertions(+), 64 deletions(-)
New commits: commit dfcc1669f68783e8f648cef57d3e36277ae27cec Author: Miklos Vajna <vmik...@suse.cz> Date: Mon May 7 09:50:02 2012 +0200 fdo#38786 implement RTF_CHPGN Change-Id: I0ae693193b4fc8ed155e2d71b06daa80d46da47c Signed-off-by: Michael Stahl <mst...@redhat.com> diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx b/writerfilter/source/rtftok/rtfdocumentimpl.cxx index 0a93829..330bc25 100644 --- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx +++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx @@ -1606,6 +1606,15 @@ int RTFDocumentImpl::dispatchSymbol(RTFKeyword nKeyword) parBreak(); } break; + case RTF_CHPGN: + { + OUString aStr(RTL_CONSTASCII_USTRINGPARAM("PAGE")); + singleChar(0x13); + text(aStr); + singleChar(0x14); + singleChar(0x15); + } + break; default: #if OSL_DEBUG_LEVEL > 1 OSL_TRACE("%s: TODO handle symbol '%s'", OSL_THIS_FUNC, lcl_RtfToString(nKeyword)); commit 470c54202cedc4a36cbf28b38e50af44708606a0 Author: Miklos Vajna <vmik...@suse.cz> Date: Wed Apr 25 11:28:49 2012 +0200 avoid code duplication by introducing RTFDocumentImpl::singleChar Signed-off-by: Michael Stahl <mst...@redhat.com> diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx b/writerfilter/source/rtftok/rtfdocumentimpl.cxx index f36e763..0a93829 100644 --- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx +++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx @@ -886,6 +886,24 @@ bool RTFFrame::inFrame() || nY > 0; } +void RTFDocumentImpl::singleChar(sal_uInt8 nValue) +{ + sal_uInt8 sValue[] = { nValue }; + if (!m_pCurrentBuffer) + { + Mapper().startCharacterGroup(); + Mapper().text(sValue, 1); + Mapper().endCharacterGroup(); + } + else + { + m_pCurrentBuffer->push_back(make_pair(BUFFER_STARTRUN, RTFValue::Pointer_t())); + RTFValue::Pointer_t pValue(new RTFValue(*sValue)); + m_pCurrentBuffer->push_back(make_pair(BUFFER_TEXT, pValue)); + m_pCurrentBuffer->push_back(make_pair(BUFFER_ENDRUN, RTFValue::Pointer_t())); + } +} + void RTFDocumentImpl::text(OUString& rString) { bool bRet = true; @@ -1137,22 +1155,7 @@ int RTFDocumentImpl::dispatchDestination(RTFKeyword nKeyword) if (aBuf.toString().equals("EQ")) m_bEq = true; else - { - sal_uInt8 sFieldStart[] = { 0x13 }; - if (!m_pCurrentBuffer) - { - Mapper().startCharacterGroup(); - Mapper().text(sFieldStart, 1); - Mapper().endCharacterGroup(); - } - else - { - m_pCurrentBuffer->push_back(make_pair(BUFFER_STARTRUN, RTFValue::Pointer_t())); - RTFValue::Pointer_t pValue(new RTFValue(*sFieldStart)); - m_pCurrentBuffer->push_back(make_pair(BUFFER_TEXT, pValue)); - m_pCurrentBuffer->push_back(make_pair(BUFFER_ENDRUN, RTFValue::Pointer_t())); - } - } + singleChar(0x13); m_aStates.top().nDestinationState = DESTINATION_FIELDINSTRUCTION; } break; @@ -3096,42 +3099,12 @@ int RTFDocumentImpl::popState() m_aFormfieldSprms->clear(); } if (!m_bEq) - { - sal_uInt8 sFieldSep[] = { 0x14 }; - if (!m_pCurrentBuffer) - { - Mapper().startCharacterGroup(); - Mapper().text(sFieldSep, 1); - Mapper().endCharacterGroup(); - } - else - { - m_pCurrentBuffer->push_back(make_pair(BUFFER_STARTRUN, RTFValue::Pointer_t())); - RTFValue::Pointer_t pValue(new RTFValue(*sFieldSep)); - m_pCurrentBuffer->push_back(make_pair(BUFFER_TEXT, pValue)); - m_pCurrentBuffer->push_back(make_pair(BUFFER_ENDRUN, RTFValue::Pointer_t())); - } - } + singleChar(0x14); } else if (m_aStates.top().nDestinationState == DESTINATION_FIELDRESULT) { if (!m_bEq) - { - sal_uInt8 sFieldEnd[] = { 0x15 }; - if (!m_pCurrentBuffer) - { - Mapper().startCharacterGroup(); - Mapper().text(sFieldEnd, 1); - Mapper().endCharacterGroup(); - } - else - { - m_pCurrentBuffer->push_back(make_pair(BUFFER_STARTRUN, RTFValue::Pointer_t())); - RTFValue::Pointer_t pValue(new RTFValue(*sFieldEnd)); - m_pCurrentBuffer->push_back(make_pair(BUFFER_TEXT, pValue)); - m_pCurrentBuffer->push_back(make_pair(BUFFER_ENDRUN, RTFValue::Pointer_t())); - } - } + singleChar(0x15); else m_bEq = false; } @@ -3542,22 +3515,7 @@ int RTFDocumentImpl::popState() else if (aState.nDestinationState == DESTINATION_FIELD) { if (aState.nFieldStatus == FIELD_INSTRUCTION) - { - sal_uInt8 sFieldEnd[] = { 0x15 }; - if (!m_pCurrentBuffer) - { - Mapper().startCharacterGroup(); - Mapper().text(sFieldEnd, 1); - Mapper().endCharacterGroup(); - } - else - { - m_pCurrentBuffer->push_back(make_pair(BUFFER_STARTRUN, RTFValue::Pointer_t())); - RTFValue::Pointer_t pValue(new RTFValue(*sFieldEnd)); - m_pCurrentBuffer->push_back(make_pair(BUFFER_TEXT, pValue)); - m_pCurrentBuffer->push_back(make_pair(BUFFER_ENDRUN, RTFValue::Pointer_t())); - } - } + singleChar(0x15); } else if (bPopShapeProperties) { diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.hxx b/writerfilter/source/rtftok/rtfdocumentimpl.hxx index 885f75a..84ac9f3 100644 --- a/writerfilter/source/rtftok/rtfdocumentimpl.hxx +++ b/writerfilter/source/rtftok/rtfdocumentimpl.hxx @@ -398,6 +398,8 @@ namespace writerfilter { void resolveSubstream(sal_uInt32 nPos, Id nId, rtl::OUString& rIgnoreFirst); void text(rtl::OUString& rString); + // Sends a single character to dmapper, taking care of buffering. + void singleChar(sal_uInt8 nValue); void parBreak(); void tableBreak(); void checkNeedPap(); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits