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

Michael Stahl mstahl at redhat.com
Tue Apr 14 13:05:12 PDT 2015


 svx/source/unodraw/unobrushitemhelper.cxx      |   27 ++++++++++++-------------
 sw/qa/extras/odfimport/data/PageBackground.odt |binary
 sw/qa/extras/odfimport/odfimport.cxx           |    6 +++++
 3 files changed, 20 insertions(+), 13 deletions(-)

New commits:
commit ac8be3d609a219c62713d37d22f8fef0115809f1
Author: Michael Stahl <mstahl at redhat.com>
Date:   Tue Apr 14 16:25:42 2015 +0200

    tdf#89478: svx: ODF import: SvxBrushItem Graphics should override Color
    
    The bugdoc has:
    
    <style:page-layout-properties fo:background-color="#007f7f" >
        <style:background-image
         xlink:href="Pictures/2000003900002FA3000055F455EC9F63.svm"/>
    </style:page-layout-properties>
    
    In this case it's clearly better to prefer the Graphics.
    
    The old code could actually store both in the model but the UI only
    allows setting either Color or Graphic, so this should be good enough.
    
    (regression from 7d9bb549d498d6beed2c4050c402d09643febdfa)
    
    Change-Id: Id33231ad90815d9791f90289fb0b55455d334c14
    (cherry picked from commit b82791e3c586d6e4247d0eb1bb94681bcb113762)
    Reviewed-on: https://gerrit.libreoffice.org/15307
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/svx/source/unodraw/unobrushitemhelper.cxx b/svx/source/unodraw/unobrushitemhelper.cxx
index 4a2ec1d..d10aab6 100644
--- a/svx/source/unodraw/unobrushitemhelper.cxx
+++ b/svx/source/unodraw/unobrushitemhelper.cxx
@@ -50,19 +50,8 @@ void setSvxBrushItemAsFillAttributesToTargetSet(const SvxBrushItem& rBrush, SfxI
 
     const sal_uInt8 nTransparency(rBrush.GetColor().GetTransparency());
 
-    if(0xff != nTransparency)
-    {
-        // we have a color fill
-        const Color aColor(rBrush.GetColor().GetRGBColor());
-
-        rToSet.Put(XFillStyleItem(drawing::FillStyle_SOLID));
-        rToSet.Put(XFillColorItem(OUString(), aColor));
-
-        // #125189# nTransparency is in range [0..254], convert to [0..100] which is used in
-        // XFillTransparenceItem (caution with the range which is in an *item-specific* range)
-        rToSet.Put(XFillTransparenceItem((((sal_Int32)nTransparency * 100) + 127) / 254));
-    }
-    else if(GPOS_NONE != rBrush.GetGraphicPos())
+    // tdf#89478 check for image first
+    if (GPOS_NONE != rBrush.GetGraphicPos())
     {
         // we have a graphic fill, set fill style
         rToSet.Put(XFillStyleItem(drawing::FillStyle_BITMAP));
@@ -131,6 +120,18 @@ void setSvxBrushItemAsFillAttributesToTargetSet(const SvxBrushItem& rBrush, SfxI
             rToSet.Put(XFillTransparenceItem(nGraphicTransparency));
         }
     }
+    else if (0xff != nTransparency)
+    {
+        // we have a color fill
+        const Color aColor(rBrush.GetColor().GetRGBColor());
+
+        rToSet.Put(XFillStyleItem(drawing::FillStyle_SOLID));
+        rToSet.Put(XFillColorItem(OUString(), aColor));
+
+        // #125189# nTransparency is in range [0..254], convert to [0..100] which is used in
+        // XFillTransparenceItem (caution with the range which is in an *item-specific* range)
+        rToSet.Put(XFillTransparenceItem((((sal_Int32)nTransparency * 100) + 127) / 254));
+    }
     else
     {
         // GPOS_NONE == rBrush.GetGraphicPos() && 0xff == rBrush.GetColor().GetTransparency(),
diff --git a/sw/qa/extras/odfimport/data/PageBackground.odt b/sw/qa/extras/odfimport/data/PageBackground.odt
index dbb1082..3733d5b 100644
Binary files a/sw/qa/extras/odfimport/data/PageBackground.odt and b/sw/qa/extras/odfimport/data/PageBackground.odt differ
diff --git a/sw/qa/extras/odfimport/odfimport.cxx b/sw/qa/extras/odfimport/odfimport.cxx
index a4de654..5db4370 100644
--- a/sw/qa/extras/odfimport/odfimport.cxx
+++ b/sw/qa/extras/odfimport/odfimport.cxx
@@ -315,6 +315,12 @@ DECLARE_ODFIMPORT_TEST(testPageBackground, "PageBackground.odt")
     CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_BITMAP, getProperty<drawing::FillStyle>(xPropertySet, "FillStyle"));
     CPPUNIT_ASSERT_EQUAL(OUString("Sky"), getProperty<OUString>(xPropertySet, "FillBitmapName"));
     CPPUNIT_ASSERT_EQUAL(drawing::BitmapMode_REPEAT, getProperty<drawing::BitmapMode>(xPropertySet, "FillBitmapMode"));
+
+    uno::Reference<beans::XPropertySet> xPropertySetOld(getStyles("PageStyles")->getByName("OldStandard"), uno::UNO_QUERY);
+    // The background image was overridden by color
+    CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_BITMAP, getProperty<drawing::FillStyle>(xPropertySetOld, "FillStyle"));
+    CPPUNIT_ASSERT_EQUAL(OUString("Sky"), getProperty<OUString>(xPropertySetOld, "FillBitmapName"));
+    CPPUNIT_ASSERT_EQUAL(drawing::BitmapMode_REPEAT, getProperty<drawing::BitmapMode>(xPropertySetOld, "FillBitmapMode"));
 }
 
 DECLARE_ODFIMPORT_TEST(testFdo56272, "fdo56272.odt")


More information about the Libreoffice-commits mailing list