diff -r 61bc0f252b2b -r bac7acad7cb3 camerauis/cameraapp/generic/inc/CamBurstThumbnailGridSizer.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/camerauis/cameraapp/generic/inc/CamBurstThumbnailGridSizer.h Wed Sep 01 12:30:54 2010 +0100 @@ -0,0 +1,191 @@ +/* +* Copyright (c) 2007 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: Class used to for resizing burst mode thumbnails* +*/ + + + +#ifndef CAMBURSTTHUMBNAILGRIDSIZER_H +#define CAMBURSTTHUMBNAILGRIDSIZER_H + +// INCLUDES +#include // For CBitmapScaler + +// CONSTANTS + +// MACROS + +// DATA TYPES + +// FUNCTION PROTOTYPES + +// FORWARD DECLARATIONS +// Helper class +class CScaleTask : public CBase + { + // ======================================================= + public: + + static CScaleTask* NewL( const CFbsBitmap& aBitmap, + const TSize& aSize, + TInt32 aInfo ); + + virtual ~CScaleTask(); + + private: + + CScaleTask( const TSize& aSize, + TInt32 aInfo ); + + void ConstructL( const CFbsBitmap& aBitmap ); + + // ------------------------------------------------------- + public: + + inline const CFbsBitmap* Bitmap() const { return iSrc; }; + inline const TSize& Size() const { return iSize; }; + inline TInt32 Info() const { return iInfo; }; + + // ======================================================= + private: + + CFbsBitmap* iSrc; //< owned + TSize iSize; + TInt32 iInfo; + + // ======================================================= + }; + + +// Interface definition for notification of when an image has been resized. +class MBitmapScaler + { +public: + /** + * Mixin interface to be implemented by any object wishing to receive + * notification of scale complete events. + * @since 2.8 + * @param aErr KErrNone if successful, on error other Epoc codes possible + * @param aBitmap The resized bitmap (called class takes ownership) + * @param aInfo Optional parameter that will be passed back when scale completes + */ + virtual void BitmapScaleCompleteL( TInt aErr, CFbsBitmap* aBitmap, TInt32 aInfo ) = 0 ; + }; + +/** +* Utility class used by the Thumbnail Grid Model for resizing/scaling bitmaps +* +* @since 2.8 +*/ +class CCamThumbnailGridSizer : public CActive + { + public: // Constructors and destructor + + /** + * Two-phased constructor. + * @param aObserver The object to be notified of scaling completion + * @param aSize The default size of the bitmap to scale TO + * @return An instance of the sizer object + */ + static CCamThumbnailGridSizer* NewL( MBitmapScaler* aObserver, TSize& aSize ); + + /** + * Destructor. + */ + virtual ~CCamThumbnailGridSizer(); + + public: // New functions + + + /** + * Sets new size for the scaling + * @param aThumbSize The new size + */ + void SetSize( const TSize aThumbSize ); + + /** + * Scales from a source bitmap to a target bitmap, using the dimentions + * of the target bitmap to define the scale + * @since 2.8 + * @param aSrc Source bitmap, scaling from + */ + void StartScaleL( const CFbsBitmap& aSrc ); + + /** + * Scales from a source bitmap to a target bitmap, using the dimensions + * of the target bitmap to define the scale + * @since 2.8 + * @param aSrc Source bitmap, scaling from + * @param aSize The size of the bitmap to scale to + * @param aInfo Optional parameter that will be passed back when scale completes + */ + void StartScaleL( const CFbsBitmap& aSrc, TSize& aSize, TInt32 aInfo ); + + public: // Functions from base classes + + protected: // New functions + + protected: // Functions from base classes + + /** + * From CActive + */ + void DoCancel(); + + /** + * From CActive + */ + void RunL(); + + private: + + /** + * C++ default constructor. + * @param aObserver The object to be notified of scaling completion + * @param aSize The default size of the bitmap to scale TO + */ + CCamThumbnailGridSizer( MBitmapScaler* aObserver, TSize& aSize ); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL(); + + /** + * Allows specifying of specific sizing task to start + * @param aTask The task to begin + * @since 3.0 + */ + void StartScaleL( CScaleTask* aTask ); + + private: // Data + // Bitmap scaling object, actually does the scaling + CBitmapScaler* iScaler; + + // The object to be notified when scaling is complete. + MBitmapScaler* iObserver; + + // Temporary bitmap used while performing the scaling operation + CFbsBitmap* iTmpBitmap; + + // The size of the bitmap to scale to + TSize iThumbSize; + + // List of outstanding scaling tasks + RPointerArray iScaleTaskArray; + }; + +#endif // CAMBURSTTHUMBNAILGRIDSIZER_H + +// End of File