filter/source/msfilter/escherex.cxx | 36 +++++++++++++++++++++++++--- include/vcl/gfxlink.hxx | 6 +++- oox/source/export/drawingml.cxx | 8 ++++++ svtools/source/graphic/descriptor.cxx | 4 +++ svx/source/core/graphichelper.cxx | 3 ++ svx/source/dialog/compressgraphicdialog.cxx | 3 ++ svx/source/gallery2/galtheme.cxx | 5 +++ svx/source/xml/xmlgrhlp.cxx | 2 + svx/source/xoutdev/_xoutbmp.cxx | 4 +++ sw/source/filter/ww8/rtfattributeoutput.cxx | 13 ++++++++++ vcl/source/filter/graphicfilter.cxx | 7 +++++ vcl/source/gdi/gfxlink.cxx | 4 +++ 12 files changed, 90 insertions(+), 5 deletions(-)
New commits: commit af63727b9fdd48258f692d1ccf6d15daccc18681 Author: Armin Le Grand <[email protected]> Date: Thu Feb 27 13:46:24 2014 +0000 Resolves: #i15508# Added support for BMP file type (cherry picked from commit 9956ed1303545cd61901e33b110698c4e5e224c4) Conflicts: filter/source/msfilter/escherex.cxx include/vcl/gfxlink.hxx svx/source/xml/xmlgrhlp.cxx sw/source/ui/docvw/romenu.cxx vcl/source/filter/graphicfilter.cxx Change-Id: Ibcbb69b9c57cd8a438788e9a9c95744e99b6fcdd diff --git a/filter/source/msfilter/escherex.cxx b/filter/source/msfilter/escherex.cxx index a50b72a..06652f1 100644 --- a/filter/source/msfilter/escherex.cxx +++ b/filter/source/msfilter/escherex.cxx @@ -4359,6 +4359,15 @@ sal_uInt32 EscherGraphicProvider::GetBlibID( SvStream& rPicOutStrm, const OStrin { case GFX_LINK_TYPE_NATIVE_JPG : p_EscherBlibEntry->meBlibType = PEG; break; case GFX_LINK_TYPE_NATIVE_PNG : p_EscherBlibEntry->meBlibType = PNG; break; + + // #i15508# added BMP type for better exports; need to check this + // checked - does not work that way, so keep out for now. It may + // work somehow with direct DIB data, but that would need to be checked + // carefully + // for more comments please check RtfAttributeOutput::FlyFrameGraphic + // + // case GFX_LINK_TYPE_NATIVE_BMP : p_EscherBlibEntry->meBlibType = DIB; break; + case GFX_LINK_TYPE_NATIVE_WMF : { if ( pGraphicAry && ( p_EscherBlibEntry->mnSize > 0x2c ) ) @@ -4456,13 +4465,34 @@ sal_uInt32 EscherGraphicProvider::GetBlibID( SvStream& rPicOutStrm, const OStrin else if ( eBlibType == PEG ) rPicOutStrm.WriteUInt16( (sal_uInt16)0x0505 ); } + // fdo#69607 do not compress WMF files if we are in OOXML export - if ( ( eBlibType == PEG ) || ( eBlibType == PNG ) || - ( ( ( eBlibType == WMF ) || ( eBlibType == EMF ) ) && bOOxmlExport ) ) + if ( ( eBlibType == PEG ) || ( eBlibType == PNG ) // || ( eBlibType == DIB )) // #i15508# + || ( ( ( eBlibType == WMF ) || ( eBlibType == EMF ) ) && bOOxmlExport ) ) { nExtra = 17; p_EscherBlibEntry->mnSizeExtra = nExtra + 8; - nInstance = ( eBlibType == PNG ) ? 0xf01e6e00 : 0xf01d46a0; + + // #i15508# type see SvxMSDffManager::GetBLIPDirect (checked, does not work this way) + // see RtfAttributeOutput::FlyFrameGraphic for more comments + // maybe it would work with direct DIB data, but that would need thorough testing + if( eBlibType == PNG ) + { + nInstance = 0xf01e6e00; + } + else // if( eBlibType == PEG ) + { + nInstance = 0xf01d46a0; + } + //else // eBlibType == DIB + //{ + // nInstance = 0xf01d7A80; + //} + + // #i15508# + //nInstance = ( eBlibType == PNG ) ? 0xf01e6e00 : 0xf01d46a0; + + rPicOutStrm.WriteUInt32( nInstance ).WriteUInt32( (sal_uInt32)( p_EscherBlibEntry->mnSize + nExtra ) ); rPicOutStrm.Write( p_EscherBlibEntry->mnIdentifier, 16 ); rPicOutStrm.WriteUChar( (sal_uInt8)0xff ); diff --git a/include/vcl/gfxlink.hxx b/include/vcl/gfxlink.hxx index 35ae2f5..84d4931 100644 --- a/include/vcl/gfxlink.hxx +++ b/include/vcl/gfxlink.hxx @@ -103,12 +103,14 @@ enum GfxLinkType GFX_LINK_TYPE_NATIVE_MET = 7, // Don't forget to update the following defines GFX_LINK_TYPE_NATIVE_PCT = 8, // Don't forget to update the following defines GFX_LINK_TYPE_NATIVE_SVG = 9, // Don't forget to update the following defines - GFX_LINK_TYPE_NATIVE_MOV = 10, + GFX_LINK_TYPE_NATIVE_MOV = 10, // Don't forget to update the following defines + // #i15508# added BMP type support + GFX_LINK_TYPE_NATIVE_BMP = 11, // Don't forget to update the following defines GFX_LINK_TYPE_USER = 0xffff }; #define GFX_LINK_FIRST_NATIVE_ID GFX_LINK_TYPE_NATIVE_GIF -#define GFX_LINK_LAST_NATIVE_ID GFX_LINK_TYPE_NATIVE_SVG +#define GFX_LINK_LAST_NATIVE_ID GFX_LINK_TYPE_NATIVE_BMP // ----------- // - GfxLink - diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx index cd67e57..cf25f2a 100644 --- a/oox/source/export/drawingml.cxx +++ b/oox/source/export/drawingml.cxx @@ -730,6 +730,14 @@ OUString DrawingML::WriteImage( const Graphic& rGraphic , bool bRelPathToMedia ) sMediaType = "image/gif"; pExtension = ".gif"; break; + + // #i15508# added BMP type for better exports + // export not yet active, so adding for reference (not checked) + case GFX_LINK_TYPE_NATIVE_BMP: + sMediaType = "image/bmp"; + pExtension = ".bmp"; + break; + case GFX_LINK_TYPE_NATIVE_JPG: sMediaType = "image/jpeg"; pExtension = ".jpeg"; diff --git a/svtools/source/graphic/descriptor.cxx b/svtools/source/graphic/descriptor.cxx index 8844702..f235e21 100644 --- a/svtools/source/graphic/descriptor.cxx +++ b/svtools/source/graphic/descriptor.cxx @@ -360,6 +360,10 @@ void GraphicDescriptor::_getPropertyValues( const comphelper::PropertyMapEntry** switch( const_cast< Graphic* >( mpGraphic )->GetLink().GetType() ) { case( GFX_LINK_TYPE_NATIVE_GIF ): pMimeType = MIMETYPE_GIF; break; + + // #i15508# added BMP type for better exports (checked, works) + case( GFX_LINK_TYPE_NATIVE_BMP ): pMimeType = MIMETYPE_BMP; break; + case( GFX_LINK_TYPE_NATIVE_JPG ): pMimeType = MIMETYPE_JPG; break; case( GFX_LINK_TYPE_NATIVE_PNG ): pMimeType = MIMETYPE_PNG; break; case( GFX_LINK_TYPE_NATIVE_WMF ): pMimeType = MIMETYPE_WMF; break; diff --git a/svx/source/core/graphichelper.cxx b/svx/source/core/graphichelper.cxx index 8cec8a5..d914121 100644 --- a/svx/source/core/graphichelper.cxx +++ b/svx/source/core/graphichelper.cxx @@ -81,6 +81,9 @@ void GraphicHelper::GetPreferredExtension( OUString& rExtension, const Graphic& case GFX_LINK_TYPE_NATIVE_JPG: aExtension = "jpg"; break; + case GFX_LINK_TYPE_NATIVE_BMP: + aExtension = "bmp"; + break; default: break; } diff --git a/svx/source/dialog/compressgraphicdialog.cxx b/svx/source/dialog/compressgraphicdialog.cxx index 28aad03..987a20c9 100644 --- a/svx/source/dialog/compressgraphicdialog.cxx +++ b/svx/source/dialog/compressgraphicdialog.cxx @@ -139,6 +139,9 @@ void CompressGraphicsDialog::Update() case GFX_LINK_TYPE_NATIVE_SVG: aGraphicTypeString = "SVG image"; break; + case GFX_LINK_TYPE_NATIVE_BMP: + aGraphicTypeString = "BMP image"; + break; default: aGraphicTypeString = "Unknown"; break; diff --git a/svx/source/gallery2/galtheme.cxx b/svx/source/gallery2/galtheme.cxx index fdf793a..da63859 100644 --- a/svx/source/gallery2/galtheme.cxx +++ b/svx/source/gallery2/galtheme.cxx @@ -861,6 +861,11 @@ sal_Bool GalleryTheme::InsertGraphic( const Graphic& rGraphic, sal_uIntPtr nInse { case( GFX_LINK_TYPE_EPS_BUFFER ): nExportFormat = CVT_SVM; break; case( GFX_LINK_TYPE_NATIVE_GIF ): nExportFormat = CVT_GIF; break; + + // #i15508# added BMP type + // could not find/trigger a call to this, but should do no harm + case( GFX_LINK_TYPE_NATIVE_BMP ): nExportFormat = CVT_BMP; break; + case( GFX_LINK_TYPE_NATIVE_JPG ): nExportFormat = CVT_JPG; break; case( GFX_LINK_TYPE_NATIVE_PNG ): nExportFormat = CVT_PNG; break; case( GFX_LINK_TYPE_NATIVE_TIF ): nExportFormat = CVT_TIF; break; diff --git a/svx/source/xml/xmlgrhlp.cxx b/svx/source/xml/xmlgrhlp.cxx index f5bf9f7..b90271c 100644 --- a/svx/source/xml/xmlgrhlp.cxx +++ b/svx/source/xml/xmlgrhlp.cxx @@ -647,6 +647,8 @@ void SvXMLGraphicHelper::ImplInsertGraphicURL( const OUString& rURLStr, sal_uInt { case( GFX_LINK_TYPE_EPS_BUFFER ): aExtension = ".eps"; break; case( GFX_LINK_TYPE_NATIVE_GIF ): aExtension = ".gif"; break; + // #i15508# added BMP type for better exports (checked, works) + case( GFX_LINK_TYPE_NATIVE_BMP ): aExtension = ".bmp"; break; case( GFX_LINK_TYPE_NATIVE_JPG ): aExtension = ".jpg"; break; case( GFX_LINK_TYPE_NATIVE_PNG ): aExtension = ".png"; break; case( GFX_LINK_TYPE_NATIVE_TIF ): aExtension = ".tif"; break; diff --git a/svx/source/xoutdev/_xoutbmp.cxx b/svx/source/xoutdev/_xoutbmp.cxx index 7f6e2fc..1521c7a 100644 --- a/svx/source/xoutdev/_xoutbmp.cxx +++ b/svx/source/xoutdev/_xoutbmp.cxx @@ -183,6 +183,10 @@ sal_uInt16 XOutBitmap::WriteGraphic( const Graphic& rGraphic, OUString& rFileNam switch( aGfxLink.GetType() ) { case( GFX_LINK_TYPE_NATIVE_GIF ): aExt = FORMAT_GIF; break; + + // #i15508# added BMP type for better exports (no call/trigger found, prob used in HTML export) + case( GFX_LINK_TYPE_NATIVE_BMP ): aExt = FORMAT_BMP; break; + case( GFX_LINK_TYPE_NATIVE_JPG ): aExt = FORMAT_JPG; break; case( GFX_LINK_TYPE_NATIVE_PNG ): aExt = FORMAT_PNG; break; diff --git a/sw/source/filter/ww8/rtfattributeoutput.cxx b/sw/source/filter/ww8/rtfattributeoutput.cxx index 837f890..896fe64 100644 --- a/sw/source/filter/ww8/rtfattributeoutput.cxx +++ b/sw/source/filter/ww8/rtfattributeoutput.cxx @@ -3680,6 +3680,19 @@ void RtfAttributeOutput::FlyFrameGraphic( const SwFlyFrmFmt* pFlyFrmFmt, const S pGraphicAry = aGraphicLink.GetData(); switch (aGraphicLink.GetType()) { + // #i15508# trying to add BMP type for better exports, need to check if this works + // checked, does not work. Also need to reset pGraphicAry to NULL to force conversion + // to PNG, else the BMP array will be used. + // It may work using direct DIB data, but that needs to be checked eventually + // + // #i15508# before GFX_LINK_TYPE_NATIVE_BMP was added the graphic data + // (to be hold in pGraphicAry) was not available; thus for now to stay + // compatible, keep it that way by assigning NULL value to pGraphicAry + case GFX_LINK_TYPE_NATIVE_BMP: + // pBLIPType = OOO_STRING_SVTOOLS_RTF_WBITMAP; + pGraphicAry = 0; + break; + case GFX_LINK_TYPE_NATIVE_JPG: pBLIPType = OOO_STRING_SVTOOLS_RTF_JPEGBLIP; break; diff --git a/vcl/source/filter/graphicfilter.cxx b/vcl/source/filter/graphicfilter.cxx index f37eb65..f950b65 100644 --- a/vcl/source/filter/graphicfilter.cxx +++ b/vcl/source/filter/graphicfilter.cxx @@ -1576,7 +1576,14 @@ sal_uInt16 GraphicFilter::ImportGraphic( Graphic& rGraphic, const OUString& rPat // SV internal filters for import bitmaps and MetaFiles ReadGraphic( rIStream, rGraphic ); if( rIStream.GetError() ) + { nStatus = GRFILTER_FORMATERROR; + } + else + { + // #i15508# added BMP type (checked, works) + eLinkType = GFX_LINK_TYPE_NATIVE_BMP; + } } else if( aFilterName.equalsIgnoreAsciiCase( IMP_MOV ) ) { diff --git a/vcl/source/gdi/gfxlink.cxx b/vcl/source/gdi/gfxlink.cxx index 742b553..1d726ba 100644 --- a/vcl/source/gdi/gfxlink.cxx +++ b/vcl/source/gdi/gfxlink.cxx @@ -203,6 +203,10 @@ bool GfxLink::LoadNative( Graphic& rGraphic ) switch( meType ) { case( GFX_LINK_TYPE_NATIVE_GIF ): nCvtType = CVT_GIF; break; + + // #i15508# added BMP type for better exports (reload when swapped - checked, works) + case( GFX_LINK_TYPE_NATIVE_BMP ): nCvtType = CVT_BMP; break; + case( GFX_LINK_TYPE_NATIVE_JPG ): nCvtType = CVT_JPG; break; case( GFX_LINK_TYPE_NATIVE_PNG ): nCvtType = CVT_PNG; break; case( GFX_LINK_TYPE_NATIVE_TIF ): nCvtType = CVT_TIF; break; _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
