diff -r 969102054596 -r 414d4b727fd9 egl/eglinterface/include/eglwindowinterface.h --- /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 +#include + + +/** +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__