egl/eglinterface/include/eglwindowinterface.h
author hgs
Thu, 09 Sep 2010 10:13:45 +0300
changeset 171 414d4b727fd9
permissions -rw-r--r--
201034
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
171
hgs
parents:
diff changeset
     1
// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     2
// All rights reserved.
hgs
parents:
diff changeset
     3
// This component and the accompanying materials are made available
hgs
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     5
// which accompanies this distribution, and is available
hgs
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     7
//
hgs
parents:
diff changeset
     8
// Initial Contributors:
hgs
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    10
//
hgs
parents:
diff changeset
    11
// Contributors:
hgs
parents:
diff changeset
    12
//
hgs
parents:
diff changeset
    13
// Description:
hgs
parents:
diff changeset
    14
// This file is intended for use by EGL implementations only. It 
hgs
parents:
diff changeset
    15
// provides a standardised mechanism for interfacing with window
hgs
parents:
diff changeset
    16
// objects that are passed to EGL.
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
/**
hgs
parents:
diff changeset
    20
 @file
hgs
parents:
diff changeset
    21
 @publishedPartner
hgs
parents:
diff changeset
    22
 @prototype
hgs
parents:
diff changeset
    23
*/
hgs
parents:
diff changeset
    24
hgs
parents:
diff changeset
    25
hgs
parents:
diff changeset
    26
#ifndef __EGLWINDOWINTERFACE_H__
hgs
parents:
diff changeset
    27
#define __EGLWINDOWINTERFACE_H__
hgs
parents:
diff changeset
    28
hgs
parents:
diff changeset
    29
hgs
parents:
diff changeset
    30
#include <graphics/eglwindowcommon.h>
hgs
parents:
diff changeset
    31
#include <EGL/egltypes.h>
hgs
parents:
diff changeset
    32
hgs
parents:
diff changeset
    33
hgs
parents:
diff changeset
    34
/**
hgs
parents:
diff changeset
    35
Forward declarations.
hgs
parents:
diff changeset
    36
*/
hgs
parents:
diff changeset
    37
class REglWindowBase;
hgs
parents:
diff changeset
    38
hgs
parents:
diff changeset
    39
hgs
parents:
diff changeset
    40
/**
hgs
parents:
diff changeset
    41
TEglWindowInterface exposes a proxy interface that forwards actions
hgs
parents:
diff changeset
    42
to the NativeWindow that the instance is constructed from. The 
hgs
parents:
diff changeset
    43
interface consists of all the functionality that an EGL 
hgs
parents:
diff changeset
    44
implementation requires to implement EGL window surfaces.
hgs
parents:
diff changeset
    45
*/
hgs
parents:
diff changeset
    46
NONSHARABLE_CLASS(TEglWindowInterface)
hgs
parents:
diff changeset
    47
    {
hgs
parents:
diff changeset
    48
public:
hgs
parents:
diff changeset
    49
    /**
hgs
parents:
diff changeset
    50
    Constructs a TEglWindowInterface to provide an interface to the
hgs
parents:
diff changeset
    51
    EGLNativeWindowType handle passed in.
hgs
parents:
diff changeset
    52
hgs
parents:
diff changeset
    53
    @param  aNativeWindow   Pointer to the native window. 
hgs
parents:
diff changeset
    54
    
hgs
parents:
diff changeset
    55
    @pre    aNativeWindow is either an initialised RWindow or an 
hgs
parents:
diff changeset
    56
            initialised REglWindowBase derived type.
hgs
parents:
diff changeset
    57
hgs
parents:
diff changeset
    58
    @error  If aNativeWindow is not an RWindow or an REglWindowBase 
hgs
parents:
diff changeset
    59
    derived type, behaviour is undefined.
hgs
parents:
diff changeset
    60
    */
hgs
parents:
diff changeset
    61
    IMPORT_C TEglWindowInterface(EGLNativeWindowType aNativeWindow);
hgs
parents:
diff changeset
    62
hgs
parents:
diff changeset
    63
    /**
hgs
parents:
diff changeset
    64
    If the native window that is wrapped by the instance of 
hgs
parents:
diff changeset
    65
    TEglWindowInterface is valid, this function returns ETrue, else
hgs
parents:
diff changeset
    66
    EFalse is returned.
hgs
parents:
diff changeset
    67
    */
hgs
parents:
diff changeset
    68
    IMPORT_C TBool IsValid() const;
hgs
parents:
diff changeset
    69
    
hgs
parents:
diff changeset
    70
    /**
hgs
parents:
diff changeset
    71
    Returns the size in pixels of the native window.
hgs
parents:
diff changeset
    72
    */
hgs
parents:
diff changeset
    73
    IMPORT_C TSize SizeInPixels() const;
hgs
parents:
diff changeset
    74
    
hgs
parents:
diff changeset
    75
    /**
hgs
parents:
diff changeset
    76
    Returns the size in twips of the native window. This can be used
hgs
parents:
diff changeset
    77
    in conjunction with SizeInPixels() to work out the dot pitch and
hgs
parents:
diff changeset
    78
    pixel aspect ratio of the EGL surface attached to this window.
hgs
parents:
diff changeset
    79
    These attributes are queryable by an EGL client.
hgs
parents:
diff changeset
    80
    */
hgs
parents:
diff changeset
    81
    IMPORT_C TSize SizeInTwips() const;
hgs
parents:
diff changeset
    82
    
hgs
parents:
diff changeset
    83
    /**
hgs
parents:
diff changeset
    84
    Returns the screen number that the native window is displayed on
hgs
parents:
diff changeset
    85
    or KAllScreens to indicate that the window must be displayable on 
hgs
parents:
diff changeset
    86
    all screens in the system. 
hgs
parents:
diff changeset
    87
    */
hgs
parents:
diff changeset
    88
    IMPORT_C TInt ScreenNumber() const;
hgs
parents:
diff changeset
    89
    
hgs
parents:
diff changeset
    90
    /**
hgs
parents:
diff changeset
    91
    Sets the window's background color. This is the area of the 
hgs
parents:
diff changeset
    92
    window not covered by a background surface, either because it
hgs
parents:
diff changeset
    93
    has no background surface, or because the surface configuration
hgs
parents:
diff changeset
    94
    specifies that the surface does not cover the whole of the 
hgs
parents:
diff changeset
    95
    window's area.
hgs
parents:
diff changeset
    96
    
hgs
parents:
diff changeset
    97
    @param  aColor          The color that the window's background
hgs
parents:
diff changeset
    98
                            will be set to.
hgs
parents:
diff changeset
    99
                            
hgs
parents:
diff changeset
   100
    @param  aTriggerRedraw  If set causes any affected portions of 
hgs
parents:
diff changeset
   101
                            the display to be redrawn.
hgs
parents:
diff changeset
   102
                            
hgs
parents:
diff changeset
   103
    @note   The appearance on screen may not change until the window
hgs
parents:
diff changeset
   104
            is redrawn and the next refresh occurs. The 
hgs
parents:
diff changeset
   105
            aTriggerRedraw parameter can be set to trigger this 
hgs
parents:
diff changeset
   106
            redrawing.
hgs
parents:
diff changeset
   107
    */
hgs
parents:
diff changeset
   108
    IMPORT_C void SetBackgroundColor(TRgb aColor, TBool aTriggerRedraw);
hgs
parents:
diff changeset
   109
    
hgs
parents:
diff changeset
   110
    /**
hgs
parents:
diff changeset
   111
    This sets a surface to appear in front of the native window's 
hgs
parents:
diff changeset
   112
    background within a given area of that window. The 
hgs
parents:
diff changeset
   113
    TSurfaceConfiguration object contains the Surface ID and allows 
hgs
parents:
diff changeset
   114
    various surface presentation attributes to be specified. This 
hgs
parents:
diff changeset
   115
    describes the mapping from surface co-ordinates to screen 
hgs
parents:
diff changeset
   116
    co-ordinates, allowing for scaling, cropping, and rotation.
hgs
parents:
diff changeset
   117
    
hgs
parents:
diff changeset
   118
    @param  aConfiguration  The set of configuration that applies to
hgs
parents:
diff changeset
   119
                            the surface. 
hgs
parents:
diff changeset
   120
    
hgs
parents:
diff changeset
   121
    @param  aTriggerRedraw  If set causes any affected portions of 
hgs
parents:
diff changeset
   122
                            the display to be redrawn.  
hgs
parents:
diff changeset
   123
hgs
parents:
diff changeset
   124
    @pre    The surface is opaque; otherwise results are not defined. 
hgs
parents:
diff changeset
   125
hgs
parents:
diff changeset
   126
    @pre    The surface must not be the null surface ID; otherwise 
hgs
parents:
diff changeset
   127
            the client is panicked with code ENWPanicInvalidSurface. 
hgs
parents:
diff changeset
   128
hgs
parents:
diff changeset
   129
    @note   If the same surface ID is already set as the window 
hgs
parents:
diff changeset
   130
            background surface, then only the configuration 
hgs
parents:
diff changeset
   131
            parameters will be updated.
hgs
parents:
diff changeset
   132
hgs
parents:
diff changeset
   133
    @note   If the window already has a background surface (that is
hgs
parents:
diff changeset
   134
            not same as the new surface) then that surface will be 
hgs
parents:
diff changeset
   135
            removed and the new background surface will be set. The 
hgs
parents:
diff changeset
   136
            Surface ID will be registered while attached to this 
hgs
parents:
diff changeset
   137
            window, incrementing the registration count by one.
hgs
parents:
diff changeset
   138
hgs
parents:
diff changeset
   139
    @post   The window has a new background surface set to be within 
hgs
parents:
diff changeset
   140
            the given area. 
hgs
parents:
diff changeset
   141
     
hgs
parents:
diff changeset
   142
    @return KErrNone on success or any system-wide error code. 
hgs
parents:
diff changeset
   143
    */
hgs
parents:
diff changeset
   144
    IMPORT_C TInt SetBackgroundSurface(const TSurfaceConfiguration &aConfiguration, TBool aTriggerRedraw);
hgs
parents:
diff changeset
   145
    
hgs
parents:
diff changeset
   146
    /**
hgs
parents:
diff changeset
   147
    This removes any background surface that has previously been set 
hgs
parents:
diff changeset
   148
    to the window. The surface ID registration associated with the 
hgs
parents:
diff changeset
   149
    window will be released. The aTriggerRedraw parameter triggers a 
hgs
parents:
diff changeset
   150
    redraw of at least the affected areas of the window at the end of
hgs
parents:
diff changeset
   151
    this method.
hgs
parents:
diff changeset
   152
hgs
parents:
diff changeset
   153
    @param  aTriggerRedraw  If set causes any affected portions of 
hgs
parents:
diff changeset
   154
                            the display to be redrawn. 
hgs
parents:
diff changeset
   155
hgs
parents:
diff changeset
   156
    @post   Any background surface associated with this window has 
hgs
parents:
diff changeset
   157
            been removed. The appearance on screen may not change 
hgs
parents:
diff changeset
   158
            until the window is redrawn and the next refresh occurs. 
hgs
parents:
diff changeset
   159
            The aTriggerRedraw parameter can be set to trigger this 
hgs
parents:
diff changeset
   160
            redrawing.
hgs
parents:
diff changeset
   161
    */
hgs
parents:
diff changeset
   162
    IMPORT_C void RemoveBackgroundSurface(TBool aTriggerRedraw);
hgs
parents:
diff changeset
   163
    
hgs
parents:
diff changeset
   164
private:
hgs
parents:
diff changeset
   165
    REglWindowBase* iEglWindow;
hgs
parents:
diff changeset
   166
    };
hgs
parents:
diff changeset
   167
hgs
parents:
diff changeset
   168
hgs
parents:
diff changeset
   169
#endif //__EGLWINDOWINTERFACE_H__