On Sat, Apr 30, 2011 at 06:58:29PM +0200, Sébastien Le Ray wrote:
> if(aShadowColor != SwViewOption::GetShadowColor() ) {
> aShadowColor = SwViewOption::GetShadowColor();
> - AlphaMask aMask( SW_RES( BMP_PAGE_BOTTOM_RIGHT_SHADOW_MASK ) );
> - Bitmap aFilledSquare( Size( mnShadowPxWidth, mnShadowPxWidth ), 24 );
> - aFilledSquare.Erase( aShadowColor );
>
> + AlphaMask aMask( shadowMask.getBottomRight().GetBitmap() );
> + Bitmap aFilledSquare( aMask.GetSizePixel(), 24 );
> + aFilledSquare.Erase( aShadowColor );
> ...
This looks like a good candidate for a function... Like
void lcl_createShadow(Color const& rColor, BitmapEx const& rMask,
BitmapEx& rShadow)
{
AlphaMask aMask( rMask.GetBitmap() );
Bitmap aFilledSquare( aMask.GetSizePixel(), 24 );
aFilledSquare.Erase( rColor );
rShadow = aFilledSquare;
}
But this is really just "nice to have", not a blocker :)
> if ( bPaintRightShadow )
> {
> - SwPageFrm::GetRightShadowRect( _rPageRect, _pViewShell, aPaintRect,
> bRightSidebar );
> + pOut->DrawBitmapEx( pOut->PixelToLogic( Point( aPaintRect.Right() +
> 1, aPagePxRect.Bottom() + 1 - (aPageBottomRightShadow.GetSizePixel().Height()
> - mnShadowPxWidth) ) ),
> + aPageBottomRightShadow );
> + pOut->DrawBitmapEx( pOut->PixelToLogic( Point( aPaintRect.Right() +
> 1, aPagePxRect.Top() - mnShadowPxWidth ) ),
> + aPageTopRightShadow );
> BitmapEx aPageRightShadow = aPageRightShadowBase;
> - aPageRightShadow.Scale( 1, aPaintRect.Height() );
> - pOut->DrawBitmapEx( pOut->PixelToLogic( aPaintRect.Pos() ),
> aPageRightShadow );
> - pOut->DrawBitmapEx( pOut->PixelToLogic( Point( aPaintRect.Left(),
> aPaintRect.Top() - mnShadowPxWidth ) ), aPageTopRightShadow );
> - pOut->DrawBitmapEx( pOut->PixelToLogic( aPaintRect.BottomLeft() ),
> aPageBottomRightShadow );
> + aPageRightShadow.Scale( 1, aPagePxRect.Height() - 2 *
> (mnShadowPxWidth - 1) );
> + pOut->DrawBitmapEx( pOut->PixelToLogic( Point( aPagePxRect.Right() +
> 1, aPagePxRect.Top() + mnShadowPxWidth - 1) ), aPageRightShadow );
Do I count wrong or is the right shadow painted over the bottom right
corner shadow? And the same for left shadow lower.
> @@ -5326,20 +5326,19 @@ const sal_Int8 SwPageFrm::mnShadowPxWidth = 9;
> aPageTopRightShadow );
> BitmapEx aPageRightShadow = aPageRightShadowBase;
> aPageRightShadow.Scale( 1, aPagePxRect.Height() - 2 *
> (mnShadowPxWidth - 1) );
> - pOut->DrawBitmapEx( pOut->PixelToLogic( Point( aPagePxRect.Right() +
> 1, aPagePxRect.Top() + mnShadowPxWidth - 1) ), aPageRightShadow );
> + pOut->DrawBitmapEx( pOut->PixelToLogic( Point( aPaintRect.Right() +
> mnShadowPxWidth, aPagePxRect.Top() + mnShadowPxWidth - 1) ), aPageRightShadow
> );
Is this really correct? AFAICS it moves the shadow too much to the
right... And if it is correct, why the corner shadows do not need to be
adjusted too?
D.
_______________________________________________
LibreOffice mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/libreoffice