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