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 "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 
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_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) = 0;
94  virtual size_t commit_font() = 0;
95 
96  // fill
97 
98  virtual void set_fill_count(size_t n) = 0;
99  virtual void set_fill_pattern_type(const char* s, size_t n) = 0;
100  virtual void set_fill_fg_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) = 0;
101  virtual void set_fill_bg_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) = 0;
102  virtual size_t commit_fill() = 0;
103 
104  // border
105 
106  virtual void set_border_count(size_t n) = 0;
107 
109  virtual void set_border_style(orcus::spreadsheet::border_direction_t dir, const char* s, size_t n) = 0;
110  virtual void set_border_style(orcus::spreadsheet::border_direction_t dir, border_style_t style) = 0;
111  virtual void set_border_color(
112  orcus::spreadsheet::border_direction_t dir, color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) = 0;
113  virtual size_t commit_border() = 0;
114 
115  // cell protection
116  virtual void set_cell_hidden(bool b) = 0;
117  virtual void set_cell_locked(bool b) = 0;
118  virtual size_t commit_cell_protection() = 0;
119 
120  // number format
121  virtual void set_number_format_count(size_t n) = 0;
122  virtual void set_number_format_identifier(size_t id) = 0;
123  virtual void set_number_format_code(const char* s, size_t n) = 0;
124  virtual size_t commit_number_format() = 0;
125 
126  // cell format and cell style format (xf == cell format)
127 
128  virtual void set_cell_xf_count(size_t n) = 0;
129  virtual void set_cell_style_xf_count(size_t n) = 0;
130  virtual void set_dxf_count(size_t n) = 0;
131 
132  virtual void set_xf_font(size_t index) = 0;
133  virtual void set_xf_fill(size_t index) = 0;
134  virtual void set_xf_border(size_t index) = 0;
135  virtual void set_xf_protection(size_t index) = 0;
136  virtual void set_xf_number_format(size_t index) = 0;
137  virtual void set_xf_style_xf(size_t index) = 0;
138  virtual void set_xf_apply_alignment(bool b) = 0;
139  virtual void set_xf_horizontal_alignment(orcus::spreadsheet::hor_alignment_t align) = 0;
140  virtual void set_xf_vertical_alignment(orcus::spreadsheet::ver_alignment_t align) = 0;
141 
142  virtual size_t commit_cell_xf() = 0;
143  virtual size_t commit_cell_style_xf() = 0;
144  virtual size_t commit_dxf() = 0;
145 
146  // cell style entry
147 
148  virtual void set_cell_style_count(size_t n) = 0;
149  virtual void set_cell_style_name(const char* s, size_t n) = 0;
150  virtual void set_cell_style_xf(size_t index) = 0;
151  virtual void set_cell_style_builtin(size_t index) = 0;
152  virtual void set_cell_style_parent_name(const char* s, size_t n) = 0;
153  virtual size_t commit_cell_style() = 0;
154 };
155 
157 {
158 public:
159  ORCUS_DLLPUBLIC virtual ~import_sheet_properties() = 0;
160 
161  virtual void set_column_width(orcus::spreadsheet::col_t col, double width, orcus::length_unit_t unit) = 0;
162 
163  virtual void set_column_hidden(orcus::spreadsheet::col_t col, bool hidden) = 0;
164 
165  virtual void set_row_height(orcus::spreadsheet::row_t row, double height, orcus::length_unit_t unit) = 0;
166 
167  virtual void set_row_hidden(orcus::spreadsheet::row_t row, bool hidden) = 0;
168 
176  virtual void set_merge_cell_range(const char* p_range, size_t n_range) = 0;
177 };
178 
183 {
184 public:
185  ORCUS_DLLPUBLIC virtual ~import_data_table() = 0;
186 
187  virtual void set_type(orcus::spreadsheet::data_table_type_t type) = 0;
188 
189  virtual void set_range(const char* p_range, size_t n_range) = 0;
190 
191  virtual void set_first_reference(const char* p_ref, size_t n_ref, bool deleted) = 0;
192 
193  virtual void set_second_reference(const char* p_ref, size_t n_ref, bool deleted) = 0;
194 
195  virtual void commit() = 0;
196 };
197 
199 {
200 public:
201  ORCUS_DLLPUBLIC virtual ~import_auto_filter() = 0;
202 
210  virtual void set_range(const char* p_ref, size_t n_ref) = 0;
211 
219  virtual void set_column(orcus::spreadsheet::col_t col) = 0;
220 
227  virtual void append_column_match_value(const char* p, size_t n) = 0;
228 
232  virtual void commit_column() = 0;
233 
237  virtual void commit() = 0;
238 };
239 
263 {
264 public:
265  ORCUS_DLLPUBLIC virtual ~import_conditional_format() = 0;
266 
271  virtual void set_color(color_elem_t alpha, color_elem_t red,
272  color_elem_t green, color_elem_t blue) = 0;
273 
277  virtual void set_formula(const char* p, size_t n) = 0;
278 
283  virtual void set_condition_type(orcus::spreadsheet::condition_type_t type) = 0;
284 
288  virtual void set_date(orcus::spreadsheet::condition_date_t date) = 0;
289 
293  virtual void commit_condition() = 0;
294 
299  virtual void set_icon_name(const char* p, size_t n) = 0;
300 
305  virtual void set_databar_gradient(bool gradient) = 0;
306 
311  virtual void set_databar_axis(orcus::spreadsheet::databar_axis_t axis) = 0;
312 
317  virtual void set_databar_color_positive(color_elem_t alpha, color_elem_t red,
318  color_elem_t green, color_elem_t blue) = 0;
319 
324  virtual void set_databar_color_negative(color_elem_t alpha, color_elem_t red,
325  color_elem_t green, color_elem_t blue) = 0;
326 
331  virtual void set_min_databar_length(double length) = 0;
332 
337  virtual void set_max_databar_length(double length) = 0;
338 
343  virtual void set_show_value(bool show) = 0;
344 
349  virtual void set_iconset_reverse(bool reverse) = 0;
350 
354  virtual void set_xf_id(size_t xf) = 0;
355 
360  virtual void set_operator(orcus::spreadsheet::condition_operator_t condition_type) = 0;
361 
362  virtual void set_type(orcus::spreadsheet::conditional_format_t type) = 0;
363 
364  virtual void commit_entry() = 0;
365 
366  virtual void set_range(const char* p, size_t n) = 0;
367 
368  virtual void set_range(orcus::spreadsheet::row_t row_start, orcus::spreadsheet::col_t col_start,
369  orcus::spreadsheet::row_t row_end, orcus::spreadsheet::col_t col_end) = 0;
370 
371  virtual void commit_format() = 0;
372 };
373 
378 class ORCUS_DLLPUBLIC import_table
379 {
380 public:
381  virtual ~import_table() = 0;
382 
383  virtual import_auto_filter* get_auto_filter();
384 
385  virtual void set_identifier(size_t id) = 0;
386 
387  virtual void set_range(const char* p_ref, size_t n_ref) = 0;
388 
389  virtual void set_totals_row_count(size_t row_count) = 0;
390 
391  virtual void set_name(const char* p, size_t n) = 0;
392 
393  virtual void set_display_name(const char* p, size_t n) = 0;
394 
395  virtual void set_column_count(size_t n) = 0;
396 
397  virtual void set_column_identifier(size_t id) = 0;
398  virtual void set_column_name(const char* p, size_t n) = 0;
399  virtual void set_column_totals_row_label(const char* p, size_t n) = 0;
400  virtual void set_column_totals_row_function(orcus::spreadsheet::totals_row_function_t func) = 0;
401  virtual void commit_column() = 0;
402 
403  virtual void set_style_name(const char* p, size_t n) = 0;
404  virtual void set_style_show_first_column(bool b) = 0;
405  virtual void set_style_show_last_column(bool b) = 0;
406  virtual void set_style_show_row_stripes(bool b) = 0;
407  virtual void set_style_show_column_stripes(bool b) = 0;
408 
409  virtual void commit() = 0;
410 };
411 
415 class ORCUS_DLLPUBLIC import_sheet
416 {
417 public:
418  virtual ~import_sheet() = 0;
419 
420  virtual import_sheet_properties* get_sheet_properties();
421 
433  virtual import_data_table* get_data_table();
434 
443  virtual import_auto_filter* get_auto_filter();
444 
455  virtual import_table* get_table();
456 
464  virtual import_conditional_format* get_conditional_format();
465 
475  virtual void set_auto(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, const char* p, size_t n) = 0;
476 
484  virtual void set_string(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, size_t sindex) = 0;
485 
493  virtual void set_value(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, double value) = 0;
494 
502  virtual void set_bool(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, bool value) = 0;
503 
510  virtual void set_date_time(
511  orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col,
512  int year, int month, int day, int hour, int minute, double second) = 0;
513 
522  virtual void set_format(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, size_t xf_index) = 0;
523 
534  virtual void set_format(orcus::spreadsheet::row_t row_start, orcus::spreadsheet::col_t col_start,
535  orcus::spreadsheet::row_t row_end, orcus::spreadsheet::col_t col_end, size_t xf_index) = 0;
536 
547  virtual void set_formula(
548  orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, orcus::spreadsheet::formula_grammar_t grammar,
549  const char* p, size_t n) = 0;
550 
566  virtual void set_shared_formula(
567  orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, orcus::spreadsheet::formula_grammar_t grammar,
568  size_t sindex, const char* p_formula, size_t n_formula, const char* p_range, size_t n_range) = 0;
569 
583  virtual void set_shared_formula(
584  orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, orcus::spreadsheet::formula_grammar_t grammar,
585  size_t sindex, const char* p_formula, size_t n_formula) = 0;
586 
599  virtual void set_shared_formula(
600  orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, size_t sindex) = 0;
601 
602  virtual void set_formula_result(
603  orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, double value) = 0;
604 
605  virtual void set_formula_result(
606  orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, const char* p, size_t n) = 0;
607 
620  virtual void set_array_formula(
621  orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, orcus::spreadsheet::formula_grammar_t grammar,
622  const char* p, size_t n, orcus::spreadsheet::row_t array_rows, orcus::spreadsheet::col_t array_cols) = 0;
623 
636  virtual void set_array_formula(
637  orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, orcus::spreadsheet::formula_grammar_t grammar,
638  const char* p, size_t n, const char* p_range, size_t n_range) = 0;
639 };
640 
642 {
643 public:
644  ORCUS_DLLPUBLIC virtual ~import_global_settings() = 0;
645 
655  virtual void set_origin_date(int year, int month, int day) = 0;
656 
665  virtual void set_default_formula_grammar(orcus::spreadsheet::formula_grammar_t grammar) = 0;
666 
672  virtual orcus::spreadsheet::formula_grammar_t get_default_formula_grammar() const = 0;
673 };
674 
685 class ORCUS_DLLPUBLIC import_factory
686 {
687 public:
688  virtual ~import_factory() = 0;
689 
690  virtual import_global_settings* get_global_settings();
691 
696  virtual import_shared_strings* get_shared_strings();
697 
702  virtual import_styles* get_styles();
703 
708  virtual import_sheet* append_sheet(const char* sheet_name, size_t sheet_name_length) = 0;
709 
715  virtual import_sheet* get_sheet(const char* sheet_name, size_t sheet_name_length) = 0;
716 
725  virtual import_sheet* get_sheet(orcus::spreadsheet::sheet_t sheet_index) = 0;
726 
731  virtual void finalize() = 0;
732 };
733 
734 }}}
735 
736 #endif
737 
738 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
virtual size_t add(const char *s, size_t n)=0
Definition: import_interface.hpp:415
Definition: import_interface.hpp:80
Definition: import_interface.hpp:198
Definition: import_interface.hpp:641
virtual size_t append(const char *s, size_t n)=0
Definition: import_interface.hpp:156
Definition: import_interface.hpp:685
Definition: import_interface.hpp:262
Definition: import_interface.hpp:182
Definition: import_interface.hpp:26
Definition: import_interface.hpp:378
Definition: base64.hpp:15