diff options
author | Miklos Vajna <vmiklos@collabora.co.uk> | 2017-11-29 11:45:12 +0100 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.co.uk> | 2017-11-29 17:53:15 +0100 |
commit | 612821223c574fe0956d348730d40623943821f3 (patch) | |
tree | 217e83a5bfd84089807dd62862e14cf42a3c88cb /writerperfect/source/writer/exp/xmlimp.cxx | |
parent | 6c18082cfa43a278968e2ce422d1e85a5a84373f (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.cxx | 34 |
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; |