diff -r 000000000000 -r 5d03bc08d59c windowing/windowserver/nga/SERVER/openwfc/cliwin.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/windowing/windowserver/nga/SERVER/openwfc/cliwin.h Tue Feb 02 01:47:50 2010 +0200 @@ -0,0 +1,241 @@ +// Copyright (c) 2006-2009 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: +// CWsClientWindow and associated classes definitions +// +// + +#ifndef __CLIWIN_H__ +#define __CLIWIN_H__ + +#include "server.h" +#include "window.h" +#include + +class CWsClientWindow : public CWsWindow + { +protected: + enum + { + KWinRedrawPriBitsPerLevel=4, + KWinRedrawPriMaxOrdinal=(1< *PointerKeyList() const; + void SetUserTransparentRegion(RWsRegion* aRegion); + void UpdateElementExtent(const TPoint* aOffset = NULL); + void SetElementOpacity(TInt aOpacity); + + // from CWsWindowBase + TBool IsDSAHost() const; + TBool IsActivated() const; + +private: + void GetBaseAreaOfNode(RWsRegion& aRegion) const; + void GetOpaqueBaseAreaOfNode(RWsRegion& aRegion) const; + TInt GetNonOpaqueBaseAreaOfNode(RWsRegion& aRegion) const; + void ClipRegionToBaseArea(RWsRegion& aRegion) const; + void ClipRegionToOpaqueBaseArea(RWsRegion& aRegion) const; + + +private: + TInt iCornerData; + TUint iBackupsRequested; + TRegion *iBaseArea; // The base area of the window without any clipping from windows taken into account + TDblQue *iPointerKeyList; + static TBool iAbsoluteFading; + /** + By default the full window region is transparent if the window is marked + as transparent. If this is not the desired behaviour the client can + define the transparent region itself. + + @see RWindow::SetTransparentRegion() + */ + RWsRegion* iUserDefinedTransparentRegion; + RWsRegion* iUserDefinedOpaqueRegion; + + TRect iOriginalSrcElementRect; + TRect iOriginalDestElementRect; + }; + +class CWsTopClientWindow : public CWsClientWindow + { +public: + CWsTopClientWindow(CWsClient* aOwner, CScreen* aScreen); + void ConstructL(const TWsClCmdCreateWindow &cmd,CWsWindowBase *aParent, TBool aScreenDeviceIsInvalid); + virtual void SetOrdinalPosition(TInt pos); + void DoMoveWindowL(TInt aIdentifier); + inline CWsTopClientWindow *NextSiblingTop() const; + inline CWsTopClientWindow *PrevSiblingTop() const; + inline CWsTopClientWindow *PrevSiblingMultiParent() const; + inline CWsTopClientWindow *NextSiblingMultiParent() const; + inline CWsWindowGroup *Parent() const; + + void SetInactive(); + void SetScreenDeviceValidState(TBool aState); + TBool SetScreenDeviceValidStateFlag(TBool aState); + virtual TUint RedrawPriority(TInt *aShift=NULL) const; + }; + +inline CWsClientWindow *CWsClientWindow::Child() const + { + return((CWsClientWindow *)iChild); + } + +inline CWsClientWindow *CWsClientWindow::NextSibling() const + { + return((CWsClientWindow *)iSibling); + } + +inline CWsClientWindow *CWsClientWindow::PrevSibling() const + { + return((CWsClientWindow *)GetPrevSibling()); + } + +inline const TRegion *CWsClientWindow::BaseArea() const + { + return iBaseArea; + } + +inline void CWsClientWindow::UpdateAnimArea() + { + iRedraw->UpdateAnimArea(); + } + +inline TBool CWsClientWindow::IsFadeBehind() const + { + return(iFlags&EFlagFadeBehind); + } + +inline void CWsClientWindow::SetAbsoluteFading(TBool aAbsoluteFading) + { + iAbsoluteFading=aAbsoluteFading; + } + +inline CWsTopClientWindow *CWsTopClientWindow::NextSiblingTop() const + { + return((CWsTopClientWindow *)iSibling); + } + +inline CWsTopClientWindow *CWsTopClientWindow::PrevSiblingTop() const + { + return((CWsTopClientWindow *)GetPrevSibling()); + } + +inline CWsTopClientWindow *CWsTopClientWindow::PrevSiblingMultiParent() const + { + return((CWsTopClientWindow *)CWsWindowBase::PrevSiblingMultiParent()); + } + +inline CWsTopClientWindow *CWsTopClientWindow::NextSiblingMultiParent() const + { + return((CWsTopClientWindow *)CWsWindowBase::NextSiblingMultiParent()); + } + +inline CWsWindowGroup *CWsTopClientWindow::Parent() const + { + return((CWsWindowGroup *)iParent); + } + +inline const TRegion * CWsClientWindow::GetUserOpaqueRegion() + { + return iUserDefinedOpaqueRegion; + } + +inline void CWsClientWindow::SetOriginalSrcElementRect(const TRect &aSrcRect) + { + iOriginalSrcElementRect = aSrcRect; + } + +inline void CWsClientWindow::SetOriginalDestElementRect(const TRect &aDestRect) + { + iOriginalDestElementRect = aDestRect; + } + +#endif