diff options
author | Luboš Luňák <l.lunak@suse.cz> | 2011-05-16 18:39:57 +0200 |
---|---|---|
committer | Luboš Luňák <l.lunak@suse.cz> | 2011-05-16 18:54:14 +0200 |
commit | fc219519014d97053dfcf36d6db150d955f2162d (patch) | |
tree | 0be678928285c60499af24651d98ab1495797d8c | |
parent | 5b16dfdc6f02e2783315f7244dc19e0a280cf02b (diff) |
start/end for tblBorders (17.4.13/37), rtl detection missing
-rw-r--r-- | writerfilter/source/dmapper/BorderHandler.cxx | 42 | ||||
-rw-r--r-- | writerfilter/source/ooxml/model.xml | 12 |
2 files changed, 43 insertions, 11 deletions
diff --git a/writerfilter/source/dmapper/BorderHandler.cxx b/writerfilter/source/dmapper/BorderHandler.cxx index 85fe714c25e3..90e8456ca3b3 100644 --- a/writerfilter/source/dmapper/BorderHandler.cxx +++ b/writerfilter/source/dmapper/BorderHandler.cxx @@ -106,25 +106,45 @@ void BorderHandler::lcl_attribute(Id rName, Value & rVal) void BorderHandler::lcl_sprm(Sprm & rSprm) { + BorderPosition pos = BORDER_COUNT; // invalid pos + bool rtl = false; // TODO detect switch( rSprm.getId()) { case NS_ooxml::LN_CT_TblBorders_top: + pos = BORDER_TOP; + break; + case NS_ooxml::LN_CT_TblBorders_start: + pos = rtl ? BORDER_RIGHT : BORDER_LEFT; + break; case NS_ooxml::LN_CT_TblBorders_left: + pos = BORDER_LEFT; + break; case NS_ooxml::LN_CT_TblBorders_bottom: + pos = BORDER_BOTTOM; + break; + case NS_ooxml::LN_CT_TblBorders_end: + pos = rtl ? BORDER_LEFT : BORDER_RIGHT; + break; case NS_ooxml::LN_CT_TblBorders_right: + pos = BORDER_RIGHT; + break; case NS_ooxml::LN_CT_TblBorders_insideH: + pos = BORDER_HORIZONTAL; + break; case NS_ooxml::LN_CT_TblBorders_insideV: - { - writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps(); - if( pProperties.get()) - pProperties->resolve(*this); - ConversionHelper::MakeBorderLine( m_nLineWidth, m_nLineType, m_nLineColor, - m_aBorderLines[rSprm.getId() - NS_ooxml::LN_CT_TblBorders_top], m_bOOXML ); - - m_aFilledLines[ rSprm.getId( ) - NS_ooxml::LN_CT_TblBorders_top] = true; - } - break; - default:; + pos = BORDER_VERTICAL; + break; + default: + break; + } + if( pos != BORDER_COUNT ) + { + writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps(); + if( pProperties.get()) + pProperties->resolve(*this); + ConversionHelper::MakeBorderLine( m_nLineWidth, m_nLineType, m_nLineColor, + m_aBorderLines[ pos ], m_bOOXML ); + m_aFilledLines[ pos ] = true; } } diff --git a/writerfilter/source/ooxml/model.xml b/writerfilter/source/ooxml/model.xml index e715fe7c3142..1e1e0d9dc0d6 100644 --- a/writerfilter/source/ooxml/model.xml +++ b/writerfilter/source/ooxml/model.xml @@ -17933,6 +17933,11 @@ </element> </optional> <optional> + <element name="start"> + <ref name="CT_Border"/> + </element> + </optional> + <optional> <element name="left"> <ref name="CT_Border"/> </element> @@ -17943,6 +17948,11 @@ </element> </optional> <optional> + <element name="end"> + <ref name="CT_Border"/> + </element> + </optional> + <optional> <element name="right"> <ref name="CT_Border"/> </element> @@ -22810,8 +22820,10 @@ <resource name="CT_TblBorders" resource="Properties" tag="table"> <kind name="table"/> <element name="top" tokenid="ooxml:CT_TblBorders_top"/> + <element name="start" tokenid="ooxml:CT_TblBorders_start"/> <element name="left" tokenid="ooxml:CT_TblBorders_left"/> <element name="bottom" tokenid="ooxml:CT_TblBorders_bottom"/> + <element name="end" tokenid="ooxml:CT_TblBorders_end"/> <element name="right" tokenid="ooxml:CT_TblBorders_right"/> <element name="insideH" tokenid="ooxml:CT_TblBorders_insideH"/> <element name="insideV" tokenid="ooxml:CT_TblBorders_insideV"/> |