[webkit-dev] KWQ Graphics crossplatform

Matteo Muratori muratmat at gmail.com
Fri Jan 20 02:45:39 PST 2006


I've read the post "KWQ Graphics code on Windows", and it seems that 
crossplatform need is an absolutely critical point.
So I'm just if Amanith ( http://www.amanith.org ) would be the solution 
you are searching for (that can reduces maintenance and maximizes 
developer support).

Some good points pro Amanith could be:
- opensource
- real crossplatform architecture (the same source tree has been 
compiled and tested on 32/64bit systems,  Windows2k/XP,  MacOS X, Linux, 
*BSD, Irix, Solaris)
- use of pure ANSI C++
- clear and stable API (never changed since first release)
- the rendering engine has already a first implementation built on top 
of OpenGL (going from OpenGL 1.1 to OpenGL 2.0, using extensions where 
available and fragment programs too), other platform specific 
implementations will come later. Taken from website (about Amanith 0.2 
version):
"
         The entire drawboard is adaptive; performance and visual 
quality are scalable using three quality steps: LOW, NORMAL, HIGH.
        - Fragment programs can be forced off by the user. This 
parameter can be useful on those boards where they are badly supported.
        - Logical viewport can be modified independently by the physical 
one, at any time.
        - Shapes can be stroked and/or filled, independently.
        - Stroke can be solid or dashed (with an optional initial 
phase), and also stroke thickness can be changed.
        - Supported stroke joins are: BEVEL, ROUND, MITER.
        - Supported stroke caps are: BUTT, SQUARE, ROUND.
        - Supported drawing styles are: PLAIN COLOR, LINEAR GRADIENT, 
RADIAL GRADIENT, CONICAL GRADIENT, PATTERN.
        - Supported color interpolation modes in gradients are: 
CONSTANT, LINEAR, HERMITE.
        - Supported spread methods in gradients and patterns are: PAD, 
REPEAT, REFLECT.
        - Gradients and patterns have their own transformation matrix, 
that is independent from all other matrices.
        - The opacity is always supported in colors, gradients, 
gradients color keys and patterns.
        - Group opacity is also supported, but it requires that OpenGL 
render context has been opened with at least 4bits stencil buffer.
        - Clip paths are supported when the OpenGL render context has 
been opened with at least 4bits stencil buffer. They can be
        enabled/disabled at any time. From the user point of view, clip 
paths are exposed through a 'stack', where paths can be
        pushed and popped specifying an AND or REPLACE operator.
        - Stroke and fill can be drawn using any of supported styles, 
independently.
        - Supported geometric primitives are: LINE, QUADRATIC BEZIER, 
CUBIC BEZIER, ELLIPTICAL ARC, RECTANGLE, ROUND RECTANGLE,
        CIRCLE, ELLIPSE, POLYGON, PATH.
        - Path can be specified using SVG commands or directly with SVG 
string (path 'd' attribute).
        - All Amanith curves and path can be drawn directly, this makes 
the user free to draw also BSpline, high order Bezier and so on.
        - Every shape can be transformed specifying a model-view matrix, 
that can be changed at any time.
"
The incoming 0.3 version will include geometry caching, clip paths with 
union operations and full SVG 1.2 compositing modes (a pre-test example 
could be found here 
http://www.amanith.org/test/Amanith-HWcompositing.png ), 15 of them are 
available also without pixel shaders.

Currently Amanith lacks of text support, but it's already planned for 
the end of Q2 2006, and it will be fully accelerated.
Amanith team is also cooperating with KSVG2 guys on an Amanith backend.

Regards,
       Matteo, main Amanith developer.




More information about the webkit-dev mailing list