diff -r 000000000000 -r 15bf7259bb7c uiacceltk/hitchcock/ServerCore/Inc/alfwindow.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uiacceltk/hitchcock/ServerCore/Inc/alfwindow.h Tue Feb 02 07:56:43 2010 +0200 @@ -0,0 +1,370 @@ +/* +* Copyright (c) 2008 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: ?Description +* +*/ + + + +#ifndef __ALFWINDOW_H__ +#define __ALFWINDOW_H__ + +#include +#include +#include + +class CAlfWindowManager; +class TAlfWServInfo; +class CAlfWindowBuffer; +class CAlfWindowFxPlugin; +class TAlfWindowAttributes; +class TAlfWindowCommandBufferAttributes; + +class TAlfWindowData; + +/** + * CAlfWindow + * + * The class is used for abstracting different pixel data presentations + * + * @lib alfappservercore.dll + * @since S60 5.0 + */ +NONSHARABLE_CLASS(CAlfWindow): public CBase + { +public: + + static CAlfWindow* NewL(TUint aId, CAlfWindowManager& aOwner, const TSize& aSizeInPixels); + + virtual ~CAlfWindow(); + +public: + // getters + + /** + * WsInfo + * + * @since S60 5.0 + * @return Specific wserv window data. For reference only. + */ + IMPORT_C const TAlfWServInfo& WsInfo() const; + + /** + * Position + * + * @since S60 5.0 + * @return Position of the window + */ + IMPORT_C TPoint Position() const; + + /** + * Size + * + * @since S60 5.0 + * @return The size of the window + */ + IMPORT_C TSize Size() const; + + /** + * Opacity + * + * @since S60 5.0 + * @return The opacity of the window + */ + IMPORT_C TReal32 Opacity() const __SOFTFP; + + /** + * Rotation + * + * @since S60 5.0 + * @return The rotation of the window + */ + IMPORT_C TReal32 Rotation() const __SOFTFP; + + /** + * Identifier + * + * @since S60 5.0 + * @return The identifier of the window + */ + IMPORT_C TUint Identifier() const; + + /** + * IsActive + * + * @since S60 5.0 + * @return ETrue, if window is active. Otherwise EFalse. + */ + IMPORT_C TBool IsActive() const; + + /** + * SurfaceExtent + * + * @since S60 5.0 + * @return The extend of the composition surface + */ + IMPORT_C TRect SurfaceExtent() const; + + /** + * Size + * + * @since S60 5.0 + * @return The index of the window. 0 means the topmost window. + */ + IMPORT_C TUint Index() const; + + /** + * InBuffer + * This method returns the original buffer from wserv. Plugin must not modify the contents of it + * Contents of this buffer is updated before callback CAlfWindowPlugin::WindowUpdated() is called. + * + * Ownership of a buffer remains in AlfWindowManager + * + * @since S60 5.0 + * @return CAlfWindowBuffer + */ + IMPORT_C CAlfWindowBuffer* InBuffer(); + + /** + * OutBufferL + * This method returns new buffer for transition plugin to modify content that will finally display + * on screen. There can't be more than one active outbuffers for a window at a time. Content of an + * input buffer from wserv will be copied only upon creation of back buffer. After initialization, + * Fx plugin has solely responsibility to update complete frame. + * + * Ownership of a buffer remains in AlfWindowManager + * + * @since S60 5.0 + * @param aCopyInBufContents defines whether current frame should be copied to buffer + * @return CAlfWindowBuffer + */ + IMPORT_C CAlfWindowBuffer* OutBufferL(TBool aCopyContents = EFalse); + + // Setters + /** + * Size + * + * TODO:CHECK COMMENT VALIDITY + * Note, that SetACtive and SetOpacity(0) are different things. When window is not active, it is not + * processed at all in the refresh loop unlike a transparent window would be. + * + * @since S60 5.0 + * @return The size of the window + */ + IMPORT_C void SetActive(TBool aVisible); + + + /** + * SetSurfaceExtent + * + * Set the extent of the related composition surface + * To remove extent, give aRect a value (0,0,0,0). + * + * @since S60 5.0 + * + * @param aRect New extent + */ + IMPORT_C void SetSurfaceExtent(const TRect& aRect); + + + /** + * SetLayerUsesAplhaFlag + * + * Set compostion layer's EUsesAlpha flag state + * Window that has background surface set, has layer + * in composition scene + * + * @since S60 5.0 + * + * @param aEnabled True/False + */ + IMPORT_C void SetLayerUsesAplhaFlag(TBool aEnabled); + + /** + * ContentReady + * + * @since S60 5.0 + * @param aOutBuffer + * @param aUpdatedArea + */ + IMPORT_C void ContentReady(const TRegion& aUpdatedArea); + + /** + * Move + * + * Sets to order of the windows. 0 equals the topmost window. + * + * @since S60 5.0 + * @param aIndex New index of the window + */ + IMPORT_C void Move(TUint aIndex); + + /** + * EnableIndexChangedNotifications + * + * @since S60 5.0 + * @param aEnable + */ + IMPORT_C void EnableIndexChangedNotifications(TBool aEnable); + + /** + * SetPos + * + * Set the position of the window + * + * @since S60 5.0 + * + * @param aPos New position + * @param aDuration Duration to new position + */ + IMPORT_C void SetPos(TPoint aPos, TUint aDuration = 0); + + /** + * SetSize + * + * @since S60 5.0 + * @param aSize New size + * @param aDuration Duration to new size + */ + IMPORT_C void SetSize(TSize aSize, TUint aDuration = 0); + + /** + * SetRotation + * + * @since S60 5.0 + * @param aAngle New rotation angle + * @param Duration to new rotation angle + */ + IMPORT_C void SetRotation(TReal32 aAngle, TUint aDuration = 0) __SOFTFP; + /** + * Size + * + * @since S60 5.0 + * @param aOpacity New opacity value + * @param Duration to new opacity value + */ + IMPORT_C void SetOpacity(TReal32 aOpacity, TUint aDuration = 0) __SOFTFP; + + public: // utils + + /** + * SetFlag + * + * @param flag + */ + void SetFlag( TInt aFlag ); + + /** + * ClearFlag + * + * @param flag + */ + void ClearFlag( TInt aFlag ); + + /** + * SetWsInfo + * + * @since S60 5.0 + * @param aInfo + */ + void SetWsInfo(const TAlfWServInfo& aInfo); + + /** + * CompareIds + * + * Compares window id and window group identifier with the given window. + * + * @since S60 5.0 + * @return ETrue, if ids match. Otherwise EFalse. + */ + static TBool CompareIds( const TWindowIdentifier* aWServId, const CAlfWindow& aWindow ) + { + return aWServId->Equals(aWindow.WsInfo().iClientSideId); + } + + /** + * IsInsertedToScene + * + * @since S60 5.0 + * @return ETrue, if visual window has been inserted to the scene. (meaning, Set operations will be posted forward) + */ + TBool IsInsertedToScene(); + + /** + * InsertedToScene + * + * @param aInserted New scene state for this window + */ + void InsertedToScene(TBool aInserted); + + /** + * Should the window be set inactive when it is released + */ + TBool ShouldBeDeactivated(); + + /* + * PostPartialBuffer + * + * Posts partial command buffer towards CHuiCanvas. Buffer is not processed until the final part is delivered. + * + * @param aPtr Pointer to the beginning of the command buffer in the shared junk + * @param aSize Length of the commands for this frame of a window + */ + void PostPartialBuffer( + TAny* aPtr, + TInt aSize, + TBool aPartial, + TBool aLastPart, + TBool aEmptyBuffers, + TInt aNodeFlags ); + + /* + * PostBuffer + * + * Posts the command buffer towards CHuiCanvas. Previous buffers are cleared. + * + * @param aPtr Pointer to the beginning of the command buffer in the shared junk + * @param aSize Length of the commands for this frame of a window + */ + void PostBuffer( TAny* aPtr, TInt aSize, TInt aNodeFlags ); + + // RnD only + CFbsBitGc* GetBitGcL(); + + void CommitGc(); + + void SetNodeTracking( TInt aValue ); + +private: + + CAlfWindow(); + + void ConstructL(TUint aId, CAlfWindowManager& aOwner, const TSize& aSizeInPixels); + + TAlfWindowAttributes* CreateWindowAttributes(TInt& aIndex); + + TAlfWindowCommandBufferAttributes* CreateWindowCommandBufferAttributes(TInt& aIndex); + + void CreateInBufferL(); + +private: + + /** + * Own. + */ + TAlfWindowData* iData; + + }; + +#endif