summaryrefslogtreecommitdiff
path: root/src/lib/SW602SpreadsheetEncoder.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/SW602SpreadsheetEncoder.cpp')
-rw-r--r--src/lib/SW602SpreadsheetEncoder.cpp464
1 files changed, 464 insertions, 0 deletions
diff --git a/src/lib/SW602SpreadsheetEncoder.cpp b/src/lib/SW602SpreadsheetEncoder.cpp
new file mode 100644
index 0000000..4f5fb6b
--- /dev/null
+++ b/src/lib/SW602SpreadsheetEncoder.cpp
@@ -0,0 +1,464 @@
+/* -*- 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/.
+ */
+
+#include "SW602SpreadsheetEncoder.h"
+
+#include <string.h>
+
+#include <map>
+#include <sstream>
+#include <string>
+
+#include <librevenge/librevenge.h>
+
+#include "SW602PropertyHandler.h"
+#include "SW602Types.h"
+
+namespace libsw602
+{
+
+//! a name space used to define internal data of SW602SpreadsheetEncoder
+namespace SW602SpreadsheetEncoderInternal
+{
+//! the state of a SW602SpreadsheetEncoder
+struct State
+{
+ //! constructor
+ State() : m_encoder()
+ {
+ }
+ //! the encoder
+ SW602PropertyHandlerEncoder m_encoder;
+};
+
+}
+
+SW602SpreadsheetEncoder::SW602SpreadsheetEncoder() : librevenge::RVNGSpreadsheetInterface(), m_state(new SW602SpreadsheetEncoderInternal::State)
+{
+}
+
+SW602SpreadsheetEncoder::~SW602SpreadsheetEncoder()
+{
+}
+
+bool SW602SpreadsheetEncoder::getBinaryResult(SW602EmbeddedObject &object)
+{
+ librevenge::RVNGBinaryData data;
+ if (!m_state->m_encoder.getData(data))
+ return false;
+ object=SW602EmbeddedObject(data, "image/x-libsw602-ods");
+ return true;
+}
+
+void SW602SpreadsheetEncoder::setDocumentMetaData(const librevenge::RVNGPropertyList &list)
+{
+ m_state->m_encoder.insertElement("SetDocumentMetaData", list);
+}
+
+void SW602SpreadsheetEncoder::startDocument(const ::librevenge::RVNGPropertyList &list)
+{
+ m_state->m_encoder.insertElement("StartDocument", list);
+}
+
+void SW602SpreadsheetEncoder::endDocument()
+{
+ m_state->m_encoder.insertElement("EndDocument");
+}
+
+//
+// page
+//
+void SW602SpreadsheetEncoder::definePageStyle(const librevenge::RVNGPropertyList &list)
+{
+ m_state->m_encoder.insertElement("DefinePageStyle", list);
+}
+
+void SW602SpreadsheetEncoder::defineEmbeddedFont(const librevenge::RVNGPropertyList &list)
+{
+ m_state->m_encoder.insertElement("DefineEmbeddedFont", list);
+}
+
+void SW602SpreadsheetEncoder::openPageSpan(const librevenge::RVNGPropertyList &list)
+{
+ m_state->m_encoder.insertElement("OpenPageSpan", list);
+}
+void SW602SpreadsheetEncoder::closePageSpan()
+{
+ m_state->m_encoder.insertElement("ClosePageSpan");
+}
+
+void SW602SpreadsheetEncoder::openHeader(const librevenge::RVNGPropertyList &list)
+{
+ m_state->m_encoder.insertElement("OpenHeader", list);
+}
+void SW602SpreadsheetEncoder::closeHeader()
+{
+ m_state->m_encoder.insertElement("CloseHeader");
+}
+
+void SW602SpreadsheetEncoder::openFooter(const librevenge::RVNGPropertyList &list)
+{
+ m_state->m_encoder.insertElement("OpenFooter", list);
+}
+void SW602SpreadsheetEncoder::closeFooter()
+{
+ m_state->m_encoder.insertElement("CloseFooter");
+}
+
+//
+// spreadsheet
+//
+void SW602SpreadsheetEncoder::defineSheetNumberingStyle(const librevenge::RVNGPropertyList &list)
+{
+ m_state->m_encoder.insertElement("DefineSheetNumberingStyle", list);
+}
+void SW602SpreadsheetEncoder::openSheet(const librevenge::RVNGPropertyList &list)
+{
+ m_state->m_encoder.insertElement("OpenSheet", list);
+}
+void SW602SpreadsheetEncoder::closeSheet()
+{
+ m_state->m_encoder.insertElement("CloseSheet");
+}
+void SW602SpreadsheetEncoder::openSheetRow(const librevenge::RVNGPropertyList &list)
+{
+ m_state->m_encoder.insertElement("OpenSheetRow", list);
+}
+
+void SW602SpreadsheetEncoder::closeSheetRow()
+{
+ m_state->m_encoder.insertElement("CloseSheetRow");
+}
+
+void SW602SpreadsheetEncoder::openSheetCell(const librevenge::RVNGPropertyList &list)
+{
+ m_state->m_encoder.insertElement("OpenSheetCell", list);
+}
+
+void SW602SpreadsheetEncoder::closeSheetCell()
+{
+ m_state->m_encoder.insertElement("CloseSheetCell");
+}
+
+//
+// chart
+//
+
+void SW602SpreadsheetEncoder::defineChartStyle(const librevenge::RVNGPropertyList &list)
+{
+ m_state->m_encoder.insertElement("DefineChartStyle", list);
+}
+
+void SW602SpreadsheetEncoder::openChart(const librevenge::RVNGPropertyList &list)
+{
+ m_state->m_encoder.insertElement("OpenChart", list);
+}
+
+void SW602SpreadsheetEncoder::closeChart()
+{
+ m_state->m_encoder.insertElement("CloseChart");
+}
+
+void SW602SpreadsheetEncoder::openChartTextObject(const librevenge::RVNGPropertyList &list)
+{
+ m_state->m_encoder.insertElement("OpenChartTextObject", list);
+}
+
+void SW602SpreadsheetEncoder::closeChartTextObject()
+{
+ m_state->m_encoder.insertElement("CloseChartTextObject");
+}
+
+void SW602SpreadsheetEncoder::openChartPlotArea(const librevenge::RVNGPropertyList &list)
+{
+ m_state->m_encoder.insertElement("OpenChartPlotArea", list);
+}
+
+void SW602SpreadsheetEncoder::closeChartPlotArea()
+{
+ m_state->m_encoder.insertElement("CloseChartPlotArea");
+}
+
+void SW602SpreadsheetEncoder::insertChartAxis(const librevenge::RVNGPropertyList &list)
+{
+ m_state->m_encoder.insertElement("InsertChartAxis", list);
+}
+
+void SW602SpreadsheetEncoder::openChartSerie(const librevenge::RVNGPropertyList &list)
+{
+ m_state->m_encoder.insertElement("OpenChartSerie", list);
+}
+
+void SW602SpreadsheetEncoder::closeChartSerie()
+{
+ m_state->m_encoder.insertElement("CloseChartSerie");
+}
+
+
+//
+// para styles + character styles + link
+//
+void SW602SpreadsheetEncoder::defineParagraphStyle(const librevenge::RVNGPropertyList &list)
+{
+ m_state->m_encoder.insertElement("DefineParagraphStyle", list);
+}
+
+void SW602SpreadsheetEncoder::openParagraph(const librevenge::RVNGPropertyList &list)
+{
+ m_state->m_encoder.insertElement("OpenParagraph", list);
+}
+
+void SW602SpreadsheetEncoder::closeParagraph()
+{
+ m_state->m_encoder.insertElement("CloseParagraph");
+}
+
+void SW602SpreadsheetEncoder::defineCharacterStyle(const librevenge::RVNGPropertyList &list)
+{
+ m_state->m_encoder.insertElement("DefineCharacterStyle", list);
+}
+
+void SW602SpreadsheetEncoder::openSpan(const librevenge::RVNGPropertyList &list)
+{
+ m_state->m_encoder.insertElement("OpenSpan", list);
+}
+
+void SW602SpreadsheetEncoder::closeSpan()
+{
+ m_state->m_encoder.insertElement("CloseSpan");
+}
+
+void SW602SpreadsheetEncoder::openLink(const librevenge::RVNGPropertyList &list)
+{
+ m_state->m_encoder.insertElement("OpenLink", list);
+}
+
+void SW602SpreadsheetEncoder::closeLink()
+{
+ m_state->m_encoder.insertElement("CloseLink");
+}
+
+//
+// section + add basic char
+//
+void SW602SpreadsheetEncoder::defineSectionStyle(const librevenge::RVNGPropertyList &list)
+{
+ m_state->m_encoder.insertElement("DefineSectionStyle", list);
+}
+
+void SW602SpreadsheetEncoder::openSection(const librevenge::RVNGPropertyList &list)
+{
+ m_state->m_encoder.insertElement("OpenSection", list);
+}
+
+void SW602SpreadsheetEncoder::closeSection()
+{
+ m_state->m_encoder.insertElement("CloseSection");
+}
+
+void SW602SpreadsheetEncoder::insertTab()
+{
+ m_state->m_encoder.insertElement("InsertTab");
+}
+
+void SW602SpreadsheetEncoder::insertSpace()
+{
+ m_state->m_encoder.insertElement("InsertSpace");
+}
+
+void SW602SpreadsheetEncoder::insertText(const librevenge::RVNGString &text)
+{
+ m_state->m_encoder.characters(text);
+}
+
+void SW602SpreadsheetEncoder::insertLineBreak()
+{
+ m_state->m_encoder.insertElement("InsertLineBreak");
+}
+
+void SW602SpreadsheetEncoder::insertField(const librevenge::RVNGPropertyList &list)
+{
+ m_state->m_encoder.insertElement("InsertField", list);
+}
+
+//
+// list
+//
+void SW602SpreadsheetEncoder::openOrderedListLevel(const librevenge::RVNGPropertyList &list)
+{
+ m_state->m_encoder.insertElement("OpenOrderedListLevel", list);
+}
+
+void SW602SpreadsheetEncoder::openUnorderedListLevel(const librevenge::RVNGPropertyList &list)
+{
+ m_state->m_encoder.insertElement("OpenUnorderedListLevel", list);
+}
+
+void SW602SpreadsheetEncoder::closeOrderedListLevel()
+{
+ m_state->m_encoder.insertElement("CloseOrderedListLevel");
+}
+
+void SW602SpreadsheetEncoder::closeUnorderedListLevel()
+{
+ m_state->m_encoder.insertElement("CloseOrderedListLevel");
+}
+
+void SW602SpreadsheetEncoder::openListElement(const librevenge::RVNGPropertyList &list)
+{
+ m_state->m_encoder.insertElement("OpenListElement", list);
+}
+
+void SW602SpreadsheetEncoder::closeListElement()
+{
+ m_state->m_encoder.insertElement("CloseListElement");
+}
+
+//
+// footnote, comment, frame
+//
+
+void SW602SpreadsheetEncoder::openFootnote(const librevenge::RVNGPropertyList &list)
+{
+ m_state->m_encoder.insertElement("OpenFootnote", list);
+}
+
+void SW602SpreadsheetEncoder::closeFootnote()
+{
+ m_state->m_encoder.insertElement("CloseFootnote");
+}
+
+void SW602SpreadsheetEncoder::openComment(const librevenge::RVNGPropertyList &list)
+{
+ m_state->m_encoder.insertElement("OpenComment", list);
+}
+void SW602SpreadsheetEncoder::closeComment()
+{
+ m_state->m_encoder.insertElement("CloseComment");
+}
+
+void SW602SpreadsheetEncoder::openFrame(const librevenge::RVNGPropertyList &list)
+{
+ m_state->m_encoder.insertElement("OpenFrame", list);
+}
+void SW602SpreadsheetEncoder::closeFrame()
+{
+ m_state->m_encoder.insertElement("CloseFrame");
+}
+void SW602SpreadsheetEncoder::insertBinaryObject(const librevenge::RVNGPropertyList &list)
+{
+ m_state->m_encoder.insertElement("InsertBinaryObject", list);
+}
+
+//
+// specific text/table
+//
+void SW602SpreadsheetEncoder::openTextBox(const librevenge::RVNGPropertyList &list)
+{
+ m_state->m_encoder.insertElement("OpenTextBox", list);
+}
+
+void SW602SpreadsheetEncoder::closeTextBox()
+{
+ m_state->m_encoder.insertElement("CloseTextBox");
+}
+
+void SW602SpreadsheetEncoder::openTable(const librevenge::RVNGPropertyList &list)
+{
+ m_state->m_encoder.insertElement("OpenTable", list);
+}
+void SW602SpreadsheetEncoder::closeTable()
+{
+ m_state->m_encoder.insertElement("CloseTable");
+}
+void SW602SpreadsheetEncoder::openTableRow(const librevenge::RVNGPropertyList &list)
+{
+ m_state->m_encoder.insertElement("OpenTableRow", list);
+}
+
+void SW602SpreadsheetEncoder::closeTableRow()
+{
+ m_state->m_encoder.insertElement("CloseTableRow");
+}
+
+void SW602SpreadsheetEncoder::openTableCell(const librevenge::RVNGPropertyList &list)
+{
+ m_state->m_encoder.insertElement("OpenTableCell", list);
+}
+
+void SW602SpreadsheetEncoder::closeTableCell()
+{
+ m_state->m_encoder.insertElement("CloseTableCell");
+}
+
+void SW602SpreadsheetEncoder::insertCoveredTableCell(const librevenge::RVNGPropertyList &list)
+{
+ m_state->m_encoder.insertElement("InsertCoveredTableCell", list);
+}
+
+//
+// simple Graphic
+//
+
+void SW602SpreadsheetEncoder::openGroup(const librevenge::RVNGPropertyList &list)
+{
+ m_state->m_encoder.insertElement("OpenGroup", list);
+}
+
+void SW602SpreadsheetEncoder::closeGroup()
+{
+ m_state->m_encoder.insertElement("CloseGroup");
+}
+
+void SW602SpreadsheetEncoder::defineGraphicStyle(const librevenge::RVNGPropertyList &list)
+{
+ m_state->m_encoder.insertElement("DefineGraphicStyle", list);
+}
+
+void SW602SpreadsheetEncoder::drawRectangle(const ::librevenge::RVNGPropertyList &list)
+{
+ m_state->m_encoder.insertElement("DrawRectangle", list);
+}
+
+void SW602SpreadsheetEncoder::drawEllipse(const ::librevenge::RVNGPropertyList &list)
+{
+ m_state->m_encoder.insertElement("DrawEllipse", list);
+}
+
+void SW602SpreadsheetEncoder::drawPolygon(const ::librevenge::RVNGPropertyList &vertices)
+{
+ m_state->m_encoder.insertElement("DrawPolygon", vertices);
+}
+
+void SW602SpreadsheetEncoder::drawPolyline(const ::librevenge::RVNGPropertyList &vertices)
+{
+ m_state->m_encoder.insertElement("DrawPolyline", vertices);
+}
+
+void SW602SpreadsheetEncoder::drawPath(const ::librevenge::RVNGPropertyList &path)
+{
+ m_state->m_encoder.insertElement("DrawPath", path);
+}
+
+void SW602SpreadsheetEncoder::drawConnector(const ::librevenge::RVNGPropertyList &list)
+{
+ m_state->m_encoder.insertElement("DrawConnector", list);
+}
+
+//
+// equation
+//
+void SW602SpreadsheetEncoder::insertEquation(const ::librevenge::RVNGPropertyList &list)
+{
+ m_state->m_encoder.insertElement("InsertEquation", list);
+}
+
+}
+
+/* vim:set shiftwidth=2 softtabstop=2 expandtab: */