Author: alg
Date: Wed Mar 20 12:05:25 2013
New Revision: 1458779
URL: http://svn.apache.org/r1458779
Log:
i121788 corrected handling of TransparenceGradients when start/end values are
0% or 100%
Modified:
openoffice/branches/sidebar/main/svx/source/sdr/primitive2d/sdrattributecreator.cxx
Modified:
openoffice/branches/sidebar/main/svx/source/sdr/primitive2d/sdrattributecreator.cxx
URL:
http://svn.apache.org/viewvc/openoffice/branches/sidebar/main/svx/source/sdr/primitive2d/sdrattributecreator.cxx?rev=1458779&r1=1458778&r2=1458779&view=diff
==============================================================================
---
openoffice/branches/sidebar/main/svx/source/sdr/primitive2d/sdrattributecreator.cxx
(original)
+++
openoffice/branches/sidebar/main/svx/source/sdr/primitive2d/sdrattributecreator.cxx
Wed Mar 20 12:05:25 2013
@@ -399,6 +399,26 @@ namespace drawinglayer
if(100 != nTransparence)
{
+ // need to check XFillFloatTransparence, object fill may
still be completely transparent
+ const SfxPoolItem* pGradientItem;
+
+ if(SFX_ITEM_SET ==
rSet.GetItemState(XATTR_FILLFLOATTRANSPARENCE, sal_True, &pGradientItem)
+ &&
((XFillFloatTransparenceItem*)pGradientItem)->IsEnabled())
+ {
+ const XGradient& rGradient =
((XFillFloatTransparenceItem*)pGradientItem)->GetGradientValue();
+ const sal_uInt8
nStartLuminance(rGradient.GetStartColor().GetLuminance());
+ const sal_uInt8
nEndLuminance(rGradient.GetEndColor().GetLuminance());
+ const bool bCompletelyTransparent(0xff ==
nStartLuminance && 0xff == nEndLuminance);
+
+ if(bCompletelyTransparent)
+ {
+ nTransparence = 100;
+ }
+ }
+ }
+
+ if(100 != nTransparence)
+ {
const Color aColor(((const
XFillColorItem&)(rSet.Get(XATTR_FILLCOLOR))).GetColorValue());
attribute::FillGradientAttribute
aGradient;
attribute::FillHatchAttribute aHatch;
@@ -569,8 +589,13 @@ namespace drawinglayer
const sal_uInt8
nStartLuminance(rGradient.GetStartColor().GetLuminance());
const sal_uInt8
nEndLuminance(rGradient.GetEndColor().GetLuminance());
const bool bCompletelyTransparent(0xff ==
nStartLuminance && 0xff == nEndLuminance);
+ const bool bNotTransparent(0x00 ==
nStartLuminance && 0x00 == nEndLuminance);
- if(!bCompletelyTransparent)
+ // create nothing when completely transparent: This case is
already checked for the
+ // normal fill attributes, XFILL_NONE will be used.
+ // create nothing when not transparent: use normal fill, no
need t create a FillGradientAttribute.
+ // Both cases are optimizations, always creating
FillGradientAttribute will work, too
+ if(!bNotTransparent && !bCompletelyTransparent)
{
const double fStartLum(nStartLuminance
/ 255.0);
const double fEndLum(nEndLuminance /
255.0);