[Libreoffice-commits] core.git: Branch 'libreoffice-4-3' - sw/source

Caolán McNamara caolanm at redhat.com
Wed Feb 11 07:38:23 PST 2015


 sw/source/filter/html/htmlgrin.cxx |   70 ++++++++++++++++++++++---------------
 1 file changed, 42 insertions(+), 28 deletions(-)

New commits:
commit d330d1cb36b81026e448dc371075b7bc8c75d33e
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Tue Feb 10 09:49:16 2015 +0000

    Resolves: tdf#83073 use loaded graphic's width/height as defaults
    
    (cherry picked from commit 4327ee505f8507f653c8f4db9ac7503db2e15c3a)
    
    Conflicts:
    	sw/source/filter/html/htmlgrin.cxx
    
    Change-Id: Idad25f82d884c40c55b886fd7634a6c6e51693c4
    Reviewed-on: https://gerrit.libreoffice.org/14402
    Tested-by: Michael Stahl <mstahl at redhat.com>
    Reviewed-by: Michael Stahl <mstahl at redhat.com>

diff --git a/sw/source/filter/html/htmlgrin.cxx b/sw/source/filter/html/htmlgrin.cxx
index 9e95fa8..8cc516f 100644
--- a/sw/source/filter/html/htmlgrin.cxx
+++ b/sw/source/filter/html/htmlgrin.cxx
@@ -312,6 +312,7 @@ void SwHTMLParser::InsertImage()
     OUString sGrfNm;
     sal_Int16 eVertOri = text::VertOrientation::TOP;
     sal_Int16 eHoriOri = text::HoriOrientation::NONE;
+    bool bWidthProvided=false, bHeightProvided=false;
     long nWidth=0, nHeight=0;
     long nVSpace=0, nHSpace=0;
 
@@ -361,6 +362,7 @@ void SwHTMLParser::InsertImage()
                 bPrcWidth = (rOption.GetString().indexOf('%') != -1);
                 if( bPrcWidth && nWidth>100 )
                     nWidth = 100;
+                bWidthProvided = true;
                 break;
             case HTML_O_HEIGHT:
                 // erstmal nur als Pixelwerte merken!
@@ -368,6 +370,7 @@ void SwHTMLParser::InsertImage()
                 bPrcHeight = (rOption.GetString().indexOf('%') != -1);
                 if( bPrcHeight && nHeight>100 )
                     nHeight = 100;
+                bHeightProvided = true;
                 break;
             case HTML_O_VSPACE:
                 nVSpace = rOption.GetNumber();
@@ -461,6 +464,42 @@ IMAGE_SETEVENT:
         }
     }
 
+    Graphic aGraphic;
+    INetURLObject aGraphicURL( sGrfNm );
+    if( aGraphicURL.GetProtocol() == INET_PROT_DATA )
+    {
+        // use embedded base64 encoded data
+        ::com::sun::star::uno::Sequence< sal_Int8 > aPass;
+        OUString sBase64Data = sGrfNm.replaceAt(0,22,"");
+        ::sax::Converter::decodeBase64(aPass, sBase64Data);
+        if( aPass.hasElements() )
+        {
+            SvMemoryStream aStream(aPass.getArray(), aPass.getLength(), STREAM_READ);
+            if (GRFILTER_OK == GraphicFilter::GetGraphicFilter().ImportGraphic(aGraphic, "", aStream))
+                sGrfNm = "";
+        }
+    }
+    // sBaseURL is empty if the source is clipboard
+    else if (sBaseURL.isEmpty())
+    {
+        if (GRFILTER_OK == GraphicFilter::GetGraphicFilter().ImportGraphic(aGraphic, aGraphicURL))
+            sGrfNm = "";
+    }
+
+    if (!sGrfNm.isEmpty())
+    {
+        aGraphic.SetDefaultType();
+    }
+
+    if (!bHeightProvided || !bWidthProvided)
+    {
+        Size aPixelSize = aGraphic.GetSizePixel(Application::GetDefaultDevice());
+        if (!bWidthProvided)
+            nWidth = aPixelSize.Width();
+        if (!bHeightProvided)
+            nHeight = aPixelSize.Height();
+    }
+
     SfxItemSet aItemSet( pDoc->GetAttrPool(), pCSS1Parser->GetWhichMap() );
     SvxCSS1PropertyInfo aPropInfo;
     if( HasStyleOptions( aStyle, aId, aClass ) )
@@ -694,31 +733,6 @@ IMAGE_SETEVENT:
     aFrmSize.SetHeightPercent( nPrcHeight );
     aFrmSet.Put( aFrmSize );
 
-    Graphic aGraphic;
-    INetURLObject aGraphicURL( sGrfNm );
-    if( aGraphicURL.GetProtocol() == INET_PROT_DATA )
-    {
-        // use embedded base64 encoded data
-        ::com::sun::star::uno::Sequence< sal_Int8 > aPass;
-        OUString sBase64Data = sGrfNm.replaceAt(0,22,"");
-        ::sax::Converter::decodeBase64(aPass, sBase64Data);
-        if( aPass.hasElements() )
-        {
-            SvMemoryStream aStream(aPass.getArray(), aPass.getLength(), STREAM_READ);
-            if (GRFILTER_OK == GraphicFilter::GetGraphicFilter().ImportGraphic(aGraphic, "", aStream))
-                sGrfNm = "";
-        }
-    }
-    // sBaseURL is empty if the source is clipboard
-    else if (sBaseURL.isEmpty())
-    {
-        if (GRFILTER_OK == GraphicFilter::GetGraphicFilter().ImportGraphic(aGraphic, aGraphicURL))
-            sGrfNm = "";
-    }
-    if (!sGrfNm.isEmpty())
-    {
-        aGraphic.SetDefaultType();
-    }
     // passing empty sGrfNm here, means we don't want the graphic to be linked
     SwFrmFmt *pFlyFmt = pDoc->Insert( *pPam, sGrfNm, aEmptyOUStr, &aGraphic,
                                       &aFrmSet, NULL, NULL );
@@ -742,10 +756,10 @@ IMAGE_SETEVENT:
         if( !sAltNm.isEmpty() )
             pGrfNd->SetTitle( sAltNm );
 
-    if( bSetTwipSize )
-        pGrfNd->SetTwipSize( aGrfSz );
+        if( bSetTwipSize )
+            pGrfNd->SetTwipSize( aGrfSz );
 
-    pGrfNd->SetChgTwipSize( bChangeFrmSize, bChangeFrmSize );
+        pGrfNd->SetChgTwipSize( bChangeFrmSize, bChangeFrmSize );
 
         if( bSetScaleImageMap )
             pGrfNd->SetScaleImageMap( true );


More information about the Libreoffice-commits mailing list