[Libreoffice-commits] core.git: filter/source include/vcl oox/source svtools/source svx/source sw/source vcl/source

Armin Le Grand alg at apache.org
Thu Feb 27 11:31:09 PST 2014


 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 <alg at apache.org>
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;


More information about the Libreoffice-commits mailing list