summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorSamuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>2015-10-14 09:17:35 +0200
committerSamuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>2015-10-14 09:17:35 +0200
commit629baf05f63efcb883c67e0d29a4fab704de8845 (patch)
tree099d4b2fa5fc47a0df67eb30557140b93c48c202 /vcl
parentc8b31f089d7c2f172567968ee9a5299c6aa55127 (diff)
Revert "Unused code removal DrawGradientWallpaper"
Seems to be used, since IsGradient() actually can be true. This reverts commit fe4412c8850bd1212dce786510dd61ddd6c43b36.
Diffstat (limited to 'vcl')
-rw-r--r--vcl/source/outdev/wallpaper.cxx57
1 files changed, 47 insertions, 10 deletions
diff --git a/vcl/source/outdev/wallpaper.cxx b/vcl/source/outdev/wallpaper.cxx
index 1819f936d9c8..175f0d199eda 100644
--- a/vcl/source/outdev/wallpaper.cxx
+++ b/vcl/source/outdev/wallpaper.cxx
@@ -60,6 +60,8 @@ void OutputDevice::DrawWallpaper( long nX, long nY,
if( rWallpaper.IsBitmap() )
DrawBitmapWallpaper( nX, nY, nWidth, nHeight, rWallpaper );
+ else if( rWallpaper.IsGradient() )
+ DrawGradientWallpaper( nX, nY, nWidth, nHeight, rWallpaper );
else
DrawColorWallpaper( nX, nY, nWidth, nHeight, rWallpaper );
}
@@ -117,6 +119,7 @@ void OutputDevice::DrawBitmapWallpaper( long nX, long nY,
const WallpaperStyle eStyle = rWallpaper.GetStyle();
const bool bOldMap = mbMap;
bool bDrawn = false;
+ bool bDrawGradientBackground = false;
bool bDrawColorBackground = false;
if( pCached )
@@ -131,24 +134,34 @@ void OutputDevice::DrawBitmapWallpaper( long nX, long nY,
// draw background
if( bTransparent )
{
- if( !pCached && !rWallpaper.GetColor().GetTransparency() )
+ if( rWallpaper.IsGradient() )
+ bDrawGradientBackground = true;
+ else
{
- ScopedVclPtrInstance< VirtualDevice > aVDev( *this );
- aVDev->SetBackground( rWallpaper.GetColor() );
- aVDev->SetOutputSizePixel( Size( nBmpWidth, nBmpHeight ) );
- aVDev->DrawBitmapEx( Point(), aBmpEx );
- aBmpEx = aVDev->GetBitmap( Point(), aVDev->GetOutputSizePixel() );
- }
+ if( !pCached && !rWallpaper.GetColor().GetTransparency() )
+ {
+ ScopedVclPtrInstance< VirtualDevice > aVDev( *this );
+ aVDev->SetBackground( rWallpaper.GetColor() );
+ aVDev->SetOutputSizePixel( Size( nBmpWidth, nBmpHeight ) );
+ aVDev->DrawBitmapEx( Point(), aBmpEx );
+ aBmpEx = aVDev->GetBitmap( Point(), aVDev->GetOutputSizePixel() );
+ }
- bDrawColorBackground = true;
+ bDrawColorBackground = true;
+ }
}
else if( eStyle != WallpaperStyle::Tile && eStyle != WallpaperStyle::Scale )
{
- bDrawColorBackground = true;
+ if( rWallpaper.IsGradient() )
+ bDrawGradientBackground = true;
+ else
+ bDrawColorBackground = true;
}
// background of bitmap?
- if( bDrawColorBackground && bTransparent )
+ if( bDrawGradientBackground )
+ DrawGradientWallpaper( nX, nY, nWidth, nHeight, rWallpaper );
+ else if( bDrawColorBackground && bTransparent )
{
DrawColorWallpaper( nX, nY, nWidth, nHeight, rWallpaper );
bDrawColorBackground = false;
@@ -330,4 +343,28 @@ void OutputDevice::DrawBitmapWallpaper( long nX, long nY,
mpMetaFile = pOldMetaFile;
}
+void OutputDevice::DrawGradientWallpaper( long nX, long nY,
+ long nWidth, long nHeight,
+ const Wallpaper& rWallpaper )
+{
+ assert(!is_double_buffered_window());
+
+ Rectangle aBound;
+ GDIMetaFile* pOldMetaFile = mpMetaFile;
+ const bool bOldMap = mbMap;
+
+ aBound = Rectangle( Point( nX, nY ), Size( nWidth, nHeight ) );
+
+ mpMetaFile = NULL;
+ EnableMapMode( false );
+ Push( PushFlags::CLIPREGION );
+ IntersectClipRegion( Rectangle( Point( nX, nY ), Size( nWidth, nHeight ) ) );
+
+ DrawGradient( aBound, rWallpaper.GetGradient() );
+
+ Pop();
+ EnableMapMode( bOldMap );
+ mpMetaFile = pOldMetaFile;
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */