[Libreoffice-commits] core.git: writerperfect/qa writerperfect/source

Miklos Vajna vmiklos at collabora.co.uk
Fri Dec 1 08:19:12 UTC 2017


 writerperfect/source/writer/exp/xmlimp.cxx |   88 +++++++++++------------------
 1 file changed, 35 insertions(+), 53 deletions(-)

New commits:
commit 1a0a026a5770ca2e8ca66e1e8daed101301c7e30
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Thu Nov 30 16:36:03 2017 +0100

    EPUB export: handle custom media dir in cover image / XMP metadata
    
    By changing the default to <media dir>/cover.<extension> and <media
    dir>/<basename>.xmp.
    
    Change-Id: I736aefafba5aa5208917d9ed40119ca7721cdde3
    Reviewed-on: https://gerrit.libreoffice.org/45604
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>

diff --git a/writerperfect/qa/unit/data/writer/epubexport/meta-xmp.xmp b/writerperfect/qa/unit/data/writer/epubexport/meta-xmp/meta-xmp.xmp
similarity index 100%
rename from writerperfect/qa/unit/data/writer/epubexport/meta-xmp.xmp
rename to writerperfect/qa/unit/data/writer/epubexport/meta-xmp/meta-xmp.xmp
diff --git a/writerperfect/qa/unit/data/writer/epubexport/meta.cover-image.png b/writerperfect/qa/unit/data/writer/epubexport/meta/cover.png
similarity index 100%
rename from writerperfect/qa/unit/data/writer/epubexport/meta.cover-image.png
rename to writerperfect/qa/unit/data/writer/epubexport/meta/cover.png
diff --git a/writerperfect/source/writer/exp/xmlimp.cxx b/writerperfect/source/writer/exp/xmlimp.cxx
index f933487a59b8..ad4928f17a65 100644
--- a/writerperfect/source/writer/exp/xmlimp.cxx
+++ b/writerperfect/source/writer/exp/xmlimp.cxx
@@ -49,6 +49,37 @@ OUString GetMimeType(const OUString &rExtension)
     return it == vMimeTypes.end() ? OUString() : it->second;
 }
 
+/// Determines the base directory for cover images, XMP metadata, popup images.
+OUString FindMediaDir(const OUString &rDocumentBaseURL, const uno::Sequence<beans::PropertyValue> &rFilterData)
+{
+    OUString aMediaDir;
+
+    // See if filter data contains a media directory explicitly.
+    for (sal_Int32 i = 0; i < rFilterData.getLength(); ++i)
+    {
+        if (rFilterData[i].Name == "RVNGMediaDir")
+        {
+            rFilterData[i].Value >>= aMediaDir;
+            break;
+        }
+    }
+
+    if (!aMediaDir.isEmpty())
+        return aMediaDir + "/";
+
+    // Not set explicitly, try to pick it up from the base directory.
+    INetURLObject aURL(rDocumentBaseURL);
+    try
+    {
+        aMediaDir = rtl::Uri::convertRelToAbs(rDocumentBaseURL, aURL.GetBase()) + "/";
+    }
+    catch (const rtl::MalformedUriException &rException)
+    {
+        SAL_WARN("writerperfect", "FindMediaDir: convertRelToAbs() failed:" << rException.getMessage());
+    }
+    return aMediaDir;
+}
+
 /// Picks up a cover image from the base directory.
 OUString FindCoverImage(const OUString &rDocumentBaseURL, OUString &rMimeType, const uno::Sequence<beans::PropertyValue> &rFilterData)
 {
@@ -75,8 +106,6 @@ OUString FindCoverImage(const OUString &rDocumentBaseURL, OUString &rMimeType, c
     if (rDocumentBaseURL.isEmpty())
         return aRet;
 
-    INetURLObject aDocumentBaseURL(rDocumentBaseURL);
-
     static const std::initializer_list<OUStringLiteral> vExtensions =
     {
         "gif",
@@ -85,17 +114,10 @@ OUString FindCoverImage(const OUString &rDocumentBaseURL, OUString &rMimeType, c
         "svg"
     };
 
+    OUString aMediaDir = FindMediaDir(rDocumentBaseURL, rFilterData);
     for (const auto &rExtension : vExtensions)
     {
-        try
-        {
-            aRet = rtl::Uri::convertRelToAbs(rDocumentBaseURL, aDocumentBaseURL.GetBase() + ".cover-image." + rExtension);
-        }
-        catch (const rtl::MalformedUriException &rException)
-        {
-            SAL_WARN("writerperfect", "FindCoverImage: convertRelToAbs() failed:" << rException.getMessage());
-        }
-
+        aRet = aMediaDir + "cover." + rExtension;
         if (!aRet.isEmpty())
         {
             SvFileStream aStream(aRet, StreamMode::READ);
@@ -113,37 +135,6 @@ OUString FindCoverImage(const OUString &rDocumentBaseURL, OUString &rMimeType, c
     return aRet;
 }
 
-/// Determines the base directory for cover images, XMP metadata, popup images.
-OUString FindMediaDir(const OUString &rDocumentBaseURL, const uno::Sequence<beans::PropertyValue> &rFilterData)
-{
-    OUString aMediaDir;
-
-    // See if filter data contains a media directory explicitly.
-    for (sal_Int32 i = 0; i < rFilterData.getLength(); ++i)
-    {
-        if (rFilterData[i].Name == "RVNGMediaDir")
-        {
-            rFilterData[i].Value >>= aMediaDir;
-            break;
-        }
-    }
-
-    if (!aMediaDir.isEmpty())
-        return aMediaDir + "/";
-
-    // Not set explicitly, try to pick it up from the base directory.
-    INetURLObject aURL(rDocumentBaseURL);
-    try
-    {
-        aMediaDir = rtl::Uri::convertRelToAbs(rDocumentBaseURL, aURL.GetBase()) + "/";
-    }
-    catch (const rtl::MalformedUriException &rException)
-    {
-        SAL_WARN("writerperfect", "FindMediaDir: convertRelToAbs() failed:" << rException.getMessage());
-    }
-    return aMediaDir;
-}
-
 /// Picks up XMP metadata from the base directory.
 void FindXMPMetadata(const uno::Reference<uno::XComponentContext> &xContext, const OUString &rDocumentBaseURL, const uno::Sequence<beans::PropertyValue> &rFilterData, librevenge::RVNGPropertyList &rMetaData)
 {
@@ -187,18 +178,9 @@ void FindXMPMetadata(const uno::Reference<uno::XComponentContext> &xContext, con
     if (rDocumentBaseURL.isEmpty())
         return;
 
+    OUString aMediaDir = FindMediaDir(rDocumentBaseURL, rFilterData);
     INetURLObject aDocumentBaseURL(rDocumentBaseURL);
-    OUString aURL;
-    try
-    {
-        aURL = rtl::Uri::convertRelToAbs(rDocumentBaseURL, aDocumentBaseURL.GetBase() + ".xmp");
-    }
-    catch (const rtl::MalformedUriException &rException)
-    {
-        SAL_WARN("writerperfect", "FindXMPMetadata: convertRelToAbs() failed:" << rException.getMessage());
-        return;
-    }
-
+    OUString aURL = aMediaDir + aDocumentBaseURL.GetBase() + ".xmp";
     SvFileStream aStream(aURL, StreamMode::READ);
     if (!aStream.IsOpen())
         return;


More information about the Libreoffice-commits mailing list