Amaya Opengl Developpement

Amaya Concepts :

  1. Libwww is the module that get the file by network or on disks.
  2. We use the Expat parser to fill our structure in local memory, called the Abstract Image.
  3. From this structure, we aproximatively compute the visible area, and then fills the Concrete Image with onnly this portion.
  4. Concrete Image does some heavy formatting on Concrete Image.
  5. In order to draw on the canvas, Amaya draws boxes. Each box is a leaf, from the tree structure of the document. Each leaf has type : Text, Math, Graphics, Images.

From 2 to 5, this is done by the Thotlib module

For more details on source arragements, take a look at directories explanation here

Code :

Specific Code of the Amaya Opengl Developpement (Click on download of the latest version to see code) :

Why not an opengl plugin ? Why an entire opengl canvas ?

see herefor a short abstract on a presentation on the subject for the svg-open conference

Useful Links :

Scalable Vector Graphics

Edition guidelines

Why Opengl ?

First of all, a good way to see the Opengl capabilities to render SVG, is to try the demo of ARTSTREAM under Linux, a vector drawing software based on opengl. (It gives more control than illustrator on certain points : see here for a french graphist advice on it ) The only conclusion is : Too bad It doesn't export SVG.

It convinced me of opengl Applicability, so I've tried to find a solution for every element of the SVG DTD, in order to be sure that all can be done in SVG. So, here's some of my quicks answer to SVG requirements :

But the BIG issue is SVG animation : Vector calculations in combination of multilple realtime effects demands really heavy calculations. SVG animation demands animation with differents level of context and time, that can be encapsulated, all in a declarative way, with every SVG element... It's demands of defining specific optimized structures, buffers, transformations, cpu-call-handling, easy switching to lower the quality, high level mathematics optimisation. And If we can have hardware acceleration, we must do what we can to use it. Otherwise SVG animation won't make any sens before a long time, and SVG diffusion will suffer from it. Others solution exists, mainly software libraries, but none give hardware acceleration on so many platforms..

So what makes me thinking of opengl as the best solution to render SVG is :

Nearly fifteen years of experience in making animated graphics. Smooth Vector Animation Robust and very clean code.

last revised $Date: 2002/04/23 15:57:58 $ by $Author: pcheyrou $


Copyright    2002 W3C (MIT, INRIA, Keio ), All Rights Reserved. W3C liability, trademark, document use and software licensing rules apply.
Your interactions with this site are in accordance with our public and Member privacystatements.