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 
310 class ORCUS_DLLPUBLIC import_named_expression
311 {
312 public:
313  virtual ~import_named_expression();
314 
322  virtual void set_base_position(const src_address_t& pos) = 0;
323 
336  virtual void set_named_expression(const char* p_name, size_t n_name, const char* p_exp, size_t n_exp) = 0;
337 
351  virtual void set_named_range(const char* p_name, size_t n_name, const char* p_range, size_t n_range) = 0;
352 
353  virtual void commit() = 0;
354 };
355 
360 {
361 public:
362  ORCUS_DLLPUBLIC virtual ~import_data_table() = 0;
363 
364  virtual void set_type(data_table_type_t type) = 0;
365 
366  virtual void set_range(const range_t& range) = 0;
367 
368  virtual void set_first_reference(const char* p_ref, size_t n_ref, bool deleted) = 0;
369 
370  virtual void set_second_reference(const char* p_ref, size_t n_ref, bool deleted) = 0;
371 
372  virtual void commit() = 0;
373 };
374 
376 {
377 public:
378  ORCUS_DLLPUBLIC virtual ~import_auto_filter() = 0;
379 
386  virtual void set_range(const range_t& range) = 0;
387 
395  virtual void set_column(col_t col) = 0;
396 
403  virtual void append_column_match_value(const char* p, size_t n) = 0;
404 
408  virtual void commit_column() = 0;
409 
413  virtual void commit() = 0;
414 };
415 
439 {
440 public:
441  ORCUS_DLLPUBLIC virtual ~import_conditional_format() = 0;
442 
447  virtual void set_color(color_elem_t alpha, color_elem_t red,
448  color_elem_t green, color_elem_t blue) = 0;
449 
453  virtual void set_formula(const char* p, size_t n) = 0;
454 
459  virtual void set_condition_type(condition_type_t type) = 0;
460 
464  virtual void set_date(condition_date_t date) = 0;
465 
469  virtual void commit_condition() = 0;
470 
475  virtual void set_icon_name(const char* p, size_t n) = 0;
476 
481  virtual void set_databar_gradient(bool gradient) = 0;
482 
487  virtual void set_databar_axis(databar_axis_t axis) = 0;
488 
493  virtual void set_databar_color_positive(color_elem_t alpha, color_elem_t red,
494  color_elem_t green, color_elem_t blue) = 0;
495 
500  virtual void set_databar_color_negative(color_elem_t alpha, color_elem_t red,
501  color_elem_t green, color_elem_t blue) = 0;
502 
507  virtual void set_min_databar_length(double length) = 0;
508 
513  virtual void set_max_databar_length(double length) = 0;
514 
519  virtual void set_show_value(bool show) = 0;
520 
525  virtual void set_iconset_reverse(bool reverse) = 0;
526 
530  virtual void set_xf_id(size_t xf) = 0;
531 
536  virtual void set_operator(condition_operator_t condition_type) = 0;
537 
538  virtual void set_type(conditional_format_t type) = 0;
539 
540  virtual void commit_entry() = 0;
541 
542  virtual void set_range(const char* p, size_t n) = 0;
543 
544  virtual void set_range(row_t row_start, col_t col_start,
545  row_t row_end, col_t col_end) = 0;
546 
547  virtual void commit_format() = 0;
548 };
549 
554 class ORCUS_DLLPUBLIC import_table
555 {
556 public:
557  virtual ~import_table() = 0;
558 
559  virtual import_auto_filter* get_auto_filter();
560 
561  virtual void set_identifier(size_t id) = 0;
562 
563  virtual void set_range(const char* p_ref, size_t n_ref) = 0;
564 
565  virtual void set_totals_row_count(size_t row_count) = 0;
566 
567  virtual void set_name(const char* p, size_t n) = 0;
568 
569  virtual void set_display_name(const char* p, size_t n) = 0;
570 
571  virtual void set_column_count(size_t n) = 0;
572 
573  virtual void set_column_identifier(size_t id) = 0;
574  virtual void set_column_name(const char* p, size_t n) = 0;
575  virtual void set_column_totals_row_label(const char* p, size_t n) = 0;
576  virtual void set_column_totals_row_function(totals_row_function_t func) = 0;
577  virtual void commit_column() = 0;
578 
579  virtual void set_style_name(const char* p, size_t n) = 0;
580  virtual void set_style_show_first_column(bool b) = 0;
581  virtual void set_style_show_last_column(bool b) = 0;
582  virtual void set_style_show_row_stripes(bool b) = 0;
583  virtual void set_style_show_column_stripes(bool b) = 0;
584 
585  virtual void commit() = 0;
586 };
587 
588 class ORCUS_DLLPUBLIC import_formula
589 {
590 public:
591  virtual ~import_formula();
592 
599  virtual void set_position(row_t row, col_t col) = 0;
600 
609  virtual void set_formula(formula_grammar_t grammar, const char* p, size_t n) = 0;
610 
616  virtual void set_shared_formula_index(size_t index) = 0;
617 
623  virtual void set_result_string(size_t sindex) = 0;
624 
630  virtual void set_result_value(double value) = 0;
631 
637  virtual void set_result_bool(bool value) = 0;
638 
642  virtual void set_result_empty() = 0;
643 
647  virtual void commit() = 0;
648 };
649 
650 class ORCUS_DLLPUBLIC import_array_formula
651 {
652 public:
653  virtual ~import_array_formula();
654 
655  virtual void set_range(const range_t& range) = 0;
656 
657  virtual void set_formula(formula_grammar_t grammar, const char* p, size_t n) = 0;
658 
659  virtual void set_result_string(row_t row, col_t col, size_t sindex) = 0;
660 
661  virtual void set_result_value(row_t row, col_t col, double value) = 0;
662 
663  virtual void set_result_bool(row_t row, col_t col, bool value) = 0;
664 
665  virtual void set_result_empty(row_t row, col_t col) = 0;
666 
667  virtual void commit() = 0;
668 };
669 
673 class ORCUS_DLLPUBLIC import_sheet
674 {
675 public:
676  virtual ~import_sheet() = 0;
677 
678  virtual import_sheet_view* get_sheet_view();
679 
680  virtual import_sheet_properties* get_sheet_properties();
681 
693  virtual import_data_table* get_data_table();
694 
703  virtual import_auto_filter* get_auto_filter();
704 
715  virtual import_table* get_table();
716 
724  virtual import_conditional_format* get_conditional_format();
725 
726  virtual import_named_expression* get_named_expression();
727 
728  virtual import_array_formula* get_array_formula();
729 
736  virtual import_formula* get_formula();
737 
747  virtual void set_auto(row_t row, col_t col, const char* p, size_t n) = 0;
748 
756  virtual void set_string(row_t row, col_t col, size_t sindex) = 0;
757 
765  virtual void set_value(row_t row, col_t col, double value) = 0;
766 
774  virtual void set_bool(row_t row, col_t col, bool value) = 0;
775 
782  virtual void set_date_time(
783  row_t row, col_t col,
784  int year, int month, int day, int hour, int minute, double second) = 0;
785 
794  virtual void set_format(row_t row, col_t col, size_t xf_index) = 0;
795 
806  virtual void set_format(row_t row_start, col_t col_start,
807  row_t row_end, col_t col_end, size_t xf_index) = 0;
808 
818  virtual void fill_down_cells(row_t src_row, col_t src_col, row_t range_size) = 0;
819 
826  virtual range_size_t get_sheet_size() const = 0;
827 };
828 
830 {
831 public:
832  ORCUS_DLLPUBLIC virtual ~import_global_settings() = 0;
833 
843  virtual void set_origin_date(int year, int month, int day) = 0;
844 
853  virtual void set_default_formula_grammar(formula_grammar_t grammar) = 0;
854 
860  virtual formula_grammar_t get_default_formula_grammar() const = 0;
861 
867  virtual void set_character_set(character_set_t charset) = 0;
868 };
869 
870 class ORCUS_DLLPUBLIC import_reference_resolver
871 {
872 public:
873  virtual ~import_reference_resolver();
874 
888  virtual src_address_t resolve_address(const char* p, size_t n) = 0;
889 
903  virtual src_range_t resolve_range(const char* p, size_t n) = 0;
904 };
905 
916 class ORCUS_DLLPUBLIC import_factory
917 {
918 public:
919  virtual ~import_factory() = 0;
920 
921  virtual import_global_settings* get_global_settings();
922 
927  virtual import_shared_strings* get_shared_strings();
928 
929  virtual import_named_expression* get_named_expression();
930 
935  virtual import_styles* get_styles();
936 
937  virtual import_reference_resolver* get_reference_resolver(formula_ref_context_t cxt);
938 
950  virtual import_pivot_cache_definition* create_pivot_cache_definition(
951  pivot_cache_id_t cache_id);
952 
962  virtual import_pivot_cache_records* create_pivot_cache_records(
963  pivot_cache_id_t cache_id);
964 
978  virtual import_sheet* append_sheet(
979  sheet_t sheet_index, const char* sheet_name, size_t sheet_name_length) = 0;
980 
986  virtual import_sheet* get_sheet(const char* sheet_name, size_t sheet_name_length) = 0;
987 
996  virtual import_sheet* get_sheet(sheet_t sheet_index) = 0;
997 
1002  virtual void finalize() = 0;
1003 };
1004 
1005 }}}
1006 
1007 #endif
1008 
1009 /* 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:300
Definition: import_interface.hpp:673
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:588
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:310
Definition: import_interface.hpp:375
Definition: types.hpp:413
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:829
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:403
Definition: import_interface.hpp:650
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:916
virtual void set_databar_gradient(bool gradient)=0
Definition: types.hpp:397
Definition: import_interface.hpp:438
virtual void set_formula(const char *p, size_t n)=0
virtual void set_segment_font(size_t font_index)=0
Definition: import_interface.hpp:359
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:554
Definition: import_interface.hpp:870
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
Definition: types.hpp:424
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