A Modular SVG Engine Architecture for Information Appliances

MORITA Hajime, YAMAKAMI Toshihiko, KAMADA Tomihisa
Research & Development Division

Rich user experiences such as interactive, dynamic graphics and animated GUIs are required for Non-PC devices (Information Appliances), as they penetrate into every day's life. SVG is one of platforms that can deliver such user experiences, and are aligned to the standard Internet technologies and then have compatibility with Web architecture and XML applications like XHTML and SMIL. Because of its presentation capability and interoperability, SVG catches developer's attention. Several vendors provide commercial implementations.

Non-PC devices, which include mobile phones, digital TV sets, car telematics, have various and limited resources compared to desktop PCs. These resources include small memory size, CPU power, small screen size, restricted input methods, and network bandwidth. This paper focuses the firt two critical resources: memory size and CPU power. The diversity includes 200KB to 10 MB in memory and 10MHz to 1GHz in CPU power. This limitations and diversities poses a serious challenge for interoperability, portability and software quality management in SVG implementations.

We propose an architecture for the SVG engine to address this challenging problem. The engine is designed for NetFront3™, popular browser software for Non-PC devices. Our "flow centralization" architecture promotes the modularity and customizability. This facilitates loose coupling among Slave modules, provides encapsulation in Slave implementations. This makes the Slave customization easy and tunable, and improves the software maintenance in a wide range of porting environments.

Flow centralization architecture consists of two components: Kernel and Slave. All messages and events are pulled by a central component "Kernel" from following "Slave" compoment. Then, the Kernel passes it to other appropriate target Slave component. All the Slave component are passive (static). The Kernel is the unique active component to perform application specific operations and control Slaves. This achieves loose coupling, a key of the modularity. Because Slaves have no direct dependency to other Slaves and Kernels encapsulate such dependencies instead.

The Kernel enables the module abstraction in Slave component implementations. This architecture also facilitates the application specific performance tuning. SVG applications include a web browser plug-in, an image decoder, a map navigator and GUI widgets. The requirements and implemntation strategies differ in each application. We can reuse the Slave components in each application when we tune the Kernel to cope with the different requirements. In a web browser plug-in case, it needs user interactions, animations and DOM bindings. It requires XML document trees as an intermediate data model and compiled rendering streams like OpenGL's display lists. An image decoder case does not need these functions. In this case, separate Kernel implementations provide the optimal footprint and performance.

In summary, the proposed flow centralization architecture provides the portability and customizability with the optimal footprint and performance. The effect of the architecture is shown in several SVG application examples.