View | Details | Raw Unified | Return to issue 7629
Collapse All | Expand All

(-)source/gdi/outdev4.cxx (-11 / +19 lines)
Lines 1006-1036 void OutputDevice::DrawGradient( const P Link Here
1006
			if( !aDstRect.IsEmpty() )
1021
			if( !aDstRect.IsEmpty() )
1007
			{
1022
			{
1008
				VirtualDevice	aVDev;
1023
				VirtualDevice	aVDev;
1024
				VirtualDevice	aVDev2;
1009
				const Size		aDstSize( aDstRect.GetSize() );
1025
				const Size		aDstSize( aDstRect.GetSize() );
1010
1026
1011
				if( aVDev.SetOutputSizePixel( aDstSize) )
1027
				if( aVDev.SetOutputSizePixel( aDstSize ) &&
1028
				    aVDev2.SetOutputSizePixel( aDstSize ) )
1012
				{
1029
				{
1013
					MapMode			aVDevMap;
1030
					MapMode			aVDevMap;
1014
					const RasterOp	eOldROP = GetRasterOp();
1031
					const RasterOp	eOldROP = GetRasterOp();
1015
					const BOOL		bOldMap = mbMap;
1032
					const BOOL		bOldMap = mbMap;
1016
1033
1017
					mbMap = FALSE;
1034
					mbMap = FALSE;
1035
1036
					aVDevMap.SetOrigin( Point( -aDstRect.Left(), -aDstRect.Top() ) );
1037
					aVDev.SetMapMode( aVDevMap );
1038
					aVDev.DrawGradient( aBoundRect, aGradient );
1018
1039
1019
					aVDev.DrawOutDev( Point(), aDstSize, aDstRect.TopLeft(), aDstSize, *this );
1040
					aVDev2.SetRasterOp( ROP_OVERPAINT );
1020
					DrawGradient( aBoundRect, aGradient );
1041
					aVDev2.DrawOutDev( Point(), aDstSize, aDstRect.TopLeft(), aDstSize, aVDev );
1042
1021
					aVDev.SetRasterOp( ROP_XOR );
1043
					aVDev.SetRasterOp( ROP_XOR );
1022
					aVDev.DrawOutDev( Point(), aDstSize, aDstRect.TopLeft(), aDstSize, *this );
1044
					aVDev.DrawOutDev( aDstRect.TopLeft(), aDstSize, aDstRect.TopLeft(), aDstSize, *this );
1045
1023
					aVDev.SetFillColor( COL_BLACK );
1046
					aVDev.SetFillColor( COL_BLACK );
1024
					aVDev.SetRasterOp( ROP_0 );
1047
					aVDev.SetRasterOp( ROP_0 );
1025
					aVDevMap.SetOrigin( Point( -aDstRect.Left(), -aDstRect.Top() ) );
1026
					aVDev.SetMapMode( aVDevMap );
1027
					aVDev.DrawPolyPolygon( aPolyPoly );
1048
					aVDev.DrawPolyPolygon( aPolyPoly );
1028
					aVDevMap.SetOrigin( Point() );
1029
					aVDev.SetMapMode( aVDevMap );
1030
					SetRasterOp( ROP_XOR );
1031
					DrawOutDev( aDstRect.TopLeft(), aDstSize, Point(), aDstSize, aVDev );
1032
					SetRasterOp( eOldROP );
1033
1049
1050
					aVDev2.SetRasterOp( ROP_XOR );
1051
					aVDev2.DrawOutDev( Point(), aDstSize, aDstRect.TopLeft(), aDstSize, aVDev );
1052
1053
					SetRasterOp( ROP_OVERPAINT );
1054
					DrawOutDev( aDstRect.TopLeft(), aDstSize, Point(), aDstSize, aVDev2 );
1055
					
1056
					SetRasterOp( eOldROP );
1034
					mbMap = bOldMap;
1057
					mbMap = bOldMap;
1035
				}
1058
				}
1036
			}
1059
			}

Return to issue 7629