diff -r f15ac8e65a02 -r 779871d1e4f4 vtuis/videotelui/inc/CVtUiZoomControl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vtuis/videotelui/inc/CVtUiZoomControl.h Wed Sep 01 12:29:12 2010 +0100 @@ -0,0 +1,268 @@ +/* +* Copyright (c) 2004, 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: Navi pane zoom indicator control for +* Video Telephone application. +* +*/ + + + +#ifndef CVTUIZOOMCONTROL_H +#define CVTUIZOOMCONTROL_H + +// INCLUDES +#include +#include +#include "CVtUiBitmapManager.h" + +// CLASS DECLARATION + +/** +* Navi pane zoom indicator control for Video Telephone application. +* +* @since Series 60 2.6 +*/ +class CVtUiZoomControl + : public CCoeControl + { + public: // Constructors and destructor + + /** + * C++ constructor. + * @param aBitmapManager bitmap manager. + */ + CVtUiZoomControl( CVtUiBitmapManager& aBitmapManager ); + + /** + * Symbian constructor. + */ + void ConstructL(); + + /** + * C++ destructor. + */ + ~CVtUiZoomControl(); + + public: // New functions + + /** + * Sets zoom parameters. + * @param aStepCount amount of steps, 0 if zooming disabled. + * @param aCurrentStep current step, 0 .. aStepCount. + */ + void SetZoomParams( + const TInt aStepCount, + const TInt aCurrentStep ); + + /** + * Commits changes. + */ + void CommitL(); + + /** + * Returns ETrue if zooming is enabled. + * @return ETrue if enabled. + */ + TBool IsZoomEnabled() const; + + /** + * Gets zoom parameters. + * @param aStepCount amount of steps, 0 if zooming disabled. + * @param aCurrentStep current step, 0 .. aStepCount. + */ + void GetZoomParams( + TInt& aStepCount, + TInt& aCurrentStep ) const; + + /** + * Updates zoom. This method should be called periodically during zooming. + * @return ETrue if zoom step was updated. + */ + TBool UpdateZoomL(); + + /** + * Stops zoom. + */ + void StopZoom(); + + public: // Functions from base classes + + /** + * From CCoeControl, handles key events. + * @param aKeyEvent key event. + * @param aType type of event. + * @return response indicating if key was consumed. + */ + virtual TKeyResponse OfferKeyEventL( + const TKeyEvent& aKeyEvent, + TEventCode aType ); + + /** + * From CCoeControl, handles resource change. + * @param aType type of change. + */ + virtual void HandleResourceChange( + TInt aType ); + + protected: // Functions from base classes + + /** + * From CCoeControl, draws the control. + * @param aRect area to be drawn. + */ + virtual void Draw( const TRect& aRect ) const; + + /** + * From CCoeControl, handles size changes. + */ + virtual void SizeChanged(); + + /** + * From CCoeControl, handles position changes. + */ + virtual void PositionChanged(); + + private: + + /** + * Calculates amount of steps to be shown. + * @param aFullSteps amount of full steps. + * @param aPartialStep partial steps, 0 .. 255. + */ + void DetermineSteps( + TInt& aFullSteps, + TInt& aPartialStep ) const; + + /** + * Generates zoom mask bitmap. + * @param aAreaBitmap maximum bitmap, ownership not transferred. + * @param aPartial partial amount. + * @param aRow area row number. + * @param aRowSize size of the row. + * @return ETrue if successful, EFalse otherwise. + */ + TBool GenerateZoomMaskBitmap( + CFbsBitmap* aMaskBitmap, + const TInt aPartial, + const TInt aRow, + const TSize& aRowSize ) const; + + /** + * Generates zoom mask bitmap. + * @param aAreaBitmap maximum bitmap, ownership not transferred. + * @param aPartial partial amount. + * @param aRow area row number. + * @param aRowSize size of the row. + */ + void DoGenerateZoomMaskBitmap( + CFbsBitmap* aMaskBitmap, + const TInt aPartial, + const TInt aRow, + const TSize& aRowSize ) const; + + /** + * Creates bitmaps. + * @return error code. + */ + TInt CreateBitmaps(); + + /** + * Creates bitmaps. + */ + void CreateBitmapsL(); + + /** + * Returns size of the temporary bitmaps. + * @return size of the temporary bitmaps. + */ + TSize SizeOfBitmap() const; + + /** + * Gets position and source rect. + * @param aPosition it will contain position. + * @param aSourceRect it will contain source rectangle. + * @param aZoomStep zoom step. + */ + void GetPositionAndRect( + TPoint& aPosition, + TRect& aSourceRect, + const TInt aZoomStep ) const; + + private: + + // Inner class. + class CBitmap; + + // Reference to bitmap manager. + CVtUiBitmapManager& iBitmapManager; + + // Zoom direction bitmap identifier. + TVtUiBitmapPoolId iZoomDirId; + + // Zoom area bitmap identifier. + TVtUiBitmapPoolId iZoomAreaId; + + // Zoom min bitmap identifier. + TVtUiBitmapPoolId iZoomMinId; + + // Zoom max bitmap identifier. + TVtUiBitmapPoolId iZoomMaxId; + + // Zoom pane rectangle. + TRect iZoomPaneRect; + + // Zoom direction layout. + TAknLayoutRect iZoomDirLayout; + + // Zoom area layout. + TAknLayoutRect iZoomAreaLayout; + + // Current step, 0 .. iMaxZoomStep. + TInt iCurrentZoomStep; + + // Maximum step. + TInt iMaxZoomStep; + + // Used partial value used in iZoomMaskBitmap + // generation. + mutable TInt iZoomMaskPartial; + + // Used row value used in iZoomMaskBitmap + // generation. + mutable TInt iZoomMaskRow; + + // Owned partial soft mask. + CBitmap* iZoomPartialMask; + + // Owned partial shade (soft mask). + CBitmap* iZoomPartialShade; + + // Owned partial shade mask. + CBitmap* iZoomPartialShadeMask; + + // Zoom direction +1 or -1. 0 if no + // zoom ongoing. + TInt iZoomDirection; + + // Zoom step at the start of zooming. + TInt iZoomStepStart; + + // Start time of zooming. + TTime iZoomStartTime; + + }; + +#endif // CVTUIZOOMCONTROL_H + +// End of File