diff options
author | Mike Kaganski <mike.kaganski@collabora.com> | 2023-03-30 10:13:12 +0300 |
---|---|---|
committer | Mike Kaganski <mike.kaganski@collabora.com> | 2023-03-30 09:39:32 +0000 |
commit | ab07ba6a9f89aedf4c33fbe911ed8a7d55ced1dd (patch) | |
tree | f1a548ba1d9e0dfc28c20bb28189e8db7f764ee0 | |
parent | aa8fb790e8d3f975c7ffadcb5a4fa390186c6d5d (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.cxx | 4 | ||||
-rw-r--r-- | sw/source/filter/html/htmlflywriter.cxx | 6 | ||||
-rw-r--r-- | vcl/inc/graphic/UnoGraphicDescriptor.hxx | 50 | ||||
-rw-r--r-- | vcl/source/graphic/UnoGraphicDescriptor.cxx | 90 |
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 ) ) |