summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2015-04-14 16:25:42 +0200
committerCaolán McNamara <caolanm@redhat.com>2015-04-14 20:04:44 +0000
commitac8be3d609a219c62713d37d22f8fef0115809f1 (patch)
tree5f6847bb2f7d6e2063c2787f61a99619036b97c8
parent53cd20e94d7cd2a72bf82d0dc8ed71fc5140e938 (diff)
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@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r--svx/source/unodraw/unobrushitemhelper.cxx27
-rw-r--r--sw/qa/extras/odfimport/data/PageBackground.odtbin13175 -> 13301 bytes
-rw-r--r--sw/qa/extras/odfimport/odfimport.cxx6
3 files changed, 20 insertions, 13 deletions
diff --git a/svx/source/unodraw/unobrushitemhelper.cxx b/svx/source/unodraw/unobrushitemhelper.cxx
index 4a2ec1d3c0c8..d10aab649ee0 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 dbb1082d2b77..3733d5baed20 100644
--- a/sw/qa/extras/odfimport/data/PageBackground.odt
+++ b/sw/qa/extras/odfimport/data/PageBackground.odt
Binary files differ
diff --git a/sw/qa/extras/odfimport/odfimport.cxx b/sw/qa/extras/odfimport/odfimport.cxx
index a4de654390ae..5db4370ed701 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")