Orcus
factory.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 INCLUDED_ORCUS_SPREADSHEET_IMPORT_FACTORY_HPP
9 #define INCLUDED_ORCUS_SPREADSHEET_IMPORT_FACTORY_HPP
10 
11 #include "orcus/spreadsheet/import_interface.hpp"
12 #include "orcus/spreadsheet/export_interface.hpp"
13 #include "orcus/env.hpp"
14 
15 #include <memory>
16 
17 namespace orcus {
18 
19 class string_pool;
20 
21 namespace spreadsheet {
22 
23 class document;
24 class view;
25 class styles;
26 
27 class ORCUS_SPM_DLLPUBLIC import_factory : public iface::import_factory
28 {
29  struct impl;
30  std::unique_ptr<impl> mp_impl;
31 public:
32  import_factory(document& doc, row_t row_size = 1048576, col_t col_size = 16384);
33  import_factory(document& doc, view& view, row_t row_size = 1048576, col_t col_size = 16384);
34  virtual ~import_factory();
35 
36  virtual iface::import_global_settings* get_global_settings() override;
37  virtual iface::import_shared_strings* get_shared_strings() override;
38  virtual iface::import_styles* get_styles() override;
39  virtual iface::import_named_expression* get_named_expression() override;
40  virtual iface::import_reference_resolver* get_reference_resolver() override;
41  virtual iface::import_pivot_cache_definition* create_pivot_cache_definition(
42  orcus::spreadsheet::pivot_cache_id_t cache_id) override;
43  virtual iface::import_pivot_cache_records* create_pivot_cache_records(
44  orcus::spreadsheet::pivot_cache_id_t cache_id) override;
45  virtual iface::import_sheet* append_sheet(sheet_t sheet_index, const char* sheet_name, size_t sheet_name_length) override;
46  virtual iface::import_sheet* get_sheet(const char* sheet_name, size_t sheet_name_length) override;
47  virtual iface::import_sheet* get_sheet(sheet_t sheet_index) override;
48  virtual void finalize() override;
49 
50  void set_default_row_size(row_t row_size);
51  void set_default_column_size(col_t col_size);
52 
53  void set_character_set(character_set_t charset);
54  character_set_t get_character_set() const;
55 };
56 
57 class ORCUS_SPM_DLLPUBLIC import_styles : public iface::import_styles
58 {
59  struct impl;
60  std::unique_ptr<impl> mp_impl;
61 public:
63  virtual ~import_styles() override;
64 
65  virtual void set_font_count(size_t n) override;
66  virtual void set_font_bold(bool b) override;
67  virtual void set_font_italic(bool b) override;
68  virtual void set_font_name(const char* s, size_t n) override;
69  virtual void set_font_size(double point) override;
70  virtual void set_font_underline(underline_t e) override;
71  virtual void set_font_underline_width(underline_width_t e) override;
72  virtual void set_font_underline_mode(underline_mode_t e) override;
73  virtual void set_font_underline_type(underline_type_t e) override;
74  virtual void set_font_underline_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) override;
75  virtual void set_font_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) override;
76  virtual void set_strikethrough_style(strikethrough_style_t s) override;
77  virtual void set_strikethrough_type(strikethrough_type_t s) override;
78  virtual void set_strikethrough_width(strikethrough_width_t s) override;
79  virtual void set_strikethrough_text(strikethrough_text_t s) override;
80  virtual size_t commit_font() override;
81 
82  virtual void set_fill_count(size_t n) override;
83  virtual void set_fill_pattern_type(fill_pattern_t fp) override;
84  virtual void set_fill_fg_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) override;
85  virtual void set_fill_bg_color(color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) override;
86  virtual size_t commit_fill() override;
87 
88  virtual void set_border_count(size_t n) override;
89  virtual void set_border_style(border_direction_t dir, border_style_t style) override;
90  virtual void set_border_color(
91  border_direction_t dir, color_elem_t alpha, color_elem_t red, color_elem_t green, color_elem_t blue) override;
92  virtual void set_border_width(border_direction_t dir, double width, orcus::length_unit_t unit) override;
93  virtual size_t commit_border() override;
94 
95  virtual void set_cell_hidden(bool b) override;
96  virtual void set_cell_locked(bool b) override;
97  virtual void set_cell_print_content(bool b) override;
98  virtual void set_cell_formula_hidden(bool b) override;
99  virtual size_t commit_cell_protection() override;
100 
101  virtual void set_number_format_count(size_t n) override;
102  virtual void set_number_format_identifier(size_t id) override;
103  virtual void set_number_format_code(const char* s, size_t n) override;
104  virtual size_t commit_number_format() override;
105 
106  virtual void set_cell_xf_count(size_t n) override;
107  virtual void set_cell_style_xf_count(size_t n) override;
108  virtual void set_dxf_count(size_t n) override;
109 
110  virtual void set_xf_font(size_t index) override;
111  virtual void set_xf_fill(size_t index) override;
112  virtual void set_xf_border(size_t index) override;
113  virtual void set_xf_protection(size_t index) override;
114  virtual void set_xf_number_format(size_t index) override;
115  virtual void set_xf_style_xf(size_t index) override;
116  virtual void set_xf_apply_alignment(bool b) override;
117  virtual void set_xf_horizontal_alignment(hor_alignment_t align) override;
118  virtual void set_xf_vertical_alignment(ver_alignment_t align) override;
119 
120  virtual size_t commit_cell_xf() override;
121  virtual size_t commit_cell_style_xf() override;
122  virtual size_t commit_dxf() override;
123 
124  virtual void set_cell_style_count(size_t n) override;
125  virtual void set_cell_style_name(const char* s, size_t n) override;
126  virtual void set_cell_style_xf(size_t index) override;
127  virtual void set_cell_style_builtin(size_t index) override;
128  virtual void set_cell_style_parent_name(const char* s, size_t n) override;
129  virtual size_t commit_cell_style() override;
130 };
131 
132 class ORCUS_SPM_DLLPUBLIC export_factory : public iface::export_factory
133 {
134  struct impl;
135  std::unique_ptr<impl> mp_impl;
136 public:
137  export_factory(const document& doc);
138  virtual ~export_factory();
139 
140  virtual const iface::export_sheet* get_sheet(const char* sheet_name, size_t sheet_name_length) const;
141 };
142 
143 }}
144 
145 #endif
146 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
orcus::spreadsheet::iface::import_shared_strings
Definition: import_interface.hpp:30
orcus::spreadsheet::iface::import_global_settings
Definition: import_interface.hpp:794
orcus::spreadsheet::styles
Definition: styles.hpp:149
orcus::spreadsheet::import_styles
Definition: factory.hpp:57
orcus::spreadsheet::iface::import_sheet
Definition: import_interface.hpp:638
orcus::spreadsheet::iface::import_pivot_cache_definition
Definition: import_interface_pivot.hpp:28
orcus::spreadsheet::document
Definition: document.hpp:47
orcus::spreadsheet::iface::import_pivot_cache_records
Definition: import_interface_pivot.hpp:290
orcus::spreadsheet::iface::import_factory
Definition: import_interface.hpp:881
orcus::spreadsheet::iface::export_factory
Definition: export_interface.hpp:26
orcus::spreadsheet::import_factory
Definition: factory.hpp:27
orcus::spreadsheet::iface::import_named_expression
Definition: import_interface.hpp:301
orcus::spreadsheet::iface::import_reference_resolver
Definition: import_interface.hpp:835
orcus::spreadsheet::iface::import_styles
Definition: import_interface.hpp:145
orcus::string_pool
Definition: string_pool.hpp:22
orcus::spreadsheet::export_factory
Definition: factory.hpp:132
orcus::spreadsheet::view
Definition: view.hpp:22
orcus::spreadsheet::iface::export_sheet
Definition: export_interface.hpp:18