summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>2018-01-12 17:32:41 +0100
committerKatarina Behrens <Katarina.Behrens@cib.de>2018-01-16 19:43:35 +0100
commit25c2a852ebe553a388701ec643743d026b1592f1 (patch)
tree9d4801cbaeaed387f7f7fd885396db78c0363e78
parente6562425d821b065aa139a86f0534ef2b8896ec5 (diff)
tdf#114488 Rank multiple images also for flat odf
Only the file extension was considered before which is not available in flat odf. Now both internal and external URLs are resolved to their respective mimetype. Change-Id: Id7e290cd9a441a1a6c2ce5e8d764391c50495bea Reviewed-on: https://gerrit.libreoffice.org/47824 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de> (cherry picked from commit 3da86d8987db6223b0acc5d8a1b56f7e0c54bbef) Reviewed-on: https://gerrit.libreoffice.org/47901 Reviewed-by: Eike Rathke <erack@redhat.com> Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de> Reviewed-by: Katarina Behrens <Katarina.Behrens@cib.de> Tested-by: Katarina Behrens <Katarina.Behrens@cib.de>
-rw-r--r--comphelper/source/misc/graphicmimetype.cxx8
-rw-r--r--xmloff/source/core/xmlmultiimagehelper.cxx37
2 files changed, 32 insertions, 13 deletions
diff --git a/comphelper/source/misc/graphicmimetype.cxx b/comphelper/source/misc/graphicmimetype.cxx
index bf88312304b1..559c3087a2da 100644
--- a/comphelper/source/misc/graphicmimetype.cxx
+++ b/comphelper/source/misc/graphicmimetype.cxx
@@ -19,12 +19,12 @@
#include <comphelper/graphicmimetype.hxx>
-#include <com/sun/star/beans/XPropertySet.hpp>
#include <com/sun/star/beans/PropertyValue.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
#include <com/sun/star/graphic/GraphicProvider.hpp>
+#include <com/sun/star/graphic/XGraphic.hpp>
#include <com/sun/star/graphic/XGraphicProvider.hpp>
#include <com/sun/star/io/XInputStream.hpp>
-#include <com/sun/star/graphic/XGraphic.hpp>
#include <com/sun/star/uno/Reference.hxx>
#include <comphelper/processfactory.hxx>
@@ -48,8 +48,8 @@ OUString GraphicMimeTypeHelper::GetMimeTypeForExtension(const OString& rExt)
static const XMLGraphicMimeTypeMapper aMapper[]
= { { "gif", "image/gif" }, { "png", "image/png" }, { "jpg", "image/jpeg" },
{ "tif", "image/tiff" }, { "svg", "image/svg+xml" }, { "pdf", "application/pdf" },
- { "wmf", "image/x-wmf" }, { "eps", "image/x-eps" }, { "bmp", "image/bmp" },
- { "pct", "image/x-pict" } };
+ { "wmf", "image/x-wmf" }, { "emf", "image/x-emf" }, { "eps", "image/x-eps" },
+ { "bmp", "image/bmp" }, { "pct", "image/x-pict" }, { "svm", "image/x-svm" } };
OUString aMimeType;
diff --git a/xmloff/source/core/xmlmultiimagehelper.cxx b/xmloff/source/core/xmlmultiimagehelper.cxx
index 3a5ad69d4c65..3d7725a3b24f 100644
--- a/xmloff/source/core/xmlmultiimagehelper.cxx
+++ b/xmloff/source/core/xmlmultiimagehelper.cxx
@@ -20,48 +20,67 @@
#include <rtl/ustring.hxx>
#include <xmlmultiimagehelper.hxx>
+#include <comphelper/graphicmimetype.hxx>
+
using namespace ::com::sun::star;
namespace
{
sal_uInt32 getQualityIndex(const OUString& rString)
{
+ OUString sMimeType;
+ if (rString.startsWith("vnd.sun.star.GraphicObject"))
+ {
+ sMimeType = comphelper::GraphicMimeTypeHelper::GetMimeTypeForImageUrl(rString);
+ }
+ else if (rString.startsWith("vnd.sun.star.Package"))
+ {
+ sMimeType
+ = comphelper::GraphicMimeTypeHelper::GetMimeTypeForExtension(OUStringToOString(
+ rString.copy(rString.lastIndexOf(".") + 1), RTL_TEXTENCODING_ASCII_US));
+ }
+ else
+ {
+ SAL_WARN("xmloff", "Unknown image source: " << rString);
+ return 0;
+ }
+
// pixel formats first
- if(rString.endsWith(".bmp"))
+ if(sMimeType == "image/bmp")
{
return 10;
}
- if(rString.endsWith(".gif"))
+ if(sMimeType == "image/gif")
{
return 20;
}
- if(rString.endsWith(".jpg"))
+ if(sMimeType == "image/jpeg")
{
return 30;
}
- if(rString.endsWith(".png"))
+ if(sMimeType == "image/png")
{
return 40;
}
// vector formats, prefer always
- if(rString.endsWith(".svm"))
+ if(sMimeType == "image/x-svm")
{
return 1000;
}
- if(rString.endsWith(".wmf"))
+ if(sMimeType == "image/x-wmf")
{
return 1010;
}
- if(rString.endsWith(".emf"))
+ if(sMimeType == "image/x-emf")
{
return 1020;
}
- if(rString.endsWith(".pdf"))
+ if(sMimeType == "application/pdf")
{
return 1030;
}
- if(rString.endsWith(".svg"))
+ if(sMimeType == "image/svg+xml")
{
return 1040;
}