From 7833cf026fe2cc740397e9805a0fb7a79a8c42c5 Mon Sep 17 00:00:00 2001 From: Markus Mohrhard Date: Tue, 27 Jan 2015 04:31:56 +0100 Subject: initial work for conditional formatting import for orcus Change-Id: If79f58c44072b7c2c20fc2026b2a6eed6d202b63 --- sc/source/filter/inc/orcusinterface.hxx | 48 ++++++++++++++++ sc/source/filter/orcus/interface.cxx | 98 +++++++++++++++++++++++++++++++++ 2 files changed, 146 insertions(+) diff --git a/sc/source/filter/inc/orcusinterface.hxx b/sc/source/filter/inc/orcusinterface.hxx index f997446a53d7..e245b08cbbe3 100644 --- a/sc/source/filter/inc/orcusinterface.hxx +++ b/sc/source/filter/inc/orcusinterface.hxx @@ -79,6 +79,52 @@ public: virtual size_t commit_segments() SAL_OVERRIDE; }; +class ScOrcusConditionalFormat : public orcus::spreadsheet::iface::import_conditional_format +{ +public: + ScOrcusConditionalFormat(SCTAB nTab, ScDocument& rDoc); + virtual ~ScOrcusConditionalFormat(); + + virtual void set_color(orcus::spreadsheet::color_elem_t alpha, orcus::spreadsheet::color_elem_t red, + orcus::spreadsheet::color_elem_t green, orcus::spreadsheet::color_elem_t blue) SAL_OVERRIDE; + + virtual void set_formula(const char* p, size_t n) SAL_OVERRIDE; + + virtual void set_condition_type(orcus::spreadsheet::condition_type_t type) SAL_OVERRIDE; + + virtual void set_date(orcus::spreadsheet::condition_date_type date) SAL_OVERRIDE; + + virtual void commit_condition() SAL_OVERRIDE; + + virtual void set_icon_name(const char* p, size_t n) SAL_OVERRIDE; + + virtual void set_databar_gradient(bool gradient) SAL_OVERRIDE; + + virtual void set_databar_axis(orcus::spreadsheet::databar_axis_t axis) SAL_OVERRIDE; + + virtual void set_show_value(bool show) SAL_OVERRIDE; + + virtual void set_xf_id(size_t xf) SAL_OVERRIDE; + + virtual void set_operator(orcus::spreadsheet::condition_operator_t condition_type) SAL_OVERRIDE; + + virtual void set_type(orcus::spreadsheet::conditional_format_t type) SAL_OVERRIDE; + + virtual void commit_entry() SAL_OVERRIDE; + + virtual void set_range(const char* p, size_t n) SAL_OVERRIDE; + + virtual void set_range(orcus::spreadsheet::row_t row_start, orcus::spreadsheet::col_t col_start, + orcus::spreadsheet::row_t row_end, orcus::spreadsheet::col_t col_end) SAL_OVERRIDE; + + virtual void commit_format() SAL_OVERRIDE; + +private: + + SCTAB mnTab; + ScDocument& mrDoc; +}; + class ScOrcusAutoFilter : public orcus::spreadsheet::iface::import_auto_filter { public: @@ -130,6 +176,7 @@ class ScOrcusSheet : public orcus::spreadsheet::iface::import_sheet sc::SharedFormulaGroups maFormulaGroups; ScOrcusAutoFilter maAutoFilter; ScOrcusSheetProperties maProperties; + ScOrcusConditionalFormat maConditionalFormat; typedef std::map SharedFormulaContainer; SharedFormulaContainer maSharedFormulas; @@ -144,6 +191,7 @@ public: virtual orcus::spreadsheet::iface::import_auto_filter* get_auto_filter() SAL_OVERRIDE { return &maAutoFilter; } virtual orcus::spreadsheet::iface::import_sheet_properties* get_sheet_properties() SAL_OVERRIDE; virtual orcus::spreadsheet::iface::import_table* get_table() SAL_OVERRIDE; + virtual orcus::spreadsheet::iface::import_conditional_format* get_conditional_format() SAL_OVERRIDE; // Orcus import interface virtual void set_auto(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, const char* p, size_t n) SAL_OVERRIDE; diff --git a/sc/source/filter/orcus/interface.cxx b/sc/source/filter/orcus/interface.cxx index 8655246be22d..e71b9672cf95 100644 --- a/sc/source/filter/orcus/interface.cxx +++ b/sc/source/filter/orcus/interface.cxx @@ -282,6 +282,98 @@ void ScOrcusSheetProperties::set_merge_cell_range(const char* /*p_range*/, size_ { } +ScOrcusConditionalFormat::ScOrcusConditionalFormat(SCTAB nTab, ScDocument& rDoc): + mnTab(nTab), + mrDoc(rDoc) +{ +} + +ScOrcusConditionalFormat::~ScOrcusConditionalFormat() +{ +} + +void ScOrcusConditionalFormat::set_color(os::color_elem_t /*alpha*/, os::color_elem_t /*red*/, + os::color_elem_t /*green*/, os::color_elem_t /*blue*/) +{ + SAL_INFO("sc.orcus.condformat", "set_color"); +} + +void ScOrcusConditionalFormat::set_condition_type(os::condition_type_t /*type*/) +{ + SAL_INFO("sc.orcus.condformat", "set_condition_type"); +} + +void ScOrcusConditionalFormat::set_formula(const char* /*p*/, size_t /*n*/) +{ + SAL_INFO("sc.orcus.condformat", "set_formula"); +} + +void ScOrcusConditionalFormat::set_date(os::condition_date_type /*date*/) +{ + SAL_INFO("sc.orcus.condformat", "set_date"); +} + +void ScOrcusConditionalFormat::commit_condition() +{ + SAL_INFO("sc.orcus.condformat", "commit_condition"); +} + +void ScOrcusConditionalFormat::set_icon_name(const char* /*p*/, size_t /*n*/) +{ + SAL_INFO("sc.orcus.condformat", "set_icon_name"); +} + +void ScOrcusConditionalFormat::set_databar_gradient(bool /*gradient*/) +{ + SAL_INFO("sc.orcus.condformat", "set_databar_gradient"); +} + +void ScOrcusConditionalFormat::set_databar_axis(os::databar_axis_t /*axis*/) +{ + SAL_INFO("sc.orcus.condformat", "set_databar_axis"); +} + +void ScOrcusConditionalFormat::set_show_value(bool /*show*/) +{ + SAL_INFO("sc.orcus.condformat", "set_show_value"); +} + +void ScOrcusConditionalFormat::set_xf_id(size_t /*xf*/) +{ + SAL_INFO("sc.orcus.condformat", "set_xf_id"); +} + +void ScOrcusConditionalFormat::set_operator(os::condition_operator_t /*condition_type*/) +{ + SAL_INFO("sc.orcus.condformat", "set_operator"); +} + +void ScOrcusConditionalFormat::set_type(os::conditional_format_t /*type*/) +{ + SAL_INFO("sc.orcus.condformat", "set_type"); +} + +void ScOrcusConditionalFormat::commit_entry() +{ + SAL_INFO("sc.orcus.condformat", "commit_entry"); +} + +void ScOrcusConditionalFormat::set_range(const char* /*p*/, size_t /*n*/) +{ + SAL_INFO("sc.orcus.condformat", "set_range"); +} + +void ScOrcusConditionalFormat::set_range(os::row_t /*row_start*/, os::col_t /*col_start*/, + os::row_t /*row_end*/, os::col_t /*col_end*/) +{ + SAL_INFO("sc.orcus.condformat", "set_range"); +} + +void ScOrcusConditionalFormat::commit_format() +{ + SAL_INFO("sc.orcus.condformat", "commit_format"); +} + ScOrcusSheet::ScOrcusSheet(ScDocumentImport& rDoc, SCTAB nTab, ScOrcusFactory& rFactory) : mrDoc(rDoc), mnTab(nTab), @@ -289,6 +381,7 @@ ScOrcusSheet::ScOrcusSheet(ScDocumentImport& rDoc, SCTAB nTab, ScOrcusFactory& r mrStyles(static_cast(*mrFactory.get_styles())), maAutoFilter(rDoc.getDoc()), maProperties(mnTab, mrDoc), + maConditionalFormat(mnTab, rDoc.getDoc()), mnCellCount(0) { } @@ -313,6 +406,11 @@ os::iface::import_table* ScOrcusSheet::get_table() return NULL; } +os::iface::import_conditional_format* ScOrcusSheet::get_conditional_format() +{ + return &maConditionalFormat; +} + void ScOrcusSheet::set_auto(os::row_t row, os::col_t col, const char* p, size_t n) { OUString aVal(p, n, RTL_TEXTENCODING_UTF8); -- cgit