sc/source/filter/orcus/interface.cxx |   35 ++++++++++++++++++++++++++++++-----
 1 file changed, 30 insertions(+), 5 deletions(-)

New commits:
commit 105edb6adad2ef84ec11528168ecf4e2481f8302
Author: Kohei Yoshida <kohei.yosh...@gmail.com>
Date:   Mon Feb 5 22:09:37 2018 -0500

    Import cell borders as best as we can from orcus.
    
    This is subject to the infamous Excel to Calc cell border mapping
    fiasco.  The mapping is not perfect and there is certainly room for
    improvement.
    
    Change-Id: Ie224c8e08e6c0b8f13311460acbd371bd65a145f
    Reviewed-on: https://gerrit.libreoffice.org/49266
    Tested-by: Jenkins <c...@libreoffice.org>
    Reviewed-by: Kohei Yoshida <libreoff...@kohei.us>

diff --git a/sc/source/filter/orcus/interface.cxx 
b/sc/source/filter/orcus/interface.cxx
index b7bc5970f58c..e48250d14d52 100644
--- a/sc/source/filter/orcus/interface.cxx
+++ b/sc/source/filter/orcus/interface.cxx
@@ -54,6 +54,8 @@
 #include <tools/colordata.hxx>
 #include <tools/fontenum.hxx>
 
+#include <stylesbuffer.hxx>
+
 using namespace com::sun::star;
 
 namespace os = orcus::spreadsheet;
@@ -1174,7 +1176,7 @@ ScOrcusStyles::border::border():
 
 ScOrcusStyles::border::border_line::border_line():
     meStyle(SvxBorderLineStyle::SOLID),
-    maColor(COL_WHITE),
+    maColor(COL_BLACK),
     mnWidth(0)
 {
 }
@@ -1617,39 +1619,62 @@ void ScOrcusStyles::set_border_style(
     border::border_line& current_line = maCurrentBorder.border_lines[dir];
     switch (style)
     {
-        case orcus::spreadsheet::border_style_t::unknown:
-        case orcus::spreadsheet::border_style_t::none:
         case orcus::spreadsheet::border_style_t::solid:
+            current_line.meStyle = SvxBorderLineStyle::SOLID;
+            current_line.mnWidth = oox::xls::API_LINE_THIN;
+            break;
         case orcus::spreadsheet::border_style_t::hair:
+            current_line.meStyle = SvxBorderLineStyle::SOLID;
+            current_line.mnWidth = oox::xls::API_LINE_HAIR;
+            break;
         case orcus::spreadsheet::border_style_t::medium:
+            current_line.meStyle = SvxBorderLineStyle::SOLID;
+            current_line.mnWidth = oox::xls::API_LINE_MEDIUM;
+            break;
         case orcus::spreadsheet::border_style_t::thick:
+            current_line.meStyle = SvxBorderLineStyle::SOLID;
+            current_line.mnWidth = oox::xls::API_LINE_THICK;
+            break;
         case orcus::spreadsheet::border_style_t::thin:
             current_line.meStyle = SvxBorderLineStyle::SOLID;
+            current_line.mnWidth = oox::xls::API_LINE_THIN;
             break;
         case orcus::spreadsheet::border_style_t::dash_dot:
             current_line.meStyle = SvxBorderLineStyle::DASH_DOT;
+            current_line.mnWidth = oox::xls::API_LINE_THIN;
             break;
         case orcus::spreadsheet::border_style_t::dash_dot_dot:
             current_line.meStyle = SvxBorderLineStyle::DASH_DOT_DOT;
+            current_line.mnWidth = oox::xls::API_LINE_THIN;
             break;
         case orcus::spreadsheet::border_style_t::dashed:
             current_line.meStyle = SvxBorderLineStyle::DASHED;
+            current_line.mnWidth = oox::xls::API_LINE_THIN;
             break;
         case orcus::spreadsheet::border_style_t::dotted:
             current_line.meStyle = SvxBorderLineStyle::DOTTED;
+            current_line.mnWidth = oox::xls::API_LINE_THIN;
             break;
         case orcus::spreadsheet::border_style_t::double_border:
             current_line.meStyle = SvxBorderLineStyle::DOUBLE;
+            current_line.mnWidth = oox::xls::API_LINE_THICK;
             break;
         case orcus::spreadsheet::border_style_t::medium_dash_dot:
         case orcus::spreadsheet::border_style_t::slant_dash_dot:
             current_line.meStyle = SvxBorderLineStyle::DASH_DOT;
+            current_line.mnWidth = oox::xls::API_LINE_MEDIUM;
             break;
         case orcus::spreadsheet::border_style_t::medium_dash_dot_dot:
             current_line.meStyle = SvxBorderLineStyle::DASH_DOT_DOT;
+            current_line.mnWidth = oox::xls::API_LINE_MEDIUM;
             break;
         case orcus::spreadsheet::border_style_t::medium_dashed:
             current_line.meStyle = SvxBorderLineStyle::DASHED;
+            current_line.mnWidth = oox::xls::API_LINE_MEDIUM;
+            break;
+        case orcus::spreadsheet::border_style_t::unknown:
+        case orcus::spreadsheet::border_style_t::none:
+            current_line.mnWidth = oox::xls::API_LINE_NONE;
             break;
         default:
             ;
@@ -1658,13 +1683,13 @@ void ScOrcusStyles::set_border_style(
 }
 
 void ScOrcusStyles::set_border_color(orcus::spreadsheet::border_direction_t 
dir,
-            orcus::spreadsheet::color_elem_t alpha,
+            orcus::spreadsheet::color_elem_t /*alpha*/,
             orcus::spreadsheet::color_elem_t red,
             orcus::spreadsheet::color_elem_t green,
             orcus::spreadsheet::color_elem_t blue)
 {
     border::border_line& current_line = maCurrentBorder.border_lines[dir];
-    current_line.maColor = Color(alpha, red, green, blue);
+    current_line.maColor = Color(red, green, blue);
 }
 
 void ScOrcusStyles::set_border_width(orcus::spreadsheet::border_direction_t  
dir, double val, orcus::length_unit_t  unit )
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to