javauis/lcdui_akn/lcdgr/inc/fbslcdgraphics.h
branchRCL_3
changeset 19 04becd199f91
--- /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 <e32std.h>
+#include <gdi.h>
+#include <lcdgdrv.h>
+
+/**
+ * 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 <aSrcColorBitmap, aSrcAlphaBitmap> pair
+     * onto destination image represented by <aDstColorBitmap, aDstAlphaBitmap> 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 <aDstColorBitmap, aDstAlphaBitmap>
+     */
+    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 <aDstColorBitmap, aDstAlphaBitmap>
+     * 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