summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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;
}