[webkit-dev] KWQ Graphics crossplatform
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
Some good points pro Amanith could be:
- 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
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,
- 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,
- 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.
Matteo, main Amanith developer.
More information about the webkit-dev