javauis/lcdui_akn/lcdgr/inc/LcdImage.h
branchRCL_3
changeset 14 04becd199f91
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/lcdui_akn/lcdgr/inc/LcdImage.h	Tue Apr 27 16:30:29 2010 +0300
@@ -0,0 +1,126 @@
+/*
+* 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 LCDIMAGE_H
+#define LCDIMAGE_H
+
+#include <e32base.h>
+#include <fbs.h>
+
+#include <lcdgdrv.h>
+
+#include "fbslcdgraphics.h" // for TDrawRegion.
+
+class TAcceleratedBitmapInfo;
+class TBitmapLockCount;
+class CLcdFbsImage;
+
+/**
+ * MIDP LCDUI Image peer
+ */
+NONSHARABLE_CLASS(CLcdImage) : public CBase
+{
+public:
+    /**
+     *
+     */
+    CLcdImage(CLcdGraphicsDriver& aDriver, TBool aMutable);
+
+    /**
+     *
+     */
+    ~CLcdImage();
+
+    /**
+     * 2nd phase constructor for blank (white) images.
+     */
+    void ConstructL(const TSize& aSize, const TImageType& aImageType);
+
+    /**
+     * 2nd phase constructor from bitmaps.
+     *
+     * Where possible (bitmaps match aImageType ) makes a shallow copy (Duplicate) of aColorBitmap
+     * and optional aAlphaBitmap, otherwise makes a deep copy converting to aImageType.
+     */
+    void ConstructL(CFbsBitmap* aColorBitmap, CFbsBitmap* aAlphaBitmap, const TImageType& aImageType);
+
+    TSize Size() const;
+    TTransparency Transparency() const;
+
+    /**
+     *
+     */
+    void Lock(TBitmapLockCount& aLockCount, TAcceleratedBitmapInfo& aColorBitmap, TAcceleratedBitmapInfo& aAlphaBitmap) const;
+
+    /**
+     *
+     */
+    void Unlock(TBitmapLockCount& aLockCount) const;
+
+    /**
+     *
+     */
+    void SetPixels(const TRect& aRect, const TUint32* aARGBArray, TInt aLength, TInt aOffset, TInt aLinePitch, const TSize& aSize, TBool aProcessAlpha);
+
+    /**
+     *
+     */
+    void GetPixels(const TRect& aRect, TUint32* aARGBArray, TInt aLength, TInt aOffset, TInt aLinePitch, const TSize& aSize);
+
+    /**
+     * Copy a region of pixels from aSourceImage applying a transformation.
+     */
+    void CopyRegion(CLcdImage& aSourceImage, const TDrawRegion&, const TRect& aClipRect);
+
+    /**
+    Detect pixel level collision between two Images.
+    @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 aImage2      image2
+    @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.
+    */
+    TBool DetectCollision(const TRect& aRect1, TInt aTransform1, const TPoint& aPoint1,
+                          const CLcdImage& aImage2,
+                          const TRect& aRect2, TInt aTransform2, const TPoint& aPoint2);
+
+    //
+    // Consider drawing surface accessor instead.
+    //
+    TBool Mutable();
+
+    /**
+     * Change image type - may be used to allow mutable images to contain tranparent pixels.
+     */
+    TInt SetImageType(const TImageType& aType);
+
+    //
+    // Temporary.
+    //
+    CLcdFbsImage* FbsImage();
+
+private:
+    CLcdGraphicsDriver& iDriver;
+    CLcdFbsImage*       iFbsImage;
+    TTransparency       iTransparency;
+    TBool               iMutable;
+};
+
+#endif // LCDIMAGE_H