diff options
author | Miklos Vajna <vmiklos@collabora.co.uk> | 2017-08-07 10:09:19 +0200 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.co.uk> | 2017-08-07 11:20:26 +0200 |
commit | 7915f35d7fca5d0720d96954beaa97c00a2c3821 (patch) | |
tree | 711cc50fbdffe483f6d694dbb8c34322e3f40764 /writerperfect/source/writer/exp | |
parent | 147e20fc1bedfc9e9fc695a06d56445134f88021 (diff) |
EPUB export: implement doc/para open/close and text in doc handler
This should be enough for plain text of multiple paragraphs, but the
package part is still missing.
Change-Id: I05fe87fd01e078262a1be9ce76eaaa016de484bf
Reviewed-on: https://gerrit.libreoffice.org/40822
Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
Tested-by: Jenkins <ci@libreoffice.org>
Diffstat (limited to 'writerperfect/source/writer/exp')
-rw-r--r-- | writerperfect/source/writer/exp/xmlimp.cxx | 26 | ||||
-rw-r--r-- | writerperfect/source/writer/exp/xmlimp.hxx | 7 |
2 files changed, 28 insertions, 5 deletions
diff --git a/writerperfect/source/writer/exp/xmlimp.cxx b/writerperfect/source/writer/exp/xmlimp.cxx index 1c915857413e..21c4809ffc57 100644 --- a/writerperfect/source/writer/exp/xmlimp.cxx +++ b/writerperfect/source/writer/exp/xmlimp.cxx @@ -16,28 +16,46 @@ namespace writerperfect namespace exp { -XMLImport::XMLImport() +XMLImport::XMLImport(librevenge::RVNGTextInterface &rGenerator) + : mrGenerator(rGenerator) { } void XMLImport::startDocument() { + mrGenerator.startDocument(librevenge::RVNGPropertyList()); } void XMLImport::endDocument() { + mrGenerator.endDocument(); } -void XMLImport::startElement(const OUString &/*rName*/, const css::uno::Reference<css::xml::sax::XAttributeList> &/*xAttribs*/) +void XMLImport::startElement(const OUString &rName, const css::uno::Reference<css::xml::sax::XAttributeList> &/*xAttribs*/) { + if (rName == "text:p") + { + mrGenerator.openParagraph(librevenge::RVNGPropertyList()); + mbParagraphOpened = true; + } } -void XMLImport::endElement(const OUString &/*rName*/) +void XMLImport::endElement(const OUString &rName) { + if (rName == "text:p") + { + mrGenerator.closeParagraph(); + mbParagraphOpened = false; + } } -void XMLImport::characters(const OUString &/*rChars*/) +void XMLImport::characters(const OUString &rChars) { + if (mbParagraphOpened) + { + OString sCharU8 = OUStringToOString(rChars, RTL_TEXTENCODING_UTF8); + mrGenerator.insertText(librevenge::RVNGString(sCharU8.getStr())); + } } void XMLImport::ignorableWhitespace(const OUString &/*rWhitespaces*/) diff --git a/writerperfect/source/writer/exp/xmlimp.hxx b/writerperfect/source/writer/exp/xmlimp.hxx index 9d6d1eb4c0c6..2b1c743fcf03 100644 --- a/writerperfect/source/writer/exp/xmlimp.hxx +++ b/writerperfect/source/writer/exp/xmlimp.hxx @@ -12,6 +12,8 @@ #include <cppuhelper/implbase.hxx> +#include <librevenge/librevenge.h> + #include <com/sun/star/xml/sax/XDocumentHandler.hpp> namespace writerperfect @@ -25,8 +27,11 @@ class XMLImport : public cppu::WeakImplHelper css::xml::sax::XDocumentHandler > { + librevenge::RVNGTextInterface &mrGenerator; + bool mbParagraphOpened = false; + public: - XMLImport(); + XMLImport(librevenge::RVNGTextInterface &rGenerator); // XDocumentHandler void SAL_CALL startDocument() override; |