Mac OS X Porting - Canvas

From Apache OpenOffice Wiki
Revision as of 10:19, 5 September 2006 by Mox (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Contributors

  • Mox Soini: Mox

Introduction

The current rendering framework in OpenOffice.org (OOo) is VCL. It is very Windows-oriented API that is hard to port to other platforms. Despite this, there are several ports available, including Unix/X11 and upcoming [AquaBuild|Native Mac OS X port using Carbon].

The future rendering framework in OpenOffice.org (OOo) is [UNO XCanvas rendering framework]. The benefits include a well designed API (easier to port, easier to use) and a more strong isolation of the API from the rest of the OOo (One of the big problems of the current VCL is that also the internals of the VCL are used from many places in the OOo code).

To facilitate easier migration, one of the OOo XCanvas API implementations is based on VCL. This means that once the VCL part of OOo has been ported, also the XCanvas API works for that platform. This approach has made it possible to start the conversion from VCL to XCanvas, even though some of the non-VCL XCanvas implementations are missing.

Currently (September 2006) the XCanvas has been converted to OOo Impress slideshow, with prototypes working in Draw and Impress. Future work will include converting Calc and Writer.

Roadmap for Canvas in Mac OS X

Short term: use the VCL implementation of XCanvas (somewhat works, handled by the [AquaBuild|Aqua port]).

Long term: create a native implementation of XCanvas. There are two alternative ways to complete this:

  1. Create complete implementation in OOo (like the Windows implementation, not worked on in Mac OS X)
  2. Create implementation based on Cairo -library (like the Linux implementation, this is the currently chosen alternative for Mac OS X)

The benefits of cairo-based implementation include:

  • Less code in OOo, more shared code with other open source programs
  • Cairo has been already ported to Mac OS X, no need to duplicate that effort for OOo only.

Links

Personal tools