summaryrefslogtreecommitdiff
path: root/writerfilter/source/dmapper/BorderHandler.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'writerfilter/source/dmapper/BorderHandler.cxx')
-rw-r--r--writerfilter/source/dmapper/BorderHandler.cxx42
1 files changed, 31 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;
}
}