summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Kaganski <mike.kaganski@collabora.com>2023-03-30 10:13:12 +0300
committerMike Kaganski <mike.kaganski@collabora.com>2023-03-30 09:39:32 +0000
commitab07ba6a9f89aedf4c33fbe911ed8a7d55ced1dd (patch)
treef1a548ba1d9e0dfc28c20bb28189e8db7f764ee0
parentaa8fb790e8d3f975c7ffadcb5a4fa390186c6d5d (diff)
Report correct mimetypes for TIF and EMF
Change-Id: I2eeb07780e3581eea29a9ad98b493de4e78a5d65 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/149745 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
-rw-r--r--svx/source/xoutdev/_xoutbmp.cxx4
-rw-r--r--sw/source/filter/html/htmlflywriter.cxx6
-rw-r--r--vcl/inc/graphic/UnoGraphicDescriptor.hxx50
-rw-r--r--vcl/source/graphic/UnoGraphicDescriptor.cxx90
4 files changed, 72 insertions, 78 deletions
diff --git a/svx/source/xoutdev/_xoutbmp.cxx b/svx/source/xoutdev/_xoutbmp.cxx
index d392426defb5..9fbb4d5690b5 100644
--- a/svx/source/xoutdev/_xoutbmp.cxx
+++ b/svx/source/xoutdev/_xoutbmp.cxx
@@ -155,6 +155,10 @@ ErrCode XOutBitmap::WriteGraphic( const Graphic& rGraphic, OUString& rFileName,
}
rFileName = aURL.GetMainURL(INetURLObject::DecodeMechanism::NONE);
+ if (pMediaType)
+ if (auto xGraphic = rGraphic.GetXGraphic().query<css::beans::XPropertySet>())
+ xGraphic->getPropertyValue("MimeType") >>= *pMediaType;
+
SfxMedium aMedium(aURL.GetMainURL(INetURLObject::DecodeMechanism::NONE), StreamMode::WRITE | StreamMode::SHARE_DENYNONE | StreamMode::TRUNC);
SvStream* pOStm = aMedium.GetOutStream();
diff --git a/sw/source/filter/html/htmlflywriter.cxx b/sw/source/filter/html/htmlflywriter.cxx
index acfeec1edaec..85cae063cda5 100644
--- a/sw/source/filter/html/htmlflywriter.cxx
+++ b/sw/source/filter/html/htmlflywriter.cxx
@@ -1974,8 +1974,6 @@ static SwHTMLWriter& OutHTML_FrameFormatGrfNode( SwHTMLWriter& rWrt, const SwFra
if (!rGraphic.isAvailable())
const_cast<Graphic&>(rGraphic).makeAvailable();
- OUString aMimeTypeOverride;
-
if (rWrt.mbReqIF && bWritePNGFallback)
{
// ReqIF: force native data if possible.
@@ -1987,7 +1985,6 @@ static SwHTMLWriter& OutHTML_FrameFormatGrfNode( SwHTMLWriter& rWrt, const SwFra
else if (rGraphic.GetGfxLink().IsEMF())
{
aFilterName = "emf";
- aMimeTypeOverride = "image/x-emf"; // avoid image/x-wmf
}
else if (pVectorGraphicData && pVectorGraphicData->getType() == VectorGraphicDataType::Wmf)
{
@@ -1996,7 +1993,6 @@ static SwHTMLWriter& OutHTML_FrameFormatGrfNode( SwHTMLWriter& rWrt, const SwFra
else if (rGraphic.GetGfxLink().GetType() == GfxLinkType::NativeTif)
{
aFilterName = "tif";
- aMimeTypeOverride = "image/tiff"; // avoid image/x-vclgraphic
}
}
@@ -2010,8 +2006,6 @@ static SwHTMLWriter& OutHTML_FrameFormatGrfNode( SwHTMLWriter& rWrt, const SwFra
aGraphicURL = URIHelper::SmartRel2Abs(
INetURLObject(rWrt.GetBaseURL()), aGraphicURL,
URIHelper::GetMaybeFileHdl() );
- if (!aMimeTypeOverride.isEmpty())
- aMimeType = aMimeTypeOverride;
}
else
{
diff --git a/vcl/inc/graphic/UnoGraphicDescriptor.hxx b/vcl/inc/graphic/UnoGraphicDescriptor.hxx
index d57bb3a65d28..98b953b443e5 100644
--- a/vcl/inc/graphic/UnoGraphicDescriptor.hxx
+++ b/vcl/inc/graphic/UnoGraphicDescriptor.hxx
@@ -27,31 +27,31 @@
#include <comphelper/propertysetinfo.hxx>
#include <vcl/graph.hxx>
-#define MIMETYPE_BMP "image/x-MS-bmp"
-#define MIMETYPE_GIF "image/gif"
-#define MIMETYPE_JPG "image/jpeg"
-#define MIMETYPE_PCD "image/x-photo-cd"
-#define MIMETYPE_PCX "image/x-pcx"
-#define MIMETYPE_PNG "image/png"
-#define MIMETYPE_TIF "image/tiff"
-#define MIMETYPE_XBM "image/x-xbitmap"
-#define MIMETYPE_XPM "image/x-xpixmap"
-#define MIMETYPE_PBM "image/x-portable-bitmap"
-#define MIMETYPE_PGM "image/x-portable-graymap"
-#define MIMETYPE_PPM "image/x-portable-pixmap"
-#define MIMETYPE_RAS "image/x-cmu-raster"
-#define MIMETYPE_TGA "image/x-targa"
-#define MIMETYPE_PSD "image/vnd.adobe.photoshop"
-#define MIMETYPE_EPS "image/x-eps"
-#define MIMETYPE_DXF "image/vnd.dxf"
-#define MIMETYPE_MET "image/x-met"
-#define MIMETYPE_PCT "image/x-pict"
-#define MIMETYPE_SVM "image/x-svm"
-#define MIMETYPE_WMF "image/x-wmf"
-#define MIMETYPE_EMF "image/x-emf"
-#define MIMETYPE_SVG "image/svg+xml"
-#define MIMETYPE_PDF "application/pdf"
-#define MIMETYPE_WEBP "image/webp"
+inline constexpr OUStringLiteral MIMETYPE_BMP = u"image/x-MS-bmp";
+inline constexpr OUStringLiteral MIMETYPE_GIF = u"image/gif";
+inline constexpr OUStringLiteral MIMETYPE_JPG = u"image/jpeg";
+inline constexpr OUStringLiteral MIMETYPE_PCD = u"image/x-photo-cd";
+inline constexpr OUStringLiteral MIMETYPE_PCX = u"image/x-pcx";
+inline constexpr OUStringLiteral MIMETYPE_PNG = u"image/png";
+inline constexpr OUStringLiteral MIMETYPE_TIF = u"image/tiff";
+inline constexpr OUStringLiteral MIMETYPE_XBM = u"image/x-xbitmap";
+inline constexpr OUStringLiteral MIMETYPE_XPM = u"image/x-xpixmap";
+inline constexpr OUStringLiteral MIMETYPE_PBM = u"image/x-portable-bitmap";
+inline constexpr OUStringLiteral MIMETYPE_PGM = u"image/x-portable-graymap";
+inline constexpr OUStringLiteral MIMETYPE_PPM = u"image/x-portable-pixmap";
+inline constexpr OUStringLiteral MIMETYPE_RAS = u"image/x-cmu-raster";
+inline constexpr OUStringLiteral MIMETYPE_TGA = u"image/x-targa";
+inline constexpr OUStringLiteral MIMETYPE_PSD = u"image/vnd.adobe.photoshop";
+inline constexpr OUStringLiteral MIMETYPE_EPS = u"image/x-eps";
+inline constexpr OUStringLiteral MIMETYPE_DXF = u"image/vnd.dxf";
+inline constexpr OUStringLiteral MIMETYPE_MET = u"image/x-met";
+inline constexpr OUStringLiteral MIMETYPE_PCT = u"image/x-pict";
+inline constexpr OUStringLiteral MIMETYPE_SVM = u"image/x-svm";
+inline constexpr OUStringLiteral MIMETYPE_WMF = u"image/x-wmf";
+inline constexpr OUStringLiteral MIMETYPE_EMF = u"image/x-emf";
+inline constexpr OUStringLiteral MIMETYPE_SVG = u"image/svg+xml";
+inline constexpr OUStringLiteral MIMETYPE_PDF = u"application/pdf";
+inline constexpr OUStringLiteral MIMETYPE_WEBP = u"image/webp";
inline constexpr OUStringLiteral MIMETYPE_VCLGRAPHIC = u"image/x-vclgraphic";
namespace comphelper { class PropertySetInfo; }
diff --git a/vcl/source/graphic/UnoGraphicDescriptor.cxx b/vcl/source/graphic/UnoGraphicDescriptor.cxx
index 40f205bfdb64..02d944e12ff4 100644
--- a/vcl/source/graphic/UnoGraphicDescriptor.cxx
+++ b/vcl/source/graphic/UnoGraphicDescriptor.cxx
@@ -107,39 +107,39 @@ void GraphicDescriptor::implCreate( SvStream& rIStm, const OUString* pURL )
if( !(aDescriptor.Detect( true ) && aDescriptor.GetFileFormat() != GraphicFileFormat::NOT) )
return;
- const char* pMimeType = nullptr;
+ OUString aMimeType;
sal_uInt8 cType = graphic::GraphicType::EMPTY;
switch( aDescriptor.GetFileFormat() )
{
- case GraphicFileFormat::BMP: pMimeType = MIMETYPE_BMP; cType = graphic::GraphicType::PIXEL; break;
- case GraphicFileFormat::GIF: pMimeType = MIMETYPE_GIF; cType = graphic::GraphicType::PIXEL; break;
- case GraphicFileFormat::JPG: pMimeType = MIMETYPE_JPG; cType = graphic::GraphicType::PIXEL; break;
- case GraphicFileFormat::PCD: pMimeType = MIMETYPE_PCD; cType = graphic::GraphicType::PIXEL; break;
- case GraphicFileFormat::PCX: pMimeType = MIMETYPE_PCX; cType = graphic::GraphicType::PIXEL; break;
- case GraphicFileFormat::PNG: pMimeType = MIMETYPE_PNG; cType = graphic::GraphicType::PIXEL; break;
- case GraphicFileFormat::TIF: pMimeType = MIMETYPE_TIF; cType = graphic::GraphicType::PIXEL; break;
- case GraphicFileFormat::XBM: pMimeType = MIMETYPE_XBM; cType = graphic::GraphicType::PIXEL; break;
- case GraphicFileFormat::XPM: pMimeType = MIMETYPE_XPM; cType = graphic::GraphicType::PIXEL; break;
- case GraphicFileFormat::PBM: pMimeType = MIMETYPE_PBM; cType = graphic::GraphicType::PIXEL; break;
- case GraphicFileFormat::PGM: pMimeType = MIMETYPE_PGM; cType = graphic::GraphicType::PIXEL; break;
- case GraphicFileFormat::PPM: pMimeType = MIMETYPE_PPM; cType = graphic::GraphicType::PIXEL; break;
- case GraphicFileFormat::RAS: pMimeType = MIMETYPE_RAS; cType = graphic::GraphicType::PIXEL; break;
- case GraphicFileFormat::TGA: pMimeType = MIMETYPE_TGA; cType = graphic::GraphicType::PIXEL; break;
- case GraphicFileFormat::PSD: pMimeType = MIMETYPE_PSD; cType = graphic::GraphicType::PIXEL; break;
- case GraphicFileFormat::WEBP: pMimeType = MIMETYPE_WEBP; cType = graphic::GraphicType::PIXEL; break;
-
- case GraphicFileFormat::EPS: pMimeType = MIMETYPE_EPS; cType = graphic::GraphicType::VECTOR; break;
- case GraphicFileFormat::DXF: pMimeType = MIMETYPE_DXF; cType = graphic::GraphicType::VECTOR; break;
- case GraphicFileFormat::MET: pMimeType = MIMETYPE_MET; cType = graphic::GraphicType::VECTOR; break;
- case GraphicFileFormat::PCT: pMimeType = MIMETYPE_PCT; cType = graphic::GraphicType::VECTOR; break;
- case GraphicFileFormat::SVM: pMimeType = MIMETYPE_SVM; cType = graphic::GraphicType::VECTOR; break;
- case GraphicFileFormat::WMF: pMimeType = MIMETYPE_WMF; cType = graphic::GraphicType::VECTOR; break;
- case GraphicFileFormat::WMZ: pMimeType = MIMETYPE_WMF; cType = graphic::GraphicType::VECTOR; break;
- case GraphicFileFormat::EMF: pMimeType = MIMETYPE_EMF; cType = graphic::GraphicType::VECTOR; break;
- case GraphicFileFormat::EMZ: pMimeType = MIMETYPE_EMF; cType = graphic::GraphicType::VECTOR; break;
- case GraphicFileFormat::SVG: pMimeType = MIMETYPE_SVG; cType = graphic::GraphicType::VECTOR; break;
- case GraphicFileFormat::SVGZ: pMimeType = MIMETYPE_SVG; cType = graphic::GraphicType::VECTOR; break;
+ case GraphicFileFormat::BMP: aMimeType = MIMETYPE_BMP; cType = graphic::GraphicType::PIXEL; break;
+ case GraphicFileFormat::GIF: aMimeType = MIMETYPE_GIF; cType = graphic::GraphicType::PIXEL; break;
+ case GraphicFileFormat::JPG: aMimeType = MIMETYPE_JPG; cType = graphic::GraphicType::PIXEL; break;
+ case GraphicFileFormat::PCD: aMimeType = MIMETYPE_PCD; cType = graphic::GraphicType::PIXEL; break;
+ case GraphicFileFormat::PCX: aMimeType = MIMETYPE_PCX; cType = graphic::GraphicType::PIXEL; break;
+ case GraphicFileFormat::PNG: aMimeType = MIMETYPE_PNG; cType = graphic::GraphicType::PIXEL; break;
+ case GraphicFileFormat::TIF: aMimeType = MIMETYPE_TIF; cType = graphic::GraphicType::PIXEL; break;
+ case GraphicFileFormat::XBM: aMimeType = MIMETYPE_XBM; cType = graphic::GraphicType::PIXEL; break;
+ case GraphicFileFormat::XPM: aMimeType = MIMETYPE_XPM; cType = graphic::GraphicType::PIXEL; break;
+ case GraphicFileFormat::PBM: aMimeType = MIMETYPE_PBM; cType = graphic::GraphicType::PIXEL; break;
+ case GraphicFileFormat::PGM: aMimeType = MIMETYPE_PGM; cType = graphic::GraphicType::PIXEL; break;
+ case GraphicFileFormat::PPM: aMimeType = MIMETYPE_PPM; cType = graphic::GraphicType::PIXEL; break;
+ case GraphicFileFormat::RAS: aMimeType = MIMETYPE_RAS; cType = graphic::GraphicType::PIXEL; break;
+ case GraphicFileFormat::TGA: aMimeType = MIMETYPE_TGA; cType = graphic::GraphicType::PIXEL; break;
+ case GraphicFileFormat::PSD: aMimeType = MIMETYPE_PSD; cType = graphic::GraphicType::PIXEL; break;
+ case GraphicFileFormat::WEBP: aMimeType = MIMETYPE_WEBP; cType = graphic::GraphicType::PIXEL; break;
+
+ case GraphicFileFormat::EPS: aMimeType = MIMETYPE_EPS; cType = graphic::GraphicType::VECTOR; break;
+ case GraphicFileFormat::DXF: aMimeType = MIMETYPE_DXF; cType = graphic::GraphicType::VECTOR; break;
+ case GraphicFileFormat::MET: aMimeType = MIMETYPE_MET; cType = graphic::GraphicType::VECTOR; break;
+ case GraphicFileFormat::PCT: aMimeType = MIMETYPE_PCT; cType = graphic::GraphicType::VECTOR; break;
+ case GraphicFileFormat::SVM: aMimeType = MIMETYPE_SVM; cType = graphic::GraphicType::VECTOR; break;
+ case GraphicFileFormat::WMF: aMimeType = MIMETYPE_WMF; cType = graphic::GraphicType::VECTOR; break;
+ case GraphicFileFormat::WMZ: aMimeType = MIMETYPE_WMF; cType = graphic::GraphicType::VECTOR; break;
+ case GraphicFileFormat::EMF: aMimeType = MIMETYPE_EMF; cType = graphic::GraphicType::VECTOR; break;
+ case GraphicFileFormat::EMZ: aMimeType = MIMETYPE_EMF; cType = graphic::GraphicType::VECTOR; break;
+ case GraphicFileFormat::SVG: aMimeType = MIMETYPE_SVG; cType = graphic::GraphicType::VECTOR; break;
+ case GraphicFileFormat::SVGZ: aMimeType = MIMETYPE_SVG; cType = graphic::GraphicType::VECTOR; break;
default:
break;
@@ -148,7 +148,7 @@ void GraphicDescriptor::implCreate( SvStream& rIStm, const OUString* pURL )
if( graphic::GraphicType::EMPTY != cType )
{
meType = ( ( graphic::GraphicType::PIXEL == cType ) ? GraphicType::Bitmap : GraphicType::GdiMetafile );
- maMimeType = OUString( pMimeType, strlen(pMimeType), RTL_TEXTENCODING_ASCII_US );
+ maMimeType = aMimeType;
maSizePixel = aDescriptor.GetSizePixel();
maSize100thMM = aDescriptor.GetSize_100TH_MM();
mnBitsPerPixel = aDescriptor.GetBitsPerPixel();
@@ -280,33 +280,29 @@ void GraphicDescriptor::_getPropertyValues( const comphelper::PropertyMapEntry**
{
if( mpGraphic->IsGfxLink() )
{
- const char* pMimeType;
-
- switch( mpGraphic->GetGfxLink().GetType() )
+ GfxLink aLink = mpGraphic->GetGfxLink();
+ switch (aLink.GetType())
{
- case GfxLinkType::NativeGif: pMimeType = MIMETYPE_GIF; break;
+ case GfxLinkType::NativeGif: aMimeType = MIMETYPE_GIF; break;
// #i15508# added BMP type for better exports (checked, works)
- case GfxLinkType::NativeBmp: pMimeType = MIMETYPE_BMP; break;
+ case GfxLinkType::NativeBmp: aMimeType = MIMETYPE_BMP; break;
- case GfxLinkType::NativeJpg: pMimeType = MIMETYPE_JPG; break;
- case GfxLinkType::NativePng: pMimeType = MIMETYPE_PNG; break;
- case GfxLinkType::NativeWmf: pMimeType = MIMETYPE_WMF; break;
- case GfxLinkType::NativeMet: pMimeType = MIMETYPE_MET; break;
- case GfxLinkType::NativePct: pMimeType = MIMETYPE_PCT; break;
- case GfxLinkType::NativeWebp: pMimeType = MIMETYPE_WEBP; break;
+ case GfxLinkType::NativeJpg: aMimeType = MIMETYPE_JPG; break;
+ case GfxLinkType::NativePng: aMimeType = MIMETYPE_PNG; break;
+ case GfxLinkType::NativeTif: aMimeType = MIMETYPE_TIF; break;
+ case GfxLinkType::NativeWmf: aMimeType = aLink.IsEMF() ? OUString(MIMETYPE_EMF) : OUString(MIMETYPE_WMF); break;
+ case GfxLinkType::NativeMet: aMimeType = MIMETYPE_MET; break;
+ case GfxLinkType::NativePct: aMimeType = MIMETYPE_PCT; break;
+ case GfxLinkType::NativeWebp: aMimeType = MIMETYPE_WEBP; break;
// added Svg mimetype support
- case GfxLinkType::NativeSvg: pMimeType = MIMETYPE_SVG; break;
- case GfxLinkType::NativePdf: pMimeType = MIMETYPE_PDF; break;
+ case GfxLinkType::NativeSvg: aMimeType = MIMETYPE_SVG; break;
+ case GfxLinkType::NativePdf: aMimeType = MIMETYPE_PDF; break;
default:
- pMimeType = nullptr;
break;
}
-
- if( pMimeType )
- aMimeType = OUString::createFromAscii( pMimeType );
}
if( aMimeType.isEmpty() && ( mpGraphic->GetType() != GraphicType::NONE ) )