[Libreoffice-commits] .: writerfilter/source

Lubos Lunak llunak at kemper.freedesktop.org
Mon May 16 09:54:30 PDT 2011


 writerfilter/source/dmapper/BorderHandler.cxx |   46 ++++++++++++++++++--------
 writerfilter/source/ooxml/model.xml           |   12 ++++++
 2 files changed, 45 insertions(+), 13 deletions(-)

New commits:
commit 1ab68aca278e0d1177e07069a3e09343f8562bf0
Author: Luboš Luňák <l.lunak at suse.cz>
Date:   Mon May 16 18:39:57 2011 +0200

    start/end for tblBorders (17.4.13/37), rtl detection missing

diff --git a/writerfilter/source/dmapper/BorderHandler.cxx b/writerfilter/source/dmapper/BorderHandler.cxx
index 7a26c54..c6de9d7 100644
--- a/writerfilter/source/dmapper/BorderHandler.cxx
+++ b/writerfilter/source/dmapper/BorderHandler.cxx
@@ -106,26 +106,46 @@ 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:
-        case NS_ooxml::LN_CT_TblBorders_bottom: 
+            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;
+    }
 }
 
 PropertyMapPtr  BorderHandler::getProperties()
diff --git a/writerfilter/source/ooxml/model.xml b/writerfilter/source/ooxml/model.xml
index e715fe7..1e1e0d9 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"/>


More information about the Libreoffice-commits mailing list