Orcus
Loading...
Searching...
No Matches
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
21namespace orcus { namespace spreadsheet { namespace iface {
22
23class import_pivot_cache_definition;
24class import_pivot_cache_records;
25class import_sheet_view;
26
31{
32public:
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{
139public:
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{
270public:
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
302class ORCUS_DLLPUBLIC import_named_expression
303{
304public:
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{
341public:
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{
357public:
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{
419public:
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
533class ORCUS_DLLPUBLIC import_table
534{
535public:
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
567class ORCUS_DLLPUBLIC import_formula
568{
569public:
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
628class ORCUS_DLLPUBLIC import_array_formula
629{
630public:
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
651class ORCUS_DLLPUBLIC import_sheet
652{
653public:
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{
815public:
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
854class ORCUS_DLLPUBLIC import_reference_resolver
855{
856public:
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
897class ORCUS_DLLPUBLIC import_factory
898{
899public:
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_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_shared_strings * get_shared_strings()
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 import_table * get_table()
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 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_conditional_format * get_conditional_format()
virtual import_auto_filter * get_auto_filter()
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_data_table * get_data_table()
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