Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
5 : * This Source Code Form is subject to the terms of the Mozilla Public
6 : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : */
9 :
10 : #ifndef __SC_ORCUSINTERFACE_HXX__
11 : #define __SC_ORCUSINTERFACE_HXX__
12 :
13 : #include "address.hxx"
14 :
15 : #define __ORCUS_STATIC_LIB
16 : #include <orcus/spreadsheet/import_interface.hpp>
17 :
18 : #include <boost/ptr_container/ptr_vector.hpp>
19 :
20 : #include <map>
21 :
22 : class ScDocument;
23 : class ScOrcusSheet;
24 : class ScRangeData;
25 :
26 0 : class ScOrcusSharedStrings : public orcus::spreadsheet::iface::import_shared_strings
27 : {
28 : std::vector<OUString> maSharedStrings;
29 :
30 : public:
31 : virtual size_t append(const char* s, size_t n);
32 : virtual size_t add(const char* s, size_t n);
33 :
34 : virtual void set_segment_bold(bool b);
35 : virtual void set_segment_italic(bool b);
36 : virtual void set_segment_font_name(const char* s, size_t n);
37 : virtual void set_segment_font_size(double point);
38 : virtual void append_segment(const char* s, size_t n);
39 :
40 : virtual size_t commit_segments();
41 :
42 : const OUString& getByIndex(size_t index) const;
43 : };
44 :
45 0 : class ScOrcusFactory : public orcus::spreadsheet::iface::import_factory
46 : {
47 : ScDocument& mrDoc;
48 : boost::ptr_vector<ScOrcusSheet> maSheets;
49 : ScOrcusSharedStrings maSharedStrings;
50 :
51 : public:
52 : ScOrcusFactory(ScDocument& rDoc);
53 :
54 : virtual orcus::spreadsheet::iface::import_sheet* append_sheet(const char *sheet_name, size_t sheet_name_length);
55 : virtual orcus::spreadsheet::iface::import_sheet* get_sheet(const char *sheet_name, size_t sheet_name_length);
56 : virtual orcus::spreadsheet::iface::import_shared_strings* get_shared_strings();
57 : virtual orcus::spreadsheet::iface::import_styles* get_styles();
58 : };
59 :
60 0 : class ScOrcusSheet : public orcus::spreadsheet::iface::import_sheet
61 : {
62 : ScDocument& mrDoc;
63 : SCTAB mnTab;
64 : ScOrcusSharedStrings& mrSharedStrings;
65 :
66 : typedef std::map<size_t, ScRangeData*> SharedFormulaContainer;
67 : SharedFormulaContainer maSharedFormulas;
68 : public:
69 : ScOrcusSheet(ScDocument& rDoc, SCTAB nTab, ScOrcusSharedStrings& rSharedStrings);
70 :
71 : // Orcus import interface
72 : virtual void set_auto(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, const char* p, size_t n);
73 : virtual void set_format(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, size_t xf_index);
74 : virtual void set_formula(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, orcus::spreadsheet::formula_grammar_t grammar, const char* p, size_t n);
75 : virtual void set_formula_result(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, const char* p, size_t n);
76 : virtual void set_shared_formula(
77 : orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, orcus::spreadsheet::formula_grammar_t grammar, size_t sindex,
78 : const char* p_formula, size_t n_formula);
79 : virtual void set_shared_formula(
80 : orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, orcus::spreadsheet::formula_grammar_t grammar, size_t sindex,
81 : const char* p_formula, size_t n_formula, const char* p_range, size_t n_range);
82 : virtual void set_shared_formula(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, size_t sindex);
83 : virtual void set_string(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, size_t sindex);
84 : virtual void set_value(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, double value);
85 :
86 0 : SCTAB getIndex() const { return mnTab; }
87 : };
88 :
89 0 : class ScOrcusStyles : public orcus::spreadsheet::iface::import_styles
90 : {
91 :
92 : public:
93 : // font
94 :
95 : virtual void set_font_count(size_t n);
96 : virtual void set_font_bold(bool b);
97 : virtual void set_font_italic(bool b);
98 : virtual void set_font_name(const char* s, size_t n);
99 : virtual void set_font_size(double point);
100 : virtual void set_font_underline(orcus::spreadsheet::underline_t e);
101 : virtual size_t commit_font();
102 :
103 : // fill
104 :
105 : virtual void set_fill_count(size_t n);
106 : virtual void set_fill_pattern_type(const char* s, size_t n);
107 : virtual void set_fill_fg_color(orcus::spreadsheet::color_elem_t alpha, orcus::spreadsheet::color_elem_t red, orcus::spreadsheet::color_elem_t green, orcus::spreadsheet::color_elem_t blue);
108 : virtual void set_fill_bg_color(orcus::spreadsheet::color_elem_t alpha, orcus::spreadsheet::color_elem_t red, orcus::spreadsheet::color_elem_t green, orcus::spreadsheet::color_elem_t blue);
109 : virtual size_t commit_fill();
110 :
111 : // border
112 :
113 : virtual void set_border_count(size_t n);
114 : virtual void set_border_style(orcus::spreadsheet::border_direction_t dir, const char* s, size_t n);
115 : virtual size_t commit_border();
116 :
117 : // cell protection
118 : virtual void set_cell_hidden(bool b);
119 : virtual void set_cell_locked(bool b);
120 : virtual size_t commit_cell_protection();
121 :
122 : // cell style xf
123 :
124 : virtual void set_cell_style_xf_count(size_t n);
125 : virtual size_t commit_cell_style_xf();
126 :
127 : // cell xf
128 :
129 : virtual void set_cell_xf_count(size_t n);
130 : virtual size_t commit_cell_xf();
131 :
132 : // xf (cell format) - used both by cell xf and cell style xf.
133 :
134 : virtual void set_xf_number_format(size_t index);
135 : virtual void set_xf_font(size_t index);
136 : virtual void set_xf_fill(size_t index);
137 : virtual void set_xf_border(size_t index);
138 : virtual void set_xf_protection(size_t index);
139 : virtual void set_xf_style_xf(size_t index);
140 :
141 : // cell style entry
142 :
143 : virtual void set_cell_style_count(size_t n);
144 : virtual void set_cell_style_name(const char* s, size_t n);
145 : virtual void set_cell_style_xf(size_t index);
146 : virtual void set_cell_style_builtin(size_t index);
147 : virtual size_t commit_cell_style();
148 : };
149 :
150 : #endif
151 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|