sc/source/filter/lotus/lotform.cxx | 46 +++++++++++++++++++------ sw/qa/extras/rtfimport/data/fdo85889-mac.rtf | 3 + sw/qa/extras/rtfimport/data/fdo85889-pc.rtf | 3 + sw/qa/extras/rtfimport/data/fdo85889-pca.rtf | 3 + sw/qa/extras/rtfimport/rtfimport.cxx | 26 ++++++++++++++ writerfilter/source/rtftok/rtfdocumentimpl.cxx | 12 ++++++ 6 files changed, 82 insertions(+), 11 deletions(-)
New commits: commit ff56b125ecf8c7781fe38047cf8cfbf3e52c37d0 Author: Andras Timar <andras.ti...@collabora.com> Date: Mon Nov 24 16:04:20 2014 +0100 import @TERM and @CTERM functions from Lotus 1-2-3 files (related: fdo#86241) Change-Id: I864ad87aa0455c323a5235fa1230d3f2ac3ffbb4 (cherry picked from commit 70ae5bb4182a99c17da8eb32b36baec3e7a48723) diff --git a/sc/source/filter/lotus/lotform.cxx b/sc/source/filter/lotus/lotform.cxx index 3e1fe49..7c6fc45 100644 --- a/sc/source/filter/lotus/lotform.cxx +++ b/sc/source/filter/lotus/lotform.cxx @@ -137,6 +137,30 @@ void LotusToSc::DoFunc( DefTokenId eOc, sal_uInt8 nAnz, const sal_Char* pExtStri eParam[ 2 ] = n0Token; // -> 2. as Default } break; + case ocZZR: + { + OSL_ENSURE( nAnz == 3, + "*LotusToSc::DoFunc(): TERM() or CTERM() need 3 parameters!" ); + nAnz = 4; + if ( OString(pExtString) == "TERM" ) + { + // @TERM(pmt,int,fv) -> NPER(int,-pmt,pv=0,fv) + NegToken( eParam[ 2 ] ); + eParam[ 3 ] = eParam[ 1 ]; + eParam[ 1 ] = aPool.Store( 0.0 ); + } + else //CTERM() + { + // @CTERM(int,fv,pv) -> NPER(int,pmt=0,-pv,fv) + NegToken( eParam[ 0 ] ); + nMerk0 = eParam[ 1 ]; + eParam[ 1 ] = eParam[ 0 ]; + eParam[ 0 ] = nMerk0; + eParam[ 3 ] = eParam[ 2 ]; + eParam[ 2 ] = aPool.Store( 0.0 ); + } + } + break; default:; } @@ -393,7 +417,7 @@ ConvErr LotusToSc::Convert( const ScTokenArray*& rpErg, sal_Int32& rRest, eType = ( pIndexToType )( nOc ); eOc = ( pIndexToToken)( nOc ); - if( eOc == ocNoName ) + if( eOc == ocNoName || eOc == ocZZR ) pExtName = GetAddInName( nOc ); switch( eType ) @@ -742,8 +766,8 @@ FUNC_TYPE LotusToSc::IndexToType( sal_uInt8 nIndex ) FT_NotImpl, // 114 Call() FT_FuncFix1, // 115 @@() FT_FuncFix3, // 116 Rate() - FT_FuncFix1, // 117 Term() - FT_FuncFix1, // 118 Cterm() + FT_FuncFix3, // 117 Term() + FT_FuncFix3, // 118 Cterm() FT_FuncFix3, // 119 Sln() FT_FuncFix4, // 120 Syd(), Soy() FT_FuncFix4, // 121 Ddb() @@ -1006,8 +1030,8 @@ DefTokenId LotusToSc::IndexToToken( sal_uInt8 nIndex ) ocNoName, // 114 Call() ocIndirect, // 115 @@() ocZins, // 116 Rate() - ocNoName, // 117 Term() - ocNoName, // 118 Cterm() + ocZZR, // 117 Term() + ocZZR, // 118 Cterm() ocLIA, // 119 Sln() ocDIA, // 120 Syd(), Soy() ocGDA, // 121 Ddb() @@ -1271,8 +1295,8 @@ FUNC_TYPE LotusToSc::IndexToTypeWK123( sal_uInt8 nIndex ) FT_NotImpl, // 114 App <- change in name FT_FuncFix1, // 115 @@() <- new FT_FuncFix3, // 116 Rate() <- new - FT_FuncFix3, // 117 Term() <- change in quantity - FT_FuncFix3, // 118 Cterm() <- change in quantity + FT_FuncFix3, // 117 Term() + FT_FuncFix3, // 118 Cterm() FT_FuncFix3, // 119 Sln() <- new FT_FuncFix4, // 120 Syd() <- new FT_FuncFix4, // 121 Ddb() <- new @@ -1535,8 +1559,8 @@ DefTokenId LotusToSc::IndexToTokenWK123( sal_uInt8 nIndex ) ocNoName, // 114 Call() ocIndirect, // 115 @@() ocZins, // 116 Rate() - ocNoName, // 117 Term() - ocNoName, // 118 Cterm() + ocZZR, // 117 Term() + ocZZR, // 118 Cterm() ocLIA, // 119 Sln() ocDIA, // 120 Syd(), Soy() ocGDA, // 121 Ddb() @@ -1800,8 +1824,8 @@ const sal_Char* GetAddInName( const sal_uInt8 n ) NULL, // 114 Call() NULL, // 115 @@() NULL, // 116 Rate() - "ANN", // 117 Term() - NULL, // 118 Cterm() + "TERM", // 117 Term() + "CTERM", // 118 Cterm() NULL, // 119 Sln() NULL, // 120 Syd(), Soy() NULL, // 121 Ddb() commit 064ae0887e7c215cb078e5cc4d73f23dcf3be5ef Author: Andras Timar <andras.ti...@collabora.com> Date: Mon Nov 24 11:33:17 2014 +0100 fdo#85889 handle pc, pca and mac rtf keywords in writerfilter Change-Id: Ic54f2233a37562bdc516e440af0b4b7973f56342 (cherry picked from commit 7839633fb356285652ed96f4bf3f85bcd5b561a4) diff --git a/sw/qa/extras/rtfimport/data/fdo85889-mac.rtf b/sw/qa/extras/rtfimport/data/fdo85889-mac.rtf new file mode 100644 index 0000000..8056d47 --- /dev/null +++ b/sw/qa/extras/rtfimport/data/fdo85889-mac.rtf @@ -0,0 +1,3 @@ +{\rtf1\mac \deff0{\fonttbl{\f0\fmodern Helvetica;}} +\pard\f0\fs20 \'f1\'f2\'f3\par +} diff --git a/sw/qa/extras/rtfimport/data/fdo85889-pc.rtf b/sw/qa/extras/rtfimport/data/fdo85889-pc.rtf new file mode 100644 index 0000000..a3b9d27 --- /dev/null +++ b/sw/qa/extras/rtfimport/data/fdo85889-pc.rtf @@ -0,0 +1,3 @@ +{\rtf1\pc \deff0{\fonttbl{\f0\fmodern Helvetica;}} +\pard\f0\fs20 \'f1\'f2\'f3\par +} diff --git a/sw/qa/extras/rtfimport/data/fdo85889-pca.rtf b/sw/qa/extras/rtfimport/data/fdo85889-pca.rtf new file mode 100644 index 0000000..34eeb18 --- /dev/null +++ b/sw/qa/extras/rtfimport/data/fdo85889-pca.rtf @@ -0,0 +1,3 @@ +{\rtf1\pca \deff0{\fonttbl{\f0\fmodern Helvetica;}} +\pard\f0\fs20 \'f1\'f2\'f3\par +} diff --git a/sw/qa/extras/rtfimport/rtfimport.cxx b/sw/qa/extras/rtfimport/rtfimport.cxx index b89472a..7dc67c3 100644 --- a/sw/qa/extras/rtfimport/rtfimport.cxx +++ b/sw/qa/extras/rtfimport/rtfimport.cxx @@ -2181,6 +2181,32 @@ DECLARE_RTFIMPORT_TEST(testChtOutlineNumberingRtf, "chtoutline.rtf") CPPUNIT_ASSERT_EQUAL(OUString(aExpectedPrefix,SAL_N_ELEMENTS(aExpectedPrefix)), aPrefix); CPPUNIT_ASSERT_EQUAL(OUString(aExpectedSuffix,SAL_N_ELEMENTS(aExpectedSuffix)), aSuffix); } + +DECLARE_RTFIMPORT_TEST(testFdo85889pc, "fdo85889-pc.rtf") +{ + uno::Reference<text::XTextRange> xTextRange = getRun(getParagraph(1), 1); + + OUString aExpected("\xc2\xb1\xe2\x89\xa5\xe2\x89\xa4", 8, RTL_TEXTENCODING_UTF8); + CPPUNIT_ASSERT_EQUAL(aExpected, xTextRange->getString()); +} + +DECLARE_RTFIMPORT_TEST(testFdo85889pca, "fdo85889-pca.rtf") +{ + uno::Reference<text::XTextRange> xTextRange = getRun(getParagraph(1), 1); + + OUString aExpected("\xc2\xb1\xe2\x80\x97\xc2\xbe", 7, RTL_TEXTENCODING_UTF8); + CPPUNIT_ASSERT_EQUAL(aExpected, xTextRange->getString()); +} + +DECLARE_RTFIMPORT_TEST(testFdo85889mac, "fdo85889-mac.rtf") +{ + uno::Reference<text::XTextRange> xTextRange = getRun(getParagraph(1), 1); + + OUString aExpected("\xc3\x92\xc3\x9a\xc3\x9b", 6, RTL_TEXTENCODING_UTF8); + CPPUNIT_ASSERT_EQUAL(aExpected, xTextRange->getString()); +} + + CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx b/writerfilter/source/rtftok/rtfdocumentimpl.cxx index 5e69009..859ca82 100644 --- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx +++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx @@ -2914,6 +2914,18 @@ int RTFDocumentImpl::dispatchFlag(RTFKeyword nKeyword) case RTF_ANSI: m_aStates.top().nCurrentEncoding = RTL_TEXTENCODING_MS_1252; break; + case RTF_MAC: + m_nCurrentEncoding = RTL_TEXTENCODING_APPLE_ROMAN; + m_aStates.top().nCurrentEncoding = m_nCurrentEncoding; + break; + case RTF_PC: + m_nCurrentEncoding = RTL_TEXTENCODING_IBM_437; + m_aStates.top().nCurrentEncoding = m_nCurrentEncoding; + break; + case RTF_PCA: + m_nCurrentEncoding = RTL_TEXTENCODING_IBM_850; + m_aStates.top().nCurrentEncoding = m_nCurrentEncoding; + break; case RTF_PLAIN: { m_aStates.top().aCharacterSprms = getDefaultState().aCharacterSprms; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits