Symbian3/PDK/Source/GUID-139F9E66-830D-5B94-8674-2F90152EBC4A.dita
author Dominic Pinkman <Dominic.Pinkman@Nokia.com>
Thu, 11 Mar 2010 18:02:22 +0000
changeset 3 46218c8b8afa
parent 1 25a17d01db0c
child 5 f345bda72bc4
permissions -rw-r--r--
week 10 bug fix submission (SF PDK version): Bug 1892, Bug 1897, Bug 1319. Also 3 or 4 documents were found to contain code blocks with SFL, which has been fixed. Partial fix for broken links, links to Forum Nokia, and the 'Symbian platform' terminology issues.

<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
<!-- This component and the accompanying materials are made available under the terms of the License 
"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: 
-->
<!DOCTYPE concept
  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
<concept xml:lang="en" id="GUID-139F9E66-830D-5B94-8674-2F90152EBC4A"><title>Fader Plug-ins</title><shortdesc>This topic provides information about fader plug-ins in the non-ScreenPlay variant. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p> <b>Variant</b>: <xref href="GUID-F64E6551-670E-5E12-8103-DE504D3EC94F.dita">Non-ScreenPlay</xref>. <b>Target audience</b>: Device creators. </p> <p>In ScreenPlay, fading effects can be created using render stages. See <xref href="GUID-3A2785D4-6185-50C3-8D7E-5D94CD2B7C98.dita">ScreenPlay Render Stages</xref> for more information. </p> <section><title>Purpose</title> <p>This document is intended to demonstrate how to implement a <xref href="GUID-1CF41CFD-27C8-39D7-A615-18CE765436DE.dita"><apiname>MWsFader</apiname></xref> interface for use by plug-ins. </p> </section> <section><title>Setup and configuration requirements</title> <p>All specified plug-ins are loaded by WSERV, or the default plug-ins are loaded if none are specified. </p> <p>The plug-ins to be loaded are specified in the <codeph>WSINI.INI</codeph> file using a line such as the following: </p> <codeblock id="GUID-69322FFC-3E97-50E1-885D-2D6B8A09C5B2" xml:space="preserve">PLUGINS FLICKERBUFFER STD DEFAULTFADER</codeblock> <p>Each plug-in can then have its own section in the <codeph>WSINI.INI</codeph> file in which <codeph>ID</codeph>, <codeph>TYPE</codeph>, and <codeph>DATA</codeph> parameters can be specified. These are as follows: </p> <ul><li id="GUID-12B7DA98-2FF8-58B9-930F-F5859C8C898A"><p> <codeph>ID</codeph> is a UID, used to search for <codeph>&lt;uid&gt;.dll</codeph>. </p> </li> <li id="GUID-786C90A8-58F6-551E-B374-F20EBEB91668"><p> <codeph>TYPE</codeph> is a type, used for every dll of that type. This can be used if no UID is specified. </p> </li> <li id="GUID-BC55A192-48FE-5503-99AE-EAADA3F3661F"><p> <codeph>DATA</codeph> can be used to pass arbitrary data to a plug-in. </p> </li> </ul> <p>A typical section might look like this: </p> <codeblock id="GUID-9083C9CD-9FEF-5655-B8ED-8B4EBDDDDB21" xml:space="preserve">[FLICKERBUFFER]
ID 0x10285A2C</codeblock> </section> <example><title>Using fader plug-ins </title> <p>The high level steps for loading and using fader plug-ins are: </p> <ol id="GUID-F5BE8251-AE31-5970-96F7-ABCE8076D972"><li id="GUID-AAF52A9D-6591-5D4F-B671-C92FF4FE966C"><p>Screen gets pointer to fader object at construction time </p> </li> <li id="GUID-D93C347C-0F57-542B-85D0-C1B8A2612168"><p>Fader is called to perform custom fading of screen region </p> </li> </ol> </example> <section><title>1. Screen gets pointer to fader object at construction
          time</title> <p><b>Setup in WSINI.INI file </b> </p> <p>In the <codeph>WSINI.INI</codeph> file, the name of the fader to be used is specified on a per screen basis using lines such as the following: </p> <p> <codeph>[SCREEN 0] </codeph>  </p> <p> <codeph>FADER DEFAULTFADER </codeph>  </p> <p>If no fader is specified, the default fader will be used. </p> <p><b>Process </b> </p> <p>The following code will need to be used: </p> <p> <codeph>CScreen::ConstructL() </codeph> is called. </p> <p> <codeph>WsIniFile()-&gt;FindVar(“FADER”)</codeph> will return the name of fader to be used </p> <p> <codeph>CWsPluginManager::FindNamedImplementation&lt;MwsFader&gt;()</codeph> is called. This is a templated function, where the template determines what is returned. </p> <p> <b>For </b> each plug-in in the list of plug-ins: </p> <ul><li id="GUID-74D0200F-274E-5534-BA74-62910F2CBF7D"><p>Call <codeph>CWsPlugin::ObjectInterface(“MWsFader”)</codeph>, requesting the plug-in to supply the <xref href="GUID-1CF41CFD-27C8-39D7-A615-18CE765436DE.dita"><apiname>MWsFader</apiname></xref> interface </p> </li> <li id="GUID-E2E19FB3-1D34-5AD5-97B2-53CE521720C6"><p>This results in a call to <codeph>ResolveObjectInterface(“MWsFader”)</codeph> on the plug-in. If the plug-in is a fader plug-in, then it is required to “<codeph>return this</codeph> ”, otherwise “<codeph>return NULL</codeph> ” </p> </li> <li id="GUID-7A682F54-67A5-5A88-A75E-FFF3400AD3DE"><p>If the plug-in returns an <codeph>MWsFader*</codeph>, and it has the correct plug-in name, return the <codeph>MWsFader*</codeph>  </p> </li> </ul> <p> <b>Endfor</b>. </p> </section> <section><title>2. Fader is called to perform custom fading of screen
          region</title> <p><b>Process </b> </p> <p> <codeph>CWsWindowRedraw::PostDrawWindow()</codeph> is called </p> <p> <b>If</b> fading enabled: Get the pointer to the fader instance via <xref href="GUID-7AFB8EF5-85D7-3409-9ED2-F269A989267F.dita"><apiname>CPlaybackGc</apiname></xref>  </p> <ul><li id="GUID-39F6700D-A8BD-5760-B110-61F6DFA963BD"><p>Call <codeph>CFader::SetFadingParameters()</codeph>. </p> </li> <li id="GUID-F94DE02C-E863-5CCD-8A71-E42B598F1D3D"><p>Call <codeph>CFader::FadeArea()</codeph>  </p> </li> <li id="GUID-C4A4B8CF-466E-5508-9F76-CC6070B93A69"><p>The fader plug-in fades the requested area. </p> </li> </ul> <p> <b>Endif</b>. </p> </section> </conbody><related-links><link href="GUID-39CFE2E2-9776-54EE-8E3B-8B85AFF1697A.dita"><linktext>Window Server Plug-in Framework in the
                Non-ScreenPlay Variant </linktext> </link> <link href="GUID-053BADC7-858B-5D83-8FEE-BFB6C29AFB73.dita"><linktext>Render Stage Plug-ins</linktext> </link> <link href="GUID-434F690E-738A-51DF-80CC-8A6CC067DA6C.dita"><linktext>Miscellaneous Plug-in
                Interfaces</linktext> </link> </related-links></concept>