Week 32 contribution of PDK documentation content. See release notes for details. Fixes bug Bug 3582
<?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 id="GUID-7EFBEEAD-3E74-5165-B305-313F7DE4BEB4" xml:lang="en"><title>OpenVG
Interface Component Overview</title><shortdesc>The OpenVG Interface component defines the interface to OpenVG
on the Symbian platform. The component standardizes the source and binary
interfaces in order to encourage both source and binary compatibility between
Symbian-based OpenVG implementations.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
<p> <b>Variant</b>: <xref href="GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.dita">ScreenPlay</xref> and <xref href="GUID-F64E6551-670E-5E12-8103-DE504D3EC94F.dita">non-ScreenPlay</xref>. </p>
<section id="GUID-4EEEC806-7C29-4D4B-963B-50311687F480"><title>Supported APIs</title> <p>The OpenVG specifications are defined
by the Khronos Group (<xref href="http://www.khronos.org" scope="external">www.khronos.org</xref>).
The following table provides links to the relevant specifications. </p> <table id="GUID-5B734E4C-E838-5478-990F-817F4D0971FB">
<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
<thead>
<row>
<entry>APIs</entry>
<entry>Specification</entry>
</row>
</thead>
<tbody>
<row>
<entry><p>OpenVG 1.0.1 and VGU 1.0 </p> </entry>
<entry><p> <xref href="http://www.khronos.org/registry/vg/specs/openvg_1_0_1.pdf" scope="external">http://www.khronos.org/registry/vg/specs/openvg_1_0_1.pdf </xref> </p> </entry>
</row>
<row>
<entry><p>OpenVG 1.1 and VGU 1.1 </p> </entry>
<entry><p> <xref href="http://www.khronos.org/registry/vg/specs/openvg-1.1.pdf" scope="external">http://www.khronos.org/registry/vg/specs/openvg-1.1.pdf </xref> </p> </entry>
</row>
</tbody>
</tgroup>
</table> <p>VGU provides some handy functions that can be used by OpenVG applications.
For example, it provides functions for drawing primitives (such as lines,
polygons, rectangles and arcs) and for computing warp matrixes. The latter
transform the drawing surface from one shape to another (for example, from
a square to an arbitrary quadrilateral defined by points). </p> </section>
<section id="GUID-81AD9891-73BD-4AEB-A975-2B65011CA801"><title>Header files</title> <p>The OpenVG Interface component includes
the Khronos-released header files <filepath>openvg.h</filepath> and <filepath>vgu.h</filepath>.
These header files incorporate minor changes such as Doxygen tags (<codeph>/**</codeph> comments)
and the Symbian-defined macro <xref href="GUID-95CD96CA-70FD-325A-9D97-0E2BCB4C92FF.dita"><apiname>__SOFTFP</apiname></xref>, which is described
below. Use of these standard header files helps to ensure binary compatibility
for applications across different Symbian platforms. It also provides source
compatibility between different operating systems. </p> <p>The header files
are provided for both OpenVG 1.0 and OpenVG 1.1. Stub <filepath>openvg.h</filepath> and <filepath>vgu.h</filepath> files
redirect to the OpenVG 1.0 headers by default. However a variability point
can be used to expose the OpenVG 1.1 headers. </p> <p>The Symbian-defined
header file <filepath>/epoc32/include/khronos_types.h</filepath> maps the
Khronos-defined basic types to native Symbian types. </p> </section>
<section id="GUID-6C35C182-B177-4646-9C5B-DD753E16425B"><title>Floating point conventions</title> <p>Within the Khronos-supplied
header files, the Symbian-defined macro <xref href="GUID-95CD96CA-70FD-325A-9D97-0E2BCB4C92FF.dita"><apiname>__SOFTFP</apiname></xref> has been
added to the declaration of all functions that pass, or return, floating point
numbers by value. This means that: </p> <ul>
<li id="GUID-85D70C88-01C9-5ACF-A39E-F2DC74158FD8"><p>When using the API both
clients and the OpenVG implementation must use software floating point calling
conventions, regardless whether hardware or software floating point compiler
options are actually used. </p> </li>
<li id="GUID-C755520B-8CC8-55E0-A47F-584A7C3A19C5"><p>If suitable hardware
is available, the OpenVG implementation can use hardware-accelerated floating
point features internally without a risk of binary incompatibility with client
programs. </p> </li>
<li id="GUID-6C5F4FDE-7C69-5C47-9D10-4CB6A43EB0B8"><p>If suitable hardware
is available, OpenVG client programs can use hardware-accelerated floating
point features internally without a risk of binary incompatibility with the
OpenVG implementation. </p> </li>
</ul> </section>
<section id="GUID-7B98DA1E-B9F7-4A6B-8B9E-498785340B47"><title>Library names</title> <p>The OpenVG Interface component includes
the following LIB files: </p> <table id="GUID-DB65C429-5A67-5D4B-A42D-D48883BEB94F">
<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
<thead>
<row>
<entry>Library</entry>
<entry>Name</entry>
</row>
</thead>
<tbody>
<row>
<entry><p>OpenVG </p> </entry>
<entry><p> <filepath>libOpenVG.lib</filepath> </p> </entry>
</row>
<row>
<entry><p>VGU </p> </entry>
<entry><p> <filepath> libOpenVGU.lib</filepath> </p> </entry>
</row>
</tbody>
</tgroup>
</table> <p>The corresponding DLL files must be delivered by the implementation. </p> </section>
<section id="GUID-2F975C84-2420-450D-ADAB-D4DDF709AB05"><title>DEF files</title> <p>The OpenVG Interface component supplies
DEF files to further ensure binary compatibility between different platforms.
These files exist for the WINS and WINSCW emulator and ARM hardware platforms
as shown in the following tables. Although the names have a trailing "u",
this is not specified in the MMP file because it is appended automatically. </p> <p><b>DEF files for WINS and WINSCW </b> </p> <table id="GUID-2F4052FB-DEB3-5849-954A-8D6A333E3916">
<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
<thead>
<row>
<entry>Library</entry>
<entry>Name</entry>
</row>
</thead>
<tbody>
<row>
<entry><p>OpenVG 1.0.1 </p> </entry>
<entry><p> <filepath>\epoc32\include\platform\def\win32\libopenvg10u.def</filepath> </p> </entry>
</row>
<row>
<entry><p>VGU 1.0.1 </p> </entry>
<entry><p> <filepath>\epoc32\include\platform\def\win32\libopenvgu10u.def</filepath> </p> </entry>
</row>
<row>
<entry><p>OpenVG 1.1 </p> </entry>
<entry><p> <filepath>\epoc32\include\platform\def\win32\libopenvg11u.def</filepath> </p> </entry>
</row>
<row>
<entry><p>VGU 1.1 </p> </entry>
<entry><p> <filepath>\epoc32\include\platform\def\win32\libopenvgu11u.def</filepath> </p> </entry>
</row>
</tbody>
</tgroup>
</table> <p><b>DEF files for ARM </b> </p> <table id="GUID-B067511D-B957-5BC1-9967-04FADE5EF079">
<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
<thead>
<row>
<entry>Library</entry>
<entry>Name</entry>
</row>
</thead>
<tbody>
<row>
<entry><p>OpenVG 1.0.1 </p> </entry>
<entry><p> <filepath>\epoc32\include\platform\def\eabi\libopenvg10u.def</filepath> </p> </entry>
</row>
<row>
<entry><p>VGU 1.0.1 </p> </entry>
<entry><p> <filepath> \epoc32\include\platform\def\eabi\libopenvgu10u.def</filepath> </p> </entry>
</row>
<row>
<entry><p>OpenVG 1.1 </p> </entry>
<entry><p> <filepath>\epoc32\include\platform\def\eabi\libopenvg11u.def</filepath> </p> </entry>
</row>
<row>
<entry><p>VGU 1.1 </p> </entry>
<entry><p> <filepath> \epoc32\include\platform\def\eabi\libopenvgu11u.def</filepath> </p> </entry>
</row>
</tbody>
</tgroup>
</table> </section>
</conbody><related-links>
<link href="GUID-1A8ED0EB-B3B7-553F-95E3-2120D877966B.dita"><linktext>OpenVG Collection
Overview</linktext></link>
<link href="GUID-C2E24953-3D83-59FB-8B7A-C850474406DB.dita"><linktext>OpenVG Interface
Component</linktext></link>
</related-links></concept>