diff options
author | Miklos Vajna <vmiklos@suse.cz> | 2012-04-25 11:28:49 +0200 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2012-05-10 15:56:48 +0200 |
commit | 470c54202cedc4a36cbf28b38e50af44708606a0 (patch) | |
tree | 6bb07bd25878bfa42b5256cba0a37f42a7721c99 | |
parent | 414152c1ed10ec01b6ea385960c53304e4ec95cc (diff) |
avoid code duplication by introducing RTFDocumentImpl::singleChar
Signed-off-by: Michael Stahl <mstahl@redhat.com>
-rw-r--r-- | writerfilter/source/rtftok/rtfdocumentimpl.cxx | 86 | ||||
-rw-r--r-- | 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(); |