summaryrefslogtreecommitdiff
path: root/writerperfect/source/writer/exp
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.co.uk>2017-08-07 10:09:19 +0200
committerMiklos Vajna <vmiklos@collabora.co.uk>2017-08-07 11:20:26 +0200
commit7915f35d7fca5d0720d96954beaa97c00a2c3821 (patch)
tree711cc50fbdffe483f6d694dbb8c34322e3f40764 /writerperfect/source/writer/exp
parent147e20fc1bedfc9e9fc695a06d56445134f88021 (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.cxx26
-rw-r--r--writerperfect/source/writer/exp/xmlimp.hxx7
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;