diff options
-rw-r--r-- | comphelper/source/misc/graphicmimetype.cxx | 8 | ||||
-rw-r--r-- | xmloff/source/core/xmlmultiimagehelper.cxx | 37 |
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; } |