Symbian3/PDK/Source/GUID-2E8929E6-9555-51D2-B41D-6F1D05A4DB87.dita
changeset 12 80ef3a206772
parent 9 59758314f811
child 14 578be2adaf3e
equal deleted inserted replaced
11:5072524fcc79 12:80ef3a206772
    27 APIs, for which the render stage plug-ins provide the concrete implementations. </p>
    27 APIs, for which the render stage plug-ins provide the concrete implementations. </p>
    28 <section id="GUID-B431C15F-B567-5A6F-8E3F-1A45CE2FACDE"><title>Architecture</title> <p>The
    28 <section id="GUID-B431C15F-B567-5A6F-8E3F-1A45CE2FACDE"><title>Architecture</title> <p>The
    29 following diagram shows where render stages fit into the Window Server architecture. </p> <fig id="GUID-B1321BD9-2EF4-5BB3-8226-880C460526C1">
    29 following diagram shows where render stages fit into the Window Server architecture. </p> <fig id="GUID-B1321BD9-2EF4-5BB3-8226-880C460526C1">
    30 <title>              Window Server architecture showing render stages    
    30 <title>              Window Server architecture showing render stages    
    31        </title>
    31        </title>
    32 <image href="GUID-25A63716-D637-589D-BAB7-B962455F2DC6_d0e243458_href.png" placement="inline"/>
    32 <image href="GUID-25A63716-D637-589D-BAB7-B962455F2DC6_d0e249469_href.png" placement="inline"/>
    33 </fig> <p>Symbian provides default render stage plug-ins, which are of production
    33 </fig> <p>Symbian provides default render stage plug-ins, which are of production
    34 quality and reproduce the rendering behavior in Symbian OS v9.4. In ScreenPlay,
    34 quality and reproduce the rendering behavior in Symbian OS v9.4. In ScreenPlay,
    35 device creators can replace the render stage plug-ins with their own bespoke
    35 device creators can replace the render stage plug-ins with their own bespoke
    36 plug-ins. In the non-ScreenPlay variant, the interfaces are prototypes and
    36 plug-ins. In the non-ScreenPlay variant, the interfaces are prototypes and
    37 the render stage plug-ins should not be replaced in a real device. Note that
    37 the render stage plug-ins should not be replaced in a real device. Note that
    46 relevant draw operations onto a TFX surface. Then later the TFX render stage
    46 relevant draw operations onto a TFX surface. Then later the TFX render stage
    47 could inject those captured drawing operations into the displayed scene over
    47 could inject those captured drawing operations into the displayed scene over
    48 a sequence of frames, in order to create the desired effect. </p> <fig id="GUID-75F4A91E-D764-5BF4-8B21-74689EB43E7A">
    48 a sequence of frames, in order to create the desired effect. </p> <fig id="GUID-75F4A91E-D764-5BF4-8B21-74689EB43E7A">
    49 <title>              A typical render stage configuration, showing some of
    49 <title>              A typical render stage configuration, showing some of
    50 the key              interfaces            </title>
    50 the key              interfaces            </title>
    51 <image href="GUID-0F2AE495-F6D8-5351-BD83-76D579564C2E_d0e243480_href.png" placement="inline"/>
    51 <image href="GUID-0F2AE495-F6D8-5351-BD83-76D579564C2E_d0e249491_href.png" placement="inline"/>
    52 </fig> <p>The render stages are stacked on top of each other—effectively they
    52 </fig> <p>The render stages are stacked on top of each other—effectively they
    53 are chained into a pipeline, in which the Window Server "talks" only to the
    53 are chained into a pipeline, in which the Window Server "talks" only to the
    54 first render stage. This render stage in turn talks only to the second render
    54 first render stage. This render stage in turn talks only to the second render
    55 stage. Notice that the second render stage uses a concrete rendering API to
    55 stage. Notice that the second render stage uses a concrete rendering API to
    56 control the UI surface. This is in contrast to the first render stage, which
    56 control the UI surface. This is in contrast to the first render stage, which
    96 Although this is the usual practice, it is not mandatory. The concrete render
    96 Although this is the usual practice, it is not mandatory. The concrete render
    97 stage could instead delegate the implementation of some of the interfaces
    97 stage could instead delegate the implementation of some of the interfaces
    98 to helper classes. </p> <fig id="GUID-84104CD3-C78C-50C7-9155-50596B3EE3EF">
    98 to helper classes. </p> <fig id="GUID-84104CD3-C78C-50C7-9155-50596B3EE3EF">
    99 <title>              A concrete render stage class implementing key render
    99 <title>              A concrete render stage class implementing key render
   100 stage              interfaces            </title>
   100 stage              interfaces            </title>
   101 <image href="GUID-973CF8E7-18C8-5E24-BC7A-97148FAEF3E4_d0e243549_href.png" placement="inline"/>
   101 <image href="GUID-973CF8E7-18C8-5E24-BC7A-97148FAEF3E4_d0e249560_href.png" placement="inline"/>
   102 </fig> </section>
   102 </fig> </section>
   103 <section id="GUID-5D81D1A7-26A0-5461-9AC5-3EF359D283CB"><title>Advanced use
   103 <section id="GUID-5D81D1A7-26A0-5461-9AC5-3EF359D283CB"><title>Advanced use
   104 case</title> <p>Render stages can optionally create their own <b>visuals tree</b> to
   104 case</title> <p>Render stages can optionally create their own <b>visuals tree</b> to
   105 mirror the structure of the Window Server's window tree. The render stage
   105 mirror the structure of the Window Server's window tree. The render stage
   106 can then temporarily change the attributes of nodes in the tree and introduce
   106 can then temporarily change the attributes of nodes in the tree and introduce
   115 stage must implement the <xref href="GUID-21240143-D578-3114-9836-F765F70A987C.dita"><apiname>MWsDrawAnnotationObserver</apiname></xref>. The
   115 stage must implement the <xref href="GUID-21240143-D578-3114-9836-F765F70A987C.dita"><apiname>MWsDrawAnnotationObserver</apiname></xref>. The
   116 Window Server uses this to communicate which node in the tree each batch of
   116 Window Server uses this to communicate which node in the tree each batch of
   117 drawing operations relates to. </p> <fig id="GUID-97D46D41-589A-504D-B7C0-9092E6E5DF17">
   117 drawing operations relates to. </p> <fig id="GUID-97D46D41-589A-504D-B7C0-9092E6E5DF17">
   118 <title>              Render stage that has a visuals tree and visual stores
   118 <title>              Render stage that has a visuals tree and visual stores
   119            </title>
   119            </title>
   120 <image href="GUID-3248A2B1-54D0-56E3-B770-DC595B01EA04_d0e243585_href.png" placement="inline"/>
   120 <image href="GUID-3248A2B1-54D0-56E3-B770-DC595B01EA04_d0e249596_href.png" placement="inline"/>
   121 </fig> <p>Render stages that implement their own visuals stores typically
   121 </fig> <p>Render stages that implement their own visuals stores typically
   122 use the Window Server's <b>change-tracking</b> rendering mode. This is an
   122 use the Window Server's <b>change-tracking</b> rendering mode. This is an
   123 optimization of the <xref href="GUID-22093E74-EFE7-5642-93DE-1573E18F7C08.dita">Window
   123 optimization of the <xref href="GUID-22093E74-EFE7-5642-93DE-1573E18F7C08.dita">Window
   124 Server rendering loop</xref> for render stages that build visuals stores.
   124 Server rendering loop</xref> for render stages that build visuals stores.
   125 The render stage is then responsible for playing back the drawing operations
   125 The render stage is then responsible for playing back the drawing operations