diff options
author | Miklos Vajna <vmiklos@collabora.co.uk> | 2017-08-08 17:10:21 +0200 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.co.uk> | 2017-08-09 09:10:48 +0200 |
commit | 758b33f4d5eaa2e81afcb27b61847864a178a597 (patch) | |
tree | d1e6faec7850a80fedaa7799118677d070f72c75 /writerperfect | |
parent | bf710e39949217e0f62606bf8da2171811d63d39 (diff) |
EPUB export: write CSS rules
With this, a hello world writer document is handled correctly.
Change-Id: Ib1efea5aa5ea5049beee719f14f85b41c56d1967
Reviewed-on: https://gerrit.libreoffice.org/40890
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
Diffstat (limited to 'writerperfect')
-rw-r--r-- | writerperfect/source/writer/EPUBPackage.cxx | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/writerperfect/source/writer/EPUBPackage.cxx b/writerperfect/source/writer/EPUBPackage.cxx index 520fece6d9ca..d3b51d4848da 100644 --- a/writerperfect/source/writer/EPUBPackage.cxx +++ b/writerperfect/source/writer/EPUBPackage.cxx @@ -11,6 +11,7 @@ #include <com/sun/star/embed/ElementModes.hpp> #include <com/sun/star/embed/XTransactedObject.hpp> +#include <com/sun/star/io/XSeekable.hpp> #include <com/sun/star/xml/sax/Writer.hpp> #include <comphelper/storagehelper.hxx> @@ -105,9 +106,27 @@ void EPUBPackage::openCSSFile(const char *pName) mxOutputStream.set(mxStorage->openStreamElementByHierarchicalName(OUString::fromUtf8(pName), embed::ElementModes::READWRITE), uno::UNO_QUERY); } -void EPUBPackage::insertRule(const librevenge::RVNGString &/*rSelector*/, const librevenge::RVNGPropertyList &/*rProperties*/) +void EPUBPackage::insertRule(const librevenge::RVNGString &rSelector, const librevenge::RVNGPropertyList &rProperties) { - SAL_WARN("writerperfect", "EPUBPackage::insertRule: implement me"); + assert(mxOutputStream.is()); + + uno::Reference<io::XSeekable> xSeekable(mxOutputStream, uno::UNO_QUERY); + std::stringstream aStream; + if (xSeekable->getPosition() != 0) + aStream << '\n'; + aStream << rSelector.cstr() << " {\n"; + + librevenge::RVNGPropertyList::Iter it(rProperties); + for (it.rewind(); it.next();) + { + if (it()) + aStream << " " << it.key() << ": " << it()->getStr().cstr() << ";\n"; + } + + aStream << "}\n"; + std::string aString = aStream.str(); + uno::Sequence<sal_Int8> aData(reinterpret_cast<const sal_Int8*>(aString.c_str()), aString.size()); + mxOutputStream->writeBytes(aData); } void EPUBPackage::closeCSSFile() |