--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/egl/eglinterface/include/eglwindowinterface.h Thu Sep 09 10:13:45 2010 +0300
@@ -0,0 +1,169 @@
+// Copyright (c) 2010 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:
+// This file is intended for use by EGL implementations only. It
+// provides a standardised mechanism for interfacing with window
+// objects that are passed to EGL.
+
+
+/**
+ @file
+ @publishedPartner
+ @prototype
+*/
+
+
+#ifndef __EGLWINDOWINTERFACE_H__
+#define __EGLWINDOWINTERFACE_H__
+
+
+#include <graphics/eglwindowcommon.h>
+#include <EGL/egltypes.h>
+
+
+/**
+Forward declarations.
+*/
+class REglWindowBase;
+
+
+/**
+TEglWindowInterface exposes a proxy interface that forwards actions
+to the NativeWindow that the instance is constructed from. The
+interface consists of all the functionality that an EGL
+implementation requires to implement EGL window surfaces.
+*/
+NONSHARABLE_CLASS(TEglWindowInterface)
+ {
+public:
+ /**
+ Constructs a TEglWindowInterface to provide an interface to the
+ EGLNativeWindowType handle passed in.
+
+ @param aNativeWindow Pointer to the native window.
+
+ @pre aNativeWindow is either an initialised RWindow or an
+ initialised REglWindowBase derived type.
+
+ @error If aNativeWindow is not an RWindow or an REglWindowBase
+ derived type, behaviour is undefined.
+ */
+ IMPORT_C TEglWindowInterface(EGLNativeWindowType aNativeWindow);
+
+ /**
+ If the native window that is wrapped by the instance of
+ TEglWindowInterface is valid, this function returns ETrue, else
+ EFalse is returned.
+ */
+ IMPORT_C TBool IsValid() const;
+
+ /**
+ Returns the size in pixels of the native window.
+ */
+ IMPORT_C TSize SizeInPixels() const;
+
+ /**
+ Returns the size in twips of the native window. This can be used
+ in conjunction with SizeInPixels() to work out the dot pitch and
+ pixel aspect ratio of the EGL surface attached to this window.
+ These attributes are queryable by an EGL client.
+ */
+ IMPORT_C TSize SizeInTwips() const;
+
+ /**
+ Returns the screen number that the native window is displayed on
+ or KAllScreens to indicate that the window must be displayable on
+ all screens in the system.
+ */
+ IMPORT_C TInt ScreenNumber() const;
+
+ /**
+ Sets the window's background color. This is the area of the
+ window not covered by a background surface, either because it
+ has no background surface, or because the surface configuration
+ specifies that the surface does not cover the whole of the
+ window's area.
+
+ @param aColor The color that the window's background
+ will be set to.
+
+ @param aTriggerRedraw If set causes any affected portions of
+ the display to be redrawn.
+
+ @note The appearance on screen may not change until the window
+ is redrawn and the next refresh occurs. The
+ aTriggerRedraw parameter can be set to trigger this
+ redrawing.
+ */
+ IMPORT_C void SetBackgroundColor(TRgb aColor, TBool aTriggerRedraw);
+
+ /**
+ This sets a surface to appear in front of the native window's
+ background within a given area of that window. The
+ TSurfaceConfiguration object contains the Surface ID and allows
+ various surface presentation attributes to be specified. This
+ describes the mapping from surface co-ordinates to screen
+ co-ordinates, allowing for scaling, cropping, and rotation.
+
+ @param aConfiguration The set of configuration that applies to
+ the surface.
+
+ @param aTriggerRedraw If set causes any affected portions of
+ the display to be redrawn.
+
+ @pre The surface is opaque; otherwise results are not defined.
+
+ @pre The surface must not be the null surface ID; otherwise
+ the client is panicked with code ENWPanicInvalidSurface.
+
+ @note If the same surface ID is already set as the window
+ background surface, then only the configuration
+ parameters will be updated.
+
+ @note If the window already has a background surface (that is
+ not same as the new surface) then that surface will be
+ removed and the new background surface will be set. The
+ Surface ID will be registered while attached to this
+ window, incrementing the registration count by one.
+
+ @post The window has a new background surface set to be within
+ the given area.
+
+ @return KErrNone on success or any system-wide error code.
+ */
+ IMPORT_C TInt SetBackgroundSurface(const TSurfaceConfiguration &aConfiguration, TBool aTriggerRedraw);
+
+ /**
+ This removes any background surface that has previously been set
+ to the window. The surface ID registration associated with the
+ window will be released. The aTriggerRedraw parameter triggers a
+ redraw of at least the affected areas of the window at the end of
+ this method.
+
+ @param aTriggerRedraw If set causes any affected portions of
+ the display to be redrawn.
+
+ @post Any background surface associated with this window has
+ been removed. The appearance on screen may not change
+ until the window is redrawn and the next refresh occurs.
+ The aTriggerRedraw parameter can be set to trigger this
+ redrawing.
+ */
+ IMPORT_C void RemoveBackgroundSurface(TBool aTriggerRedraw);
+
+private:
+ REglWindowBase* iEglWindow;
+ };
+
+
+#endif //__EGLWINDOWINTERFACE_H__