summaryrefslogtreecommitdiff
path: root/src/lib/SW602SpreadsheetEncoder.h
blob: b36e0cb02cebeb7df35823f5cb7d83cfb963a7da (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/*
 * This file is part of the libsw602 project.
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 */

#ifndef INCLUDED_SW602_SPREADSHEET_ENCODER_H
#define INCLUDED_SW602_SPREADSHEET_ENCODER_H

#include <librevenge/librevenge.h>

#include "SW602Types.h"

namespace libsw602
{

class SW602PropertyHandlerEncoder;

namespace SW602SpreadsheetEncoderInternal
{
struct State;
}

/** main class used to define store librevenge::RVNGSpreadsheetInterface
    lists of command in a librevenge::RVNGBinaryData. \see SW602SpreadsheetDecoder
    can be used to decode back the spreadsheet...

	\note as this class implements the functions librevenge::RVNGSpreadsheetInterface,
  the documentation is not duplicated..
*/
class SW602SpreadsheetEncoder : public librevenge::RVNGSpreadsheetInterface
{
public:
  /// constructor
  SW602SpreadsheetEncoder();
  /// destructor
  ~SW602SpreadsheetEncoder();
  /// return the final spreadsheet
  bool getBinaryResult(SW602EmbeddedObject &object);

  void setDocumentMetaData(const librevenge::RVNGPropertyList &propList);

  void startDocument(const librevenge::RVNGPropertyList &propList);
  void endDocument();

  void definePageStyle(const librevenge::RVNGPropertyList &propList);
  void defineEmbeddedFont(const librevenge::RVNGPropertyList &propList);

  void openPageSpan(const librevenge::RVNGPropertyList &propList);
  void closePageSpan();

  void openHeader(const librevenge::RVNGPropertyList &propList);
  void closeHeader();

  void openFooter(const librevenge::RVNGPropertyList &propList);
  void closeFooter();

  void defineSheetNumberingStyle(const librevenge::RVNGPropertyList &propList);
  void openSheet(const librevenge::RVNGPropertyList &propList);
  void closeSheet();
  void openSheetRow(const librevenge::RVNGPropertyList &propList);
  void closeSheetRow();
  void openSheetCell(const librevenge::RVNGPropertyList &propList);
  void closeSheetCell();

  void defineChartStyle(const librevenge::RVNGPropertyList &propList);

  void openChart(const librevenge::RVNGPropertyList &propList);
  void closeChart();

  void openChartTextObject(const librevenge::RVNGPropertyList &propList);
  void closeChartTextObject();

  void openChartPlotArea(const librevenge::RVNGPropertyList &propList);
  void closeChartPlotArea();
  void insertChartAxis(const librevenge::RVNGPropertyList &axis);
  void openChartSerie(const librevenge::RVNGPropertyList &series);
  void closeChartSerie();

  void defineParagraphStyle(const librevenge::RVNGPropertyList &propList);

  void openParagraph(const librevenge::RVNGPropertyList &propList);
  void closeParagraph();

  void defineCharacterStyle(const librevenge::RVNGPropertyList &propList);

  void openSpan(const librevenge::RVNGPropertyList &propList);
  void closeSpan();
  void openLink(const librevenge::RVNGPropertyList &propList);
  void closeLink();

  void defineSectionStyle(const librevenge::RVNGPropertyList &propList);

  void openSection(const librevenge::RVNGPropertyList &propList);
  void closeSection();

  void insertTab();
  void insertSpace();
  void insertText(const librevenge::RVNGString &text);
  void insertLineBreak();

  void insertField(const librevenge::RVNGPropertyList &propList);

  void openOrderedListLevel(const librevenge::RVNGPropertyList &propList);
  void openUnorderedListLevel(const librevenge::RVNGPropertyList &propList);
  void closeOrderedListLevel();
  void closeUnorderedListLevel();
  void openListElement(const librevenge::RVNGPropertyList &propList);
  void closeListElement();

  void openFootnote(const librevenge::RVNGPropertyList &propList);
  void closeFootnote();

  void openComment(const librevenge::RVNGPropertyList &propList);
  void closeComment();

  void openFrame(const librevenge::RVNGPropertyList &propList);
  void closeFrame();
  void insertBinaryObject(const librevenge::RVNGPropertyList &propList);

  //
  // specific text/table
  //

  void openTextBox(const librevenge::RVNGPropertyList &propList);
  void closeTextBox();

  void openTable(const librevenge::RVNGPropertyList &propList);
  void closeTable();
  void openTableRow(const librevenge::RVNGPropertyList &propList);
  void closeTableRow();
  void openTableCell(const librevenge::RVNGPropertyList &propList);
  void closeTableCell();
  void insertCoveredTableCell(const librevenge::RVNGPropertyList &propList);

  //
  // simple Graphic
  //

  void openGroup(const librevenge::RVNGPropertyList &propList);
  void closeGroup();

  void defineGraphicStyle(const librevenge::RVNGPropertyList &propList);

  void drawRectangle(const librevenge::RVNGPropertyList &propList);
  void drawEllipse(const librevenge::RVNGPropertyList &propList);
  void drawPolygon(const librevenge::RVNGPropertyList &propList);
  void drawPolyline(const librevenge::RVNGPropertyList &propList);
  void drawPath(const librevenge::RVNGPropertyList &propList);
  void drawConnector(const ::librevenge::RVNGPropertyList &propList);

  //
  // Equation
  //

  void insertEquation(const librevenge::RVNGPropertyList &propList);

protected:
  //! the actual state
  boost::shared_ptr<SW602SpreadsheetEncoderInternal::State> m_state;
};

}

#endif

/* vim:set shiftwidth=2 softtabstop=2 expandtab: */