diff -r f5050f1da672 -r 04becd199f91 javauis/lcdui_akn/lcdgr/inc/LcdImage.h --- /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 +#include + +#include + +#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