diff options
author | Miklos Vajna <vmiklos@collabora.co.uk> | 2013-10-31 15:23:12 +0100 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.co.uk> | 2013-10-31 15:50:00 +0100 |
commit | fbe12f72bc59ca0b202d972ee098d16f66195c13 (patch) | |
tree | a6e626a980182840f269beacd2c366440e57592c | |
parent | fc68745898647e1b9070459be43c5d1e0e933150 (diff) |
DOCX filter: roundtrip more table cell border properties for table styles
Change-Id: Ia93bd2083b00f62770970a4efa783b6b19967acb
-rw-r--r-- | sw/qa/extras/ooxmlexport/ooxmlexport.cxx | 1 | ||||
-rw-r--r-- | sw/source/filter/ww8/docxtablestyleexport.cxx | 16 | ||||
-rw-r--r-- | writerfilter/source/dmapper/TDefTableHandler.cxx | 32 |
3 files changed, 45 insertions, 4 deletions
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx index 32f592505f10..f63dd4af040a 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx @@ -1320,6 +1320,7 @@ DECLARE_OOXML_TEST(testCalendar1, "calendar1.docx") assertXPath(pXmlStyles, "/w:styles/w:style[@w:styleId='Calendar1']/w:tblStylePr[@w:type='firstRow']/w:tblPr", 1); assertXPath(pXmlStyles, "/w:styles/w:style[@w:styleId='Calendar1']/w:tblStylePr[@w:type='firstRow']/w:tcPr/w:vAlign", "val", "bottom"); assertXPath(pXmlStyles, "/w:styles/w:style[@w:styleId='Calendar1']/w:tblStylePr[@w:type='lastRow']/w:tcPr/w:tcBorders/w:tr2bl", "val", "nil"); + assertXPath(pXmlStyles, "/w:styles/w:style[@w:styleId='Calendar1']/w:tblStylePr[@w:type='band2Horz']/w:tcPr/w:tcBorders/w:top", "themeColor", "text1"); } DECLARE_OOXML_TEST(testSmartart, "smartart.docx") diff --git a/sw/source/filter/ww8/docxtablestyleexport.cxx b/sw/source/filter/ww8/docxtablestyleexport.cxx index 9aaad80ad22e..940301f796dc 100644 --- a/sw/source/filter/ww8/docxtablestyleexport.cxx +++ b/sw/source/filter/ww8/docxtablestyleexport.cxx @@ -91,6 +91,15 @@ void lcl_TableStyleTblCellMar(sax_fastparser::FSHelperPtr pSerializer, uno::Sequ pSerializer->endElementNS(XML_w, XML_tblCellMar); } +static DocxStringTokenMap const aTcBorderTokens[] = { + {"val", XML_val}, + {"sz", XML_sz}, + {"color", XML_color}, + {"space", XML_space}, + {"themeColor", XML_themeColor}, + {0, 0} +}; + /// Export of a given table cell border type in a table style. void lcl_TableStyleTcBorder(sax_fastparser::FSHelperPtr pSerializer, sal_Int32 nToken, const uno::Sequence<beans::PropertyValue>& rTcBorder) { @@ -99,10 +108,9 @@ void lcl_TableStyleTcBorder(sax_fastparser::FSHelperPtr pSerializer, sal_Int32 n sax_fastparser::FastAttributeList* pAttributeList = pSerializer->createAttrList(); for (sal_Int32 i = 0; i < rTcBorder.getLength(); ++i) - { - if (rTcBorder[i].Name == "val") - pAttributeList->add(FSNS(XML_w, XML_val), OUStringToOString(rTcBorder[i].Value.get<OUString>(), RTL_TEXTENCODING_UTF8).getStr()); - } + if (sal_Int32 nAttrToken = DocxStringGetToken(aTcBorderTokens, rTcBorder[i].Name)) + pAttributeList->add(FSNS(XML_w, nAttrToken), OUStringToOString(rTcBorder[i].Value.get<OUString>(), RTL_TEXTENCODING_UTF8).getStr()); + sax_fastparser::XFastAttributeListRef xAttributeList(pAttributeList); pSerializer->singleElementNS(XML_w, nToken, xAttributeList); } diff --git a/writerfilter/source/dmapper/TDefTableHandler.cxx b/writerfilter/source/dmapper/TDefTableHandler.cxx index 5e9c5b5d46ac..f242f2817454 100644 --- a/writerfilter/source/dmapper/TDefTableHandler.cxx +++ b/writerfilter/source/dmapper/TDefTableHandler.cxx @@ -21,6 +21,7 @@ #include <ConversionHelper.hxx> #include <ooxml/resourceids.hxx> #include <doctok/resourceids.hxx> +#include <filter/msfilter/util.hxx> #include <com/sun/star/table/BorderLine2.hpp> #include <com/sun/star/text/TableColumnSeparator.hpp> #include <com/sun/star/text/VertOrientation.hpp> @@ -249,6 +250,32 @@ OUString lcl_getBorderTypeString(sal_Int32 nType) return OUString(); } +OUString lcl_getThemeColorTypeString(sal_Int32 nType) +{ + switch (nType) + { + case NS_ooxml::LN_Value_St_ThemeColor_dark1: return OUString("dark1"); + case NS_ooxml::LN_Value_St_ThemeColor_light1: return OUString("light1"); + case NS_ooxml::LN_Value_St_ThemeColor_dark2: return OUString("dark2"); + case NS_ooxml::LN_Value_St_ThemeColor_light2: return OUString("light2"); + case NS_ooxml::LN_Value_St_ThemeColor_accent1: return OUString("accent1"); + case NS_ooxml::LN_Value_St_ThemeColor_accent2: return OUString("accent2"); + case NS_ooxml::LN_Value_St_ThemeColor_accent3: return OUString("accent3"); + case NS_ooxml::LN_Value_St_ThemeColor_accent4: return OUString("accent4"); + case NS_ooxml::LN_Value_St_ThemeColor_accent5: return OUString("accent5"); + case NS_ooxml::LN_Value_St_ThemeColor_accent6: return OUString("accent6"); + case NS_ooxml::LN_Value_St_ThemeColor_hyperlink: return OUString("hyperlink"); + case NS_ooxml::LN_Value_St_ThemeColor_followedHyperlink: return OUString("followedHyperlink"); + case NS_ooxml::LN_Value_St_ThemeColor_none: return OUString("none"); + case NS_ooxml::LN_Value_St_ThemeColor_background1: return OUString("background1"); + case NS_ooxml::LN_Value_St_ThemeColor_text1: return OUString("text1"); + case NS_ooxml::LN_Value_St_ThemeColor_background2: return OUString("background2"); + case NS_ooxml::LN_Value_St_ThemeColor_text2: return OUString("text2"); + default: break; + } + return OUString(); +} + void TDefTableHandler::lcl_attribute(Id rName, Value & rVal) { sal_Int32 nIntValue = rVal.getInt(); @@ -301,6 +328,7 @@ void TDefTableHandler::lcl_attribute(Id rName, Value & rVal) case NS_rtf::LN_DPTLINEWIDTH: // 0x2871 // width of a single line in 1/8 pt, max of 32 pt -> twip * 5 / 2. m_nLineWidth = nIntValue * 5 / 2; + appendGrabBag("sz", OUString::number(nIntValue)); break; case NS_rtf::LN_BRCTYPE: // 0x2872 m_nLineType = nIntValue; @@ -308,9 +336,11 @@ void TDefTableHandler::lcl_attribute(Id rName, Value & rVal) break; case NS_ooxml::LN_CT_Border_color: case NS_rtf::LN_ICO: // 0x2873 + appendGrabBag("color", OStringToOUString(msfilter::util::ConvertColor(nIntValue), RTL_TEXTENCODING_UTF8)); m_nLineColor = nIntValue; break; case NS_rtf::LN_DPTSPACE: // 0x2874 + appendGrabBag("space", OUString::number(nIntValue)); m_nLineDistance = nIntValue; break; case NS_rtf::LN_FSHADOW: // 0x2875 @@ -320,6 +350,8 @@ void TDefTableHandler::lcl_attribute(Id rName, Value & rVal) // ignored break; case NS_ooxml::LN_CT_Border_themeColor: + appendGrabBag("themeColor", lcl_getThemeColorTypeString(nIntValue)); + break; case NS_ooxml::LN_CT_Border_themeTint: case NS_ooxml::LN_CT_Border_themeShade: // ignored |