OpenVG Interface Component Overview

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.

Variant: ScreenPlay and non-ScreenPlay.

Supported APIs

The OpenVG specifications are defined by the Khronos Group (www.khronos.org). The following table provides links to the relevant specifications.

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).

Header files

The OpenVG Interface component includes the Khronos-released header files openvg.h and vgu.h. These header files incorporate minor changes such as Doxygen tags (/** comments) and the Symbian-defined macro __SOFTFP, 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.

The header files are provided for both OpenVG 1.0 and OpenVG 1.1. Stub openvg.h and vgu.h files redirect to the OpenVG 1.0 headers by default. However a variability point can be used to expose the OpenVG 1.1 headers.

The Symbian-defined header file /epoc32/include/khronos_types.h maps the Khronos-defined basic types to native Symbian types.

Floating point conventions

Within the Khronos-supplied header files, the Symbian-defined macro __SOFTFP has been added to the declaration of all functions that pass, or return, floating point numbers by value. This means that:

  • 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.

  • 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.

  • 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.

Library names

The OpenVG Interface component includes the following LIB files:

Library Name

OpenVG

libOpenVG.lib

VGU

libOpenVGU.lib

The corresponding DLL files must be delivered by the implementation.

DEF files

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.

DEF files for WINS and WINSCW

Library Name

OpenVG 1.0.1

\epoc32\include\platform\def\win32\libopenvg10u.def

VGU 1.0.1

\epoc32\include\platform\def\win32\libopenvgu10u.def

OpenVG 1.1

\epoc32\include\platform\def\win32\libopenvg11u.def

VGU 1.1

\epoc32\include\platform\def\win32\libopenvgu11u.def

DEF files for ARM

Library Name

OpenVG 1.0.1

\epoc32\include\platform\def\eabi\libopenvg10u.def

VGU 1.0.1

\epoc32\include\platform\def\eabi\libopenvgu10u.def

OpenVG 1.1

\epoc32\include\platform\def\eabi\libopenvg11u.def

VGU 1.1

\epoc32\include\platform\def\eabi\libopenvgu11u.def