CoverFlow: using ScreenPlay
This example application demonstrates creating semi-transparent
UI content over OpenVG content that is rendered to a composition surface.
This is only possible when ScreenPlay is enabled.
Download
Click on the following link to download the example:
GraphicsShell.zip
Click:
browse
to view the example code.
The example
is located in the
examples\Graphics\CoverFlow
directory.
Description
This code implements a 'coverflow' application. It uses OpenVG to
display images while semi-transparent or transparent windows and controls
are used to display overlaid content. The application does the following:
-
Creates an EGL drawing surface by calling the
eglCreateWindowSurface()
function.
-
Converts bitmap cover images to OpenVG images.
-
Applies OpenVG transformations on the converted OpenVG images.
-
Draws the transformed images on the EGL surface by calling the
vgDrawImage()
function.
-
Draws the mirror image of bitmap cover images on the surface.
-
Displays an incoming call animation and a moving ticker window
in a separate active object. These are activated when relevant key
press events are detected. It uses the invalidate and re-draw pattern
of the window server to draw the contents on the window.
The ScreenPlay graphics architecture uses a composition
engine to display multiple overlaid windows. The composition engine
takes multiple overlaid surfaces as input and creates a single screen
buffer. For more information, see
Graphics Composition
and
The ScreenPlay
Graphics Architecture
.
Screenshots
Figure 1. Basic Screenshot
Figure 2. Screenshot showing ticker and incoming call animation
Figure 3. Screenshot showing the absence of the mirror surface
Class
Summary
These are the principal classes used in this example:
-
CCoverFlowAppUi
-
CEGLRendering
-
MEngine
-
CDialogBox
-
COpenVGEngine
-
CTicker
-
CLoader
Design
and Implementation
Figure 4. UML class diagram
Building
and running
The Symbian build process describes how to
build an application.
Configuration
settings for running the example on an Emulator or H4 board
-
Change the
WINDOWMODE
parameter to
Color16MAP
in
epoc32\release\winscw\<udeb/urel>\z\system\data\wsini.ini
(
epoc32\data\z\system\data\wsini.ini on the H4 board
).
-
The application
cannot run if ScreenPlay is disabled. If it is not already enabled,
you need to enable it. See
Enabling the Graphics
Architecture Variants
for more information.
-
(Emulator only):
Copy all
.mbm
(image) files from the
coverflow\gfx\call
directory to the
epoc32\release\winscw\<udeb/urel>\z\resource\apps
directory.
-
Performance
can be boosted significantly by switching to portrait mode, which
is the native mode for the LCD controller. To enable portrait mode,
uncomment the following line in the
coverflowapp.mmp
:
// MACRO PORTRAIT_MODE
-
Add the following
configuration statements to the
epoc32\data\epoc.ini
to run the example in portrait mode.
screenwidth 240
screenheight 320
fasciabitmap null.bmp
screenoffsetx 0
screenoffsety 0
Running
and using the example
-
Run
coverflowapp.exe
.
-
Press the Left
or the Right arrow key to navigate through the covers.
-
Press the Down
arrow key to show or hide the Ticker at the bottom of the screen.
-
Press the Up arrow
key to show or hide the incoming call animation.
-
Press the Tab key
to show or hide the semi-transparent green window around the incoming
call animation.
-
Press the Backspace
key to show or hide mirror images of the covers.
Copyright ©2010 Nokia Corporation and/or its subsidiary(-ies).
All rights
reserved. Unless otherwise stated, these materials are provided under the terms of the Eclipse Public License
v1.0.