From fc219519014d97053dfcf36d6db150d955f2162d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lubo=C5=A1=20Lu=C5=88=C3=A1k?= Date: Mon, 16 May 2011 18:39:57 +0200 Subject: start/end for tblBorders (17.4.13/37), rtl detection missing --- writerfilter/source/dmapper/BorderHandler.cxx | 42 ++++++++++++++++++++------- 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::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::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 @@ -17932,6 +17932,11 @@ + + + + + @@ -17942,6 +17947,11 @@ + + + + + @@ -22810,8 +22820,10 @@ + + -- cgit v1.2.1