From 32efde5cef2b8516a9decd0bf7091d7def1da971 Mon Sep 17 00:00:00 2001 From: Samuel Mehrbrodt Date: Wed, 29 Nov 2017 21:12:32 +0100 Subject: tdf#113696 Add mimetype to image element Otherwise browsers don't recognize base64 encoded svg files. Change-Id: I54d0b87c52a1ca9da1d820751ae32159b88ed28f Reviewed-on: https://gerrit.libreoffice.org/45528 Tested-by: Jenkins Reviewed-by: Samuel Mehrbrodt --- comphelper/source/misc/graphicmimetype.cxx | 54 ++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) (limited to 'comphelper/source/misc/graphicmimetype.cxx') diff --git a/comphelper/source/misc/graphicmimetype.cxx b/comphelper/source/misc/graphicmimetype.cxx index f8eeb3e92de5..bf88312304b1 100644 --- a/comphelper/source/misc/graphicmimetype.cxx +++ b/comphelper/source/misc/graphicmimetype.cxx @@ -19,6 +19,22 @@ #include +#include +#include +#include +#include +#include +#include +#include + +#include + +using namespace css; +using namespace css::beans; +using namespace css::graphic; +using namespace css::io; +using namespace css::uno; + namespace comphelper { OUString GraphicMimeTypeHelper::GetMimeTypeForExtension(const OString& rExt) @@ -47,5 +63,43 @@ OUString GraphicMimeTypeHelper::GetMimeTypeForExtension(const OString& rExt) return aMimeType; } + +OUString GraphicMimeTypeHelper::GetMimeTypeForXGraphic(Reference xGraphic) +{ + OUString aSourceMimeType; + Reference const xGraphicPropertySet(xGraphic, UNO_QUERY); + if (xGraphicPropertySet.is() && // it's null if it's an external link + (xGraphicPropertySet->getPropertyValue("MimeType") >>= aSourceMimeType)) + { + return aSourceMimeType; + } + return OUString(""); +} + +OUString GraphicMimeTypeHelper::GetMimeTypeForImageUrl(const OUString& rImageUrl) +{ + // Create the graphic to retrieve the mimetype from it + Reference xProvider + = css::graphic::GraphicProvider::create(comphelper::getProcessComponentContext()); + Sequence aMediaProperties(1); + aMediaProperties[0].Name = "URL"; + aMediaProperties[0].Value <<= rImageUrl; + Reference xGraphic(xProvider->queryGraphic(aMediaProperties)); + + return GetMimeTypeForXGraphic(xGraphic); +} + +OUString GraphicMimeTypeHelper::GetMimeTypeForImageStream(Reference xInputStream) +{ + // Create the graphic to retrieve the mimetype from it + Reference xProvider + = css::graphic::GraphicProvider::create(comphelper::getProcessComponentContext()); + Sequence aMediaProperties(1); + aMediaProperties[0].Name = "InputStream"; + aMediaProperties[0].Value <<= xInputStream; + Reference xGraphic(xProvider->queryGraphic(aMediaProperties)); + + return GetMimeTypeForXGraphic(xGraphic); +} } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ -- cgit