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 
27 {
28 public:
29  ORCUS_DLLPUBLIC virtual ~import_shared_strings() = 0;
30 
43  virtual size_t append(const char* s, size_t n) = 0;
44 
56  virtual size_t add(const char* s, size_t n) = 0;
57 
58  virtual void set_segment_font(size_t font_index) = 0;
59  virtual void set_segment_bold(bool b) = 0;
60  virtual void set_segment_italic(bool b) = 0;
61  virtual void set_segment_font_name(const char* s, size_t n) = 0;
62  virtual void set_segment_font_size(double point) = 0;
63  virtual void set_segment_font_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) = 0;
64  virtual void append_segment(const char* s, size_t n) = 0;
65  virtual size_t commit_segments() = 0;
66 };
67 
81 {
82 public:
83  ORCUS_DLLPUBLIC virtual ~import_styles() = 0;
84 
85  // font
86 
87  virtual void set_font_count(size_t n) = 0;
88  virtual void set_font_bold(bool b) = 0;
89  virtual void set_font_italic(bool b) = 0;
90  virtual void set_font_name(const char* s, size_t n) = 0;
91  virtual void set_font_size(double point) = 0;
92  virtual void set_font_underline(orcus::spreadsheet::underline_t e) = 0;
93  virtual void set_font_underline_width(underline_width_t e) = 0;
94  virtual void set_font_underline_mode(underline_mode_t e) = 0;
95  virtual void set_font_underline_type(underline_type_t e) = 0;
96  virtual void set_font_underline_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) = 0;
97  virtual void set_font_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) = 0;
98  virtual void set_strikethrough_style(orcus::spreadsheet::strikethrough_style_t s) = 0;
99  virtual void set_strikethrough_type(orcus::spreadsheet::strikethrough_type_t s) = 0;
100  virtual void set_strikethrough_width(orcus::spreadsheet::strikethrough_width_t s) = 0;
101  virtual void set_strikethrough_text(orcus::spreadsheet::strikethrough_text_t s) = 0;
102  virtual size_t commit_font() = 0;
103 
104  // fill
105 
106  virtual void set_fill_count(size_t n) = 0;
107  virtual void set_fill_pattern_type(const char* s, size_t n) = 0;
108  virtual void set_fill_fg_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) = 0;
109  virtual void set_fill_bg_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) = 0;
110  virtual size_t commit_fill() = 0;
111 
112  // border
113 
114  virtual void set_border_count(size_t n) = 0;
115 
117  virtual void set_border_style(orcus::spreadsheet::border_direction_t dir, const char* s, size_t n) = 0;
118  virtual void set_border_style(orcus::spreadsheet::border_direction_t dir, border_style_t style) = 0;
119  virtual void set_border_color(
120  orcus::spreadsheet::border_direction_t dir, color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) = 0;
121  virtual void set_border_width(orcus::spreadsheet::border_direction_t dir, double width, orcus::length_unit_t unit) = 0;
122  virtual size_t commit_border() = 0;
123 
124  // cell protection
125  virtual void set_cell_hidden(bool b) = 0;
126  virtual void set_cell_locked(bool b) = 0;
127  virtual void set_cell_print_content(bool b) = 0;
128  virtual void set_cell_formula_hidden(bool b) = 0;
129  virtual size_t commit_cell_protection() = 0;
130 
131  // number format
132  virtual void set_number_format_count(size_t n) = 0;
133  virtual void set_number_format_identifier(size_t id) = 0;
134  virtual void set_number_format_code(const char* s, size_t n) = 0;
135  virtual size_t commit_number_format() = 0;
136 
137  // cell format and cell style format (xf == cell format)
138 
139  virtual void set_cell_xf_count(size_t n) = 0;
140  virtual void set_cell_style_xf_count(size_t n) = 0;
141  virtual void set_dxf_count(size_t n) = 0;
142 
143  virtual void set_xf_font(size_t index) = 0;
144  virtual void set_xf_fill(size_t index) = 0;
145  virtual void set_xf_border(size_t index) = 0;
146  virtual void set_xf_protection(size_t index) = 0;
147  virtual void set_xf_number_format(size_t index) = 0;
148  virtual void set_xf_style_xf(size_t index) = 0;
149  virtual void set_xf_apply_alignment(bool b) = 0;
150  virtual void set_xf_horizontal_alignment(orcus::spreadsheet::hor_alignment_t align) = 0;
151  virtual void set_xf_vertical_alignment(orcus::spreadsheet::ver_alignment_t align) = 0;
152 
153  virtual size_t commit_cell_xf() = 0;
154  virtual size_t commit_cell_style_xf() = 0;
155  virtual size_t commit_dxf() = 0;
156 
157  // cell style entry
158 
159  virtual void set_cell_style_count(size_t n) = 0;
160  virtual void set_cell_style_name(const char* s, size_t n) = 0;
161  virtual void set_cell_style_xf(size_t index) = 0;
162  virtual void set_cell_style_builtin(size_t index) = 0;
163  virtual void set_cell_style_parent_name(const char* s, size_t n) = 0;
164  virtual size_t commit_cell_style() = 0;
165 };
166 
168 {
169 public:
170  ORCUS_DLLPUBLIC virtual ~import_sheet_properties() = 0;
171 
172  virtual void set_column_width(orcus::spreadsheet::col_t col, double width, orcus::length_unit_t unit) = 0;
173 
174  virtual void set_column_hidden(orcus::spreadsheet::col_t col, bool hidden) = 0;
175 
176  virtual void set_row_height(orcus::spreadsheet::row_t row, double height, orcus::length_unit_t unit) = 0;
177 
178  virtual void set_row_hidden(orcus::spreadsheet::row_t row, bool hidden) = 0;
179 
187  virtual void set_merge_cell_range(const char* p_range, size_t n_range) = 0;
188 };
189 
194 {
195 public:
196  ORCUS_DLLPUBLIC virtual ~import_data_table() = 0;
197 
198  virtual void set_type(orcus::spreadsheet::data_table_type_t type) = 0;
199 
200  virtual void set_range(const char* p_range, size_t n_range) = 0;
201 
202  virtual void set_first_reference(const char* p_ref, size_t n_ref, bool deleted) = 0;
203 
204  virtual void set_second_reference(const char* p_ref, size_t n_ref, bool deleted) = 0;
205 
206  virtual void commit() = 0;
207 };
208 
210 {
211 public:
212  ORCUS_DLLPUBLIC virtual ~import_auto_filter() = 0;
213 
221  virtual void set_range(const char* p_ref, size_t n_ref) = 0;
222 
230  virtual void set_column(orcus::spreadsheet::col_t col) = 0;
231 
238  virtual void append_column_match_value(const char* p, size_t n) = 0;
239 
243  virtual void commit_column() = 0;
244 
248  virtual void commit() = 0;
249 };
250 
274 {
275 public:
276  ORCUS_DLLPUBLIC virtual ~import_conditional_format() = 0;
277 
282  virtual void set_color(color_elem_t alpha, color_elem_t red,
283  color_elem_t green, color_elem_t blue) = 0;
284 
288  virtual void set_formula(const char* p, size_t n) = 0;
289 
294  virtual void set_condition_type(orcus::spreadsheet::condition_type_t type) = 0;
295 
299  virtual void set_date(orcus::spreadsheet::condition_date_t date) = 0;
300 
304  virtual void commit_condition() = 0;
305 
310  virtual void set_icon_name(const char* p, size_t n) = 0;
311 
316  virtual void set_databar_gradient(bool gradient) = 0;
317 
322  virtual void set_databar_axis(orcus::spreadsheet::databar_axis_t axis) = 0;
323 
328  virtual void set_databar_color_positive(color_elem_t alpha, color_elem_t red,
329  color_elem_t green, color_elem_t blue) = 0;
330 
335  virtual void set_databar_color_negative(color_elem_t alpha, color_elem_t red,
336  color_elem_t green, color_elem_t blue) = 0;
337 
342  virtual void set_min_databar_length(double length) = 0;
343 
348  virtual void set_max_databar_length(double length) = 0;
349 
354  virtual void set_show_value(bool show) = 0;
355 
360  virtual void set_iconset_reverse(bool reverse) = 0;
361 
365  virtual void set_xf_id(size_t xf) = 0;
366 
371  virtual void set_operator(orcus::spreadsheet::condition_operator_t condition_type) = 0;
372 
373  virtual void set_type(orcus::spreadsheet::conditional_format_t type) = 0;
374 
375  virtual void commit_entry() = 0;
376 
377  virtual void set_range(const char* p, size_t n) = 0;
378 
379  virtual void set_range(orcus::spreadsheet::row_t row_start, orcus::spreadsheet::col_t col_start,
380  orcus::spreadsheet::row_t row_end, orcus::spreadsheet::col_t col_end) = 0;
381 
382  virtual void commit_format() = 0;
383 };
384 
389 class ORCUS_DLLPUBLIC import_table
390 {
391 public:
392  virtual ~import_table() = 0;
393 
394  virtual import_auto_filter* get_auto_filter();
395 
396  virtual void set_identifier(size_t id) = 0;
397 
398  virtual void set_range(const char* p_ref, size_t n_ref) = 0;
399 
400  virtual void set_totals_row_count(size_t row_count) = 0;
401 
402  virtual void set_name(const char* p, size_t n) = 0;
403 
404  virtual void set_display_name(const char* p, size_t n) = 0;
405 
406  virtual void set_column_count(size_t n) = 0;
407 
408  virtual void set_column_identifier(size_t id) = 0;
409  virtual void set_column_name(const char* p, size_t n) = 0;
410  virtual void set_column_totals_row_label(const char* p, size_t n) = 0;
411  virtual void set_column_totals_row_function(orcus::spreadsheet::totals_row_function_t func) = 0;
412  virtual void commit_column() = 0;
413 
414  virtual void set_style_name(const char* p, size_t n) = 0;
415  virtual void set_style_show_first_column(bool b) = 0;
416  virtual void set_style_show_last_column(bool b) = 0;
417  virtual void set_style_show_row_stripes(bool b) = 0;
418  virtual void set_style_show_column_stripes(bool b) = 0;
419 
420  virtual void commit() = 0;
421 };
422 
426 class ORCUS_DLLPUBLIC import_sheet
427 {
428 public:
429  virtual ~import_sheet() = 0;
430 
431  virtual import_sheet_properties* get_sheet_properties();
432 
444  virtual import_data_table* get_data_table();
445 
454  virtual import_auto_filter* get_auto_filter();
455 
466  virtual import_table* get_table();
467 
475  virtual import_conditional_format* get_conditional_format();
476 
486  virtual void set_auto(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, const char* p, size_t n) = 0;
487 
495  virtual void set_string(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, size_t sindex) = 0;
496 
504  virtual void set_value(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, double value) = 0;
505 
513  virtual void set_bool(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, bool value) = 0;
514 
521  virtual void set_date_time(
522  orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col,
523  int year, int month, int day, int hour, int minute, double second) = 0;
524 
533  virtual void set_format(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, size_t xf_index) = 0;
534 
545  virtual void set_format(orcus::spreadsheet::row_t row_start, orcus::spreadsheet::col_t col_start,
546  orcus::spreadsheet::row_t row_end, orcus::spreadsheet::col_t col_end, size_t xf_index) = 0;
547 
558  virtual void set_formula(
559  orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, orcus::spreadsheet::formula_grammar_t grammar,
560  const char* p, size_t n) = 0;
561 
577  virtual void set_shared_formula(
578  orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, orcus::spreadsheet::formula_grammar_t grammar,
579  size_t sindex, const char* p_formula, size_t n_formula, const char* p_range, size_t n_range) = 0;
580 
594  virtual void set_shared_formula(
595  orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, orcus::spreadsheet::formula_grammar_t grammar,
596  size_t sindex, const char* p_formula, size_t n_formula) = 0;
597 
610  virtual void set_shared_formula(
611  orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, size_t sindex) = 0;
612 
613  virtual void set_formula_result(
614  orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, double value) = 0;
615 
616  virtual void set_formula_result(
617  orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, const char* p, size_t n) = 0;
618 
631  virtual void set_array_formula(
632  orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, orcus::spreadsheet::formula_grammar_t grammar,
633  const char* p, size_t n, orcus::spreadsheet::row_t array_rows, orcus::spreadsheet::col_t array_cols) = 0;
634 
647  virtual void set_array_formula(
648  orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, orcus::spreadsheet::formula_grammar_t grammar,
649  const char* p, size_t n, const char* p_range, size_t n_range) = 0;
650 };
651 
653 {
654 public:
655  ORCUS_DLLPUBLIC virtual ~import_global_settings() = 0;
656 
666  virtual void set_origin_date(int year, int month, int day) = 0;
667 
676  virtual void set_default_formula_grammar(orcus::spreadsheet::formula_grammar_t grammar) = 0;
677 
683  virtual orcus::spreadsheet::formula_grammar_t get_default_formula_grammar() const = 0;
684 };
685 
696 class ORCUS_DLLPUBLIC import_factory
697 {
698 public:
699  virtual ~import_factory() = 0;
700 
701  virtual import_global_settings* get_global_settings();
702 
707  virtual import_shared_strings* get_shared_strings();
708 
713  virtual import_styles* get_styles();
714 
719  virtual import_sheet* append_sheet(const char* sheet_name, size_t sheet_name_length) = 0;
720 
726  virtual import_sheet* get_sheet(const char* sheet_name, size_t sheet_name_length) = 0;
727 
736  virtual import_sheet* get_sheet(orcus::spreadsheet::sheet_t sheet_index) = 0;
737 
742  virtual void finalize() = 0;
743 };
744 
745 }}}
746 
747 #endif
748 
749 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
virtual size_t add(const char *s, size_t n)=0
Definition: import_interface.hpp:426
Definition: import_interface.hpp:80
Definition: import_interface.hpp:209
Definition: import_interface.hpp:652
virtual size_t append(const char *s, size_t n)=0
Definition: import_interface.hpp:167
Definition: import_interface.hpp:696
Definition: import_interface.hpp:273
Definition: import_interface.hpp:193
Definition: import_interface.hpp:26
Definition: import_interface.hpp:389
Definition: base64.hpp:15