[Libreoffice-commits] core.git: include/vcl vcl/source
Chris Sherlock
chris.sherlock79 at gmail.com
Wed Apr 16 10:48:18 PDT 2014
include/vcl/outdev.hxx | 3 ++-
include/vcl/window.hxx | 2 ++
vcl/source/outdev/wallpaper.cxx | 35 +++++++----------------------------
vcl/source/window/window.cxx | 40 ++++++++++++++++++++++++++++++++++++++++
4 files changed, 51 insertions(+), 29 deletions(-)
New commits:
commit 948c4654f683e93b757f96e8859e9e91b45298a4
Author: Chris Sherlock <chris.sherlock79 at gmail.com>
Date: Thu Apr 17 03:45:23 2014 +1000
fdo#74702 Seperate ImplDrawGradientWallpaper and rename
I have made ImplDrawGradientWallpaper a virtual protected function as
Window needs to handle this differently to Printer and VirtualDevice
instances. I have also renamed it to DrawGradientWallpaper.
Change-Id: I529ed0a757cfcebb6fe06f3738219ec43272f657
diff --git a/include/vcl/outdev.hxx b/include/vcl/outdev.hxx
index 3034fb3..c428c81 100644
--- a/include/vcl/outdev.hxx
+++ b/include/vcl/outdev.hxx
@@ -768,7 +768,6 @@ public:
SAL_DLLPRIVATE void ImplDrawWallpaper( long nX, long nY, long nWidth, long nHeight, const Wallpaper& rWallpaper );
SAL_DLLPRIVATE void ImplDrawColorWallpaper( long nX, long nY, long nWidth, long nHeight, const Wallpaper& rWallpaper );
SAL_DLLPRIVATE void ImplDrawBitmapWallpaper( long nX, long nY, long nWidth, long nHeight, const Wallpaper& rWallpaper );
- SAL_DLLPRIVATE void ImplDrawGradientWallpaper( long nX, long nY, long nWidth, long nHeight, const Wallpaper& rWallpaper );
///@}
/** @name Bitmap functions
@@ -891,6 +890,8 @@ protected:
virtual void EmulateDrawTransparent( const PolyPolygon& rPolyPoly, sal_uInt16 nTransparencePercent );
void DrawInvisiblePolygon( const PolyPolygon& rPolyPoly );
+ virtual void DrawGradientWallpaper( long nX, long nY, long nWidth, long nHeight, const Wallpaper& rWallpaper );
+
private:
typedef void ( OutputDevice::* FontUpdateHandler_t )( bool );
diff --git a/include/vcl/window.hxx b/include/vcl/window.hxx
index 786cd0d..f71ae68 100644
--- a/include/vcl/window.hxx
+++ b/include/vcl/window.hxx
@@ -583,6 +583,8 @@ protected:
virtual void ClipToPaintRegion( Rectangle& rDstRect ) SAL_OVERRIDE;
virtual bool UsePolyPolygonForComplexGradient() SAL_OVERRIDE;
+ virtual void DrawGradientWallpaper( long nX, long nY, long nWidth, long nHeight, const Wallpaper& rWallpaper ) SAL_OVERRIDE;
+
public:
bool HasMirroredGraphics() const SAL_OVERRIDE;
diff --git a/vcl/source/outdev/wallpaper.cxx b/vcl/source/outdev/wallpaper.cxx
index c53c1ec..d59d9f4 100644
--- a/vcl/source/outdev/wallpaper.cxx
+++ b/vcl/source/outdev/wallpaper.cxx
@@ -113,7 +113,7 @@ void OutputDevice::ImplDrawBitmapWallpaper( long nX, long nY,
// background of bitmap?
if( bDrawGradientBackground )
- ImplDrawGradientWallpaper( nX, nY, nWidth, nHeight, rWallpaper );
+ DrawGradientWallpaper( nX, nY, nWidth, nHeight, rWallpaper );
else if( bDrawColorBackground && bTransparent )
{
ImplDrawColorWallpaper( nX, nY, nWidth, nHeight, rWallpaper );
@@ -301,43 +301,22 @@ void OutputDevice::ImplDrawBitmapWallpaper( long nX, long nY,
mpMetaFile = pOldMetaFile;
}
-void OutputDevice::ImplDrawGradientWallpaper( long nX, long nY,
- long nWidth, long nHeight,
- const Wallpaper& rWallpaper )
+void OutputDevice::DrawGradientWallpaper( long nX, long nY,
+ long nWidth, long nHeight,
+ const Wallpaper& rWallpaper )
{
Rectangle aBound;
GDIMetaFile* pOldMetaFile = mpMetaFile;
const bool bOldMap = mbMap;
- bool bNeedGradient = true;
- aBound = Rectangle( Point( nX, nY ), Size( nWidth, nHeight ) );
+ aBound = Rectangle( Point( nX, nY ), Size( nWidth, nHeight ) );
mpMetaFile = NULL;
EnableMapMode( false );
Push( PUSH_CLIPREGION );
IntersectClipRegion( Rectangle( Point( nX, nY ), Size( nWidth, nHeight ) ) );
- if( OUTDEV_WINDOW == meOutDevType && rWallpaper.GetStyle() == WALLPAPER_APPLICATIONGRADIENT )
- {
- Window *pWin = dynamic_cast< Window* >( this );
- if( pWin )
- {
- // limit gradient to useful size, so that it still can be noticed
- // in maximized windows
- long gradientWidth = pWin->GetDesktopRectPixel().GetSize().Width();
- if( gradientWidth > 1024 )
- gradientWidth = 1024;
- if( mnOutOffX+nWidth > gradientWidth )
- ImplDrawColorWallpaper( nX, nY, nWidth, nHeight, rWallpaper.GetGradient().GetEndColor() );
- if( mnOutOffX > gradientWidth )
- bNeedGradient = false;
- else
- aBound = Rectangle( Point( -mnOutOffX, nY ), Size( gradientWidth, nHeight ) );
- }
- }
-
- if( bNeedGradient )
- DrawGradient( aBound, rWallpaper.GetGradient() );
+ DrawGradient( aBound, rWallpaper.GetGradient() );
Pop();
EnableMapMode( bOldMap );
@@ -351,7 +330,7 @@ void OutputDevice::ImplDrawWallpaper( long nX, long nY,
if( rWallpaper.IsBitmap() )
ImplDrawBitmapWallpaper( nX, nY, nWidth, nHeight, rWallpaper );
else if( rWallpaper.IsGradient() )
- ImplDrawGradientWallpaper( nX, nY, nWidth, nHeight, rWallpaper );
+ DrawGradientWallpaper( nX, nY, nWidth, nHeight, rWallpaper );
else
ImplDrawColorWallpaper( nX, nY, nWidth, nHeight, rWallpaper );
}
diff --git a/vcl/source/window/window.cxx b/vcl/source/window/window.cxx
index 0f98332..0ef7a05 100644
--- a/vcl/source/window/window.cxx
+++ b/vcl/source/window/window.cxx
@@ -9378,4 +9378,44 @@ bool Window::UsePolyPolygonForComplexGradient()
return false;
}
+void Window::DrawGradientWallpaper( long nX, long nY,
+ long nWidth, long nHeight,
+ const Wallpaper& rWallpaper )
+{
+ Rectangle aBound;
+ GDIMetaFile* pOldMetaFile = mpMetaFile;
+ const bool bOldMap = mbMap;
+ bool bNeedGradient = true;
+
+ aBound = Rectangle( Point( nX, nY ), Size( nWidth, nHeight ) );
+
+ mpMetaFile = NULL;
+ EnableMapMode( false );
+ Push( PUSH_CLIPREGION );
+ IntersectClipRegion( Rectangle( Point( nX, nY ), Size( nWidth, nHeight ) ) );
+
+ if( rWallpaper.GetStyle() == WALLPAPER_APPLICATIONGRADIENT )
+ {
+ // limit gradient to useful size, so that it still can be noticed
+ // in maximized windows
+ long gradientWidth = GetDesktopRectPixel().GetSize().Width();
+ if( gradientWidth > 1024 )
+ gradientWidth = 1024;
+ if( mnOutOffX+nWidth > gradientWidth )
+ ImplDrawColorWallpaper( nX, nY, nWidth, nHeight, rWallpaper.GetGradient().GetEndColor() );
+ if( mnOutOffX > gradientWidth )
+ bNeedGradient = false;
+ else
+ aBound = Rectangle( Point( -mnOutOffX, nY ), Size( gradientWidth, nHeight ) );
+ }
+
+ if( bNeedGradient )
+ DrawGradient( aBound, rWallpaper.GetGradient() );
+
+ Pop();
+ EnableMapMode( bOldMap );
+ mpMetaFile = pOldMetaFile;
+}
+
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
More information about the Libreoffice-commits
mailing list