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 "types.hpp"
14 #include "../types.hpp"
15 #include "../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 
45  virtual size_t append(std::string_view s) = 0;
46 
56  virtual size_t add(std::string_view s) = 0;
57 
63  virtual void set_segment_font(size_t font_index) = 0;
64 
71  virtual void set_segment_bold(bool b) = 0;
72 
79  virtual void set_segment_italic(bool b) = 0;
80 
86  virtual void set_segment_font_name(std::string_view s) = 0;
87 
93  virtual void set_segment_font_size(double point) = 0;
94 
103  virtual void set_segment_font_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) = 0;
104 
111  virtual void append_segment(std::string_view s) = 0;
112 
122  virtual size_t commit_segments() = 0;
123 };
124 
138 {
139 public:
140  ORCUS_DLLPUBLIC virtual ~import_styles() = 0;
141 
142  // font
143 
144  virtual void set_font_count(size_t n) = 0;
145  virtual void set_font_bold(bool b) = 0;
146  virtual void set_font_italic(bool b) = 0;
147  virtual void set_font_name(std::string_view s) = 0;
148  virtual void set_font_size(double point) = 0;
149  virtual void set_font_underline(underline_t e) = 0;
150  virtual void set_font_underline_width(underline_width_t e) = 0;
151  virtual void set_font_underline_mode(underline_mode_t e) = 0;
152  virtual void set_font_underline_type(underline_type_t e) = 0;
153  virtual void set_font_underline_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) = 0;
154  virtual void set_font_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) = 0;
155  virtual void set_strikethrough_style(strikethrough_style_t s) = 0;
156  virtual void set_strikethrough_type(strikethrough_type_t s) = 0;
157  virtual void set_strikethrough_width(strikethrough_width_t s) = 0;
158  virtual void set_strikethrough_text(strikethrough_text_t s) = 0;
159  virtual size_t commit_font() = 0;
160 
161  // fill
162 
169  virtual void set_fill_count(size_t n) = 0;
170 
176  virtual void set_fill_pattern_type(fill_pattern_t fp) = 0;
177 
188  virtual void set_fill_fg_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) = 0;
189 
200  virtual void set_fill_bg_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) = 0;
201 
208  virtual size_t commit_fill() = 0;
209 
210  // border
211 
212  virtual void set_border_count(size_t n) = 0;
213 
214  virtual void set_border_style(border_direction_t dir, border_style_t style) = 0;
215  virtual void set_border_color(
216  border_direction_t dir, color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) = 0;
217  virtual void set_border_width(border_direction_t dir, double width, orcus::length_unit_t unit) = 0;
218  virtual size_t commit_border() = 0;
219 
220  // cell protection
221  virtual void set_cell_hidden(bool b) = 0;
222  virtual void set_cell_locked(bool b) = 0;
223  virtual void set_cell_print_content(bool b) = 0;
224  virtual void set_cell_formula_hidden(bool b) = 0;
225  virtual size_t commit_cell_protection() = 0;
226 
227  // number format
228  virtual void set_number_format_count(size_t n) = 0;
229  virtual void set_number_format_identifier(size_t id) = 0;
230  virtual void set_number_format_code(std::string_view s) = 0;
231  virtual size_t commit_number_format() = 0;
232 
233  // cell format and cell style format (xf == cell format)
234 
235  virtual void set_cell_xf_count(size_t n) = 0;
236  virtual void set_cell_style_xf_count(size_t n) = 0;
237  virtual void set_dxf_count(size_t n) = 0;
238 
239  virtual void set_xf_font(size_t index) = 0;
240  virtual void set_xf_fill(size_t index) = 0;
241  virtual void set_xf_border(size_t index) = 0;
242  virtual void set_xf_protection(size_t index) = 0;
243  virtual void set_xf_number_format(size_t index) = 0;
244  virtual void set_xf_style_xf(size_t index) = 0;
245  virtual void set_xf_apply_alignment(bool b) = 0;
246  virtual void set_xf_horizontal_alignment(hor_alignment_t align) = 0;
247  virtual void set_xf_vertical_alignment(ver_alignment_t align) = 0;
248 
249  virtual size_t commit_cell_xf() = 0;
250  virtual size_t commit_cell_style_xf() = 0;
251  virtual size_t commit_dxf() = 0;
252 
253  // cell style entry
254 
255  virtual void set_cell_style_count(size_t n) = 0;
256  virtual void set_cell_style_name(std::string_view s) = 0;
257  virtual void set_cell_style_xf(size_t index) = 0;
258  virtual void set_cell_style_builtin(size_t index) = 0;
259  virtual void set_cell_style_parent_name(std::string_view s) = 0;
260  virtual size_t commit_cell_style() = 0;
261 };
262 
269 {
270 public:
271  ORCUS_DLLPUBLIC virtual ~import_sheet_properties() = 0;
272 
273  virtual void set_column_width(col_t col, double width, orcus::length_unit_t unit) = 0;
274 
275  virtual void set_column_hidden(col_t col, bool hidden) = 0;
276 
277  virtual void set_row_height(row_t row, double height, orcus::length_unit_t unit) = 0;
278 
279  virtual void set_row_hidden(row_t row, bool hidden) = 0;
280 
287  virtual void set_merge_cell_range(const range_t& range) = 0;
288 };
289 
302 class ORCUS_DLLPUBLIC import_named_expression
303 {
304 public:
305  virtual ~import_named_expression();
306 
314  virtual void set_base_position(const src_address_t& pos) = 0;
315 
322  virtual void set_named_expression(std::string_view name, std::string_view expression) = 0;
323 
331  virtual void set_named_range(std::string_view name, std::string_view range) = 0;
332 
333  virtual void commit() = 0;
334 };
335 
340 {
341 public:
342  ORCUS_DLLPUBLIC virtual ~import_data_table() = 0;
343 
344  virtual void set_type(data_table_type_t type) = 0;
345 
346  virtual void set_range(const range_t& range) = 0;
347 
348  virtual void set_first_reference(std::string_view ref, bool deleted) = 0;
349 
350  virtual void set_second_reference(std::string_view ref, bool deleted) = 0;
351 
352  virtual void commit() = 0;
353 };
354 
356 {
357 public:
358  ORCUS_DLLPUBLIC virtual ~import_auto_filter() = 0;
359 
366  virtual void set_range(const range_t& range) = 0;
367 
375  virtual void set_column(col_t col) = 0;
376 
382  virtual void append_column_match_value(std::string_view value) = 0;
383 
387  virtual void commit_column() = 0;
388 
392  virtual void commit() = 0;
393 };
394 
418 {
419 public:
420  ORCUS_DLLPUBLIC virtual ~import_conditional_format() = 0;
421 
426  virtual void set_color(color_elem_t alpha, color_elem_t red,
427  color_elem_t green, color_elem_t blue) = 0;
428 
432  virtual void set_formula(std::string_view formula) = 0;
433 
438  virtual void set_condition_type(condition_type_t type) = 0;
439 
443  virtual void set_date(condition_date_t date) = 0;
444 
448  virtual void commit_condition() = 0;
449 
454  virtual void set_icon_name(std::string_view name) = 0;
455 
460  virtual void set_databar_gradient(bool gradient) = 0;
461 
466  virtual void set_databar_axis(databar_axis_t axis) = 0;
467 
472  virtual void set_databar_color_positive(color_elem_t alpha, color_elem_t red,
473  color_elem_t green, color_elem_t blue) = 0;
474 
479  virtual void set_databar_color_negative(color_elem_t alpha, color_elem_t red,
480  color_elem_t green, color_elem_t blue) = 0;
481 
486  virtual void set_min_databar_length(double length) = 0;
487 
492  virtual void set_max_databar_length(double length) = 0;
493 
498  virtual void set_show_value(bool show) = 0;
499 
504  virtual void set_iconset_reverse(bool reverse) = 0;
505 
509  virtual void set_xf_id(size_t xf) = 0;
510 
515  virtual void set_operator(condition_operator_t condition_type) = 0;
516 
517  virtual void set_type(conditional_format_t type) = 0;
518 
519  virtual void commit_entry() = 0;
520 
521  virtual void set_range(std::string_view range) = 0;
522 
523  virtual void set_range(row_t row_start, col_t col_start,
524  row_t row_end, col_t col_end) = 0;
525 
526  virtual void commit_format() = 0;
527 };
528 
533 class ORCUS_DLLPUBLIC import_table
534 {
535 public:
536  virtual ~import_table() = 0;
537 
538  virtual import_auto_filter* get_auto_filter();
539 
540  virtual void set_identifier(size_t id) = 0;
541 
542  virtual void set_range(std::string_view ref) = 0;
543 
544  virtual void set_totals_row_count(size_t row_count) = 0;
545 
546  virtual void set_name(std::string_view name) = 0;
547 
548  virtual void set_display_name(std::string_view name) = 0;
549 
550  virtual void set_column_count(size_t n) = 0;
551 
552  virtual void set_column_identifier(size_t id) = 0;
553  virtual void set_column_name(std::string_view name) = 0;
554  virtual void set_column_totals_row_label(std::string_view label) = 0;
555  virtual void set_column_totals_row_function(totals_row_function_t func) = 0;
556  virtual void commit_column() = 0;
557 
558  virtual void set_style_name(std::string_view name) = 0;
559  virtual void set_style_show_first_column(bool b) = 0;
560  virtual void set_style_show_last_column(bool b) = 0;
561  virtual void set_style_show_row_stripes(bool b) = 0;
562  virtual void set_style_show_column_stripes(bool b) = 0;
563 
564  virtual void commit() = 0;
565 };
566 
567 class ORCUS_DLLPUBLIC import_formula
568 {
569 public:
570  virtual ~import_formula();
571 
578  virtual void set_position(row_t row, col_t col) = 0;
579 
587  virtual void set_formula(formula_grammar_t grammar, std::string_view formula) = 0;
588 
594  virtual void set_shared_formula_index(size_t index) = 0;
595 
601  virtual void set_result_string(std::string_view value) = 0;
602 
608  virtual void set_result_value(double value) = 0;
609 
615  virtual void set_result_bool(bool value) = 0;
616 
620  virtual void set_result_empty() = 0;
621 
625  virtual void commit() = 0;
626 };
627 
628 class ORCUS_DLLPUBLIC import_array_formula
629 {
630 public:
631  virtual ~import_array_formula();
632 
633  virtual void set_range(const range_t& range) = 0;
634 
635  virtual void set_formula(formula_grammar_t grammar, std::string_view formula) = 0;
636 
637  virtual void set_result_string(row_t row, col_t col, std::string_view value) = 0;
638 
639  virtual void set_result_value(row_t row, col_t col, double value) = 0;
640 
641  virtual void set_result_bool(row_t row, col_t col, bool value) = 0;
642 
643  virtual void set_result_empty(row_t row, col_t col) = 0;
644 
645  virtual void commit() = 0;
646 };
647 
651 class ORCUS_DLLPUBLIC import_sheet
652 {
653 public:
654  virtual ~import_sheet() = 0;
655 
656  virtual import_sheet_view* get_sheet_view();
657 
658  virtual import_sheet_properties* get_sheet_properties();
659 
672 
682 
694 
703 
704  virtual import_named_expression* get_named_expression();
705 
706  virtual import_array_formula* get_array_formula();
707 
715 
724  virtual void set_auto(row_t row, col_t col, std::string_view s) = 0;
725 
733  virtual void set_string(row_t row, col_t col, string_id_t sindex) = 0;
734 
742  virtual void set_value(row_t row, col_t col, double value) = 0;
743 
751  virtual void set_bool(row_t row, col_t col, bool value) = 0;
752 
766  virtual void set_date_time(
767  row_t row, col_t col,
768  int year, int month, int day, int hour, int minute, double second) = 0;
769 
778  virtual void set_format(row_t row, col_t col, size_t xf_index) = 0;
779 
790  virtual void set_format(row_t row_start, col_t col_start,
791  row_t row_end, col_t col_end, size_t xf_index) = 0;
792 
802  virtual void fill_down_cells(row_t src_row, col_t src_col, row_t range_size) = 0;
803 
810  virtual range_size_t get_sheet_size() const = 0;
811 };
812 
814 {
815 public:
816  ORCUS_DLLPUBLIC virtual ~import_global_settings() = 0;
817 
827  virtual void set_origin_date(int year, int month, int day) = 0;
828 
837  virtual void set_default_formula_grammar(formula_grammar_t grammar) = 0;
838 
844  virtual formula_grammar_t get_default_formula_grammar() const = 0;
845 
851  virtual void set_character_set(character_set_t charset) = 0;
852 };
853 
854 class ORCUS_DLLPUBLIC import_reference_resolver
855 {
856 public:
857  virtual ~import_reference_resolver();
858 
870  virtual src_address_t resolve_address(std::string_view address) = 0;
871 
884  virtual src_range_t resolve_range(std::string_view range) = 0;
885 };
886 
897 class ORCUS_DLLPUBLIC import_factory
898 {
899 public:
900  virtual ~import_factory() = 0;
901 
902  virtual import_global_settings* get_global_settings();
903 
909 
910  virtual import_named_expression* get_named_expression();
911 
917 
918  virtual import_reference_resolver* get_reference_resolver(formula_ref_context_t cxt);
919 
932  pivot_cache_id_t cache_id);
933 
944  pivot_cache_id_t cache_id);
945 
957  virtual import_sheet* append_sheet(sheet_t sheet_index, std::string_view name) = 0;
958 
968  virtual import_sheet* get_sheet(std::string_view name) = 0;
969 
978  virtual import_sheet* get_sheet(sheet_t sheet_index) = 0;
979 
984  virtual void finalize() = 0;
985 };
986 
987 }}}
988 
989 #endif
990 
991 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
Definition: import_interface.hpp:629
Definition: import_interface.hpp:356
virtual void set_range(const range_t &range)=0
virtual void append_column_match_value(std::string_view value)=0
Definition: import_interface.hpp:418
virtual void set_databar_gradient(bool gradient)=0
virtual void set_operator(condition_operator_t condition_type)=0
virtual void set_formula(std::string_view formula)=0
virtual void set_condition_type(condition_type_t type)=0
virtual void set_databar_color_positive(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue)=0
virtual void set_max_databar_length(double length)=0
virtual void set_min_databar_length(double length)=0
virtual void set_databar_axis(databar_axis_t axis)=0
virtual void set_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue)=0
virtual void set_date(condition_date_t date)=0
virtual void set_icon_name(std::string_view name)=0
virtual void set_databar_color_negative(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue)=0
Definition: import_interface.hpp:340
Definition: import_interface.hpp:898
virtual import_pivot_cache_records * create_pivot_cache_records(pivot_cache_id_t cache_id)
virtual import_shared_strings * get_shared_strings()
virtual import_styles * get_styles()
virtual import_pivot_cache_definition * create_pivot_cache_definition(pivot_cache_id_t cache_id)
virtual import_sheet * append_sheet(sheet_t sheet_index, std::string_view name)=0
virtual import_sheet * get_sheet(sheet_t sheet_index)=0
virtual import_sheet * get_sheet(std::string_view name)=0
Definition: import_interface.hpp:568
virtual void set_formula(formula_grammar_t grammar, std::string_view formula)=0
virtual void set_result_bool(bool value)=0
virtual void set_shared_formula_index(size_t index)=0
virtual void set_result_value(double value)=0
virtual void set_position(row_t row, col_t col)=0
virtual void set_result_string(std::string_view value)=0
Definition: import_interface.hpp:814
virtual void set_character_set(character_set_t charset)=0
virtual formula_grammar_t get_default_formula_grammar() const =0
virtual void set_origin_date(int year, int month, int day)=0
virtual void set_default_formula_grammar(formula_grammar_t grammar)=0
Definition: import_interface.hpp:303
virtual void set_named_range(std::string_view name, std::string_view range)=0
virtual void set_named_expression(std::string_view name, std::string_view expression)=0
virtual void set_base_position(const src_address_t &pos)=0
Definition: import_interface_pivot.hpp:29
Definition: import_interface_pivot.hpp:290
Definition: import_interface.hpp:855
virtual src_range_t resolve_range(std::string_view range)=0
virtual src_address_t resolve_address(std::string_view address)=0
Definition: import_interface.hpp:31
virtual size_t append(std::string_view s)=0
virtual void set_segment_font_size(double point)=0
virtual void set_segment_font_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue)=0
virtual size_t add(std::string_view s)=0
virtual void append_segment(std::string_view s)=0
virtual void set_segment_font(size_t font_index)=0
virtual void set_segment_font_name(std::string_view s)=0
Definition: import_interface.hpp:269
virtual void set_merge_cell_range(const range_t &range)=0
Definition: import_interface_view.hpp:20
Definition: import_interface.hpp:652
virtual void set_string(row_t row, col_t col, string_id_t sindex)=0
virtual void set_bool(row_t row, col_t col, bool value)=0
virtual import_formula * get_formula()
virtual range_size_t get_sheet_size() const =0
virtual import_table * get_table()
virtual void set_format(row_t row_start, col_t col_start, row_t row_end, col_t col_end, size_t xf_index)=0
virtual void set_auto(row_t row, col_t col, std::string_view s)=0
virtual import_data_table * get_data_table()
virtual void fill_down_cells(row_t src_row, col_t src_col, row_t range_size)=0
virtual void set_value(row_t row, col_t col, double value)=0
virtual import_conditional_format * get_conditional_format()
virtual import_auto_filter * get_auto_filter()
virtual void set_format(row_t row, col_t col, size_t xf_index)=0
virtual void set_date_time(row_t row, col_t col, int year, int month, int day, int hour, int minute, double second)=0
Definition: import_interface.hpp:138
virtual void set_fill_pattern_type(fill_pattern_t fp)=0
virtual void set_fill_bg_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue)=0
virtual void set_fill_fg_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue)=0
virtual void set_fill_count(size_t n)=0
Definition: import_interface.hpp:534
Definition: types.hpp:401
Definition: types.hpp:407
Definition: types.hpp:417
Definition: types.hpp:428