253 lines
8.8 KiB
Plaintext
253 lines
8.8 KiB
Plaintext
ShivaVG
|
|
=============================
|
|
|
|
See AUTHORS for the list of contributors
|
|
|
|
ShivaVG is an open-source LGPL ANSI C implementation of the Khronos
|
|
Group OpenVG specification.
|
|
|
|
I. BUILD
|
|
II. TESTING
|
|
III. IMPLEMENTATION STATUS
|
|
IV. EXTENSIONS
|
|
|
|
|
|
I. BUILD
|
|
=============================
|
|
|
|
* Prerequisites:
|
|
|
|
OpenGL development libraries and headers should be installed.
|
|
Othe than that, since it's ANSI C should compile with any modern
|
|
C compiler. jpeglib needs to be installed for example programs
|
|
that use images.
|
|
|
|
* Compiling under UNIX systems:
|
|
|
|
Read the INSTALL file for more detailed (though generic) directions.
|
|
This library uses the standard ./configure ; make. The example
|
|
programs are automatically compiled. However, compilation of each
|
|
example program can be toggled by ./configure --with-example-xxx
|
|
command where xxx denotes the name of the example. Run ./configure
|
|
--help for a list of such options.
|
|
|
|
* Compiling on Mac:
|
|
|
|
No XCode project files provided yet. The easiest way is by just
|
|
using gcc, in which case look under UNIX compiling section.
|
|
|
|
* Compiling natively on Windows platform:
|
|
|
|
Solution files are provided for Visual C++ version 7 and 8. For
|
|
the example programs using images to compile, you will need the
|
|
appropriate build of jpeglib to match your Visual C++ version.
|
|
|
|
* Compiling in mingw / cygwin environment:
|
|
|
|
Might work just as fine as any UNIX-flavored system, but hasn't
|
|
been tested yet.
|
|
|
|
|
|
II. TESTING
|
|
=============================
|
|
|
|
There is no real testing suite yet. The example programs are there
|
|
just to play with what the implementation can currently do, but
|
|
can hardly provide any proper validation, since no reference images
|
|
are provided. Here is a description of each example program and
|
|
what features it highlights:
|
|
|
|
* test_vgu
|
|
|
|
Constructs some path primitives using the VGU API.
|
|
|
|
* test_tiger
|
|
|
|
The most simple performance test. It draws the well known svg
|
|
tiger using just simple stroke and fill of solid colors. It
|
|
consists of 240 paths.
|
|
|
|
* test_dash
|
|
|
|
Shows different stroke dashing modes.
|
|
|
|
* test_linear
|
|
|
|
A rectangle drawn using 3-color linear gradient fill paint
|
|
|
|
* test_radial
|
|
|
|
A rectangle drawn using 3-color radial gradient fill paint
|
|
|
|
* test_interpolate
|
|
|
|
Interpolates between two paths - an apple and a pear.
|
|
|
|
* test_image
|
|
|
|
Images are drawn using VG_DRAW_IMAGE_MULTIPLY image mode to be
|
|
multiplied with radial gradient fill paint.
|
|
|
|
* test_pattern
|
|
|
|
An image is drawn in multiply mode with an image pattern fill
|
|
paint.
|
|
|
|
|
|
III. IMPLEMENTATION STATUS
|
|
=============================
|
|
|
|
Khronos states in the OpenVG specification, that the contexts for all
|
|
their client APIs are expected to be created via the EGL API. Since
|
|
EGL to use with ShivaVG has not been implemented yet, there is a set
|
|
of extension functions provided for the task of creating, maintaining
|
|
and destroying the OpenVG context. (See next section EXTENSIONS for
|
|
details.)
|
|
|
|
What follows is a description of which functions or to what extent
|
|
a certain function has been implemented. When a function is marked
|
|
as PARTIALLY implemented, the TODO file or the comments in the code
|
|
itself would provide further clues.
|
|
|
|
|
|
* General:
|
|
|
|
vgGetError ............................ FULLY implemented
|
|
vgFlush ............................... FULLY implemented
|
|
vgFinish .............................. FULLY implemented
|
|
|
|
* Getters and setters:
|
|
|
|
vgSet ................................. FULLY implemented
|
|
vgSeti ................................ FULLY implemented
|
|
vgSetfv ............................... FULLY implemented
|
|
vgSetiv ............................... FULLY implemented
|
|
vgGetf ................................ FULLY implemented
|
|
vgGeti ................................ FULLY implemented
|
|
vgGetVectorSize ....................... FULLY implemented
|
|
vgGetfv ............................... FULLY implemented
|
|
vgGetiv ............................... FULLY implemented
|
|
vgSetParameterf ....................... FULLY implemented
|
|
vgSetParameteri ....................... FULLY implemented
|
|
vgSetParameterfv ...................... FULLY implemented
|
|
vgSetParameteriv ...................... FULLY implemented
|
|
vgGetParameterf ....................... FULLY implemented
|
|
vgGetParameteri ....................... FULLY implemented
|
|
vgGetParameterVectorSize............... FULLY implemented
|
|
vgGetParameterfv ...................... FULLY implemented
|
|
vgGetParameteriv ...................... FULLY implemented
|
|
|
|
* Matrix Manipulation:
|
|
|
|
vgLoadIdentity ........................ FULLY implemented
|
|
vgLoadMatrix .......................... FULLY implemented
|
|
vgGetMatrix ........................... FULLY implemented
|
|
vgMultMatrix .......................... FULLY implemented
|
|
vgTranslate ........................... FULLY implemented
|
|
vgScale ............................... FULLY implemented
|
|
vgShear ............................... FULLY implemented
|
|
vgRotate .............................. FULLY implemented
|
|
|
|
* Masking and Clearing:
|
|
|
|
vgMask ................................ NOT implemented
|
|
vgClear ............................... FULLY implemented
|
|
|
|
* Paths:
|
|
|
|
vgCreatePath .......................... FULLY implemented
|
|
vgClearPath ........................... FULLY implemented
|
|
vgDestroyPath ......................... FULLY implemented
|
|
vgRemovePathCapabilities .............. FULLY implemented
|
|
vgGetPathCapabilities ................. FULLY implemented
|
|
vgAppendPath .......................... FULLY implemented
|
|
vgAppendPathData ...................... FULLY implemented
|
|
vgModifyPathCoords .................... FULLY implemented
|
|
vgTransformPath ....................... FULLY implemented
|
|
vgInterpolatePath ..................... FULLY implemented
|
|
vgPathLength .......................... NOT implemented
|
|
vgPointAlongPath ...................... NOT implemented
|
|
vgPathBounds .......................... FULLY implemented
|
|
vgPathTransformedBounds ............... FULLY implemented
|
|
vgDrawPath ............................ PARTIALLY implemented
|
|
|
|
* Paint:
|
|
|
|
vgCreatePaint ......................... FULLY implemented
|
|
vgDestroyPaint ........................ FULLY implemented
|
|
vgSetPaint ............................ FULLY implemented
|
|
vgGetPaint ............................ FULLY implemented
|
|
vgSetColor ............................ FULLY implemented
|
|
vgGetColor ............................ FULLY implemented
|
|
vgPaintPattern ........................ FULLY implemented
|
|
|
|
* Images:
|
|
|
|
vgCreateImage ......................... PARTIALLY implemented
|
|
vgDestroyImage ........................ FULLY implemented
|
|
vgClearImage .......................... FULLY implemented
|
|
vgImageSubData ........................ PARTIALLY implemented
|
|
vgGetImageSubData ..................... PARTIALLY implemented
|
|
vgChildImage .......................... NOT implemented
|
|
vgGetParent ........................... NOT implemented
|
|
vgCopyImage ........................... FULLY implemented
|
|
vgDrawImage ........................... PARTIALLY implemented
|
|
vgSetPixels ........................... FULLY implemented
|
|
vgWritePixels ......................... FULLY implemented
|
|
vgGetPixels ........................... FULLY implemented
|
|
vgReadPixels .......................... FULLY implemented
|
|
vgCopyPixels .......................... FULLY implemented
|
|
|
|
* Image Filters:
|
|
|
|
vgColorMatrix ......................... NOT implemented
|
|
vgConvolve ............................ NOT implemented
|
|
vgSeparableConvolve ................... NOT implemented
|
|
vgGaussianBlur ........................ NOT implemented
|
|
vgLookup .............................. NOT implemented
|
|
vgLookupSingle ........................ NOT implemented
|
|
|
|
* Hardware Queries:
|
|
|
|
vgHardwareQuery ....................... NOT implemented
|
|
|
|
* Renderer and Extension Information:
|
|
|
|
vgGetString ........................... FULLY implemented
|
|
|
|
* VGU
|
|
|
|
vguLine ............................... FULLY implemented
|
|
vguPolygon ............................ FULLY implemented
|
|
vguRect ............................... FULLY implemented
|
|
vguRoundRect .......................... FULLY implemented
|
|
vguEllipse ............................ FULLY implemented
|
|
vguArc ................................ FULLY implemented
|
|
vguComputeWarpQuadToSquare ............ NOT implemented
|
|
vguComputeWarpSquareToQuad ............ NOT implemented
|
|
vguComputeWarpQuadToQuad .............. NOT implemented
|
|
|
|
|
|
IV. EXTENSIONS
|
|
=============================
|
|
|
|
There are three extensions to the API that manipulate the OpenVG
|
|
context as a temporary replacement for EGL:
|
|
|
|
VGboolean vgCreateContextSH(VGint width, VGint height)
|
|
|
|
Creates an OpenVG context on top of an existing OpenGL context
|
|
that should have been manually initialized by the user of the
|
|
library. Width and height specify the size of the rendering
|
|
surface. No multi-threading support has been implemented yet.
|
|
The context is created once per process.
|
|
|
|
void vgResizeSurfaceSH(VGint width, VGint height)
|
|
|
|
Should be called whenever the size of the surface changes (e.g.
|
|
the owner window of the OpenGL context is resized).
|
|
|
|
void vgDestroyContextSH()
|
|
|
|
Destroys the OpenVG context associated with the calling process.
|