diff -r f5050f1da672 -r 04becd199f91 javauis/lcdui_akn/lcdgr/inc/fbslcdgraphics.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javauis/lcdui_akn/lcdgr/inc/fbslcdgraphics.h Tue Apr 27 16:30:29 2010 +0300 @@ -0,0 +1,150 @@ +/* +* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +#ifndef FBSLCDGRAPHICS_H +#define FBSLCDGRAPHICS_H + +#include +#include +#include + +/** + * Structure containing sufficient information to construct + * a transform for the DrawRegion primitive. + */ +struct TDrawRegion +{ + TRect iSrcRect; + TPoint iDstPoint; + TInt iAnchor; + TInt iTransform; +}; + +/** + * Utility function to compute the destination rectangle given a source rectangle, an identifier for the + * anchor point to translate to the destination point and a transform to apply to the source rectangle. + */ +TRect CalcDstRect(const TPoint& aDstPoint, const TSize& aSrcSize, TTransformType aSrcTransform, TAnchor aSrcAnchor); + +// +// FBSERV bitmap support, may be withdrawn later. +// +#define _LCDGDRV_FBSBITMAP_SUPPORT_ + +#ifdef _LCDGDRV_FBSBITMAP_SUPPORT_ + +class CFbsBitmap; + +NONSHARABLE_CLASS(TFbsLcdGraphics) +{ +public: + + /** + * Copy region of image represented by pair + * onto destination image represented by pair. + * The region to be drawn, the destination position and the transformation to + * apply are supplied by aDrawRegion. + */ + static TInt CopyRegion + ( + CLcdGraphicsDriver& aDriver, + CFbsBitmap* aDstColorBitmap, + CFbsBitmap* aDstAlphaBitmap, + TTransparency aDstTransparency, + CFbsBitmap* aSrcColorBitmap, + CFbsBitmap* aSrcAlphaBitmap, + TTransparency aSrcTransparency, + const TDrawRegion& aRegion, + const TRect& aClipRect + ); + + /** + * Copies ARGB8888 pixels into image represented by + */ + static TInt SetPixels + ( + CLcdGraphicsDriver& aDriver, + CFbsBitmap* aDstColorBitmap, + CFbsBitmap* aDstAlphaBitmap, + TTransparency aDstTransparency, + const TRect& aDstRect, + const TUint32* aSrcARGB32Pixels, + TInt aSrcLength, + TInt aSrcOffset, + TInt aSrcLinePitch, + const TSize& aSrcSize, + TBool aAlpha + ); + + /** + * Copies pixels from image represented by + * into an array in ARGB8888 format. + */ + static TInt GetPixels + ( + CLcdGraphicsDriver& aDriver, + CFbsBitmap* aSrcColorBitmap, + CFbsBitmap* aSrcAlphaBitmap, + TTransparency aSrcTransparency, + const TRect& aSrcRect, + TUint32* aARGB32Pixels, + TInt aLength, + TInt aOffset, + TInt aLinePitch, + const TSize& aSize + ); + + /** + Check for pixel level collision in area of overlap in two images. + Locks bitmap. + @param aMask1 image1 mask + @param aTransparency1 image1 transparency type + @param aSize1 image1 size + @param aRect1 image1 collison rect in image1 co-ordinates + @param aTransform1 image1 transform + @param aPoint1 position of image1 collison rect in painter's co-ordinates. + + @param aMask2 image2 mask + @param aTransparency1 image2 transparency type + @param aSize2 image2 size + @param aRect2 image2 collison rect in image2 co-ordinates + @param aTransform2 image2 transform + @param aPoint2 position of image2 collison rect in painter's co-ordinates. + */ + static TBool DetectCollision + ( + CLcdGraphicsDriver& aDriver, + + CFbsBitmap* aMask1, + TTransparency aTransparency1, + const TSize& aSize1, + const TRect& aRect1, + TInt aTransform1, + const TPoint& aPoint1, + + CFbsBitmap* aMask2, + TTransparency aTransparency2, + const TSize& aSize2, + const TRect& aRect2, + TInt aTransform2, + const TPoint& aPoint2 + ); +}; + +#endif + +#endif // FBSLCDGRAPHICS_H