[Libreoffice-commits] core.git: Branch 'libreoffice-5-1' - 2 commits - sax/source sw/qa writerfilter/source
Guillaume Smaha
guillaume.smaha at gmail.com
Thu Jan 14 05:59:43 PST 2016
sax/source/tools/fastserializer.cxx | 25 --------
sw/qa/extras/ooxmlexport/data/nonbmpchar.docx |binary
sw/qa/extras/ooxmlexport/ooxmlexport5.cxx | 9 +++
sw/qa/extras/rtfimport/data/landscape.rtf | 13 ++++
sw/qa/extras/rtfimport/data/lndscpsxn.rtf | 17 +++++
sw/qa/extras/rtfimport/rtfimport.cxx | 73 +++++++++++++++++++++++++
writerfilter/source/rtftok/rtfdocumentimpl.cxx | 9 ++-
7 files changed, 122 insertions(+), 24 deletions(-)
New commits:
commit adef474252f8b5ad97c1ee004783d8223c4bde11
Author: Guillaume Smaha <guillaume.smaha at gmail.com>
Date: Wed Nov 25 10:18:51 2015 +0100
RTF import, fix landscape flag & implement lndscpsxn
Reviewed-on: https://gerrit.libreoffice.org/20163
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Mark Hung <marklh9 at gmail.com>
Tested-by: Mark Hung <marklh9 at gmail.com>
Reviewed-by: Michael Stahl <mstahl at redhat.com>
(cherry picked from commit cbc0c1b64bff517b27104c6335d45fb59a884931)
Change-Id: Id2e8e9c1a9686fd674d712498acb7374a81077d7
Signed-off-by: Michael Stahl <mstahl at redhat.com>
diff --git a/sw/qa/extras/rtfimport/data/landscape.rtf b/sw/qa/extras/rtfimport/data/landscape.rtf
new file mode 100644
index 0000000..9bbc3f7
--- /dev/null
+++ b/sw/qa/extras/rtfimport/data/landscape.rtf
@@ -0,0 +1,13 @@
+{\rtf1 \ansi \landscape \paperw16837 \paperh11905
+{\sectd
+Test
+\par
+\sect}
+{\sectd
+TEST
+\par
+\sect}
+{\sectd
+Test
+\par}
+}
diff --git a/sw/qa/extras/rtfimport/data/lndscpsxn.rtf b/sw/qa/extras/rtfimport/data/lndscpsxn.rtf
new file mode 100644
index 0000000..d904a54
--- /dev/null
+++ b/sw/qa/extras/rtfimport/data/lndscpsxn.rtf
@@ -0,0 +1,17 @@
+{\rtf1 \ansi
+{\sectd \paperw16837 \paperh11905 \lndscpsxn
+Test
+\par
+\sect}
+{\sectd \paperw11905 \paperh16837
+TEST
+\par
+\sect}
+{\sectd \paperw16837 \paperh11905 \lndscpsxn
+Test
+\par
+\sect}
+{\sectd \paperw11905 \paperh16837
+TEST
+\par}
+}
diff --git a/sw/qa/extras/rtfimport/rtfimport.cxx b/sw/qa/extras/rtfimport/rtfimport.cxx
index 36eaf03..f7e16fc 100644
--- a/sw/qa/extras/rtfimport/rtfimport.cxx
+++ b/sw/qa/extras/rtfimport/rtfimport.cxx
@@ -2373,6 +2373,79 @@ DECLARE_RTFIMPORT_TEST(testTdf59454, "tdf59454.rtf")
CPPUNIT_ASSERT_EQUAL(2, getPages());
}
+DECLARE_RTFIMPORT_TEST(testLndscpsxn, "lndscpsxn.rtf")
+{
+ // Check landscape flag.
+ CPPUNIT_ASSERT_EQUAL(4, getPages());
+
+ uno::Reference<container::XNameAccess> pageStyles = getStyles("PageStyles");
+
+ // get a page cursor
+ uno::Reference<frame::XModel> xModel(mxComponent, uno::UNO_QUERY);
+ uno::Reference<text::XTextViewCursorSupplier> xTextViewCursorSupplier(
+ xModel->getCurrentController(), uno::UNO_QUERY);
+ uno::Reference<text::XPageCursor> xCursor(
+ xTextViewCursorSupplier->getViewCursor(), uno::UNO_QUERY);
+
+ // check that the first page has landscape flag
+ xCursor->jumpToFirstPage();
+ OUString pageStyleName = getProperty<OUString>(xCursor, "PageStyleName");
+ uno::Reference<style::XStyle> xStylePage(pageStyles->getByName(pageStyleName), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(sal_True, getProperty<sal_Bool>(xStylePage, "IsLandscape"));
+
+ // check that the second page has no landscape flag
+ xCursor->jumpToPage(2);
+ pageStyleName = getProperty<OUString>(xCursor, "PageStyleName");
+ xStylePage.set(pageStyles->getByName(pageStyleName), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(sal_False, getProperty<sal_Bool>(xStylePage, "IsLandscape"));
+
+ // check that the third page has landscape flag
+ xCursor->jumpToPage(3);
+ pageStyleName = getProperty<OUString>(xCursor, "PageStyleName");
+ xStylePage.set(pageStyles->getByName(pageStyleName), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(sal_True, getProperty<sal_Bool>(xStylePage, "IsLandscape"));
+
+ // check that the last page has no landscape flag
+ xCursor->jumpToLastPage();
+ pageStyleName = getProperty<OUString>(xCursor, "PageStyleName");
+ xStylePage.set(pageStyles->getByName(pageStyleName), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(sal_False, getProperty<sal_Bool>(xStylePage, "IsLandscape"));
+}
+
+DECLARE_RTFIMPORT_TEST(testLandscape, "landscape.rtf")
+{
+ // Check landscape flag.
+ CPPUNIT_ASSERT_EQUAL(3, getPages());
+
+ // All pages should have flag orientiation
+ uno::Reference<container::XNameAccess> pageStyles = getStyles("PageStyles");
+
+ // get a page cursor
+ uno::Reference<frame::XModel> xModel(mxComponent, uno::UNO_QUERY);
+ uno::Reference<text::XTextViewCursorSupplier> xTextViewCursorSupplier(
+ xModel->getCurrentController(), uno::UNO_QUERY);
+ uno::Reference<text::XPageCursor> xCursor(
+ xTextViewCursorSupplier->getViewCursor(), uno::UNO_QUERY);
+
+ // check that the first page has landscape flag
+ xCursor->jumpToFirstPage();
+ OUString pageStyleName = getProperty<OUString>(xCursor, "PageStyleName");
+ uno::Reference<style::XStyle> xStylePage(pageStyles->getByName(pageStyleName), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(sal_True, getProperty<sal_Bool>(xStylePage, "IsLandscape"));
+
+ // check that the second page has landscape flag
+ xCursor->jumpToPage(2);
+ pageStyleName = getProperty<OUString>(xCursor, "PageStyleName");
+ xStylePage.set(pageStyles->getByName(pageStyleName), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(sal_True, getProperty<sal_Bool>(xStylePage, "IsLandscape"));
+
+ // check that the last page has landscape flag
+ xCursor->jumpToLastPage();
+ pageStyleName = getProperty<OUString>(xCursor, "PageStyleName");
+ xStylePage.set(pageStyles->getByName(pageStyleName), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(sal_True, getProperty<sal_Bool>(xStylePage, "IsLandscape"));
+}
+
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 2c32453..9748fe6 100644
--- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx
+++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
@@ -3487,7 +3487,14 @@ RTFError RTFDocumentImpl::dispatchFlag(RTFKeyword nKeyword)
case RTF_LANDSCAPE:
{
auto pValue = std::make_shared<RTFValue>(NS_ooxml::LN_Value_ST_PageOrientation_landscape);
- lcl_putNestedAttribute(m_aStates.top().aSectionSprms, NS_ooxml::LN_EG_SectPrContents_pgSz, NS_ooxml::LN_CT_PageSz_orient, pValue);
+ lcl_putNestedAttribute(m_aDefaultState.aSectionSprms,
+ NS_ooxml::LN_EG_SectPrContents_pgSz, NS_ooxml::LN_CT_PageSz_orient, pValue);
+ }
+ case RTF_LNDSCPSXN:
+ {
+ auto pValue = std::make_shared<RTFValue>(NS_ooxml::LN_Value_ST_PageOrientation_landscape);
+ lcl_putNestedAttribute(m_aStates.top().aSectionSprms,
+ NS_ooxml::LN_EG_SectPrContents_pgSz, NS_ooxml::LN_CT_PageSz_orient, pValue);
}
break;
case RTF_SHPBXPAGE:
commit e99f22bbc499ab0566621ee0bb01e4a7747efe76
Author: Mark Hung <marklh9 at gmail.com>
Date: Sun Jan 10 00:28:14 2016 +0800
Fix FastSaxSerializer::write() for non-BMP unicode characters.
Reviewed-on: https://gerrit.libreoffice.org/21293
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Michael Stahl <mstahl at redhat.com>
(cherry picked from commit 7ec5ba47783ac8b2d0141109d0efe6b20b363ced)
Signed-off-by: Michael Stahl <mstahl at redhat.com>
Change-Id: I6ee9d028813c970b9ac5b9f0574af932e73111bd
diff --git a/sax/source/tools/fastserializer.cxx b/sax/source/tools/fastserializer.cxx
index 37ed847..8437ff0 100644
--- a/sax/source/tools/fastserializer.cxx
+++ b/sax/source/tools/fastserializer.cxx
@@ -94,29 +94,8 @@ namespace sax_fastparser {
void FastSaxSerializer::write( const OUString& sOutput, bool bEscape )
{
- const sal_Int32 nLength = sOutput.getLength();
- for (sal_Int32 i = 0; i < nLength; ++i)
- {
- const sal_Unicode cUnicode = sOutput[ i ];
- const char cChar = cUnicode;
- if (cUnicode & 0xff80)
- {
- write( OString(&cUnicode, 1, RTL_TEXTENCODING_UTF8) );
- }
- else if(bEscape) switch( cChar )
- {
- case '<': writeBytes( "<", 4 ); break;
- case '>': writeBytes( ">", 4 ); break;
- case '&': writeBytes( "&", 5 ); break;
- case '\'': writeBytes( "'", 6 ); break;
- case '"': writeBytes( """, 6 ); break;
- case '\n': writeBytes( "
", 5 ); break;
- case '\r': writeBytes( "
", 5 ); break;
- default: writeBytes( &cChar, 1 ); break;
- }
- else
- writeBytes( &cChar, 1 );
- }
+ write( sOutput.toUtf8(), bEscape );
+
}
void FastSaxSerializer::write( const OString& sOutput, bool bEscape )
diff --git a/sw/qa/extras/ooxmlexport/data/nonbmpchar.docx b/sw/qa/extras/ooxmlexport/data/nonbmpchar.docx
new file mode 100644
index 0000000..a6b5d41
Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/nonbmpchar.docx differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport5.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport5.cxx
index 3626d57..f66aeca 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport5.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport5.cxx
@@ -970,6 +970,15 @@ DECLARE_OOXMLEXPORT_TEST(testOO106020, "ooo106020-1.odt")
assertXPath(pXmlDoc, "//w:tbl", 1);
}
+DECLARE_OOXMLEXPORT_TEST(testNonBMPChar, "nonbmpchar.docx")
+{
+ sal_uInt32 nCh = 0x24b62;
+ OUString aExpected( &nCh, 1);
+ // Assert that UTF8 encoded non-BMP Unicode character is correct
+ uno::Reference<text::XTextRange> xTextRange1 = getRun(getParagraph(1), 1);
+ CPPUNIT_ASSERT_EQUAL(aExpected, xTextRange1->getString());
+}
+
CPPUNIT_PLUGIN_IMPLEMENT();
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
More information about the Libreoffice-commits
mailing list