--- /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 <graphics/wselement.h>
+
+class CWsClientWindow : public CWsWindow
+ {
+protected:
+ enum
+ {
+ KWinRedrawPriBitsPerLevel=4,
+ KWinRedrawPriMaxOrdinal=(1<<KWinRedrawPriBitsPerLevel)-1, // 15
+ KWinRedrawPriMaxLevel=32/KWinRedrawPriBitsPerLevel-1, // 7
+ };
+
+public:
+ CWsClientWindow(CWsClient* aOwner, CScreen* aScreen);
+ ~CWsClientWindow();
+ virtual void ConstructL(const TWsClCmdCreateWindow &aCmd,CWsWindowBase *aParent, TBool aScreenDeviceIsInvalid);
+ CWsClientWindow *Child() const;
+ inline CWsClientWindow *PrevSibling() const;
+ inline CWsClientWindow *NextSibling() const;
+ inline CWsClientWindow *PrevSiblingMultiParent() const;
+ inline CWsClientWindow *NextSiblingMultiParent() const;
+ virtual void GenerateWindowRegion(RWsRegion &aRegion) const;
+ void GenerateTopRegion(RWsRegion &aRegion) const;
+
+public: // from CWsObject
+ void CommandL(TInt aOpcode, const TAny *aCmdData);
+
+public: // from MWsWindow
+ void Invalidate(const TRect * aRect = 0);
+ const TRegion& WindowArea() const;
+
+public:
+ void GcActivated(CWsGc *aGc);
+ void GcDeactivated(CWsGc *aGc);
+ void ResetHiddenFlag();
+ const TRegion &InvalidArea() const;
+ void GetClippedBaseArea(RWsRegion &aRegion) const;
+ void GetOpaqueClippedBaseArea(RWsRegion &aRegion) const;
+ inline const TRegion *BaseArea() const;
+ virtual TUint RedrawPriority(TInt *aShift=NULL) const;
+ inline void UpdateAnimArea();
+ void AddKeyRectL(const TRect &aRect, TInt aScanCode, TBool aActivatedByPointerSwitchOn);
+ void RemoveAllKeyRects();
+ void SetVisible(TBool aState);
+ CWsTopClientWindow *TopClientWindow();
+ const TRegion *DrawingRegion();
+ inline TBool IsFadeBehind() const;
+//
+ TBool IsHidden();
+ void SetFaded(TBool aFade, TUint8 aBlackMap, TUint8 aWhiteMap, TBool aNotifyObserver);
+ void SetFaded(TBool aFade, TUint8 aBlackMap, TUint8 aWhiteMap, TBool aNotifyObserver, TBool& aStateChanged);
+ void RecalcChildAbs(const TPoint *aOffset);
+ void ResetHiddenFlagsInParentAndChildren();
+ static inline void SetAbsoluteFading(TBool aAbsoluteFading);
+ inline TBool IsBecomingOpaque() const;
+ TBool IsInfrontOf(const CWsWindowBase* aWin) const;
+ inline const TRegion * GetUserOpaqueRegion();
+ void OffsetUserTransparentRegion(const TPoint& aOffset);
+ void SetUserOpaqueRegion();
+ void ReactivateGcs();
+ void ScheduleRegionUpdate(const TRegion* aDefinitelyDirty);
+ void AddRedrawRegion(const TRegion& aRegion, TBool aSchedule, TRedrawDepth aDepth);
+ const TRegion* DebugRegion(TInt aType)const;
+ void SendState(MWsWindowTreeObserver& aWindowTreeObserver) const;
+
+ inline void SetOriginalSrcElementRect(const TRect &aSrcRect);
+ inline void SetOriginalDestElementRect(const TRect &aDestRect);
+ TRect GetOriginalSrcElementRect() const;
+ TRect GetOriginalDestElementRect() const;
+ void GetElementFlipAndRotation(TBool& aElemetFlip, MWsElement::TElementRotation& aElemenetRotation);
+
+protected:
+ virtual void Shutdown(); // Part of two phase destruction
+ void Activate();
+ void SetExtentL(const TPoint *aPos, const TSize *aSize);
+ static void ClipWindows(TRegion ®ion,const CWsClientWindow *start, const CWsClientWindow *end, TBool aClipTranslucent);
+ void GenerateArea(RWsRegion &aArea, TBool aClipTranslucent) const;
+ void SetAbsFromRel();
+ void MovePosition(const TPoint& aPos);
+ void IncreaseSize(const TSize& aSize,TSize& aOldSize);
+ void ReduceSize(const TSize& aSize,TSize& aOldSize);
+ void Scroll(const TRect &aClipRect, const TPoint &aPoint, const TRect &aRect);
+ void CalcBaseArea();
+ void OffsetBaseArea(const TPoint &aOffset);
+ void DeleteBaseArea();
+ void SetCornerTypeL(TCornerType aType, TInt aFlags, TRegion *aNewBaseArea=NULL, TBool aNotifyShapeChanged=ETrue);
+ void ResetHiddenFlags();
+ TDblQue<TPointerKeyList> *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<TPointerKeyList> *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