summaryrefslogtreecommitdiff
path: root/writerperfect/source/writer/exp/xmlimp.cxx
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.co.uk>2017-11-29 11:45:12 +0100
committerMiklos Vajna <vmiklos@collabora.co.uk>2017-11-29 17:53:15 +0100
commit612821223c574fe0956d348730d40623943821f3 (patch)
tree217e83a5bfd84089807dd62862e14cf42a3c88cb /writerperfect/source/writer/exp/xmlimp.cxx
parent6c18082cfa43a278968e2ce422d1e85a5a84373f (diff)
EPUB export: allow setting a custom cover image explicitly
If not set, fall back to the existing auto-find. Change-Id: I5df7a535e4132a18a803c10fa0e06352d9b6b533
Diffstat (limited to 'writerperfect/source/writer/exp/xmlimp.cxx')
-rw-r--r--writerperfect/source/writer/exp/xmlimp.cxx34
1 files changed, 31 insertions, 3 deletions
diff --git a/writerperfect/source/writer/exp/xmlimp.cxx b/writerperfect/source/writer/exp/xmlimp.cxx
index 3d7f99cc399e..bc3b9c7693e4 100644
--- a/writerperfect/source/writer/exp/xmlimp.cxx
+++ b/writerperfect/source/writer/exp/xmlimp.cxx
@@ -46,10 +46,38 @@ OUString GetMimeType(const OUString &rExtension)
}
/// Picks up a cover image from the base directory.
-OUString FindCoverImage(const OUString &rDocumentBaseURL, OUString &rMimeType)
+OUString FindCoverImage(const OUString &rDocumentBaseURL, OUString &rMimeType, const uno::Sequence<beans::PropertyValue> &rDescriptor)
{
OUString aRet;
+ // See if filter data contains a cover image explicitly.
+ uno::Sequence<beans::PropertyValue> aFilterData;
+ for (sal_Int32 i = 0; i < rDescriptor.getLength(); ++i)
+ {
+ if (rDescriptor[i].Name == "FilterData")
+ {
+ rDescriptor[i].Value >>= aFilterData;
+ break;
+ }
+ }
+
+ for (sal_Int32 i = 0; i < aFilterData.getLength(); ++i)
+ {
+ if (aFilterData[i].Name == "EPUBCoverImage")
+ {
+ aFilterData[i].Value >>= aRet;
+ break;
+ }
+ }
+
+ if (!aRet.isEmpty())
+ {
+ INetURLObject aRetURL(aRet);
+ rMimeType = GetMimeType(aRetURL.GetExtension());
+ return aRet;
+ }
+
+ // Not set explicitly, try to pick it up from the base directory.
if (rDocumentBaseURL.isEmpty())
return aRet;
@@ -142,11 +170,11 @@ rtl::Reference<XMLImportContext> XMLOfficeDocContext::CreateChildContext(const O
return nullptr;
}
-XMLImport::XMLImport(librevenge::RVNGTextInterface &rGenerator, const OUString &rURL, const uno::Sequence<beans::PropertyValue> &/*rDescriptor*/)
+XMLImport::XMLImport(librevenge::RVNGTextInterface &rGenerator, const OUString &rURL, const uno::Sequence<beans::PropertyValue> &rDescriptor)
: mrGenerator(rGenerator)
{
OUString aMimeType;
- OUString aCoverImage = FindCoverImage(rURL, aMimeType);
+ OUString aCoverImage = FindCoverImage(rURL, aMimeType, rDescriptor);
if (!aCoverImage.isEmpty())
{
librevenge::RVNGBinaryData aBinaryData;