diff options
author | Kohei Yoshida <kohei.yoshida@gmail.com> | 2022-06-07 18:53:11 -0400 |
---|---|---|
committer | Kohei Yoshida <kohei.yoshida@gmail.com> | 2022-06-07 18:53:11 -0400 |
commit | a714e1732a52fc1c5d9e6c85961cd5039b7c8bc6 (patch) | |
tree | 72516010594759a8bab9f8d653b0d2e9d9d88449 | |
parent | 77a26f36b3b5d5302d1ce4161f3bf29a3afc8750 (diff) | |
download | orcus-a714e1732a52fc1c5d9e6c85961cd5039b7c8bc6.tar.gz |
Use import_xf in gnumeric
-rw-r--r-- | src/liborcus/gnumeric_sheet_context.cpp | 29 | ||||
-rw-r--r-- | src/liborcus/gnumeric_sheet_context.hpp | 2 |
2 files changed, 20 insertions, 11 deletions
diff --git a/src/liborcus/gnumeric_sheet_context.cpp b/src/liborcus/gnumeric_sheet_context.cpp index 204cc9ca..359d0ffb 100644 --- a/src/liborcus/gnumeric_sheet_context.cpp +++ b/src/liborcus/gnumeric_sheet_context.cpp @@ -613,6 +613,9 @@ void gnumeric_sheet_context::start_style(const xml_attrs_t& attrs) auto* number_format = styles->get_number_format(); ENSURE_INTERFACE(number_format, import_number_format); + mp_xf = styles->get_xf(ss::xf_category_t::cell); + ENSURE_INTERFACE(mp_xf, import_xf); + bool fill_set = false; bool protection_set = false; @@ -664,7 +667,7 @@ void gnumeric_sheet_context::start_style(const xml_attrs_t& attrs) { number_format->set_code(attr.value); std::size_t index = number_format->commit(); - styles->set_xf_number_format(index); + mp_xf->set_number_format(index); } break; } @@ -685,8 +688,8 @@ void gnumeric_sheet_context::start_style(const xml_attrs_t& attrs) hor_alignment = ss::hor_alignment_t::filled; if (hor_alignment != ss::hor_alignment_t::unknown) - styles->set_xf_apply_alignment(true); - styles->set_xf_horizontal_alignment(hor_alignment); + mp_xf->set_apply_alignment(true); + mp_xf->set_horizontal_alignment(hor_alignment); break; } case XML_VAlign: @@ -704,8 +707,8 @@ void gnumeric_sheet_context::start_style(const xml_attrs_t& attrs) ver_alignment = ss::ver_alignment_t::distributed; if (ver_alignment != ss::ver_alignment_t::unknown) - styles->set_xf_apply_alignment(true); - styles->set_xf_vertical_alignment(ver_alignment); + mp_xf->set_apply_alignment(true); + mp_xf->set_vertical_alignment(ver_alignment); break; } } @@ -714,12 +717,12 @@ void gnumeric_sheet_context::start_style(const xml_attrs_t& attrs) if (fill_set) { size_t fill_id = fill_style->commit(); - styles->set_xf_fill(fill_id); + mp_xf->set_fill(fill_id); } if (protection_set) { size_t protection_id = cell_protection->commit(); - styles->set_xf_protection(protection_id); + mp_xf->set_protection(protection_id); } } @@ -761,11 +764,15 @@ void gnumeric_sheet_context::end_font() void gnumeric_sheet_context::end_style(bool conditional_format) { - spreadsheet::iface::import_styles& styles = *mp_factory->get_styles(); - size_t id = styles.commit_cell_xf(); + ss::iface::import_styles* styles = mp_factory->get_styles(); + if (!styles) + return; + + assert(mp_xf); + size_t xf_id = mp_xf->commit(); if (!conditional_format) { - mp_region_data->xf_id = id; + mp_region_data->xf_id = xf_id; } else { @@ -773,7 +780,7 @@ void gnumeric_sheet_context::end_style(bool conditional_format) mp_sheet->get_conditional_format(); if (cond_format) { - cond_format->set_xf_id(id); + cond_format->set_xf_id(xf_id); } } } diff --git a/src/liborcus/gnumeric_sheet_context.hpp b/src/liborcus/gnumeric_sheet_context.hpp index 605123b8..1b1c0896 100644 --- a/src/liborcus/gnumeric_sheet_context.hpp +++ b/src/liborcus/gnumeric_sheet_context.hpp @@ -20,6 +20,7 @@ namespace spreadsheet { namespace iface { class import_factory; class import_sheet; class import_auto_filter; +class import_xf; }} @@ -88,6 +89,7 @@ private: spreadsheet::iface::import_sheet* mp_sheet; spreadsheet::iface::import_auto_filter* mp_auto_filter; + spreadsheet::iface::import_xf* mp_xf = nullptr; std::unique_ptr<xml_context_base> mp_child; std::unique_ptr<gnumeric_style_region> mp_region_data; |