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(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(strikethrough_style_t s) = 0;
103  virtual void set_strikethrough_type(strikethrough_type_t s) = 0;
104  virtual void set_strikethrough_width(strikethrough_width_t s) = 0;
105  virtual void set_strikethrough_text(strikethrough_text_t s) = 0;
106  virtual size_t commit_font() = 0;
107 
108  // fill
109 
116  virtual void set_fill_count(size_t n) = 0;
117 
123  virtual void set_fill_pattern_type(fill_pattern_t fp) = 0;
124 
135  virtual void set_fill_fg_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) = 0;
136 
147  virtual void set_fill_bg_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) = 0;
148 
155  virtual size_t commit_fill() = 0;
156 
157  // border
158 
159  virtual void set_border_count(size_t n) = 0;
160 
161  virtual void set_border_style(border_direction_t dir, border_style_t style) = 0;
162  virtual void set_border_color(
163  border_direction_t dir, color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) = 0;
164  virtual void set_border_width(border_direction_t dir, double width, orcus::length_unit_t unit) = 0;
165  virtual size_t commit_border() = 0;
166 
167  // cell protection
168  virtual void set_cell_hidden(bool b) = 0;
169  virtual void set_cell_locked(bool b) = 0;
170  virtual void set_cell_print_content(bool b) = 0;
171  virtual void set_cell_formula_hidden(bool b) = 0;
172  virtual size_t commit_cell_protection() = 0;
173 
174  // number format
175  virtual void set_number_format_count(size_t n) = 0;
176  virtual void set_number_format_identifier(size_t id) = 0;
177  virtual void set_number_format_code(const char* s, size_t n) = 0;
178  virtual size_t commit_number_format() = 0;
179 
180  // cell format and cell style format (xf == cell format)
181 
182  virtual void set_cell_xf_count(size_t n) = 0;
183  virtual void set_cell_style_xf_count(size_t n) = 0;
184  virtual void set_dxf_count(size_t n) = 0;
185 
186  virtual void set_xf_font(size_t index) = 0;
187  virtual void set_xf_fill(size_t index) = 0;
188  virtual void set_xf_border(size_t index) = 0;
189  virtual void set_xf_protection(size_t index) = 0;
190  virtual void set_xf_number_format(size_t index) = 0;
191  virtual void set_xf_style_xf(size_t index) = 0;
192  virtual void set_xf_apply_alignment(bool b) = 0;
193  virtual void set_xf_horizontal_alignment(hor_alignment_t align) = 0;
194  virtual void set_xf_vertical_alignment(ver_alignment_t align) = 0;
195 
196  virtual size_t commit_cell_xf() = 0;
197  virtual size_t commit_cell_style_xf() = 0;
198  virtual size_t commit_dxf() = 0;
199 
200  // cell style entry
201 
202  virtual void set_cell_style_count(size_t n) = 0;
203  virtual void set_cell_style_name(const char* s, size_t n) = 0;
204  virtual void set_cell_style_xf(size_t index) = 0;
205  virtual void set_cell_style_builtin(size_t index) = 0;
206  virtual void set_cell_style_parent_name(const char* s, size_t n) = 0;
207  virtual size_t commit_cell_style() = 0;
208 };
209 
216 {
217 public:
218  ORCUS_DLLPUBLIC virtual ~import_sheet_properties() = 0;
219 
220  virtual void set_column_width(col_t col, double width, orcus::length_unit_t unit) = 0;
221 
222  virtual void set_column_hidden(col_t col, bool hidden) = 0;
223 
224  virtual void set_row_height(row_t row, double height, orcus::length_unit_t unit) = 0;
225 
226  virtual void set_row_hidden(row_t row, bool hidden) = 0;
227 
234  virtual void set_merge_cell_range(const range_t& range) = 0;
235 };
236 
240 class ORCUS_DLLPUBLIC import_named_expression
241 {
242 public:
243  virtual ~import_named_expression();
244 
257  virtual void define_name(const char* p_name, size_t n_name, const char* p_exp, size_t n_exp) = 0;
258 };
259 
264 {
265 public:
266  ORCUS_DLLPUBLIC virtual ~import_data_table() = 0;
267 
268  virtual void set_type(data_table_type_t type) = 0;
269 
270  virtual void set_range(const range_t& range) = 0;
271 
272  virtual void set_first_reference(const char* p_ref, size_t n_ref, bool deleted) = 0;
273 
274  virtual void set_second_reference(const char* p_ref, size_t n_ref, bool deleted) = 0;
275 
276  virtual void commit() = 0;
277 };
278 
280 {
281 public:
282  ORCUS_DLLPUBLIC virtual ~import_auto_filter() = 0;
283 
290  virtual void set_range(const range_t& range) = 0;
291 
299  virtual void set_column(col_t col) = 0;
300 
307  virtual void append_column_match_value(const char* p, size_t n) = 0;
308 
312  virtual void commit_column() = 0;
313 
317  virtual void commit() = 0;
318 };
319 
343 {
344 public:
345  ORCUS_DLLPUBLIC virtual ~import_conditional_format() = 0;
346 
351  virtual void set_color(color_elem_t alpha, color_elem_t red,
352  color_elem_t green, color_elem_t blue) = 0;
353 
357  virtual void set_formula(const char* p, size_t n) = 0;
358 
363  virtual void set_condition_type(condition_type_t type) = 0;
364 
368  virtual void set_date(condition_date_t date) = 0;
369 
373  virtual void commit_condition() = 0;
374 
379  virtual void set_icon_name(const char* p, size_t n) = 0;
380 
385  virtual void set_databar_gradient(bool gradient) = 0;
386 
391  virtual void set_databar_axis(databar_axis_t axis) = 0;
392 
397  virtual void set_databar_color_positive(color_elem_t alpha, color_elem_t red,
398  color_elem_t green, color_elem_t blue) = 0;
399 
404  virtual void set_databar_color_negative(color_elem_t alpha, color_elem_t red,
405  color_elem_t green, color_elem_t blue) = 0;
406 
411  virtual void set_min_databar_length(double length) = 0;
412 
417  virtual void set_max_databar_length(double length) = 0;
418 
423  virtual void set_show_value(bool show) = 0;
424 
429  virtual void set_iconset_reverse(bool reverse) = 0;
430 
434  virtual void set_xf_id(size_t xf) = 0;
435 
440  virtual void set_operator(condition_operator_t condition_type) = 0;
441 
442  virtual void set_type(conditional_format_t type) = 0;
443 
444  virtual void commit_entry() = 0;
445 
446  virtual void set_range(const char* p, size_t n) = 0;
447 
448  virtual void set_range(row_t row_start, col_t col_start,
449  row_t row_end, col_t col_end) = 0;
450 
451  virtual void commit_format() = 0;
452 };
453 
458 class ORCUS_DLLPUBLIC import_table
459 {
460 public:
461  virtual ~import_table() = 0;
462 
463  virtual import_auto_filter* get_auto_filter();
464 
465  virtual void set_identifier(size_t id) = 0;
466 
467  virtual void set_range(const char* p_ref, size_t n_ref) = 0;
468 
469  virtual void set_totals_row_count(size_t row_count) = 0;
470 
471  virtual void set_name(const char* p, size_t n) = 0;
472 
473  virtual void set_display_name(const char* p, size_t n) = 0;
474 
475  virtual void set_column_count(size_t n) = 0;
476 
477  virtual void set_column_identifier(size_t id) = 0;
478  virtual void set_column_name(const char* p, size_t n) = 0;
479  virtual void set_column_totals_row_label(const char* p, size_t n) = 0;
480  virtual void set_column_totals_row_function(totals_row_function_t func) = 0;
481  virtual void commit_column() = 0;
482 
483  virtual void set_style_name(const char* p, size_t n) = 0;
484  virtual void set_style_show_first_column(bool b) = 0;
485  virtual void set_style_show_last_column(bool b) = 0;
486  virtual void set_style_show_row_stripes(bool b) = 0;
487  virtual void set_style_show_column_stripes(bool b) = 0;
488 
489  virtual void commit() = 0;
490 };
491 
492 class ORCUS_DLLPUBLIC import_formula
493 {
494 public:
495  virtual ~import_formula();
496 
503  virtual void set_position(row_t row, col_t col) = 0;
504 
513  virtual void set_formula(formula_grammar_t grammar, const char* p, size_t n) = 0;
514 
520  virtual void set_shared_formula_index(size_t index) = 0;
521 
527  virtual void set_result_string(size_t sindex) = 0;
528 
534  virtual void set_result_value(double value) = 0;
535 
541  virtual void set_result_bool(bool value) = 0;
542 
546  virtual void set_result_empty() = 0;
547 
551  virtual void commit() = 0;
552 };
553 
554 class ORCUS_DLLPUBLIC import_array_formula
555 {
556 public:
557  virtual ~import_array_formula();
558 
559  virtual void set_range(const range_t& range) = 0;
560 
561  virtual void set_formula(formula_grammar_t grammar, const char* p, size_t n) = 0;
562 
563  virtual void set_result_string(row_t row, col_t col, size_t sindex) = 0;
564 
565  virtual void set_result_value(row_t row, col_t col, double value) = 0;
566 
567  virtual void set_result_bool(row_t row, col_t col, bool value) = 0;
568 
569  virtual void set_result_empty(row_t row, col_t col) = 0;
570 
571  virtual void commit() = 0;
572 };
573 
577 class ORCUS_DLLPUBLIC import_sheet
578 {
579 public:
580  virtual ~import_sheet() = 0;
581 
582  virtual import_sheet_view* get_sheet_view();
583 
584  virtual import_sheet_properties* get_sheet_properties();
585 
597  virtual import_data_table* get_data_table();
598 
607  virtual import_auto_filter* get_auto_filter();
608 
619  virtual import_table* get_table();
620 
628  virtual import_conditional_format* get_conditional_format();
629 
630  virtual import_named_expression* get_named_expression();
631 
632  virtual import_array_formula* get_array_formula();
633 
640  virtual import_formula* get_formula();
641 
651  virtual void set_auto(row_t row, col_t col, const char* p, size_t n) = 0;
652 
660  virtual void set_string(row_t row, col_t col, size_t sindex) = 0;
661 
669  virtual void set_value(row_t row, col_t col, double value) = 0;
670 
678  virtual void set_bool(row_t row, col_t col, bool value) = 0;
679 
686  virtual void set_date_time(
687  row_t row, col_t col,
688  int year, int month, int day, int hour, int minute, double second) = 0;
689 
698  virtual void set_format(row_t row, col_t col, size_t xf_index) = 0;
699 
710  virtual void set_format(row_t row_start, col_t col_start,
711  row_t row_end, col_t col_end, size_t xf_index) = 0;
712 
719  virtual range_size_t get_sheet_size() const = 0;
720 };
721 
723 {
724 public:
725  ORCUS_DLLPUBLIC virtual ~import_global_settings() = 0;
726 
736  virtual void set_origin_date(int year, int month, int day) = 0;
737 
746  virtual void set_default_formula_grammar(formula_grammar_t grammar) = 0;
747 
753  virtual formula_grammar_t get_default_formula_grammar() const = 0;
754 
760  virtual void set_character_set(character_set_t charset) = 0;
761 };
762 
763 class ORCUS_DLLPUBLIC import_reference_resolver
764 {
765 public:
766  virtual ~import_reference_resolver();
767 
781  virtual address_t resolve_address(const char* p, size_t n) = 0;
782 
796  virtual range_t resolve_range(const char* p, size_t n) = 0;
797 };
798 
809 class ORCUS_DLLPUBLIC import_factory
810 {
811 public:
812  virtual ~import_factory() = 0;
813 
814  virtual import_global_settings* get_global_settings();
815 
820  virtual import_shared_strings* get_shared_strings();
821 
822  virtual import_named_expression* get_named_expression();
823 
828  virtual import_styles* get_styles();
829 
830  virtual import_reference_resolver* get_reference_resolver();
831 
843  virtual import_pivot_cache_definition* create_pivot_cache_definition(
844  pivot_cache_id_t cache_id);
845 
855  virtual import_pivot_cache_records* create_pivot_cache_records(
856  pivot_cache_id_t cache_id);
857 
871  virtual import_sheet* append_sheet(
872  sheet_t sheet_index, const char* sheet_name, size_t sheet_name_length) = 0;
873 
879  virtual import_sheet* get_sheet(const char* sheet_name, size_t sheet_name_length) = 0;
880 
889  virtual import_sheet* get_sheet(sheet_t sheet_index) = 0;
890 
895  virtual void finalize() = 0;
896 };
897 
898 }}}
899 
900 #endif
901 
902 /* 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:577
virtual void set_icon_name(const char *p, size_t n)=0
Definition: import_interface.hpp:84
Definition: import_interface.hpp:492
virtual formula_grammar_t get_default_formula_grammar() const =0
Definition: import_interface.hpp:240
Definition: import_interface.hpp:279
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
Definition: import_interface.hpp:722
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:358
Definition: import_interface.hpp:554
Definition: import_interface.hpp:215
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:809
virtual void set_databar_gradient(bool gradient)=0
Definition: types.hpp:352
Definition: import_interface.hpp:342
virtual void set_formula(const char *p, size_t n)=0
Definition: types.hpp:346
Definition: import_interface.hpp:263
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:458
Definition: import_interface.hpp:763
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