[REVIEW:3-5] fdo#38786 RTF import ignores \chpgn

2012-05-10 Thread Miklos Vajna
Hi,

Today's RTF regression fix. :-)

See
http://cgit.freedesktop.org/libreoffice/core/commit/?id=116016d

It depends on a trivial refactoring:
http://cgit.freedesktop.org/libreoffice/core/commit/?id=f1fdcde

I'm attaching a backport of both.

Thanks,

Miklos
From 3db2211850ec4b1f07ad0208942945719ef344ad Mon Sep 17 00:00:00 2001
From: Miklos Vajna vmik...@suse.cz
Date: Wed, 25 Apr 2012 11:28:49 +0200
Subject: [PATCH 1/2] avoid code duplication by introducing
 RTFDocumentImpl::singleChar

---
 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 f36e763..0a93829a 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
-{
-

[PUSHED][3-5] Re: [REVIEW:3-5] fdo#38786 RTF import ignores \chpgn

2012-05-10 Thread Michael Stahl
On 10/05/12 12:36, Miklos Vajna wrote:
 Hi,
 
 Today's RTF regression fix. :-)
 
 See
 http://cgit.freedesktop.org/libreoffice/core/commit/?id=116016d
 
 It depends on a trivial refactoring:
 http://cgit.freedesktop.org/libreoffice/core/commit/?id=f1fdcde
 
 I'm attaching a backport of both.

pushed to libreoffice-3-5

___
LibreOffice mailing list
LibreOffice@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice