Orcus
import_interface.hpp
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3  * This Source Code Form is subject to the terms of the Mozilla Public
4  * License, v. 2.0. If a copy of the MPL was not distributed with this
5  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
6  */
7 
8 #ifndef ORCUS_SPREADSHEET_IMPORT_INTERFACE_HPP
9 #define ORCUS_SPREADSHEET_IMPORT_INTERFACE_HPP
10 
11 #include <cstdlib>
12 
13 #include "orcus/spreadsheet/types.hpp"
14 #include "orcus/types.hpp"
15 #include "orcus/env.hpp"
16 
17 // NB: This header must not depend on ixion, as it needs to be usable for
18 // those clients that provide their own formula engine. Other headers in
19 // the orcus::spreadsheet namespace may depend on ixion.
20 
21 namespace orcus { namespace spreadsheet { namespace iface {
22 
23 class import_pivot_cache_definition;
24 class import_pivot_cache_records;
25 class import_sheet_view;
26 
31 {
32 public:
33  ORCUS_DLLPUBLIC virtual ~import_shared_strings() = 0;
34 
47  virtual size_t append(const char* s, size_t n) = 0;
48 
60  virtual size_t add(const char* s, size_t n) = 0;
61 
62  virtual void set_segment_font(size_t font_index) = 0;
63  virtual void set_segment_bold(bool b) = 0;
64  virtual void set_segment_italic(bool b) = 0;
65  virtual void set_segment_font_name(const char* s, size_t n) = 0;
66  virtual void set_segment_font_size(double point) = 0;
67  virtual void set_segment_font_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) = 0;
68  virtual void append_segment(const char* s, size_t n) = 0;
69  virtual size_t commit_segments() = 0;
70 };
71 
85 {
86 public:
87  ORCUS_DLLPUBLIC virtual ~import_styles() = 0;
88 
89  // font
90 
91  virtual void set_font_count(size_t n) = 0;
92  virtual void set_font_bold(bool b) = 0;
93  virtual void set_font_italic(bool b) = 0;
94  virtual void set_font_name(const char* s, size_t n) = 0;
95  virtual void set_font_size(double point) = 0;
96  virtual void set_font_underline(orcus::spreadsheet::underline_t e) = 0;
97  virtual void set_font_underline_width(underline_width_t e) = 0;
98  virtual void set_font_underline_mode(underline_mode_t e) = 0;
99  virtual void set_font_underline_type(underline_type_t e) = 0;
100  virtual void set_font_underline_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) = 0;
101  virtual void set_font_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) = 0;
102  virtual void set_strikethrough_style(orcus::spreadsheet::strikethrough_style_t s) = 0;
103  virtual void set_strikethrough_type(orcus::spreadsheet::strikethrough_type_t s) = 0;
104  virtual void set_strikethrough_width(orcus::spreadsheet::strikethrough_width_t s) = 0;
105  virtual void set_strikethrough_text(orcus::spreadsheet::strikethrough_text_t s) = 0;
106  virtual size_t commit_font() = 0;
107 
108  // fill
109 
110  virtual void set_fill_count(size_t n) = 0;
111  virtual void set_fill_pattern_type(const char* s, size_t n) = 0;
112  virtual void set_fill_fg_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) = 0;
113  virtual void set_fill_bg_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) = 0;
114  virtual size_t commit_fill() = 0;
115 
116  // border
117 
118  virtual void set_border_count(size_t n) = 0;
119 
120  virtual void set_border_style(orcus::spreadsheet::border_direction_t dir, border_style_t style) = 0;
121  virtual void set_border_color(
122  orcus::spreadsheet::border_direction_t dir, color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) = 0;
123  virtual void set_border_width(orcus::spreadsheet::border_direction_t dir, double width, orcus::length_unit_t unit) = 0;
124  virtual size_t commit_border() = 0;
125 
126  // cell protection
127  virtual void set_cell_hidden(bool b) = 0;
128  virtual void set_cell_locked(bool b) = 0;
129  virtual void set_cell_print_content(bool b) = 0;
130  virtual void set_cell_formula_hidden(bool b) = 0;
131  virtual size_t commit_cell_protection() = 0;
132 
133  // number format
134  virtual void set_number_format_count(size_t n) = 0;
135  virtual void set_number_format_identifier(size_t id) = 0;
136  virtual void set_number_format_code(const char* s, size_t n) = 0;
137  virtual size_t commit_number_format() = 0;
138 
139  // cell format and cell style format (xf == cell format)
140 
141  virtual void set_cell_xf_count(size_t n) = 0;
142  virtual void set_cell_style_xf_count(size_t n) = 0;
143  virtual void set_dxf_count(size_t n) = 0;
144 
145  virtual void set_xf_font(size_t index) = 0;
146  virtual void set_xf_fill(size_t index) = 0;
147  virtual void set_xf_border(size_t index) = 0;
148  virtual void set_xf_protection(size_t index) = 0;
149  virtual void set_xf_number_format(size_t index) = 0;
150  virtual void set_xf_style_xf(size_t index) = 0;
151  virtual void set_xf_apply_alignment(bool b) = 0;
152  virtual void set_xf_horizontal_alignment(orcus::spreadsheet::hor_alignment_t align) = 0;
153  virtual void set_xf_vertical_alignment(orcus::spreadsheet::ver_alignment_t align) = 0;
154 
155  virtual size_t commit_cell_xf() = 0;
156  virtual size_t commit_cell_style_xf() = 0;
157  virtual size_t commit_dxf() = 0;
158 
159  // cell style entry
160 
161  virtual void set_cell_style_count(size_t n) = 0;
162  virtual void set_cell_style_name(const char* s, size_t n) = 0;
163  virtual void set_cell_style_xf(size_t index) = 0;
164  virtual void set_cell_style_builtin(size_t index) = 0;
165  virtual void set_cell_style_parent_name(const char* s, size_t n) = 0;
166  virtual size_t commit_cell_style() = 0;
167 };
168 
175 {
176 public:
177  ORCUS_DLLPUBLIC virtual ~import_sheet_properties() = 0;
178 
179  virtual void set_column_width(orcus::spreadsheet::col_t col, double width, orcus::length_unit_t unit) = 0;
180 
181  virtual void set_column_hidden(orcus::spreadsheet::col_t col, bool hidden) = 0;
182 
183  virtual void set_row_height(orcus::spreadsheet::row_t row, double height, orcus::length_unit_t unit) = 0;
184 
185  virtual void set_row_hidden(orcus::spreadsheet::row_t row, bool hidden) = 0;
186 
193  virtual void set_merge_cell_range(const range_t& range) = 0;
194 };
195 
199 class ORCUS_DLLPUBLIC import_named_expression
200 {
201 public:
202  virtual ~import_named_expression();
203 
216  virtual void define_name(const char* p_name, size_t n_name, const char* p_exp, size_t n_exp) = 0;
217 };
218 
223 {
224 public:
225  ORCUS_DLLPUBLIC virtual ~import_data_table() = 0;
226 
227  virtual void set_type(orcus::spreadsheet::data_table_type_t type) = 0;
228 
229  virtual void set_range(const char* p_range, size_t n_range) = 0;
230 
231  virtual void set_first_reference(const char* p_ref, size_t n_ref, bool deleted) = 0;
232 
233  virtual void set_second_reference(const char* p_ref, size_t n_ref, bool deleted) = 0;
234 
235  virtual void commit() = 0;
236 };
237 
239 {
240 public:
241  ORCUS_DLLPUBLIC virtual ~import_auto_filter() = 0;
242 
250  virtual void set_range(const char* p_ref, size_t n_ref) = 0;
251 
259  virtual void set_column(orcus::spreadsheet::col_t col) = 0;
260 
267  virtual void append_column_match_value(const char* p, size_t n) = 0;
268 
272  virtual void commit_column() = 0;
273 
277  virtual void commit() = 0;
278 };
279 
303 {
304 public:
305  ORCUS_DLLPUBLIC virtual ~import_conditional_format() = 0;
306 
311  virtual void set_color(color_elem_t alpha, color_elem_t red,
312  color_elem_t green, color_elem_t blue) = 0;
313 
317  virtual void set_formula(const char* p, size_t n) = 0;
318 
323  virtual void set_condition_type(orcus::spreadsheet::condition_type_t type) = 0;
324 
328  virtual void set_date(orcus::spreadsheet::condition_date_t date) = 0;
329 
333  virtual void commit_condition() = 0;
334 
339  virtual void set_icon_name(const char* p, size_t n) = 0;
340 
345  virtual void set_databar_gradient(bool gradient) = 0;
346 
351  virtual void set_databar_axis(orcus::spreadsheet::databar_axis_t axis) = 0;
352 
357  virtual void set_databar_color_positive(color_elem_t alpha, color_elem_t red,
358  color_elem_t green, color_elem_t blue) = 0;
359 
364  virtual void set_databar_color_negative(color_elem_t alpha, color_elem_t red,
365  color_elem_t green, color_elem_t blue) = 0;
366 
371  virtual void set_min_databar_length(double length) = 0;
372 
377  virtual void set_max_databar_length(double length) = 0;
378 
383  virtual void set_show_value(bool show) = 0;
384 
389  virtual void set_iconset_reverse(bool reverse) = 0;
390 
394  virtual void set_xf_id(size_t xf) = 0;
395 
400  virtual void set_operator(orcus::spreadsheet::condition_operator_t condition_type) = 0;
401 
402  virtual void set_type(orcus::spreadsheet::conditional_format_t type) = 0;
403 
404  virtual void commit_entry() = 0;
405 
406  virtual void set_range(const char* p, size_t n) = 0;
407 
408  virtual void set_range(orcus::spreadsheet::row_t row_start, orcus::spreadsheet::col_t col_start,
409  orcus::spreadsheet::row_t row_end, orcus::spreadsheet::col_t col_end) = 0;
410 
411  virtual void commit_format() = 0;
412 };
413 
418 class ORCUS_DLLPUBLIC import_table
419 {
420 public:
421  virtual ~import_table() = 0;
422 
423  virtual import_auto_filter* get_auto_filter();
424 
425  virtual void set_identifier(size_t id) = 0;
426 
427  virtual void set_range(const char* p_ref, size_t n_ref) = 0;
428 
429  virtual void set_totals_row_count(size_t row_count) = 0;
430 
431  virtual void set_name(const char* p, size_t n) = 0;
432 
433  virtual void set_display_name(const char* p, size_t n) = 0;
434 
435  virtual void set_column_count(size_t n) = 0;
436 
437  virtual void set_column_identifier(size_t id) = 0;
438  virtual void set_column_name(const char* p, size_t n) = 0;
439  virtual void set_column_totals_row_label(const char* p, size_t n) = 0;
440  virtual void set_column_totals_row_function(orcus::spreadsheet::totals_row_function_t func) = 0;
441  virtual void commit_column() = 0;
442 
443  virtual void set_style_name(const char* p, size_t n) = 0;
444  virtual void set_style_show_first_column(bool b) = 0;
445  virtual void set_style_show_last_column(bool b) = 0;
446  virtual void set_style_show_row_stripes(bool b) = 0;
447  virtual void set_style_show_column_stripes(bool b) = 0;
448 
449  virtual void commit() = 0;
450 };
451 
455 class ORCUS_DLLPUBLIC import_sheet
456 {
457 public:
458  virtual ~import_sheet() = 0;
459 
460  virtual import_sheet_view* get_sheet_view();
461 
462  virtual import_sheet_properties* get_sheet_properties();
463 
475  virtual import_data_table* get_data_table();
476 
485  virtual import_auto_filter* get_auto_filter();
486 
497  virtual import_table* get_table();
498 
506  virtual import_conditional_format* get_conditional_format();
507 
508  virtual import_named_expression* get_named_expression();
509 
519  virtual void set_auto(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, const char* p, size_t n) = 0;
520 
528  virtual void set_string(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, size_t sindex) = 0;
529 
537  virtual void set_value(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, double value) = 0;
538 
546  virtual void set_bool(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, bool value) = 0;
547 
554  virtual void set_date_time(
555  orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col,
556  int year, int month, int day, int hour, int minute, double second) = 0;
557 
566  virtual void set_format(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, size_t xf_index) = 0;
567 
578  virtual void set_format(orcus::spreadsheet::row_t row_start, orcus::spreadsheet::col_t col_start,
579  orcus::spreadsheet::row_t row_end, orcus::spreadsheet::col_t col_end, size_t xf_index) = 0;
580 
591  virtual void set_formula(
592  orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, orcus::spreadsheet::formula_grammar_t grammar,
593  const char* p, size_t n) = 0;
594 
610  virtual void set_shared_formula(
611  orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, orcus::spreadsheet::formula_grammar_t grammar,
612  size_t sindex, const char* p_formula, size_t n_formula, const char* p_range, size_t n_range) = 0;
613 
627  virtual void set_shared_formula(
628  orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, orcus::spreadsheet::formula_grammar_t grammar,
629  size_t sindex, const char* p_formula, size_t n_formula) = 0;
630 
643  virtual void set_shared_formula(
644  orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, size_t sindex) = 0;
645 
646  virtual void set_formula_result(
647  orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, double value) = 0;
648 
649  virtual void set_formula_result(
650  orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, const char* p, size_t n) = 0;
651 
664  virtual void set_array_formula(
665  orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, orcus::spreadsheet::formula_grammar_t grammar,
666  const char* p, size_t n, orcus::spreadsheet::row_t array_rows, orcus::spreadsheet::col_t array_cols) = 0;
667 
680  virtual void set_array_formula(
681  orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, orcus::spreadsheet::formula_grammar_t grammar,
682  const char* p, size_t n, const char* p_range, size_t n_range) = 0;
683 
690  virtual orcus::spreadsheet::range_size_t get_sheet_size() const = 0;
691 };
692 
694 {
695 public:
696  ORCUS_DLLPUBLIC virtual ~import_global_settings() = 0;
697 
707  virtual void set_origin_date(int year, int month, int day) = 0;
708 
717  virtual void set_default_formula_grammar(orcus::spreadsheet::formula_grammar_t grammar) = 0;
718 
724  virtual orcus::spreadsheet::formula_grammar_t get_default_formula_grammar() const = 0;
725 };
726 
727 class ORCUS_DLLPUBLIC import_reference_resolver
728 {
729 public:
730  virtual ~import_reference_resolver();
731 
745  virtual address_t resolve_address(const char* p, size_t n) = 0;
746 
760  virtual range_t resolve_range(const char* p, size_t n) = 0;
761 };
762 
773 class ORCUS_DLLPUBLIC import_factory
774 {
775 public:
776  virtual ~import_factory() = 0;
777 
778  virtual import_global_settings* get_global_settings();
779 
784  virtual import_shared_strings* get_shared_strings();
785 
786  virtual import_named_expression* get_named_expression();
787 
792  virtual import_styles* get_styles();
793 
794  virtual import_reference_resolver* get_reference_resolver();
795 
807  virtual import_pivot_cache_definition* create_pivot_cache_definition(
808  orcus::spreadsheet::pivot_cache_id_t cache_id);
809 
819  virtual import_pivot_cache_records* create_pivot_cache_records(
820  orcus::spreadsheet::pivot_cache_id_t cache_id);
821 
835  virtual import_sheet* append_sheet(
836  orcus::spreadsheet::sheet_t sheet_index, const char* sheet_name, size_t sheet_name_length) = 0;
837 
843  virtual import_sheet* get_sheet(const char* sheet_name, size_t sheet_name_length) = 0;
844 
853  virtual import_sheet* get_sheet(orcus::spreadsheet::sheet_t sheet_index) = 0;
854 
859  virtual void finalize() = 0;
860 };
861 
862 }}}
863 
864 #endif
865 
866 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
orcus::spreadsheet::iface::import_shared_strings::append
virtual size_t append(const char *s, size_t n)=0
orcus::spreadsheet::iface::import_shared_strings
Definition: import_interface.hpp:30
orcus::spreadsheet::iface::import_auto_filter::set_column
virtual void set_column(orcus::spreadsheet::col_t col)=0
orcus::spreadsheet::iface::import_sheet_view
Definition: import_interface_view.hpp:114
orcus::spreadsheet::iface::import_table
Definition: import_interface.hpp:418
orcus::spreadsheet::iface::import_auto_filter
Definition: import_interface.hpp:238
orcus::spreadsheet::iface::import_global_settings
Definition: import_interface.hpp:693
orcus::spreadsheet::iface::import_conditional_format::set_operator
virtual void set_operator(orcus::spreadsheet::condition_operator_t condition_type)=0
orcus::spreadsheet::iface::import_conditional_format::set_color
virtual void set_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue)=0
orcus::spreadsheet::iface::import_conditional_format::set_iconset_reverse
virtual void set_iconset_reverse(bool reverse)=0
orcus::spreadsheet::iface::import_global_settings::set_default_formula_grammar
virtual void set_default_formula_grammar(orcus::spreadsheet::formula_grammar_t grammar)=0
orcus::spreadsheet::iface::import_conditional_format::set_date
virtual void set_date(orcus::spreadsheet::condition_date_t date)=0
orcus::spreadsheet::iface::import_conditional_format::set_max_databar_length
virtual void set_max_databar_length(double length)=0
orcus::spreadsheet::iface::import_conditional_format::set_databar_axis
virtual void set_databar_axis(orcus::spreadsheet::databar_axis_t axis)=0
orcus::spreadsheet::iface::import_sheet
Definition: import_interface.hpp:455
orcus::spreadsheet::iface::import_conditional_format::set_databar_color_negative
virtual void set_databar_color_negative(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue)=0
orcus::spreadsheet::iface::import_pivot_cache_definition
Definition: import_interface_pivot.hpp:28
orcus::spreadsheet::iface::import_conditional_format::set_condition_type
virtual void set_condition_type(orcus::spreadsheet::condition_type_t type)=0
orcus::spreadsheet::iface::import_pivot_cache_records
Definition: import_interface_pivot.hpp:290
orcus::spreadsheet::iface::import_factory
Definition: import_interface.hpp:773
orcus::spreadsheet::iface::import_sheet_properties::set_merge_cell_range
virtual void set_merge_cell_range(const range_t &range)=0
orcus::spreadsheet::iface::import_conditional_format::set_xf_id
virtual void set_xf_id(size_t xf)=0
orcus::spreadsheet::iface::import_named_expression
Definition: import_interface.hpp:199
orcus::spreadsheet::iface::import_reference_resolver
Definition: import_interface.hpp:727
orcus::spreadsheet::range_size_t
Definition: types.hpp:328
orcus::spreadsheet::iface::import_auto_filter::append_column_match_value
virtual void append_column_match_value(const char *p, size_t n)=0
orcus::spreadsheet::iface::import_styles
Definition: import_interface.hpp:84
orcus::spreadsheet::iface::import_shared_strings::add
virtual size_t add(const char *s, size_t n)=0
orcus::spreadsheet::iface::import_conditional_format::set_formula
virtual void set_formula(const char *p, size_t n)=0
orcus::spreadsheet::address_t
Definition: types.hpp:322
orcus::spreadsheet::range_t
Definition: types.hpp:334
orcus::spreadsheet::iface::import_data_table
Definition: import_interface.hpp:222
orcus::spreadsheet::iface::import_conditional_format::set_databar_color_positive
virtual void set_databar_color_positive(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue)=0
orcus::spreadsheet::iface::import_global_settings::get_default_formula_grammar
virtual orcus::spreadsheet::formula_grammar_t get_default_formula_grammar() const =0
orcus::spreadsheet::iface::import_conditional_format::set_icon_name
virtual void set_icon_name(const char *p, size_t n)=0
orcus::spreadsheet::iface::import_conditional_format::set_databar_gradient
virtual void set_databar_gradient(bool gradient)=0
orcus::spreadsheet::iface::import_auto_filter::commit_column
virtual void commit_column()=0
orcus::spreadsheet::iface::import_global_settings::set_origin_date
virtual void set_origin_date(int year, int month, int day)=0
orcus::spreadsheet::iface::import_conditional_format
Definition: import_interface.hpp:302
orcus::spreadsheet::iface::import_conditional_format::set_show_value
virtual void set_show_value(bool show)=0
orcus::spreadsheet::iface::import_auto_filter::commit
virtual void commit()=0
orcus::spreadsheet::iface::import_conditional_format::commit_condition
virtual void commit_condition()=0
orcus::spreadsheet::iface::import_sheet_properties
Definition: import_interface.hpp:174
orcus::spreadsheet::iface::import_auto_filter::set_range
virtual void set_range(const char *p_ref, size_t n_ref)=0
orcus::spreadsheet::iface::import_conditional_format::set_min_databar_length
virtual void set_min_databar_length(double length)=0