Kaydet (Commit) 105edb6a authored tarafından Kohei Yoshida's avatar Kohei Yoshida Kaydeden (comit) Kohei Yoshida

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/49266Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarKohei Yoshida <libreoffice@kohei.us>
üst 39698e9f
...@@ -54,6 +54,8 @@ ...@@ -54,6 +54,8 @@
#include <tools/colordata.hxx> #include <tools/colordata.hxx>
#include <tools/fontenum.hxx> #include <tools/fontenum.hxx>
#include <stylesbuffer.hxx>
using namespace com::sun::star; using namespace com::sun::star;
namespace os = orcus::spreadsheet; namespace os = orcus::spreadsheet;
...@@ -1174,7 +1176,7 @@ ScOrcusStyles::border::border(): ...@@ -1174,7 +1176,7 @@ ScOrcusStyles::border::border():
ScOrcusStyles::border::border_line::border_line(): ScOrcusStyles::border::border_line::border_line():
meStyle(SvxBorderLineStyle::SOLID), meStyle(SvxBorderLineStyle::SOLID),
maColor(COL_WHITE), maColor(COL_BLACK),
mnWidth(0) mnWidth(0)
{ {
} }
...@@ -1617,39 +1619,62 @@ void ScOrcusStyles::set_border_style( ...@@ -1617,39 +1619,62 @@ void ScOrcusStyles::set_border_style(
border::border_line& current_line = maCurrentBorder.border_lines[dir]; border::border_line& current_line = maCurrentBorder.border_lines[dir];
switch (style) switch (style)
{ {
case orcus::spreadsheet::border_style_t::unknown:
case orcus::spreadsheet::border_style_t::none:
case orcus::spreadsheet::border_style_t::solid: 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: 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: 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: 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: case orcus::spreadsheet::border_style_t::thin:
current_line.meStyle = SvxBorderLineStyle::SOLID; current_line.meStyle = SvxBorderLineStyle::SOLID;
current_line.mnWidth = oox::xls::API_LINE_THIN;
break; break;
case orcus::spreadsheet::border_style_t::dash_dot: case orcus::spreadsheet::border_style_t::dash_dot:
current_line.meStyle = SvxBorderLineStyle::DASH_DOT; current_line.meStyle = SvxBorderLineStyle::DASH_DOT;
current_line.mnWidth = oox::xls::API_LINE_THIN;
break; break;
case orcus::spreadsheet::border_style_t::dash_dot_dot: case orcus::spreadsheet::border_style_t::dash_dot_dot:
current_line.meStyle = SvxBorderLineStyle::DASH_DOT_DOT; current_line.meStyle = SvxBorderLineStyle::DASH_DOT_DOT;
current_line.mnWidth = oox::xls::API_LINE_THIN;
break; break;
case orcus::spreadsheet::border_style_t::dashed: case orcus::spreadsheet::border_style_t::dashed:
current_line.meStyle = SvxBorderLineStyle::DASHED; current_line.meStyle = SvxBorderLineStyle::DASHED;
current_line.mnWidth = oox::xls::API_LINE_THIN;
break; break;
case orcus::spreadsheet::border_style_t::dotted: case orcus::spreadsheet::border_style_t::dotted:
current_line.meStyle = SvxBorderLineStyle::DOTTED; current_line.meStyle = SvxBorderLineStyle::DOTTED;
current_line.mnWidth = oox::xls::API_LINE_THIN;
break; break;
case orcus::spreadsheet::border_style_t::double_border: case orcus::spreadsheet::border_style_t::double_border:
current_line.meStyle = SvxBorderLineStyle::DOUBLE; current_line.meStyle = SvxBorderLineStyle::DOUBLE;
current_line.mnWidth = oox::xls::API_LINE_THICK;
break; break;
case orcus::spreadsheet::border_style_t::medium_dash_dot: case orcus::spreadsheet::border_style_t::medium_dash_dot:
case orcus::spreadsheet::border_style_t::slant_dash_dot: case orcus::spreadsheet::border_style_t::slant_dash_dot:
current_line.meStyle = SvxBorderLineStyle::DASH_DOT; current_line.meStyle = SvxBorderLineStyle::DASH_DOT;
current_line.mnWidth = oox::xls::API_LINE_MEDIUM;
break; break;
case orcus::spreadsheet::border_style_t::medium_dash_dot_dot: case orcus::spreadsheet::border_style_t::medium_dash_dot_dot:
current_line.meStyle = SvxBorderLineStyle::DASH_DOT_DOT; current_line.meStyle = SvxBorderLineStyle::DASH_DOT_DOT;
current_line.mnWidth = oox::xls::API_LINE_MEDIUM;
break; break;
case orcus::spreadsheet::border_style_t::medium_dashed: case orcus::spreadsheet::border_style_t::medium_dashed:
current_line.meStyle = SvxBorderLineStyle::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; break;
default: default:
; ;
...@@ -1658,13 +1683,13 @@ void ScOrcusStyles::set_border_style( ...@@ -1658,13 +1683,13 @@ void ScOrcusStyles::set_border_style(
} }
void ScOrcusStyles::set_border_color(orcus::spreadsheet::border_direction_t dir, 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 red,
orcus::spreadsheet::color_elem_t green, orcus::spreadsheet::color_elem_t green,
orcus::spreadsheet::color_elem_t blue) orcus::spreadsheet::color_elem_t blue)
{ {
border::border_line& current_line = maCurrentBorder.border_lines[dir]; 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 ) void ScOrcusStyles::set_border_width(orcus::spreadsheet::border_direction_t dir, double val, orcus::length_unit_t unit )
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment