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 |
} |