diff options
Diffstat (limited to 'src/lib/SW602SpreadsheetEncoder.cpp')
-rw-r--r-- | src/lib/SW602SpreadsheetEncoder.cpp | 464 |
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: */ |