javauis/lcdui_akn/lcdgr/inc/LcdWindowSurface.h
branchRCL_3
changeset 14 04becd199f91
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/lcdui_akn/lcdgr/inc/LcdWindowSurface.h	Tue Apr 27 16:30:29 2010 +0300
@@ -0,0 +1,132 @@
+/*
+* Copyright (c) 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:
+*
+*/
+
+
+#ifndef LCDWINDOWSURFACE_H
+#define LCDWINDOWSURFACE_H
+
+#include <w32std.h>
+#include "LcdSurface.h"
+
+typedef CFbsBitGc::TGraphicsOrientation TOrientation;
+
+/**
+ * Coordinate transform from logical device coords to
+ * phyical device coords is determined by the scale,
+ * origin and orientation.
+ */
+struct TCoordinateSystem
+{
+    TSize        iSize;
+    TSize        iScale;
+    TPoint       iOrigin;
+    TOrientation iOrientation;
+};
+
+NONSHARABLE_CLASS(CLcdWindowSurface)
+        : public CLcdSurface
+        , private MDirectContent
+        , private MDirectScreenAccess
+{
+public:
+    /* We make the CONE dependency explicit here by requiring a CCoeControl for the window */
+    static CLcdWindowSurface* NewL(CCoeControl& aWindow, MDirectContainer& aContainer, TBool aUpdate);
+    ~CLcdWindowSurface();
+
+    RWindow*     Window() const;
+    void         GetCoordinateSystem(TCoordinateSystem& aCoords) const;
+
+    virtual TSurfaceType Type() const;
+    virtual void Update(const TRect& aRect);
+    virtual void Begin(TAcceleratedBitmapInfo& aInfo, TBitmapLockCount& aCount);
+    virtual void End(TBitmapLockCount& aCount);
+    virtual TRect Bounds() const;
+    virtual RRegion* VisibleRegion() const;
+    virtual CBitmapContext* Context() const;
+    virtual TImageType ImageType() const;
+
+private:
+    virtual void MdcContainerWindowRectChanged(const TRect& /*aRect*/) {};
+
+    /**
+    Notify content that container visiblity has changed. The content must not
+    be displayed when it's container is invisible.
+    @param "aVisible" ETrue if the container is visible, EFalse if it is invisible.
+    */
+    virtual void MdcContainerVisibilityChanged(TBool aVisible);
+
+    /**
+    Notify content that the container bounds have changed.
+    @param "aRect" Maximum area the content can occupy in screen co-ordinates.
+    The content should be clipped to this area.
+    */
+    virtual void MdcContentBoundsChanged(const TRect& aRect);
+
+    /**
+    Notify content that its display area has changed.
+    This should only be called when the content is displayed on an Item.
+    @param "aDisplayRect" Display area in Item co-ordinates.
+    @param "aScreenRect" Display area in screen co-ordinates.
+    */
+    virtual void MdcItemContentRectChanged(const TRect& aContentRect,const TRect& aScreenRect);
+
+    virtual void MdcContainerDestroyed();
+
+    /**
+     * Notify content that any drawing
+     * via direct screen access must be aborted
+     */
+    virtual void MdcAbortDSA();
+
+    /**
+     * Allow the content to draw
+     * via direct screen access after MdcAbortDSA
+     */
+    virtual void MdcResumeDSA();
+
+private:
+    virtual void AbortNow(RDirectScreenAccess::TTerminationReasons);
+    virtual void Restart(RDirectScreenAccess::TTerminationReasons);
+
+private:
+    CLcdWindowSurface(MDirectContainer& aContainer, TBool aUpdate);
+    void ConstructL(CCoeControl& aWindow);
+    void ActivateL(RWindow* aWindow);
+    void Deactivate();
+    TBool Start();
+    TInt DoUpdate();
+
+private:
+    MDirectContainer*   iContainer;
+    RWsSession&         iWsSession;
+    CWsScreenDevice&    iWsDevice;
+    TBool               iUpdate;
+    TImageType          iImageType;
+    RWindow*            iWsWindow;
+    CWindowGc*          iWsContext;     // backup context
+    CDirectScreenAccess* iWsAccess;     // primary context, region and update device
+    TAcceleratedBitmapInfo iScreen;
+    TCoordinateSystem iScreenCoords;
+    TBool iEnabled;
+    TBool iStarted;
+    TBool iVisible;
+    TRect iBounds;
+    RRegion iEmptyRegion;
+    RRegion iUpdateRegion;
+};
+
+#endif // LCDWINDOWSURFACE_H