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 
67  virtual void set_segment_font(size_t font_index) = 0;
68 
75  virtual void set_segment_bold(bool b) = 0;
76 
83  virtual void set_segment_italic(bool b) = 0;
84 
92  virtual void set_segment_font_name(const char* s, size_t n) = 0;
93 
99  virtual void set_segment_font_size(double point) = 0;
100 
109  virtual void set_segment_font_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) = 0;
110 
119  virtual void append_segment(const char* s, size_t n) = 0;
120 
130  virtual size_t commit_segments() = 0;
131 };
132 
146 {
147 public:
148  ORCUS_DLLPUBLIC virtual ~import_styles() = 0;
149 
150  // font
151 
152  virtual void set_font_count(size_t n) = 0;
153  virtual void set_font_bold(bool b) = 0;
154  virtual void set_font_italic(bool b) = 0;
155  virtual void set_font_name(const char* s, size_t n) = 0;
156  virtual void set_font_size(double point) = 0;
157  virtual void set_font_underline(underline_t e) = 0;
158  virtual void set_font_underline_width(underline_width_t e) = 0;
159  virtual void set_font_underline_mode(underline_mode_t e) = 0;
160  virtual void set_font_underline_type(underline_type_t e) = 0;
161  virtual void set_font_underline_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) = 0;
162  virtual void set_font_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) = 0;
163  virtual void set_strikethrough_style(strikethrough_style_t s) = 0;
164  virtual void set_strikethrough_type(strikethrough_type_t s) = 0;
165  virtual void set_strikethrough_width(strikethrough_width_t s) = 0;
166  virtual void set_strikethrough_text(strikethrough_text_t s) = 0;
167  virtual size_t commit_font() = 0;
168 
169  // fill
170 
177  virtual void set_fill_count(size_t n) = 0;
178 
184  virtual void set_fill_pattern_type(fill_pattern_t fp) = 0;
185 
196  virtual void set_fill_fg_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) = 0;
197 
208  virtual void set_fill_bg_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) = 0;
209 
216  virtual size_t commit_fill() = 0;
217 
218  // border
219 
220  virtual void set_border_count(size_t n) = 0;
221 
222  virtual void set_border_style(border_direction_t dir, border_style_t style) = 0;
223  virtual void set_border_color(
224  border_direction_t dir, color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) = 0;
225  virtual void set_border_width(border_direction_t dir, double width, orcus::length_unit_t unit) = 0;
226  virtual size_t commit_border() = 0;
227 
228  // cell protection
229  virtual void set_cell_hidden(bool b) = 0;
230  virtual void set_cell_locked(bool b) = 0;
231  virtual void set_cell_print_content(bool b) = 0;
232  virtual void set_cell_formula_hidden(bool b) = 0;
233  virtual size_t commit_cell_protection() = 0;
234 
235  // number format
236  virtual void set_number_format_count(size_t n) = 0;
237  virtual void set_number_format_identifier(size_t id) = 0;
238  virtual void set_number_format_code(const char* s, size_t n) = 0;
239  virtual size_t commit_number_format() = 0;
240 
241  // cell format and cell style format (xf == cell format)
242 
243  virtual void set_cell_xf_count(size_t n) = 0;
244  virtual void set_cell_style_xf_count(size_t n) = 0;
245  virtual void set_dxf_count(size_t n) = 0;
246 
247  virtual void set_xf_font(size_t index) = 0;
248  virtual void set_xf_fill(size_t index) = 0;
249  virtual void set_xf_border(size_t index) = 0;
250  virtual void set_xf_protection(size_t index) = 0;
251  virtual void set_xf_number_format(size_t index) = 0;
252  virtual void set_xf_style_xf(size_t index) = 0;
253  virtual void set_xf_apply_alignment(bool b) = 0;
254  virtual void set_xf_horizontal_alignment(hor_alignment_t align) = 0;
255  virtual void set_xf_vertical_alignment(ver_alignment_t align) = 0;
256 
257  virtual size_t commit_cell_xf() = 0;
258  virtual size_t commit_cell_style_xf() = 0;
259  virtual size_t commit_dxf() = 0;
260 
261  // cell style entry
262 
263  virtual void set_cell_style_count(size_t n) = 0;
264  virtual void set_cell_style_name(const char* s, size_t n) = 0;
265  virtual void set_cell_style_xf(size_t index) = 0;
266  virtual void set_cell_style_builtin(size_t index) = 0;
267  virtual void set_cell_style_parent_name(const char* s, size_t n) = 0;
268  virtual size_t commit_cell_style() = 0;
269 };
270 
277 {
278 public:
279  ORCUS_DLLPUBLIC virtual ~import_sheet_properties() = 0;
280 
281  virtual void set_column_width(col_t col, double width, orcus::length_unit_t unit) = 0;
282 
283  virtual void set_column_hidden(col_t col, bool hidden) = 0;
284 
285  virtual void set_row_height(row_t row, double height, orcus::length_unit_t unit) = 0;
286 
287  virtual void set_row_hidden(row_t row, bool hidden) = 0;
288 
295  virtual void set_merge_cell_range(const range_t& range) = 0;
296 };
297 
301 class ORCUS_DLLPUBLIC import_named_expression
302 {
303 public:
304  virtual ~import_named_expression();
305 
318  virtual void define_name(const char* p_name, size_t n_name, const char* p_exp, size_t n_exp) = 0;
319 };
320 
325 {
326 public:
327  ORCUS_DLLPUBLIC virtual ~import_data_table() = 0;
328 
329  virtual void set_type(data_table_type_t type) = 0;
330 
331  virtual void set_range(const range_t& range) = 0;
332 
333  virtual void set_first_reference(const char* p_ref, size_t n_ref, bool deleted) = 0;
334 
335  virtual void set_second_reference(const char* p_ref, size_t n_ref, bool deleted) = 0;
336 
337  virtual void commit() = 0;
338 };
339 
341 {
342 public:
343  ORCUS_DLLPUBLIC virtual ~import_auto_filter() = 0;
344 
351  virtual void set_range(const range_t& range) = 0;
352 
360  virtual void set_column(col_t col) = 0;
361 
368  virtual void append_column_match_value(const char* p, size_t n) = 0;
369 
373  virtual void commit_column() = 0;
374 
378  virtual void commit() = 0;
379 };
380 
404 {
405 public:
406  ORCUS_DLLPUBLIC virtual ~import_conditional_format() = 0;
407 
412  virtual void set_color(color_elem_t alpha, color_elem_t red,
413  color_elem_t green, color_elem_t blue) = 0;
414 
418  virtual void set_formula(const char* p, size_t n) = 0;
419 
424  virtual void set_condition_type(condition_type_t type) = 0;
425 
429  virtual void set_date(condition_date_t date) = 0;
430 
434  virtual void commit_condition() = 0;
435 
440  virtual void set_icon_name(const char* p, size_t n) = 0;
441 
446  virtual void set_databar_gradient(bool gradient) = 0;
447 
452  virtual void set_databar_axis(databar_axis_t axis) = 0;
453 
458  virtual void set_databar_color_positive(color_elem_t alpha, color_elem_t red,
459  color_elem_t green, color_elem_t blue) = 0;
460 
465  virtual void set_databar_color_negative(color_elem_t alpha, color_elem_t red,
466  color_elem_t green, color_elem_t blue) = 0;
467 
472  virtual void set_min_databar_length(double length) = 0;
473 
478  virtual void set_max_databar_length(double length) = 0;
479 
484  virtual void set_show_value(bool show) = 0;
485 
490  virtual void set_iconset_reverse(bool reverse) = 0;
491 
495  virtual void set_xf_id(size_t xf) = 0;
496 
501  virtual void set_operator(condition_operator_t condition_type) = 0;
502 
503  virtual void set_type(conditional_format_t type) = 0;
504 
505  virtual void commit_entry() = 0;
506 
507  virtual void set_range(const char* p, size_t n) = 0;
508 
509  virtual void set_range(row_t row_start, col_t col_start,
510  row_t row_end, col_t col_end) = 0;
511 
512  virtual void commit_format() = 0;
513 };
514 
519 class ORCUS_DLLPUBLIC import_table
520 {
521 public:
522  virtual ~import_table() = 0;
523 
524  virtual import_auto_filter* get_auto_filter();
525 
526  virtual void set_identifier(size_t id) = 0;
527 
528  virtual void set_range(const char* p_ref, size_t n_ref) = 0;
529 
530  virtual void set_totals_row_count(size_t row_count) = 0;
531 
532  virtual void set_name(const char* p, size_t n) = 0;
533 
534  virtual void set_display_name(const char* p, size_t n) = 0;
535 
536  virtual void set_column_count(size_t n) = 0;
537 
538  virtual void set_column_identifier(size_t id) = 0;
539  virtual void set_column_name(const char* p, size_t n) = 0;
540  virtual void set_column_totals_row_label(const char* p, size_t n) = 0;
541  virtual void set_column_totals_row_function(totals_row_function_t func) = 0;
542  virtual void commit_column() = 0;
543 
544  virtual void set_style_name(const char* p, size_t n) = 0;
545  virtual void set_style_show_first_column(bool b) = 0;
546  virtual void set_style_show_last_column(bool b) = 0;
547  virtual void set_style_show_row_stripes(bool b) = 0;
548  virtual void set_style_show_column_stripes(bool b) = 0;
549 
550  virtual void commit() = 0;
551 };
552 
553 class ORCUS_DLLPUBLIC import_formula
554 {
555 public:
556  virtual ~import_formula();
557 
564  virtual void set_position(row_t row, col_t col) = 0;
565 
574  virtual void set_formula(formula_grammar_t grammar, const char* p, size_t n) = 0;
575 
581  virtual void set_shared_formula_index(size_t index) = 0;
582 
588  virtual void set_result_string(size_t sindex) = 0;
589 
595  virtual void set_result_value(double value) = 0;
596 
602  virtual void set_result_bool(bool value) = 0;
603 
607  virtual void set_result_empty() = 0;
608 
612  virtual void commit() = 0;
613 };
614 
615 class ORCUS_DLLPUBLIC import_array_formula
616 {
617 public:
618  virtual ~import_array_formula();
619 
620  virtual void set_range(const range_t& range) = 0;
621 
622  virtual void set_formula(formula_grammar_t grammar, const char* p, size_t n) = 0;
623 
624  virtual void set_result_string(row_t row, col_t col, size_t sindex) = 0;
625 
626  virtual void set_result_value(row_t row, col_t col, double value) = 0;
627 
628  virtual void set_result_bool(row_t row, col_t col, bool value) = 0;
629 
630  virtual void set_result_empty(row_t row, col_t col) = 0;
631 
632  virtual void commit() = 0;
633 };
634 
638 class ORCUS_DLLPUBLIC import_sheet
639 {
640 public:
641  virtual ~import_sheet() = 0;
642 
643  virtual import_sheet_view* get_sheet_view();
644 
645  virtual import_sheet_properties* get_sheet_properties();
646 
658  virtual import_data_table* get_data_table();
659 
668  virtual import_auto_filter* get_auto_filter();
669 
680  virtual import_table* get_table();
681 
689  virtual import_conditional_format* get_conditional_format();
690 
691  virtual import_named_expression* get_named_expression();
692 
693  virtual import_array_formula* get_array_formula();
694 
701  virtual import_formula* get_formula();
702 
712  virtual void set_auto(row_t row, col_t col, const char* p, size_t n) = 0;
713 
721  virtual void set_string(row_t row, col_t col, size_t sindex) = 0;
722 
730  virtual void set_value(row_t row, col_t col, double value) = 0;
731 
739  virtual void set_bool(row_t row, col_t col, bool value) = 0;
740 
747  virtual void set_date_time(
748  row_t row, col_t col,
749  int year, int month, int day, int hour, int minute, double second) = 0;
750 
759  virtual void set_format(row_t row, col_t col, size_t xf_index) = 0;
760 
771  virtual void set_format(row_t row_start, col_t col_start,
772  row_t row_end, col_t col_end, size_t xf_index) = 0;
773 
783  virtual void fill_down_cells(row_t src_row, col_t src_col, row_t range_size) = 0;
784 
791  virtual range_size_t get_sheet_size() const = 0;
792 };
793 
795 {
796 public:
797  ORCUS_DLLPUBLIC virtual ~import_global_settings() = 0;
798 
808  virtual void set_origin_date(int year, int month, int day) = 0;
809 
818  virtual void set_default_formula_grammar(formula_grammar_t grammar) = 0;
819 
825  virtual formula_grammar_t get_default_formula_grammar() const = 0;
826 
832  virtual void set_character_set(character_set_t charset) = 0;
833 };
834 
835 class ORCUS_DLLPUBLIC import_reference_resolver
836 {
837 public:
838  virtual ~import_reference_resolver();
839 
853  virtual address_t resolve_address(const char* p, size_t n) = 0;
854 
868  virtual range_t resolve_range(const char* p, size_t n) = 0;
869 };
870 
881 class ORCUS_DLLPUBLIC import_factory
882 {
883 public:
884  virtual ~import_factory() = 0;
885 
886  virtual import_global_settings* get_global_settings();
887 
892  virtual import_shared_strings* get_shared_strings();
893 
894  virtual import_named_expression* get_named_expression();
895 
900  virtual import_styles* get_styles();
901 
902  virtual import_reference_resolver* get_reference_resolver();
903 
915  virtual import_pivot_cache_definition* create_pivot_cache_definition(
916  pivot_cache_id_t cache_id);
917 
927  virtual import_pivot_cache_records* create_pivot_cache_records(
928  pivot_cache_id_t cache_id);
929 
943  virtual import_sheet* append_sheet(
944  sheet_t sheet_index, const char* sheet_name, size_t sheet_name_length) = 0;
945 
951  virtual import_sheet* get_sheet(const char* sheet_name, size_t sheet_name_length) = 0;
952 
961  virtual import_sheet* get_sheet(sheet_t sheet_index) = 0;
962 
967  virtual void finalize() = 0;
968 };
969 
970 }}}
971 
972 #endif
973 
974 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
virtual size_t add(const char *s, size_t n)=0
virtual void set_date(condition_date_t date)=0
Definition: import_interface_pivot.hpp:290
Definition: import_interface.hpp:638
virtual void set_icon_name(const char *p, size_t n)=0
virtual void set_segment_font_size(double point)=0
Definition: import_interface.hpp:145
Definition: import_interface.hpp:553
virtual void set_segment_font_name(const char *s, size_t n)=0
virtual formula_grammar_t get_default_formula_grammar() const =0
Definition: import_interface.hpp:301
Definition: import_interface.hpp:340
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
virtual void set_operator(condition_operator_t condition_type)=0
virtual void set_merge_cell_range(const range_t &range)=0
virtual void set_segment_font_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue)=0
Definition: import_interface.hpp:794
virtual size_t append(const char *s, size_t n)=0
virtual void set_min_databar_length(double length)=0
virtual void set_range(const range_t &range)=0
virtual void set_character_set(character_set_t charset)=0
Definition: types.hpp:367
Definition: import_interface.hpp:615
Definition: import_interface.hpp:276
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_pivot.hpp:28
Definition: import_interface.hpp:881
virtual void set_databar_gradient(bool gradient)=0
Definition: types.hpp:361
Definition: import_interface.hpp:403
virtual void set_formula(const char *p, size_t n)=0
virtual void set_segment_font(size_t font_index)=0
Definition: types.hpp:355
Definition: import_interface.hpp:324
virtual void append_segment(const char *s, size_t n)=0
Definition: import_interface.hpp:30
Definition: import_interface_view.hpp:19
virtual void set_fill_pattern_type(fill_pattern_t fp)=0
virtual void set_default_formula_grammar(formula_grammar_t grammar)=0
Definition: import_interface.hpp:519
Definition: import_interface.hpp:835
virtual void set_databar_axis(databar_axis_t axis)=0
virtual void append_column_match_value(const char *p, size_t n)=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_databar_color_positive(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue)=0
virtual void set_condition_type(condition_type_t type)=0
virtual void set_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue)=0
Definition: base64.hpp:15
virtual void set_max_databar_length(double length)=0
virtual void set_origin_date(int year, int month, int day)=0