summaryrefslogtreecommitdiff
path: root/writerperfect/source/writer/EPUBPackage.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'writerperfect/source/writer/EPUBPackage.cxx')
-rw-r--r--writerperfect/source/writer/EPUBPackage.cxx21
1 files changed, 17 insertions, 4 deletions
diff --git a/writerperfect/source/writer/EPUBPackage.cxx b/writerperfect/source/writer/EPUBPackage.cxx
index 7818f584b76f..3a33dedac3eb 100644
--- a/writerperfect/source/writer/EPUBPackage.cxx
+++ b/writerperfect/source/writer/EPUBPackage.cxx
@@ -140,17 +140,30 @@ void EPUBPackage::closeCSSFile()
void EPUBPackage::openBinaryFile(const char *pName)
{
- SAL_WARN("writerperfect", "EPUBPackage::openBinaryFile, " << pName << ": implement me");
+ assert(pName);
+ assert(!mxOutputStream.is());
+
+ mxOutputStream.set(mxStorage->openStreamElementByHierarchicalName(OUString::fromUtf8(pName), embed::ElementModes::READWRITE), uno::UNO_QUERY);
}
-void EPUBPackage::insertBinaryData(const librevenge::RVNGBinaryData &/*rData*/)
+void EPUBPackage::insertBinaryData(const librevenge::RVNGBinaryData &rData)
{
- SAL_WARN("writerperfect", "EPUBPackage::insertBinaryData: implement me");
+ assert(mxOutputStream.is());
+
+ if (rData.empty())
+ return;
+
+ uno::Sequence<sal_Int8> aData(reinterpret_cast<const sal_Int8 *>(rData.getDataBuffer()), rData.size());
+ mxOutputStream->writeBytes(aData);
}
void EPUBPackage::closeBinaryFile()
{
- SAL_WARN("writerperfect", "EPUBPackage::closeBinaryFile: implement me");
+ assert(mxOutputStream.is());
+
+ uno::Reference<embed::XTransactedObject> xTransactedObject(mxOutputStream, uno::UNO_QUERY);
+ xTransactedObject->commit();
+ mxOutputStream.clear();
}
void EPUBPackage::openTextFile(const char *pName)