summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.co.uk>2014-02-10 09:39:16 +0100
committerMiklos Vajna <vmiklos@collabora.co.uk>2014-02-10 09:58:14 +0100
commit6b5ef795ed4a56195bf09633b03e88474f0b133c (patch)
tree8bec769bc97668d42856083a88ab043e5587835b
parentada1e6d83202d34871c6f6c9d2f521be3f0bbda5 (diff)
fdo#74709 RTF import: implement RTF_CLPAD*
Change-Id: I482735e3fc4091be983b2c7484e086f5d0dd283a
-rw-r--r--sw/qa/extras/rtfexport/data/fdo74709.rtf32
-rw-r--r--sw/qa/extras/rtfexport/rtfexport.cxx7
-rw-r--r--writerfilter/source/rtftok/rtfdocumentimpl.cxx28
3 files changed, 67 insertions, 0 deletions
diff --git a/sw/qa/extras/rtfexport/data/fdo74709.rtf b/sw/qa/extras/rtfexport/data/fdo74709.rtf
new file mode 100644
index 000000000000..c521084d2418
--- /dev/null
+++ b/sw/qa/extras/rtfexport/data/fdo74709.rtf
@@ -0,0 +1,32 @@
+{\rtf1\ansi\deff4\adeflang1025
+\deftab720
+\viewscale100
+{\*\pgdsctbl
+{\pgdsc0\pgdscuse451\pgwsxn11906\pghsxn16838\marglsxn1134\margrsxn1134\margtsxn1134\margbsxn1134\pgdscnxt0 Default Style;}
+}
+\formshade\paperh16838\paperw11906\margl1134\margr1134\margt1134\margb1134\sectd\sbknone\sectunlocked1\pgndec\pgwsxn11906\pghsxn16838\marglsxn1134\margrsxn1134\margtsxn1134\margbsxn1134\ftnbj\ftnstart1\ftnrstcont\ftnnar\aenddoc\aftnrstcont\aftnstart1\aftnnrlc
+\trowd\trql\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0
+\clbrdrt\brdrhair\brdrw1\brdrcf1\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx4819
+\clbrdrt\brdrhair\brdrw1\brdrcf1\clpadfl3\clpadl58
+\clbrdrl\brdrhair\brdrw1\brdrcf1\clpadft3\clpadt58
+\clbrdrb\brdrhair\brdrw1\brdrcf1\clpadfb3\clpadb58
+\clbrdrr\brdrhair\brdrw1\brdrcf1\clpadfr3\clpadr360\cellx9638
+\pgndec\pard\plain \s20\noline\intbl\qr
+{\rtlch \ltrch\loch 1.23}
+\cell
+\pard\plain \s20\noline\intbl\qr
+{\rtlch \ltrch\loch 4.56}
+\cell\row
+\pard\trowd\trql\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0
+\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx4819
+\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\clbrdrr\brdrhair\brdrw1\brdrcf1\cellx9638
+\pard\plain \s20\noline\intbl
+{\rtlch \ltrch\loch first word}
+\cell
+\pard\plain \s20\noline\intbl
+{\rtlch \ltrch\loch second word}
+\cell\row
+\pard\pard\plain \s0\nowidctlpar
+{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}
+\cf0\kerning1\dbch\af5\langfe2052\dbch\af6\afs24\alang1081\loch\f4\fs24\lang2057\rtlch \ltrch\loch
+\par }
diff --git a/sw/qa/extras/rtfexport/rtfexport.cxx b/sw/qa/extras/rtfexport/rtfexport.cxx
index 49e7dfbef316..8d5b2147c5f1 100644
--- a/sw/qa/extras/rtfexport/rtfexport.cxx
+++ b/sw/qa/extras/rtfexport/rtfexport.cxx
@@ -595,6 +595,13 @@ DECLARE_RTFEXPORT_TEST(testFdo68787, "fdo68787.rtf")
CPPUNIT_ASSERT_EQUAL(sal_Int32(25), getProperty<sal_Int32>(xPageStyle, "FootnoteLineRelativeWidth"));
}
+DECLARE_RTFEXPORT_TEST(testFdo74709, "fdo74709.rtf")
+{
+ uno::Reference<table::XCell> xCell = getCell(getParagraphOrTable(1), "B1");
+ // This was 0, as top/bottom/left/right padding wasn't imported.
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(TWIP_TO_MM100(360)), getProperty<sal_Int32>(xCell, "RightBorderDistance"));
+}
+
#endif
CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
index 4ba2ea3f91a2..d6845b723805 100644
--- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx
+++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
@@ -3734,6 +3734,34 @@ int RTFDocumentImpl::dispatchValue(RTFKeyword nKeyword, int nParam)
case RTF_TS:
m_aStates.top().bHasTableStyle = true;
break;
+ case RTF_CLPADB:
+ case RTF_CLPADL:
+ case RTF_CLPADR:
+ case RTF_CLPADT:
+ {
+ RTFSprms aAttributes;
+ aAttributes.set(NS_ooxml::LN_CT_TblWidth_type, RTFValue::Pointer_t(new RTFValue(NS_ooxml::LN_Value_ST_TblWidth_dxa)));
+ aAttributes.set(NS_ooxml::LN_CT_TblWidth_w, RTFValue::Pointer_t(new RTFValue(nParam)));
+ switch (nKeyword)
+ {
+ case RTF_CLPADB:
+ nSprm = NS_ooxml::LN_CT_TcMar_bottom;
+ break;
+ case RTF_CLPADL:
+ nSprm = NS_ooxml::LN_CT_TcMar_left;
+ break;
+ case RTF_CLPADR:
+ nSprm = NS_ooxml::LN_CT_TcMar_right;
+ break;
+ case RTF_CLPADT:
+ nSprm = NS_ooxml::LN_CT_TcMar_top;
+ break;
+ default:
+ break;
+ }
+ lcl_putNestedSprm(m_aStates.top().aTableCellSprms, NS_ooxml::LN_CT_TcPrBase_tcMar, nSprm, RTFValue::Pointer_t(new RTFValue(aAttributes)));
+ }
+ break;
default:
{
SAL_INFO("writerfilter", "TODO handle value '" << lcl_RtfToString(nKeyword) << "'");