From 470c54202cedc4a36cbf28b38e50af44708606a0 Mon Sep 17 00:00:00 2001 From: Miklos Vajna Date: Wed, 25 Apr 2012 11:28:49 +0200 Subject: avoid code duplication by introducing RTFDocumentImpl::singleChar Signed-off-by: Michael Stahl --- writerfilter/source/rtftok/rtfdocumentimpl.cxx | 86 +++++++------------------- writerfilter/source/rtftok/rtfdocumentimpl.hxx | 2 + 2 files changed, 24 insertions(+), 64 deletions(-) diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx b/writerfilter/source/rtftok/rtfdocumentimpl.cxx index f36e76391f7e..0a93829a2f6a 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 885f75a769f4..84ac9f32c521 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(); -- cgit v1.2.3