diff --git a/Changes b/Changes
new file mode 100644
--- /dev/null
+++ b/Changes
@@ -0,0 +1,3 @@
+
+version 0.1.0 (?? Dec 2009):
+  * Initial version - extracted code from OpenVG-0.5.0
diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,30 @@
+Copyright (c) 2008 Stephen Peter Tetley
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+3. Neither the name of the author nor the names of his contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
diff --git a/OpenVGRaw.cabal b/OpenVGRaw.cabal
new file mode 100644
--- /dev/null
+++ b/OpenVGRaw.cabal
@@ -0,0 +1,57 @@
+name:             OpenVGRaw
+version:          0.1.0
+license:          BSD3
+license-file:     LICENSE
+copyright:        Stephen Tetley <stephen.tetley@gmail.com>
+maintainer:       Stephen Tetley <stephen.tetley@gmail.com>
+homepage:         http://code.google.com/p/copperbox/
+category:         Graphics
+synopsis:         Raw binding to OpenVG (ShivaVG-0.2.1 implementation).
+description:
+  A raw Haskell binding to OpenVG vector graphics API version 
+  1.0.1, specifically the ShivaVG-0.2.1 implementation.
+  .
+  Following Sven Panne\'s OpenGL model this is essentially a 1:1
+  mapping between the OpenVG C API and Haskell.
+  .
+build-type:         Simple
+stability:          experimental
+cabal-version:      >= 1.2
+
+extra-source-files:
+  Changes
+
+library
+  hs-source-dirs:     src
+  build-depends:      base < 5,
+                      OpenGLRaw >= 1.1.0.1 && < 2
+
+  exposed-modules:
+    Graphics.Rendering.OpenVG.Raw.VG.Blending,
+    Graphics.Rendering.OpenVG.Raw.VG.Core101,
+    Graphics.Rendering.OpenVG.Raw.VG.DrawingContext,
+    Graphics.Rendering.OpenVG.Raw.VG.Extending,
+    Graphics.Rendering.OpenVG.Raw.VG.Images,
+    Graphics.Rendering.OpenVG.Raw.VG.Paint,
+    Graphics.Rendering.OpenVG.Raw.VG.Parameters,
+    Graphics.Rendering.OpenVG.Raw.VG.Paths,
+    Graphics.Rendering.OpenVG.Raw.VG.RenderingQuality,
+    Graphics.Rendering.OpenVG.Raw.VG.Scissoring,
+    Graphics.Rendering.OpenVG.Raw.VG.ShivaExtensions,
+    Graphics.Rendering.OpenVG.Raw.VGU.VGU
+
+  other-modules:
+    Graphics.Rendering.OpenVG.Raw.VG.BasicTypes,
+    Graphics.Rendering.OpenVG.Raw.VG.Constants,
+    Graphics.Rendering.OpenVG.Raw.VG.CFunDecls,
+    Graphics.Rendering.OpenVG.Raw.VGU.CInternals
+  
+  extensions:
+    ForeignFunctionInterface, CPP
+
+  ghc-options:  -Wall 
+  
+
+  
+  
+  
diff --git a/Setup.hs b/Setup.hs
new file mode 100644
--- /dev/null
+++ b/Setup.hs
@@ -0,0 +1,5 @@
+#!/usr/bin/env runhaskell
+
+import Distribution.Simple
+
+main = defaultMain
diff --git a/src/Graphics/Rendering/OpenVG/Raw/VG/BasicTypes.hsc b/src/Graphics/Rendering/OpenVG/Raw/VG/BasicTypes.hsc
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenVG/Raw/VG/BasicTypes.hsc
@@ -0,0 +1,62 @@
+{-# LANGUAGE CPP                        #-}
+{-# LANGUAGE ForeignFunctionInterface   #-}
+{-# OPTIONS -Wall #-}
+
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenVG.Raw.VG.BasicTypes
+-- Copyright   :  (c) Stephen Tetley 2009
+-- License     :  BSD3
+--
+-- Maintainer  :  Stephen Tetley <stephen.tetley@gmail.com>
+-- Stability   :  highly unstable
+-- Portability :  GHC
+--
+-- This module corresponds to sections 3.2 (Primitive Data Types) 
+-- and 3.6 (Handle-based Data Types) of the OpenVG 1.0.1 specs.
+-- 
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenVG.Raw.VG.BasicTypes where
+
+#include <vg/openvg.h>
+
+import Graphics.Rendering.OpenGL.Raw.Core31
+
+import Foreign.Ptr
+
+type VGfloat    = GLfloat
+type VGbyte     = GLbyte
+type VGubyte    = GLubyte
+type VGshort    = GLshort
+type VGint      = GLint
+type VGuint     = GLuint
+type VGbitfield = GLbitfield
+
+type VGenum     = GLenum 
+
+
+
+type VGboolean = GLint
+
+#{enum VGboolean,
+  , vg_FALSE    = VG_FALSE
+  , vg_TRUE     = VG_TRUE
+  }
+    
+newtype VGHandle = VGHandle (Ptr ())
+
+
+vg_INVALID_HANDLE :: VGHandle 
+vg_INVALID_HANDLE = VGHandle nullPtr
+
+
+type VGPath  = VGHandle
+type VGImage = VGHandle
+type VGPaint = VGHandle
+
+
+type Point = (VGfloat, VGfloat)
+
+
diff --git a/src/Graphics/Rendering/OpenVG/Raw/VG/Blending.hs b/src/Graphics/Rendering/OpenVG/Raw/VG/Blending.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenVG/Raw/VG/Blending.hs
@@ -0,0 +1,39 @@
+{-# OPTIONS -Wall #-}
+
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenVG.Raw.VG.Blending
+-- Copyright   :  (c) Stephen Tetley 2009
+-- License     :  BSD3
+--
+-- Maintainer  :  Stephen Tetley <stephen.tetley@gmail.com>
+-- Stability   :  unstable
+-- Portability :  GHC
+--
+-- This module corresponds to section 12 (Blending) 
+-- of the OpenVG 1.0.1 specs.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenVG.Raw.VG.Blending (
+  -- * Tokens
+  vg_BLEND_SRC,
+  vg_BLEND_SRC_OVER,
+  vg_BLEND_DST_OVER,
+  vg_BLEND_SRC_IN,
+  vg_BLEND_DST_IN,
+  vg_BLEND_MULTIPLY,
+  vg_BLEND_SCREEN,
+  vg_BLEND_DARKEN,
+  vg_BLEND_LIGHTEN,
+  vg_BLEND_ADDITIVE,
+  vg_BLEND_SRC_OUT_SH,
+  vg_BLEND_DST_OUT_SH,
+  vg_BLEND_SRC_ATOP_SH,
+  vg_BLEND_DST_ATOP_SH
+
+) where
+
+import Graphics.Rendering.OpenVG.Raw.VG.Core101
+
+
diff --git a/src/Graphics/Rendering/OpenVG/Raw/VG/CFunDecls.hsc b/src/Graphics/Rendering/OpenVG/Raw/VG/CFunDecls.hsc
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenVG/Raw/VG/CFunDecls.hsc
@@ -0,0 +1,397 @@
+{-# LANGUAGE CPP                        #-}
+{-# LANGUAGE ForeignFunctionInterface   #-}
+{-# OPTIONS -Wall #-}
+
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenVG.Raw.VG.CFunDecls
+-- Copyright   :  (c) Stephen Tetley 2009
+-- License     :  BSD3
+--
+-- Maintainer  :  Stephen Tetley <stephen.tetley@gmail.com>
+-- Stability   :  highly unstable
+-- Portability :  GHC
+--
+-- Internal module declaring all the foreign declarations of the 
+-- functions defined in <vg/openvg.h>.
+--
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenVG.Raw.VG.CFunDecls where
+
+#include <vg/openvg.h>
+
+import Graphics.Rendering.OpenVG.Raw.VG.BasicTypes
+
+import Foreign.Ptr ( Ptr )
+import Foreign.C.String ( CString )
+
+
+--------------------------------------------------------------------------------
+--
+-- Section 4 - Drawing Context
+
+
+foreign import ccall unsafe "vg/openvg.h vgGetError"
+    vgGetError :: IO VGenum
+
+
+
+foreign import ccall unsafe "vg/openvg.h vgFlush"
+    vgFlush :: IO ()
+
+foreign import ccall unsafe "vg/openvg.h vgFinish"
+    vgFinish ::  IO ()
+
+--------------------------------------------------------------------------------
+--
+-- Section 5 - Setting API Parameters
+
+foreign import ccall unsafe "vg/openvg.h vgSeti"
+    vgSeti :: VGenum -> VGint -> IO ()
+
+foreign import ccall unsafe "vg/openvg.h vgSetf"
+    vgSetf :: VGenum -> VGfloat -> IO ()
+
+foreign import ccall unsafe "vg/openvg.h vgSetfv"
+    vgSetfv :: VGenum -> VGint -> Ptr VGfloat -> IO ()
+
+foreign import ccall unsafe "vg/openvg.h vgSetiv"
+    vgSetiv :: VGenum -> VGint -> Ptr VGint -> IO ()
+
+foreign import ccall unsafe "vg/openvg.h vgGetf"
+    vgGetf :: VGenum -> IO VGfloat
+
+foreign import ccall unsafe "vg/openvg.h vgGeti"
+    vgGeti :: VGenum -> IO VGint
+
+foreign import ccall unsafe "vg/openvg.h vgGetVectorSize"
+    vgGetVectorSize :: VGenum -> IO VGint
+
+foreign import ccall unsafe "vg/openvg.h vgGetfv"
+    vgGetfv :: VGenum -> VGint -> IO (Ptr VGfloat)
+
+foreign import ccall unsafe "vg/openvg.h vgGetiv"
+    vgGetiv :: VGenum -> VGint -> IO (Ptr VGint)
+
+foreign import ccall unsafe "vg/openvg.h vgSetParameterf"
+    vgSetParameterf :: VGHandle -> VGenum -> VGfloat -> IO ()
+
+foreign import ccall unsafe "vg/openvg.h vgSetParameteri"
+    vgSetParameteri :: VGHandle -> VGenum -> VGint -> IO ()
+
+foreign import ccall unsafe "vg/openvg.h vgSetParameterfv"
+    vgSetParameterfv :: VGHandle -> VGenum -> VGint -> Ptr VGfloat -> IO ()
+
+foreign import ccall unsafe "vg/openvg.h vgSetParameteriv"
+    vgSetParameteriv :: VGHandle -> VGenum -> VGint -> Ptr VGint -> IO ()
+
+foreign import ccall unsafe "vg/openvg.h vgGetParameterf"
+    vgGetParameterf :: VGHandle -> VGenum -> IO VGfloat
+
+foreign import ccall unsafe "vg/openvg.h vgGetParameteri"
+    vgGetParameteri :: VGHandle -> VGenum -> IO VGint
+
+foreign import ccall unsafe "vg/openvg.h vgGetParameterVectorSize"
+    vgGetParameterVectorSize :: VGHandle -> VGenum -> IO VGint
+
+foreign import ccall unsafe "vg/openvg.h vgGetParameterfv"
+    vgGetParameterfv :: VGHandle -> VGenum -> VGint -> IO (Ptr VGfloat)
+
+foreign import ccall unsafe "vg/openvg.h vgGetParameteriv"
+    vgGetParameteriv :: VGHandle -> VGenum -> VGint -> IO (Ptr VGint)
+
+--------------------------------------------------------------------------------
+-- Section 6 - Rendering Quality
+
+foreign import ccall unsafe "vg/openvg.h vgLoadIdentity"
+    vgLoadIdentity :: IO ()
+
+foreign import ccall unsafe "vg/openvg.h vgLoadMatrix"
+    vgLoadMatrix :: Ptr VGfloat -> IO ()
+
+foreign import ccall unsafe "vg/openvg.h vgGetMatrix"
+    vgGetMatrix :: IO (Ptr VGfloat)
+
+foreign import ccall unsafe "vg/openvg.h vgMultMatrix"
+    vgMultMatrix :: Ptr VGfloat -> IO ()
+
+foreign import ccall unsafe "vg/openvg.h vgTranslate"
+    vgTranslate :: VGfloat -> VGfloat -> IO ()
+
+foreign import ccall unsafe "vg/openvg.h vgScale"
+    vgScale :: VGfloat -> VGfloat -> IO ()
+
+foreign import ccall unsafe "vg/openvg.h vgShear"
+    vgShear :: VGfloat -> VGfloat -> IO ()
+
+foreign import ccall unsafe "vg/openvg.h vgRotate"
+    vgRotate :: VGfloat -> IO ()
+
+--------------------------------------------------------------------------------
+-- Section 7 - Scissoring
+
+-- Stubbed in shivaVG 0.2.1 (not implemented)
+foreign import ccall unsafe "vg/openvg.h vgMask"
+    vgMask :: VGImage -> VGenum -> VGint -> VGint -> VGint -> VGint -> IO ()
+
+
+foreign import ccall unsafe "vg/openvg.h vgClear"
+    vgClear :: VGint -> VGint -> VGint -> VGint -> IO ()
+
+
+--------------------------------------------------------------------------------
+-- Section 8 - Paths
+
+foreign import ccall unsafe "vg/openvg.h vgCreatePath"
+    vgCreatePath :: VGint -> VGenum -> VGfloat -> VGfloat -> VGint -> VGint
+                 -> VGbitfield
+                 -> IO VGPath
+
+foreign import ccall unsafe "vg/openvg.h vgClearPath"
+    vgClearPath :: VGPath -> VGbitfield -> IO ()
+
+foreign import ccall unsafe "vg/openvg.h vgDestroyPath"
+    vgDestroyPath :: VGPath -> IO ()
+
+foreign import ccall unsafe "vg/openvg.h vgRemovePathCapabilities"
+    vgRemovePathCapabilities :: VGPath -> VGbitfield -> IO ()
+
+foreign import ccall unsafe "vg/openvg.h vgGetPathCapabilities"
+    vgGetPathCapabilities :: VGPath -> IO VGbitfield
+
+foreign import ccall unsafe "vg/openvg.h vgAppendPath"
+    vgAppendPath :: VGPath -> VGPath -> IO ()
+
+foreign import ccall unsafe "vg/openvg.h vgAppendPathData"
+    vgAppendPathData :: VGPath -> VGint -> Ptr VGubyte -> Ptr a -> IO ()
+
+foreign import ccall unsafe "vg/openvg.h vgModifyPathCoords"
+    vgModifyPathCoords :: VGPath -> VGint -> VGint -> Ptr a -> IO ()
+
+foreign import ccall unsafe "vg/openvg.h vgTransformPath"
+    vgTransformPath :: VGPath -> VGPath -> IO ()
+
+foreign import ccall unsafe "vg/openvg.h vgInterpolatePath"
+    vgInterpolatePath :: VGPath -> VGPath -> VGPath -> VGfloat -> IO VGboolean
+
+-- Stubbed in shivaVG 0.2.1 (not implemented)
+foreign import ccall unsafe "vg/openvg.h vgPathLength"
+    vgPathLength :: VGPath -> VGint -> VGint -> IO VGfloat
+
+
+
+-- Stubbed in shivaVG 0.2.1 (not implemented)
+foreign import ccall unsafe "vg/openvg.h vgPointAlongPath"
+    vgPointAlongPath :: VGPath -> VGint -> VGint -> VGfloat
+                     -> Ptr VGfloat -> Ptr VGfloat
+                     -> Ptr VGfloat -> Ptr VGfloat
+                     -> IO ()
+
+
+foreign import ccall unsafe "vg/openvg.h vgPathBounds"
+    vgPathBounds :: VGPath 
+                 -> Ptr VGfloat -> Ptr VGfloat 
+                 -> Ptr VGfloat -> Ptr VGfloat
+                 -> IO ()
+
+
+foreign import ccall unsafe "vg/openvg.h vgPathTransformedBounds"
+    vgPathTransformedBounds :: VGPath
+                            -> Ptr VGfloat -> Ptr VGfloat
+                            -> Ptr VGfloat -> Ptr VGfloat
+                            -> IO ()
+
+foreign import ccall unsafe "vg/openvg.h vgDrawPath"
+    vgDrawPath :: VGPath -> VGbitfield -> IO ()
+
+
+--------------------------------------------------------------------------------
+-- Section 9 - Paint
+
+foreign import ccall unsafe "vg/openvg.h vgCreatePaint"
+    vgCreatePaint :: IO VGPaint
+
+foreign import ccall unsafe "vg/openvg.h vgDestroyPaint"
+    vgDestroyPaint :: VGPaint -> IO ()
+
+foreign import ccall unsafe "vg/openvg.h vgSetPaint"
+    vgSetPaint :: VGPaint -> VGbitfield -> IO ()
+
+
+-- vgGetPaint - NOT IMPLEMENTED BY SHIVA-VG
+-- foreign import ccall unsafe "vg/openvg.h vgGetPaint"
+--     vgGetPaint :: VGenum -> IO VGPaint
+
+
+
+-- vgSetColor - NOT IMPLEMENTED BY SHIVA-VG
+-- foreign import ccall unsafe "vg/openvg.h vgSetColor"
+--     vgSetColor :: VGPaint -> VGuint -> IO ()
+
+
+
+-- vgGetColor - NOT IMPLEMENTED BY SHIVA-VG
+-- foreign import ccall unsafe "vg/openvg.h vgGetColor"
+--     vgGetColor :: VGPaint -> IO VGuint
+
+
+foreign import ccall unsafe "vg/openvg.h vgPaintPattern"
+    vgPaintPattern :: VGPaint -> VGImage -> IO ()
+
+--------------------------------------------------------------------------------
+-- Section 10 - Images
+
+
+foreign import ccall unsafe "vg/openvg.h vgCreateImage"
+    vgCreateImage :: VGenum -> VGint -> VGint -> VGbitfield -> IO VGImage
+
+foreign import ccall unsafe "vg/openvg.h vgDestroyImage"
+    vgDestroyImage :: VGImage -> IO ()
+
+foreign import ccall unsafe "vg/openvg.h vgClearImage"
+    vgClearImage :: VGImage -> VGint -> VGint -> VGint -> VGint -> IO ()
+
+foreign import ccall unsafe "vg/openvg.h vgImageSubData"
+    vgImageSubData :: VGImage -> Ptr a -> VGint -> VGenum
+                   -> VGint -> VGint -> VGint -> VGint
+                   -> IO ()
+
+
+foreign import ccall unsafe "vg/openvg.h vgGetImageSubData"
+    vgGetImageSubData :: VGImage -> Ptr a -> VGint -> VGenum
+                      -> VGint -> VGint -> VGint -> VGint
+                      -> IO ()
+
+-- Stubbed in shivaVG 0.2.1 (not implemented)
+foreign import ccall unsafe "vg/openvg.h vgChildImage"
+    vgChildImage :: VGImage -> VGint -> VGint -> VGint -> VGint -> IO VGImage
+
+
+-- Stubbed in shivaVG 0.2.1 (not implemented)
+foreign import ccall unsafe "vg/openvg.h vgGetParent"
+    vgGetParent :: VGImage -> IO VGImage
+
+
+
+foreign import ccall unsafe "vg/openvg.h vgCopyImage"
+    vgCopyImage :: VGImage -> VGint -> VGint
+                -> VGImage -> VGint -> VGint
+                -> VGint   -> VGint
+                -> VGboolean
+                -> IO ()
+
+
+foreign import ccall unsafe "vg/openvg.h vgDrawImage"
+    vgDrawImage :: VGImage -> IO ()
+
+foreign import ccall unsafe "vg/openvg.h vgSetPixels"
+    vgSetPixels :: VGint -> VGint -> VGImage
+                -> VGint -> VGint -> VGint -> VGint
+                -> IO ()
+
+foreign import ccall unsafe "vg/openvg.h vgWritePixels"
+    vgWritePixels :: Ptr a -> VGint -> VGenum
+                  -> VGint -> VGint -> VGint -> VGint
+                  -> IO ()
+
+
+foreign import ccall unsafe "vg/openvg.h vgGetPixels"
+    vgGetPixels :: VGImage -> VGint -> VGint
+                -> VGint -> VGint -> VGint -> VGint
+                -> IO ()
+
+foreign import ccall unsafe "vg/openvg.h vgReadPixels"
+    vgReadPixels :: Ptr a -> VGint -> VGenum 
+                 -> VGint -> VGint -> VGint -> VGint
+                 -> IO ()
+
+
+foreign import ccall unsafe "vg/openvg.h vgCopyPixels"
+    vgCopyPixels :: VGint -> VGint
+                 -> VGint -> VGint -> VGint -> VGint
+                 -> IO ()
+
+--------------------------------------------------------------------------------
+-- Section 11 - Image Filters
+
+
+-- Stubbed in shivaVG 0.2.1 (not implemented)
+foreign import ccall unsafe "vg/openvg.h vgColorMatrix"
+    vgColorMatrix :: VGImage -> VGImage -> Ptr VGfloat -> IO ()
+
+
+-- Stubbed in shivaVG 0.2.1 (not implemented)
+foreign import ccall unsafe "vg/openvg.h vgConvolve"
+    vgConvolve :: VGImage -> VGImage
+               -> VGint -> VGint -> VGint -> VGint
+               -> Ptr VGshort 
+               -> VGfloat -> VGfloat
+               -> VGenum
+               -> IO ()
+
+-- Stubbed in shivaVG 0.2.1 (not implemented)
+foreign import ccall unsafe "vg/openvg.h vgSeparableConvolve"
+    vgSeparableConvolve :: VGImage -> VGImage
+                        -> VGint -> VGint -> VGint -> VGint
+                        -> Ptr VGshort -> Ptr VGshort
+                        -> VGfloat -> VGfloat
+                        -> VGenum
+                        -> IO ()
+
+
+-- Stubbed in shivaVG 0.2.1 (not implemented)
+foreign import ccall unsafe "vg/openvg.h vgGaussianBlur"
+    vgGaussianBlur :: VGImage -> VGImage -> VGfloat
+                   -> VGfloat -> VGenum
+                   -> IO ()
+
+
+-- Stubbed in shivaVG 0.2.1 (not implemented)
+foreign import ccall unsafe "vg/openvg.h vgLookup"
+    vgLookup :: VGImage -> VGImage 
+             -> Ptr VGubyte -> Ptr VGubyte 
+             -> Ptr VGubyte -> Ptr VGubyte
+             -> VGboolean -> VGboolean
+             -> IO ()
+
+
+-- Stubbed in shivaVG 0.2.1 (not implemented)
+foreign import ccall unsafe "vg/openvg.h vgLookupSingle"
+    vgLookupSingle :: VGImage -> VGImage
+                   -> Ptr VGuint
+                   -> VGenum
+                   -> VGboolean -> VGboolean
+                   -> IO ()
+
+--------------------------------------------------------------------------------
+-- Section 13 - Querying Hardware
+
+foreign import ccall unsafe "vg/openvg.h vgHardwareQuery"
+    vgHardwareQuery :: VGenum -> VGint -> IO VGenum
+
+foreign import ccall unsafe "vg/openvg.h vgGetString"
+    vgGetString :: VGenum -> IO CString
+
+--------------------------------------------------------------------------------
+-- Shiva-VG Extensions - see the README in the shiva archive.
+
+foreign import ccall unsafe "vg/openvg.h vgCreateContextSH"
+    vgCreateContextSH :: VGint -> VGint -> IO VGboolean
+
+foreign import ccall unsafe "vg/openvg.h vgResizeSurfaceSH"
+    vgResizeSurfaceSH :: VGint -> VGint -> IO ()
+
+
+foreign import ccall unsafe "vg/openvg.h vgDestroyContextSH"
+    vgDestroyContextSH :: IO ()
+
+
+
+
+
+
+
+
+
diff --git a/src/Graphics/Rendering/OpenVG/Raw/VG/Constants.hsc b/src/Graphics/Rendering/OpenVG/Raw/VG/Constants.hsc
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenVG/Raw/VG/Constants.hsc
@@ -0,0 +1,385 @@
+{-# LANGUAGE CPP                        #-}
+{-# LANGUAGE ForeignFunctionInterface   #-}
+{-# OPTIONS -Wall #-}
+
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenVG.Raw.VG.Constants
+-- Copyright   :  (c) Stephen Tetley 2008, 2009
+-- License     :  BSD3
+--
+-- Maintainer  :  Stephen Tetley <stephen.tetley@gmail.com>
+-- Stability   :  highly unstable
+-- Portability :  GHC
+--
+-- Aliases for constants defined in <vg/openvg.h>.
+--
+--------------------------------------------------------------------------------
+
+
+module Graphics.Rendering.OpenVG.Raw.VG.Constants where
+
+#include <vg/openvg.h>
+
+import Graphics.Rendering.OpenVG.Raw.VG.BasicTypes
+
+vg_OPENVG_VERSION_1_0_1 :: VGint
+vg_OPENVG_VERSION_1_0_1 = #const OPENVG_VERSION_1_0_1
+
+vg_PATH_FORMAT_STANDARD :: VGint
+vg_PATH_FORMAT_STANDARD = #const VG_PATH_FORMAT_STANDARD
+
+vg_MAXSHORT :: VGshort
+vg_MAXSHORT = #const VG_MAXSHORT
+
+vg_MAXINT :: VGint
+vg_MAXINT = #const VG_MAXINT
+
+-- VG_MAX_FLOAT is part of the VGParamType enumeration
+
+
+-- | Enumerations
+
+#{enum VGenum,
+  , vg_NO_ERROR                         = VG_NO_ERROR
+  , vg_BAD_HANDLE_ERROR                 = VG_BAD_HANDLE_ERROR
+  , vg_ILLEGAL_ARGUMENT_ERROR           = VG_ILLEGAL_ARGUMENT_ERROR
+  , vg_OUT_OF_MEMORY_ERROR              = VG_OUT_OF_MEMORY_ERROR
+  , vg_PATH_CAPABILITY_ERROR            = VG_PATH_CAPABILITY_ERROR
+  , vg_UNSUPPORTED_IMAGE_FORMAT_ERROR   = VG_UNSUPPORTED_IMAGE_FORMAT_ERROR
+  , vg_UNSUPPORTED_PATH_FORMAT_ERROR    = VG_UNSUPPORTED_PATH_FORMAT_ERROR
+  , vg_IMAGE_IN_USE_ERROR               = VG_IMAGE_IN_USE_ERROR
+  , vg_NO_CONTEXT_ERROR                 = VG_NO_CONTEXT_ERROR
+  }
+  
+#{enum VGenum,
+  , vg_MATRIX_MODE                  = VG_MATRIX_MODE
+  , vg_FILL_RULE                    = VG_FILL_RULE
+  , vg_IMAGE_QUALITY                = VG_IMAGE_QUALITY
+  , vg_RENDERING_QUALITY            = VG_RENDERING_QUALITY
+  , vg_BLEND_MODE                   = VG_BLEND_MODE
+  , vg_IMAGE_MODE                   = VG_IMAGE_MODE
+  
+  , vg_SCISSOR_RECTS                = VG_SCISSOR_RECTS
+
+  , vg_STROKE_LINE_WIDTH            = VG_STROKE_LINE_WIDTH
+  , vg_STROKE_CAP_STYLE             = VG_STROKE_CAP_STYLE
+  , vg_STROKE_JOIN_STYLE            = VG_STROKE_JOIN_STYLE
+  , vg_STROKE_MITER_LIMIT           = VG_STROKE_MITER_LIMIT
+  , vg_STROKE_DASH_PATTERN          = VG_STROKE_DASH_PATTERN
+  , vg_STROKE_DASH_PHASE            = VG_STROKE_DASH_PHASE
+  , vg_STROKE_DASH_PHASE_RESET      = VG_STROKE_DASH_PHASE_RESET
+
+  , vg_TILE_FILL_COLOR              = VG_TILE_FILL_COLOR
+
+  , vg_CLEAR_COLOR                  = VG_CLEAR_COLOR
+
+  , vg_MASKING                      = VG_MASKING
+  , vg_SCISSORING                   = VG_SCISSORING
+
+  , vg_PIXEL_LAYOUT                 = VG_PIXEL_LAYOUT
+  , vg_SCREEN_LAYOUT                = VG_SCREEN_LAYOUT
+
+  , vg_FILTER_FORMAT_LINEAR         = VG_FILTER_FORMAT_LINEAR
+  , vg_FILTER_FORMAT_PREMULTIPLIED  = VG_FILTER_FORMAT_PREMULTIPLIED
+
+  , vg_FILTER_CHANNEL_MASK          = VG_FILTER_CHANNEL_MASK
+
+  , vg_MAX_SCISSOR_RECTS            = VG_MAX_SCISSOR_RECTS
+  , vg_MAX_DASH_COUNT               = VG_MAX_DASH_COUNT
+  , vg_MAX_KERNEL_SIZE              = VG_MAX_KERNEL_SIZE
+  , vg_MAX_SEPARABLE_KERNEL_SIZE    = VG_MAX_SEPARABLE_KERNEL_SIZE
+  , vg_MAX_COLOR_RAMP_STOPS         = VG_MAX_COLOR_RAMP_STOPS
+  , vg_MAX_IMAGE_WIDTH              = VG_MAX_IMAGE_WIDTH
+  , vg_MAX_IMAGE_HEIGHT             = VG_MAX_IMAGE_HEIGHT
+  , vg_MAX_IMAGE_PIXELS             = VG_MAX_IMAGE_PIXELS
+  , vg_MAX_IMAGE_BYTES              = VG_MAX_IMAGE_BYTES
+  , vg_MAX_FLOAT                    = VG_MAX_FLOAT
+  , vg_MAX_GAUSSIAN_STD_DEVIATION   = VG_MAX_GAUSSIAN_STD_DEVIATION 
+  }
+    
+
+#{enum VGenum,
+  , vg_RENDERING_QUALITY_NONANTIALIASED = VG_RENDERING_QUALITY_NONANTIALIASED
+  , vg_RENDERING_QUALITY_FASTER         = VG_RENDERING_QUALITY_FASTER
+  , vg_RENDERING_QUALITY_BETTER         = VG_RENDERING_QUALITY_BETTER 
+  }   
+    
+
+
+#{enum VGenum,
+  , vg_PIXEL_LAYOUT_UNKNOWN             = VG_PIXEL_LAYOUT_UNKNOWN
+  , vg_PIXEL_LAYOUT_RGB_VERTICAL        = VG_PIXEL_LAYOUT_RGB_VERTICAL
+  , vg_PIXEL_LAYOUT_BGR_VERTICAL        = VG_PIXEL_LAYOUT_BGR_VERTICAL
+  , vg_PIXEL_LAYOUT_RGB_HORIZONTAL      = VG_PIXEL_LAYOUT_RGB_HORIZONTAL
+  , vg_PIXEL_LAYOUT_BGR_HORIZONTAL      = VG_PIXEL_LAYOUT_BGR_HORIZONTAL
+  }
+
+#{enum VGenum,
+  , vg_MATRIX_PATH_USER_TO_SURFACE    = VG_MATRIX_PATH_USER_TO_SURFACE
+  , vg_MATRIX_IMAGE_USER_TO_SURFACE   = VG_MATRIX_IMAGE_USER_TO_SURFACE
+  , vg_MATRIX_FILL_PAINT_TO_USER      = VG_MATRIX_FILL_PAINT_TO_USER
+  , vg_MATRIX_STROKE_PAINT_TO_USER    = VG_MATRIX_STROKE_PAINT_TO_USER
+  }
+
+#{enum VGenum,
+  , vg_CLEAR_MASK       = VG_CLEAR_MASK
+  , vg_FILL_MASK        = VG_FILL_MASK
+  , vg_SET_MASK         = VG_SET_MASK
+  , vg_UNION_MASK       = VG_UNION_MASK
+  , vg_INTERSECT_MASK   = VG_INTERSECT_MASK
+  , vg_SUBTRACT_MASK    = VG_SUBTRACT_MASK
+  }
+    
+    
+#{enum VGenum,
+  , vg_PATH_DATATYPE_S_8    = VG_PATH_DATATYPE_S_8
+  , vg_PATH_DATATYPE_S_16   = VG_PATH_DATATYPE_S_16
+  , vg_PATH_DATATYPE_S_32   = VG_PATH_DATATYPE_S_32
+  , vg_PATH_DATATYPE_F      = VG_PATH_DATATYPE_F
+  }
+
+#{enum VGenum,
+  , vg_ABSOLUTE         = VG_ABSOLUTE
+  , vg_RELATIVE         = VG_RELATIVE
+  }
+
+#{enum VGenum,
+  , vg_CLOSE_PATH       = VG_CLOSE_PATH
+  , vg_MOVE_TO          = VG_MOVE_TO
+  , vg_LINE_TO          = VG_LINE_TO
+  , vg_HLINE_TO         = VG_HLINE_TO
+  , vg_VLINE_TO         = VG_VLINE_TO
+  , vg_QUAD_TO          = VG_QUAD_TO
+  , vg_CUBIC_TO         = VG_CUBIC_TO
+  , vg_SQUAD_TO         = VG_SQUAD_TO
+  , vg_SCUBIC_TO        = VG_SCUBIC_TO
+  , vg_SCCWARC_TO       = VG_SCCWARC_TO
+  , vg_SCWARC_TO        = VG_SCWARC_TO
+  , vg_LCCWARC_TO       = VG_LCCWARC_TO
+  , vg_LCWARC_TO        = VG_LCWARC_TO
+  }
+
+
+#{enum VGenum,
+  , vg_MOVE_TO_ABS      = VG_MOVE_TO_ABS
+  , vg_MOVE_TO_REL      = VG_MOVE_TO_REL
+  , vg_LINE_TO_ABS      = VG_LINE_TO_ABS
+  , vg_LINE_TO_REL      = VG_LINE_TO_REL
+  , vg_HLINE_TO_ABS     = VG_HLINE_TO_ABS
+  , vg_HLINE_TO_REL     = VG_HLINE_TO_REL
+  , vg_VLINE_TO_ABS     = VG_VLINE_TO_ABS
+  , vg_VLINE_TO_REL     = VG_VLINE_TO_REL
+  , vg_QUAD_TO_ABS      = VG_QUAD_TO_ABS
+  , vg_QUAD_TO_REL      = VG_QUAD_TO_REL
+  , vg_CUBIC_TO_ABS     = VG_CUBIC_TO_ABS
+  , vg_CUBIC_TO_REL     = VG_CUBIC_TO_REL
+  , vg_SQUAD_TO_ABS     = VG_SQUAD_TO_ABS
+  , vg_SQUAD_TO_REL     = VG_SQUAD_TO_REL
+  , vg_SCUBIC_TO_ABS    = VG_SCUBIC_TO_ABS
+  , vg_SCUBIC_TO_REL    = VG_SCUBIC_TO_REL
+  , vg_SCCWARC_TO_ABS   = VG_SCCWARC_TO_ABS
+  , vg_SCCWARC_TO_REL   = VG_SCCWARC_TO_REL
+  , vg_SCWARC_TO_ABS    = VG_SCWARC_TO_ABS
+  , vg_SCWARC_TO_REL    = VG_SCWARC_TO_REL
+  , vg_LCCWARC_TO_ABS   = VG_LCCWARC_TO_ABS
+  , vg_LCCWARC_TO_REL   = VG_LCCWARC_TO_REL
+  , vg_LCWARC_TO_ABS    = VG_LCWARC_TO_ABS
+  , vg_LCWARC_TO_REL    = VG_LCWARC_TO_REL
+  }
+
+-- typedef VGHandle VGPath;
+
+
+#{enum VGenum,
+  , vg_PATH_CAPABILITY_APPEND_FROM              = VG_PATH_CAPABILITY_APPEND_FROM
+  , vg_PATH_CAPABILITY_APPEND_TO                = VG_PATH_CAPABILITY_APPEND_TO
+  , vg_PATH_CAPABILITY_MODIFY                   = VG_PATH_CAPABILITY_MODIFY
+  , vg_PATH_CAPABILITY_TRANSFORM_FROM           = VG_PATH_CAPABILITY_TRANSFORM_FROM
+  , vg_PATH_CAPABILITY_TRANSFORM_TO             = VG_PATH_CAPABILITY_TRANSFORM_TO
+  , vg_PATH_CAPABILITY_INTERPOLATE_FROM         = VG_PATH_CAPABILITY_INTERPOLATE_FROM
+  , vg_PATH_CAPABILITY_INTERPOLATE_TO           = VG_PATH_CAPABILITY_INTERPOLATE_TO
+  , vg_PATH_CAPABILITY_PATH_LENGTH              = VG_PATH_CAPABILITY_PATH_LENGTH
+  , vg_PATH_CAPABILITY_POINT_ALONG_PATH         = VG_PATH_CAPABILITY_POINT_ALONG_PATH
+  , vg_PATH_CAPABILITY_TANGENT_ALONG_PATH       = VG_PATH_CAPABILITY_TANGENT_ALONG_PATH
+  , vg_PATH_CAPABILITY_PATH_BOUNDS              = VG_PATH_CAPABILITY_PATH_BOUNDS
+  , vg_PATH_CAPABILITY_PATH_TRANSFORMED_BOUNDS  = VG_PATH_CAPABILITY_PATH_TRANSFORMED_BOUNDS
+  , vg_PATH_CAPABILITY_ALL                      = VG_PATH_CAPABILITY_ALL
+  }
+
+#{enum VGenum,
+  , vg_PATH_FORMAT            = VG_PATH_FORMAT
+  , vg_PATH_DATATYPE          = VG_PATH_DATATYPE
+  , vg_PATH_SCALE             = VG_PATH_SCALE
+  , vg_PATH_BIAS              = VG_PATH_BIAS
+  , vg_PATH_NUM_SEGMENTS      = VG_PATH_NUM_SEGMENTS
+  , vg_PATH_NUM_COORDS        = VG_PATH_NUM_COORDS
+  }
+
+#{enum VGenum,
+  , vg_CAP_BUTT         = VG_CAP_BUTT
+  , vg_CAP_ROUND        = VG_CAP_ROUND
+  , vg_CAP_SQUARE       = VG_CAP_SQUARE
+  }
+
+#{enum VGenum,
+  , vg_JOIN_MITER       = VG_JOIN_MITER
+  , vg_JOIN_ROUND       = VG_JOIN_ROUND
+  , vg_JOIN_BEVEL       = VG_JOIN_BEVEL
+  }
+
+#{enum VGenum,
+  , vg_EVEN_ODD         = VG_EVEN_ODD
+  , vg_NON_ZERO         = VG_NON_ZERO
+  }
+
+#{enum VGenum,
+  , vg_STROKE_PATH      = VG_STROKE_PATH
+  , vg_FILL_PATH        = VG_FILL_PATH
+}
+
+-- typedef VGHandle VGPaint;
+
+#{enum VGenum,
+  , vg_PAINT_TYPE                       = VG_PAINT_TYPE
+  , vg_PAINT_COLOR                      = VG_PAINT_COLOR
+  , vg_PAINT_COLOR_RAMP_SPREAD_MODE     = VG_PAINT_COLOR_RAMP_SPREAD_MODE
+  , vg_PAINT_COLOR_RAMP_PREMULTIPLIED   = VG_PAINT_COLOR_RAMP_PREMULTIPLIED
+  , vg_PAINT_COLOR_RAMP_STOPS           = VG_PAINT_COLOR_RAMP_STOPS
+
+  , vg_PAINT_LINEAR_GRADIENT            = VG_PAINT_LINEAR_GRADIENT
+
+  , vg_PAINT_RADIAL_GRADIENT            = VG_PAINT_RADIAL_GRADIENT
+
+  , vg_PAINT_PATTERN_TILING_MODE        = VG_PAINT_PATTERN_TILING_MODE
+}
+
+#{enum VGenum,
+  , vg_PAINT_TYPE_COLOR                 = VG_PAINT_TYPE_COLOR
+  , vg_PAINT_TYPE_LINEAR_GRADIENT       = VG_PAINT_TYPE_LINEAR_GRADIENT
+  , vg_PAINT_TYPE_RADIAL_GRADIENT       = VG_PAINT_TYPE_RADIAL_GRADIENT
+  , vg_PAINT_TYPE_PATTERN               = VG_PAINT_TYPE_PATTERN
+  }
+
+#{enum VGenum,
+  , vg_COLOR_RAMP_SPREAD_PAD            = VG_COLOR_RAMP_SPREAD_PAD
+  , vg_COLOR_RAMP_SPREAD_REPEAT         = VG_COLOR_RAMP_SPREAD_REPEAT
+  , vg_COLOR_RAMP_SPREAD_REFLECT        = VG_COLOR_RAMP_SPREAD_REFLECT
+  }
+
+#{enum VGenum,
+  , vg_TILE_FILL        = VG_TILE_FILL
+  , vg_TILE_PAD         = VG_TILE_PAD
+  , vg_TILE_REPEAT      = VG_TILE_REPEAT
+  , vg_TILE_REFLECT     = VG_TILE_REFLECT
+  }
+
+#{enum VGenum,
+  , vg_sRGBX_8888       = VG_sRGBX_8888
+  , vg_sRGBA_8888       = VG_sRGBA_8888
+  , vg_sRGBA_8888_PRE   = VG_sRGBA_8888_PRE
+  , vg_sRGB_565         = VG_sRGB_565
+  , vg_sRGBA_5551       = VG_sRGBA_5551
+  , vg_sRGBA_4444       = VG_sRGBA_4444
+  , vg_sL_8             = VG_sL_8
+  , vg_lRGBX_8888       = VG_lRGBX_8888
+  , vg_lRGBA_8888       = VG_lRGBA_8888
+  , vg_lRGBA_8888_PRE   = VG_lRGBA_8888_PRE
+  , vg_lL_8             = VG_lL_8
+  , vg_A_8              = VG_A_8
+  , vg_BW_1             = VG_BW_1
+
+  , vg_sXRGB_8888       = VG_sXRGB_8888
+  , vg_sARGB_8888       = VG_sARGB_8888
+  , vg_sARGB_8888_PRE   = VG_sARGB_8888_PRE
+  , vg_sARGB_1555       = VG_sARGB_1555
+  , vg_sARGB_4444       = VG_sARGB_4444
+  , vg_lXRGB_8888       = VG_lXRGB_8888
+  , vg_lARGB_8888       = VG_lARGB_8888
+  , vg_lARGB_8888_PRE   = VG_lARGB_8888_PRE
+
+  , vg_sBGRX_8888       = VG_sBGRX_8888
+  , vg_sBGRA_8888       = VG_sBGRA_8888
+  , vg_sBGRA_8888_PRE   = VG_sBGRA_8888_PRE
+  , vg_sBGR_565         = VG_sBGR_565
+  , vg_sBGRA_5551       = VG_sBGRA_5551
+  , vg_sBGRA_4444       = VG_sBGRA_4444
+  , vg_lBGRX_8888       = VG_lBGRX_8888
+  , vg_lBGRA_8888       = VG_lBGRA_8888
+  , vg_lBGRA_8888_PRE   = VG_lBGRA_8888_PRE
+
+  , vg_sXBGR_8888       = VG_sXBGR_8888
+  , vg_sABGR_8888       = VG_sABGR_8888
+  , vg_sABGR_8888_PRE   = VG_sABGR_8888_PRE
+  , vg_sABGR_1555       = VG_sABGR_1555
+  , vg_sABGR_4444       = VG_sABGR_4444
+  , vg_lXBGR_8888       = VG_lXBGR_8888
+  , vg_lABGR_8888       = VG_lABGR_8888
+  , vg_lABGR_8888_PRE   = VG_lABGR_8888_PRE
+}
+
+
+-- typedef VGHandle VGImage;
+
+
+#{enum VGenum,
+  , vg_IMAGE_QUALITY_NONANTIALIASED     = VG_IMAGE_QUALITY_NONANTIALIASED
+  , vg_IMAGE_QUALITY_FASTER             = VG_IMAGE_QUALITY_FASTER
+  , vg_IMAGE_QUALITY_BETTER             = VG_IMAGE_QUALITY_BETTER
+  }
+
+#{enum VGenum,
+  , vg_IMAGE_FORMAT     = VG_IMAGE_FORMAT
+  , vg_IMAGE_WIDTH      = VG_IMAGE_WIDTH
+  , vg_IMAGE_HEIGHT     = VG_IMAGE_HEIGHT
+  }
+
+#{enum VGenum,
+  , vg_DRAW_IMAGE_NORMAL      = VG_DRAW_IMAGE_NORMAL
+  , vg_DRAW_IMAGE_MULTIPLY    = VG_DRAW_IMAGE_MULTIPLY
+  , vg_DRAW_IMAGE_STENCIL     = VG_DRAW_IMAGE_STENCIL
+  }
+
+#{enum VGenum,
+  , vg_RED              = VG_RED
+  , vg_GREEN            = VG_GREEN
+  , vg_BLUE             = VG_BLUE
+  , vg_ALPHA            = VG_ALPHA
+  }
+
+#{enum VGenum,
+  , vg_BLEND_SRC              = VG_BLEND_SRC
+  , vg_BLEND_SRC_OVER         = VG_BLEND_SRC_OVER
+  , vg_BLEND_DST_OVER         = VG_BLEND_DST_OVER
+  , vg_BLEND_SRC_IN           = VG_BLEND_SRC_IN
+  , vg_BLEND_DST_IN           = VG_BLEND_DST_IN
+  , vg_BLEND_MULTIPLY         = VG_BLEND_MULTIPLY
+  , vg_BLEND_SCREEN           = VG_BLEND_SCREEN
+  , vg_BLEND_DARKEN           = VG_BLEND_DARKEN
+  , vg_BLEND_LIGHTEN          = VG_BLEND_LIGHTEN
+  , vg_BLEND_ADDITIVE         = VG_BLEND_ADDITIVE
+  , vg_BLEND_SRC_OUT_SH       = VG_BLEND_SRC_OUT_SH
+  , vg_BLEND_DST_OUT_SH       = VG_BLEND_DST_OUT_SH
+  , vg_BLEND_SRC_ATOP_SH      = VG_BLEND_SRC_ATOP_SH
+  , vg_BLEND_DST_ATOP_SH      = VG_BLEND_DST_ATOP_SH
+  }
+
+#{enum VGenum,
+  , vg_IMAGE_FORMAT_QUERY     = VG_IMAGE_FORMAT_QUERY
+  , vg_PATH_DATATYPE_QUERY    = VG_PATH_DATATYPE_QUERY
+  }
+
+#{enum VGenum,
+  , vg_HARDWARE_ACCELERATED   = VG_HARDWARE_ACCELERATED
+  , vg_HARDWARE_UNACCELERATED = VG_HARDWARE_UNACCELERATED
+  }
+
+#{enum VGenum,
+  , vg_VENDOR           = VG_VENDOR
+  , vg_RENDERER         = VG_RENDERER
+  , vg_VERSION          = VG_VERSION
+  , vg_EXTENSIONS       = VG_EXTENSIONS
+  }
+
+-- end of file
+
diff --git a/src/Graphics/Rendering/OpenVG/Raw/VG/Core101.hs b/src/Graphics/Rendering/OpenVG/Raw/VG/Core101.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenVG/Raw/VG/Core101.hs
@@ -0,0 +1,449 @@
+{-# OPTIONS -Wall #-}
+
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenVG.Raw.VG.Core101
+-- Copyright   :  (c) Stephen Tetley 2009
+-- License     :  BSD3
+--
+-- Maintainer  :  Stephen Tetley <stephen.tetley@gmail.com>
+-- Stability   :  unstable
+-- Portability :  GHC
+--
+-- All the raw functions and types from the OpenVG 1.0.1 core 
+-- specs (implemented by ShivaVG-0.2.1)
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenVG.Raw.VG.Core101 (
+
+  -- BasicTypes.hsc
+  -- * Primitive Types
+  VGbyte, 
+  VGubyte, 
+  VGshort, 
+  VGint, 
+  VGuint, 
+  VGbitfield, 
+  VGboolean, 
+  VGfloat,
+  
+  VGenum,
+  
+  -- * Handle-based Types
+  VGHandle,
+  
+  VGPath, 
+  VGImage, 
+  VGPaint,
+
+  -- Constants.hsc
+  -- Section 3 - Constants
+  vg_OPENVG_VERSION_1_0_1,
+  
+  vg_FALSE, 
+  vg_TRUE,
+  
+  vg_MAXSHORT,
+  vg_MAXINT,
+ 
+  vg_INVALID_HANDLE,
+
+  -- Section 4 - Drawing Context
+  vg_NO_ERROR,
+  vg_BAD_HANDLE_ERROR,
+  vg_ILLEGAL_ARGUMENT_ERROR,
+  vg_OUT_OF_MEMORY_ERROR,
+  vg_PATH_CAPABILITY_ERROR,
+  vg_UNSUPPORTED_IMAGE_FORMAT_ERROR,
+  vg_UNSUPPORTED_PATH_FORMAT_ERROR,
+  vg_IMAGE_IN_USE_ERROR,
+  vg_NO_CONTEXT_ERROR,
+
+
+  -- Section 5 - Setting API Parameters
+  vg_MATRIX_MODE,
+  vg_FILL_RULE,
+  vg_IMAGE_QUALITY,
+  vg_RENDERING_QUALITY,
+  vg_BLEND_MODE,
+  vg_IMAGE_MODE,
+  
+  vg_SCISSOR_RECTS,
+
+  vg_STROKE_LINE_WIDTH,
+  vg_STROKE_CAP_STYLE,
+  vg_STROKE_JOIN_STYLE,
+  vg_STROKE_MITER_LIMIT,
+  vg_STROKE_DASH_PATTERN,
+  vg_STROKE_DASH_PHASE,
+  vg_STROKE_DASH_PHASE_RESET,
+
+  vg_TILE_FILL_COLOR,
+
+  vg_CLEAR_COLOR,
+
+  vg_MASKING,
+  vg_SCISSORING,
+
+  vg_PIXEL_LAYOUT,
+  vg_SCREEN_LAYOUT,
+
+  vg_FILTER_FORMAT_LINEAR,
+  vg_FILTER_FORMAT_PREMULTIPLIED,
+
+  vg_FILTER_CHANNEL_MASK,
+
+  vg_MAX_SCISSOR_RECTS,
+  vg_MAX_DASH_COUNT,
+  vg_MAX_KERNEL_SIZE,
+  vg_MAX_SEPARABLE_KERNEL_SIZE,
+  vg_MAX_COLOR_RAMP_STOPS,
+  vg_MAX_IMAGE_WIDTH,
+  vg_MAX_IMAGE_HEIGHT,
+  vg_MAX_IMAGE_PIXELS,
+  vg_MAX_IMAGE_BYTES,
+  vg_MAX_FLOAT,
+  vg_MAX_GAUSSIAN_STD_DEVIATION,
+
+  -- Section 6 - Rendering Quality and Antialiasing
+  vg_RENDERING_QUALITY_NONANTIALIASED,
+  vg_RENDERING_QUALITY_FASTER,
+  vg_RENDERING_QUALITY_BETTER,
+
+  vg_PIXEL_LAYOUT_UNKNOWN,
+  vg_PIXEL_LAYOUT_RGB_VERTICAL,
+  vg_PIXEL_LAYOUT_BGR_VERTICAL,
+  vg_PIXEL_LAYOUT_RGB_HORIZONTAL,
+  vg_PIXEL_LAYOUT_BGR_HORIZONTAL,
+
+
+  vg_MATRIX_PATH_USER_TO_SURFACE,
+  vg_MATRIX_IMAGE_USER_TO_SURFACE,
+  vg_MATRIX_FILL_PAINT_TO_USER,
+  vg_MATRIX_STROKE_PAINT_TO_USER,
+
+  -- Section 7 - Scissoring
+  vg_CLEAR_MASK,
+  vg_FILL_MASK,
+  vg_SET_MASK,
+  vg_UNION_MASK,
+  vg_INTERSECT_MASK,
+  vg_SUBTRACT_MASK,
+    
+  -- Section 8 - Paths
+  vg_PATH_FORMAT_STANDARD,
+    
+  vg_PATH_DATATYPE_S_8,
+  vg_PATH_DATATYPE_S_16,
+  vg_PATH_DATATYPE_S_32,
+  vg_PATH_DATATYPE_F,
+
+  vg_ABSOLUTE,
+  vg_RELATIVE,
+
+  vg_CLOSE_PATH,
+  vg_MOVE_TO,
+  vg_LINE_TO,
+  vg_HLINE_TO,
+  vg_VLINE_TO,
+  vg_QUAD_TO,
+  vg_CUBIC_TO,
+  vg_SQUAD_TO,
+  vg_SCUBIC_TO,
+  vg_SCCWARC_TO,
+  vg_SCWARC_TO,
+  vg_LCCWARC_TO,
+  vg_LCWARC_TO,
+
+
+  vg_MOVE_TO_ABS,
+  vg_MOVE_TO_REL,
+  vg_LINE_TO_ABS,
+  vg_LINE_TO_REL,
+  vg_HLINE_TO_ABS,
+  vg_HLINE_TO_REL,
+  vg_VLINE_TO_ABS,
+  vg_VLINE_TO_REL,
+  vg_QUAD_TO_ABS,
+  vg_QUAD_TO_REL,
+  vg_CUBIC_TO_ABS,
+  vg_CUBIC_TO_REL,
+  vg_SQUAD_TO_ABS,
+  vg_SQUAD_TO_REL,
+  vg_SCUBIC_TO_ABS,
+  vg_SCUBIC_TO_REL,
+  vg_SCCWARC_TO_ABS,
+  vg_SCCWARC_TO_REL,
+  vg_SCWARC_TO_ABS,
+  vg_SCWARC_TO_REL,
+  vg_LCCWARC_TO_ABS,
+  vg_LCCWARC_TO_REL,
+  vg_LCWARC_TO_ABS,
+  vg_LCWARC_TO_REL,
+
+
+  vg_PATH_CAPABILITY_APPEND_FROM,
+  vg_PATH_CAPABILITY_APPEND_TO,
+  vg_PATH_CAPABILITY_MODIFY,
+  vg_PATH_CAPABILITY_TRANSFORM_FROM,
+  vg_PATH_CAPABILITY_TRANSFORM_TO,
+  vg_PATH_CAPABILITY_INTERPOLATE_FROM,
+  vg_PATH_CAPABILITY_INTERPOLATE_TO,
+  vg_PATH_CAPABILITY_PATH_LENGTH,
+  vg_PATH_CAPABILITY_POINT_ALONG_PATH,
+  vg_PATH_CAPABILITY_TANGENT_ALONG_PATH,
+  vg_PATH_CAPABILITY_PATH_BOUNDS,
+  vg_PATH_CAPABILITY_PATH_TRANSFORMED_BOUNDS,
+  vg_PATH_CAPABILITY_ALL,
+
+  vg_PATH_FORMAT,
+  vg_PATH_DATATYPE,
+  vg_PATH_SCALE,
+  vg_PATH_BIAS,
+  vg_PATH_NUM_SEGMENTS,
+  vg_PATH_NUM_COORDS,
+   
+  vg_CAP_BUTT,
+  vg_CAP_ROUND,
+  vg_CAP_SQUARE,
+ 
+  vg_JOIN_MITER,
+  vg_JOIN_ROUND,
+  vg_JOIN_BEVEL,
+ 
+  vg_EVEN_ODD,
+  vg_NON_ZERO,
+
+  vg_STROKE_PATH,
+  vg_FILL_PATH,
+
+  -- Section 9 - Paint
+  vg_PAINT_TYPE,
+  vg_PAINT_COLOR,
+  vg_PAINT_COLOR_RAMP_SPREAD_MODE,
+  vg_PAINT_COLOR_RAMP_PREMULTIPLIED,
+  vg_PAINT_COLOR_RAMP_STOPS,
+
+  vg_PAINT_LINEAR_GRADIENT,
+
+  vg_PAINT_RADIAL_GRADIENT,
+
+  vg_PAINT_PATTERN_TILING_MODE,
+
+
+  vg_PAINT_TYPE_COLOR,
+  vg_PAINT_TYPE_LINEAR_GRADIENT,
+  vg_PAINT_TYPE_RADIAL_GRADIENT,
+  vg_PAINT_TYPE_PATTERN,
+
+
+  vg_COLOR_RAMP_SPREAD_PAD,
+  vg_COLOR_RAMP_SPREAD_REPEAT,
+  vg_COLOR_RAMP_SPREAD_REFLECT,
+
+
+  vg_TILE_FILL,
+  vg_TILE_PAD,
+  vg_TILE_REPEAT,
+  vg_TILE_REFLECT,
+
+  -- Section 10 - Images
+  vg_sRGBX_8888,
+  vg_sRGBA_8888,
+  vg_sRGBA_8888_PRE,
+  vg_sRGB_565,
+  vg_sRGBA_5551,
+  vg_sRGBA_4444,
+  vg_sL_8,
+  vg_lRGBX_8888,
+  vg_lRGBA_8888,
+  vg_lRGBA_8888_PRE,
+  vg_lL_8,
+  vg_A_8,
+  vg_BW_1,
+
+  vg_sXRGB_8888,
+  vg_sARGB_8888,
+  vg_sARGB_8888_PRE,
+  vg_sARGB_1555,
+  vg_sARGB_4444,
+  vg_lXRGB_8888,
+  vg_lARGB_8888,
+  vg_lARGB_8888_PRE,
+
+  vg_sBGRX_8888,
+  vg_sBGRA_8888,
+  vg_sBGRA_8888_PRE,
+  vg_sBGR_565,
+  vg_sBGRA_5551,
+  vg_sBGRA_4444,
+  vg_lBGRX_8888,
+  vg_lBGRA_8888,
+  vg_lBGRA_8888_PRE,
+
+  vg_sXBGR_8888,
+  vg_sABGR_8888,
+  vg_sABGR_8888_PRE,
+  vg_sABGR_1555,
+  vg_sABGR_4444,
+  vg_lXBGR_8888,
+  vg_lABGR_8888,
+  vg_lABGR_8888_PRE,
+
+
+  vg_IMAGE_QUALITY_NONANTIALIASED,
+  vg_IMAGE_QUALITY_FASTER,
+  vg_IMAGE_QUALITY_BETTER,
+
+  vg_IMAGE_FORMAT,
+  vg_IMAGE_WIDTH,
+  vg_IMAGE_HEIGHT,
+
+  vg_DRAW_IMAGE_NORMAL,
+  vg_DRAW_IMAGE_MULTIPLY,
+  vg_DRAW_IMAGE_STENCIL,
+ 
+  -- Section 11 - Image Filters
+  vg_RED,
+  vg_GREEN,
+  vg_BLUE,
+  vg_ALPHA,
+
+  -- Section 12 - Blending
+  vg_BLEND_SRC,
+  vg_BLEND_SRC_OVER,
+  vg_BLEND_DST_OVER,
+  vg_BLEND_SRC_IN,
+  vg_BLEND_DST_IN,
+  vg_BLEND_MULTIPLY,
+  vg_BLEND_SCREEN,
+  vg_BLEND_DARKEN,
+  vg_BLEND_LIGHTEN,
+  vg_BLEND_ADDITIVE,
+  vg_BLEND_SRC_OUT_SH,
+  vg_BLEND_DST_OUT_SH,
+  vg_BLEND_SRC_ATOP_SH,
+  vg_BLEND_DST_ATOP_SH,
+  
+  -- Section 13 - Querying Hardware Capabilities
+  vg_IMAGE_FORMAT_QUERY,
+  vg_PATH_DATATYPE_QUERY,
+  
+  vg_HARDWARE_ACCELERATED,
+  vg_HARDWARE_UNACCELERATED,
+ 
+  -- Section 14 - Extending the API
+  vg_VENDOR,
+  vg_RENDERER,
+  vg_VERSION,
+  vg_EXTENSIONS,
+
+  -- CFunDecls.hsc
+  -- * Functions
+  -- Section 4 - Drawing Context
+  vgGetError,
+  vgFlush,
+  vgFinish,
+  
+  -- Section 5 - Setting API parameters
+  vgSeti,
+  vgSetf,
+  vgSetfv,
+  vgSetiv,
+  vgGetf,
+  vgGeti,
+  vgGetVectorSize,
+  vgGetfv,
+  vgGetiv,
+  vgSetParameterf,
+  vgSetParameteri,
+  vgSetParameterfv,
+  vgSetParameteriv,
+  vgGetParameterf,
+  vgGetParameteri,
+  vgGetParameterVectorSize,
+  vgGetParameterfv,
+  vgGetParameteriv,
+  
+  -- Section 6 - Rendering Quality
+  vgLoadIdentity,
+  vgLoadMatrix,
+  vgGetMatrix,
+  vgMultMatrix,
+  vgTranslate,
+  vgScale,
+  vgShear,
+  vgRotate,
+  
+  -- Section 7 - Scissoring
+  vgMask,
+  vgClear,
+  
+  -- Section 8 - Paths
+  vgCreatePath,
+  vgClearPath,
+  vgDestroyPath,
+  vgGetPathCapabilities,
+  vgRemovePathCapabilities,
+  vgAppendPath,
+  vgAppendPathData,
+  vgModifyPathCoords,
+  vgTransformPath,
+  vgInterpolatePath,
+  vgPathLength,
+  vgPointAlongPath,
+  vgPathBounds,
+  vgPathTransformedBounds,
+  vgDrawPath,
+  
+  -- Section 9 - Paint
+  vgCreatePaint,
+  vgDestroyPaint,
+  vgSetPaint,
+--  vgGetPaint,         NOT IMPLEMENTED BY SHIVA-VG
+  vgPaintPattern,
+  
+  -- Section 10 - Images
+  vgCreateImage,
+  vgDestroyImage,
+  vgClearImage,
+  vgImageSubData,
+  vgGetImageSubData,
+  vgChildImage,
+  vgGetParent,
+  vgCopyImage,
+  vgDrawImage,
+  vgSetPixels,
+  vgWritePixels,
+  vgGetPixels,
+  vgReadPixels,
+  vgCopyPixels,
+  
+  -- Section 11 - Image Filters
+  vgColorMatrix,
+  vgConvolve,
+  vgSeparableConvolve,
+  vgGaussianBlur,
+  vgLookup,
+  vgLookupSingle,
+  
+  -- Section 13 - Querying Harware
+  vgHardwareQuery,
+  vgGetString,
+  
+  -- ShivaVG extensions
+  vgCreateContextSH,
+  vgResizeSurfaceSH,
+  vgDestroyContextSH
+
+
+
+
+) where
+
+
+import Graphics.Rendering.OpenVG.Raw.VG.BasicTypes
+import Graphics.Rendering.OpenVG.Raw.VG.Constants
+import Graphics.Rendering.OpenVG.Raw.VG.CFunDecls
+
diff --git a/src/Graphics/Rendering/OpenVG/Raw/VG/DrawingContext.hs b/src/Graphics/Rendering/OpenVG/Raw/VG/DrawingContext.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenVG/Raw/VG/DrawingContext.hs
@@ -0,0 +1,40 @@
+{-# OPTIONS -Wall #-}
+
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenVG.Raw.VG.DrawingContext
+-- Copyright   :  (c) Stephen Tetley 2009
+-- License     :  BSD3
+--
+-- Maintainer  :  Stephen Tetley <stephen.tetley@gmail.com>
+-- Stability   :  unstable
+-- Portability :  GHC
+--
+-- This module corresponds to sections 4.1 (Errors) and 4.3 
+-- (Forcing Drawing to Complete) of the OpenVG 1.0.1 specs.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenVG.Raw.VG.DrawingContext (
+  -- * Tokens
+  vg_NO_ERROR, 
+  vg_BAD_HANDLE_ERROR, 
+  vg_ILLEGAL_ARGUMENT_ERROR,
+  vg_OUT_OF_MEMORY_ERROR, 
+  vg_PATH_CAPABILITY_ERROR,
+  vg_UNSUPPORTED_IMAGE_FORMAT_ERROR, 
+  vg_UNSUPPORTED_PATH_FORMAT_ERROR,
+  vg_IMAGE_IN_USE_ERROR,
+  vg_NO_CONTEXT_ERROR,
+  
+  -- * Functions
+  vgGetError,
+  vgFlush, 
+  vgFinish
+
+
+) where
+
+import Graphics.Rendering.OpenVG.Raw.VG.Core101
+
+
diff --git a/src/Graphics/Rendering/OpenVG/Raw/VG/Extending.hs b/src/Graphics/Rendering/OpenVG/Raw/VG/Extending.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenVG/Raw/VG/Extending.hs
@@ -0,0 +1,30 @@
+{-# OPTIONS -Wall #-}
+
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenVG.Raw.VG.Extending
+-- Copyright   :  (c) Stephen Tetley 2009
+-- License     :  BSD3
+--
+-- Maintainer  :  Stephen Tetley <stephen.tetley@gmail.com>
+-- Stability   :  unstable
+-- Portability :  GHC
+--
+-- This module corresponds to section 14 (Extending the API) 
+-- of the OpenVG 1.0.1 specs.
+--
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenVG.Raw.VG.Extending (
+  -- * Tokens
+  vg_VENDOR,
+  vg_RENDERER,
+  vg_VERSION,
+  vg_EXTENSIONS,
+ 
+  -- * Functions
+  vgGetString
+) where
+
+import Graphics.Rendering.OpenVG.Raw.VG.Core101
diff --git a/src/Graphics/Rendering/OpenVG/Raw/VG/Images.hs b/src/Graphics/Rendering/OpenVG/Raw/VG/Images.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenVG/Raw/VG/Images.hs
@@ -0,0 +1,65 @@
+{-# OPTIONS -Wall #-}
+
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenVG.Raw.VG.Images
+-- Copyright   :  (c) Stephen Tetley 2009
+-- License     :  BSD3
+--
+-- Maintainer  :  Stephen Tetley <stephen.tetley@gmail.com>
+-- Stability   :  unstable
+-- Portability :  GHC
+--
+-- This module corresponds to section 10 (Images) 
+-- of the OpenVG 1.0.1 specs.
+--
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenVG.Raw.VG.Images (
+  -- * Tokens
+  vg_IMAGE_QUALITY_NONANTIALIASED, 
+  vg_IMAGE_QUALITY_FASTER, 
+  vg_IMAGE_QUALITY_BETTER, 
+
+  vg_IMAGE_FORMAT, 
+  vg_IMAGE_WIDTH, 
+  vg_IMAGE_HEIGHT,
+
+  vg_DRAW_IMAGE_NORMAL, 
+  vg_DRAW_IMAGE_MULTIPLY, 
+  vg_DRAW_IMAGE_STENCIL,
+
+  vg_sRGBX_8888, vg_sRGBA_8888, vg_sRGBA_8888_PRE, vg_sRGB_565,
+  vg_sRGBA_5551, vg_sRGBA_4444, vg_sL_8, vg_lRGBX_8888,
+  vg_lRGBA_8888, vg_lRGBA_8888_PRE, vg_lL_8, vg_A_8, vg_BW_1,
+
+  vg_sXRGB_8888, vg_sARGB_8888, vg_sARGB_8888_PRE, vg_sARGB_1555,
+  vg_sARGB_4444, vg_lXRGB_8888, vg_lARGB_8888, vg_lARGB_8888_PRE,
+  vg_sBGRX_8888, vg_sBGRA_8888, vg_sBGRA_8888_PRE, vg_sBGR_565,
+  vg_sBGRA_5551, vg_sBGRA_4444, vg_lBGRX_8888, vg_lBGRA_8888,
+  vg_lBGRA_8888_PRE, vg_sXBGR_8888, vg_sABGR_8888,
+  vg_sABGR_8888_PRE, vg_sABGR_1555, vg_sABGR_4444, vg_lXBGR_8888,
+  vg_lABGR_8888, vg_lABGR_8888_PRE,
+
+  -- * Functions
+  vgCreateImage,
+  vgDestroyImage,
+  vgClearImage,
+  vgImageSubData,
+  vgGetImageSubData,
+  vgChildImage,
+  vgGetParent,
+  vgCopyImage,
+  vgDrawImage,
+  vgSetPixels,
+  vgWritePixels,
+  vgGetPixels,
+  vgReadPixels,
+  vgCopyPixels
+
+
+
+) where
+
+import Graphics.Rendering.OpenVG.Raw.VG.Core101
diff --git a/src/Graphics/Rendering/OpenVG/Raw/VG/Paint.hs b/src/Graphics/Rendering/OpenVG/Raw/VG/Paint.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenVG/Raw/VG/Paint.hs
@@ -0,0 +1,58 @@
+{-# OPTIONS -Wall #-}
+
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenVG.Raw.VG.Paint
+-- Copyright   :  (c) Stephen Tetley 2009
+-- License     :  BSD3
+--
+-- Maintainer  :  Stephen Tetley <stephen.tetley@gmail.com>
+-- Stability   :  unstable
+-- Portability :  GHC
+--
+-- This module corresponds to section 9 (Paint) 
+-- of the OpenVG 1.0.1 specs.
+--
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenVG.Raw.VG.Paint (
+  -- * Tokens
+  vg_PAINT_TYPE, 
+  vg_PAINT_COLOR, 
+  vg_PAINT_COLOR_RAMP_SPREAD_MODE, 
+  vg_PAINT_COLOR_RAMP_STOPS, 
+  vg_PAINT_COLOR_RAMP_PREMULTIPLIED, 
+  vg_PAINT_LINEAR_GRADIENT, 
+  vg_PAINT_RADIAL_GRADIENT, 
+  vg_PAINT_PATTERN_TILING_MODE,
+
+  vg_PAINT_TYPE_COLOR, 
+  vg_PAINT_TYPE_LINEAR_GRADIENT, 
+  vg_PAINT_TYPE_RADIAL_GRADIENT, 
+  vg_PAINT_TYPE_PATTERN,
+
+  vg_COLOR_RAMP_SPREAD_PAD, 
+  vg_COLOR_RAMP_SPREAD_REPEAT, 
+  vg_COLOR_RAMP_SPREAD_REFLECT,
+            
+  vg_TILE_FILL, 
+  vg_TILE_PAD, 
+  vg_TILE_REPEAT, 
+  vg_TILE_REFLECT,
+
+  -- * Functions
+  vgCreatePaint, 
+  vgDestroyPaint, 
+  vgSetPaint, 
+
+--  vgGetPaint,         NOT IMPLEMENTED BY SHIVA-VG  
+--  vgSetColor,         NOT IMPLEMENTED BY SHIVA-VG  
+--  vgGetColor,         NOT IMPLEMENTED BY SHIVA-VG  
+
+  vgPaintPattern
+  
+) where
+
+import Graphics.Rendering.OpenVG.Raw.VG.Core101
+
diff --git a/src/Graphics/Rendering/OpenVG/Raw/VG/Parameters.hs b/src/Graphics/Rendering/OpenVG/Raw/VG/Parameters.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenVG/Raw/VG/Parameters.hs
@@ -0,0 +1,93 @@
+{-# OPTIONS -Wall #-}
+
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenVG.Raw.VG.Parameters
+-- Copyright   :  (c) Stephen Tetley 2008, 2009
+-- License     :  BSD3
+--
+-- Maintainer  :  Stephen Tetley <stephen.tetley@gmail.com>
+-- Stability   :  unstable
+-- Portability :  GHC
+--
+-- This module corresponds to section 5 (Setting API Parameters) 
+-- of the OpenVG 1.0.1 specs.
+--
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenVG.Raw.VG.Parameters (
+  -- * Tokens
+  vg_MATRIX_MODE, 
+  vg_FILL_RULE, 
+  vg_IMAGE_QUALITY, 
+  vg_RENDERING_QUALITY, 
+  vg_BLEND_MODE, 
+  vg_IMAGE_MODE, 
+
+  vg_SCISSOR_RECTS, 
+
+  vg_STROKE_LINE_WIDTH, 
+  vg_STROKE_CAP_STYLE, 
+  vg_STROKE_JOIN_STYLE, 
+  vg_STROKE_MITER_LIMIT, 
+  vg_STROKE_DASH_PATTERN, 
+  vg_STROKE_DASH_PHASE, 
+  vg_STROKE_DASH_PHASE_RESET,
+
+  vg_TILE_FILL_COLOR, 
+
+  vg_CLEAR_COLOR, 
+
+  vg_MASKING,
+  vg_SCISSORING, 
+
+  vg_PIXEL_LAYOUT, 
+  vg_SCREEN_LAYOUT, 
+
+  vg_FILTER_FORMAT_LINEAR, 
+  vg_FILTER_FORMAT_PREMULTIPLIED, 
+  
+  vg_FILTER_CHANNEL_MASK, 
+  
+  vg_MAX_SCISSOR_RECTS, 
+  vg_MAX_DASH_COUNT, 
+  vg_MAX_KERNEL_SIZE, 
+  vg_MAX_SEPARABLE_KERNEL_SIZE, 
+  vg_MAX_COLOR_RAMP_STOPS,
+  vg_MAX_IMAGE_WIDTH, 
+  vg_MAX_IMAGE_HEIGHT, 
+  vg_MAX_IMAGE_PIXELS, 
+  vg_MAX_IMAGE_BYTES, 
+  vg_MAX_FLOAT,
+  vg_MAX_GAUSSIAN_STD_DEVIATION,
+
+
+  -- * Functions
+  vgSetf, 
+  vgSeti, 
+  vgSetfv,
+  vgSetiv,
+  
+  vgGetf, 
+  vgGeti, 
+  vgGetVectorSize, 
+  vgGetfv, 
+  vgGetiv,
+  
+  vgSetParameterf, 
+  vgSetParameteri, 
+  vgSetParameterfv, 
+  vgSetParameteriv,
+  
+  vgGetParameterf, 
+  vgGetParameteri, 
+  vgGetParameterVectorSize,
+  vgGetParameterfv, 
+  vgGetParameteriv
+) where
+
+import Graphics.Rendering.OpenVG.Raw.VG.Core101
+
+
+
diff --git a/src/Graphics/Rendering/OpenVG/Raw/VG/Paths.hs b/src/Graphics/Rendering/OpenVG/Raw/VG/Paths.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenVG/Raw/VG/Paths.hs
@@ -0,0 +1,127 @@
+{-# OPTIONS -Wall #-}
+
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenVG.Raw.VG.Paths
+-- Copyright   :  (c) Stephen Tetley 2008, 2009
+-- License     :  BSD3
+--
+-- Maintainer  :  Stephen Tetley <stephen.tetley@gmail.com>
+-- Stability   :  unstable
+-- Portability :  GHC
+--
+-- This module corresponds to section 8 (Paths) 
+-- of the OpenVG 1.0.1 specs.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenVG.Raw.VG.Paths (
+  -- * Tokens
+  vg_PATH_FORMAT_STANDARD,
+
+  vg_PATH_DATATYPE_S_8,
+  vg_PATH_DATATYPE_S_16,
+  vg_PATH_DATATYPE_S_32,
+  vg_PATH_DATATYPE_F,
+
+  vg_ABSOLUTE,
+  vg_RELATIVE,
+
+  vg_CLOSE_PATH,
+  vg_MOVE_TO,
+  vg_LINE_TO,
+  vg_HLINE_TO,
+  vg_VLINE_TO,
+  vg_QUAD_TO,
+  vg_CUBIC_TO,
+  vg_SQUAD_TO,
+  vg_SCUBIC_TO,
+  vg_SCCWARC_TO,
+  vg_SCWARC_TO,
+  vg_LCCWARC_TO,
+  vg_LCWARC_TO,
+
+  vg_MOVE_TO_ABS,
+  vg_MOVE_TO_REL,
+  vg_LINE_TO_ABS,
+  vg_LINE_TO_REL,
+  vg_HLINE_TO_ABS,
+  vg_HLINE_TO_REL,
+  vg_VLINE_TO_ABS,
+  vg_VLINE_TO_REL,
+  vg_QUAD_TO_ABS,
+  vg_QUAD_TO_REL,
+  vg_CUBIC_TO_ABS,
+  vg_CUBIC_TO_REL,
+  vg_SQUAD_TO_ABS,
+  vg_SQUAD_TO_REL,
+  vg_SCUBIC_TO_ABS,
+  vg_SCUBIC_TO_REL,
+  vg_SCCWARC_TO_ABS,
+  vg_SCCWARC_TO_REL,
+  vg_SCWARC_TO_ABS,
+  vg_SCWARC_TO_REL,
+  vg_LCCWARC_TO_ABS,
+  vg_LCCWARC_TO_REL,
+  vg_LCWARC_TO_ABS,
+  vg_LCWARC_TO_REL,
+  vg_PATH_CAPABILITY_APPEND_FROM,
+  vg_PATH_CAPABILITY_APPEND_TO,
+  vg_PATH_CAPABILITY_MODIFY,
+  vg_PATH_CAPABILITY_TRANSFORM_FROM,
+  vg_PATH_CAPABILITY_TRANSFORM_TO,
+  vg_PATH_CAPABILITY_INTERPOLATE_FROM,
+  vg_PATH_CAPABILITY_INTERPOLATE_TO,
+  vg_PATH_CAPABILITY_PATH_LENGTH,
+  vg_PATH_CAPABILITY_POINT_ALONG_PATH,
+  vg_PATH_CAPABILITY_TANGENT_ALONG_PATH,
+  vg_PATH_CAPABILITY_PATH_BOUNDS,
+  vg_PATH_CAPABILITY_PATH_TRANSFORMED_BOUNDS,
+  vg_PATH_CAPABILITY_ALL,
+
+  vg_PATH_FORMAT,
+  vg_PATH_DATATYPE,
+  vg_PATH_SCALE,
+  vg_PATH_BIAS,
+  vg_PATH_NUM_SEGMENTS,
+  vg_PATH_NUM_COORDS,
+
+  vg_CAP_BUTT,
+  vg_CAP_ROUND,
+  vg_CAP_SQUARE,
+ 
+  vg_JOIN_MITER,
+  vg_JOIN_ROUND,
+  vg_JOIN_BEVEL,
+
+  vg_EVEN_ODD,
+  vg_NON_ZERO,
+
+  vg_STROKE_PATH,
+  vg_FILL_PATH,
+
+
+  -- * Types
+  VGPath,
+
+  -- * Functions
+  vgCreatePath, 
+  vgClearPath, 
+  vgDestroyPath, 
+  vgGetPathCapabilities, 
+  vgRemovePathCapabilities, 
+  vgAppendPath, 
+  vgAppendPathData, 
+  vgModifyPathCoords,
+  vgTransformPath, 
+  vgInterpolatePath,    
+  vgPathLength,                 -- returns 0.0
+  vgPointAlongPath,             
+  vgPathBounds,               
+  vgPathTransformedBounds,  
+  vgDrawPath
+
+) where
+
+
+import Graphics.Rendering.OpenVG.Raw.VG.Core101
diff --git a/src/Graphics/Rendering/OpenVG/Raw/VG/RenderingQuality.hs b/src/Graphics/Rendering/OpenVG/Raw/VG/RenderingQuality.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenVG/Raw/VG/RenderingQuality.hs
@@ -0,0 +1,50 @@
+{-# OPTIONS -Wall #-}
+
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenVG.Raw.VG.RenderingQuality
+-- Copyright   :  (c) Stephen Tetley 2009
+-- License     :  BSD3
+--
+-- Maintainer  :  Stephen Tetley <stephen.tetley@gmail.com>
+-- Stability   :  unstable
+-- Portability :  GHC
+--
+-- This module corresponds to section 6 (Rendering Quality and Antialiasing) 
+-- of the OpenVG 1.0.1 specs.
+--
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenVG.Raw.VG.RenderingQuality (
+  -- * Tokens
+  vg_RENDERING_QUALITY_NONANTIALIASED, 
+  vg_RENDERING_QUALITY_FASTER,
+  vg_RENDERING_QUALITY_BETTER,
+
+  vg_PIXEL_LAYOUT_UNKNOWN, 
+  vg_PIXEL_LAYOUT_RGB_VERTICAL, 
+  vg_PIXEL_LAYOUT_BGR_VERTICAL,
+  vg_PIXEL_LAYOUT_RGB_HORIZONTAL, 
+  vg_PIXEL_LAYOUT_BGR_HORIZONTAL,
+
+  vg_MATRIX_PATH_USER_TO_SURFACE, 
+  vg_MATRIX_IMAGE_USER_TO_SURFACE, 
+  vg_MATRIX_FILL_PAINT_TO_USER, 
+  vg_MATRIX_STROKE_PAINT_TO_USER, 
+
+  -- * Functions
+  vgLoadIdentity,
+  vgLoadMatrix,
+  vgGetMatrix,
+  vgMultMatrix,
+  vgTranslate,
+  vgScale,
+  vgShear,
+  vgRotate 
+
+) where
+
+import Graphics.Rendering.OpenVG.Raw.VG.Core101
+    
+
diff --git a/src/Graphics/Rendering/OpenVG/Raw/VG/Scissoring.hs b/src/Graphics/Rendering/OpenVG/Raw/VG/Scissoring.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenVG/Raw/VG/Scissoring.hs
@@ -0,0 +1,39 @@
+{-# OPTIONS -Wall #-}
+
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenVG.Raw.VG.Scissoring
+-- Copyright   :  (c) Stephen Tetley 2009
+-- License     :  BSD3
+--
+-- Maintainer  :  Stephen Tetley <stephen.tetley@gmail.com>
+-- Stability   :  unstable
+-- Portability :  GHC
+--
+-- This module corresponds to section 7 (Scissoring, Masking and Clearing) 
+-- of the OpenVG 1.0.1 specs.
+--
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenVG.Raw.VG.Scissoring (
+  -- * Tokens
+  vg_MAX_SCISSOR_RECTS,
+
+  vg_CLEAR_MASK,
+  vg_FILL_MASK,
+  vg_SET_MASK,
+  vg_UNION_MASK,
+  vg_INTERSECT_MASK,
+  vg_SUBTRACT_MASK,
+
+  -- * Functions
+  vgMask,
+  vgClear
+
+) where
+
+import Graphics.Rendering.OpenVG.Raw.VG.Core101
+
+
+
diff --git a/src/Graphics/Rendering/OpenVG/Raw/VG/ShivaExtensions.hs b/src/Graphics/Rendering/OpenVG/Raw/VG/ShivaExtensions.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenVG/Raw/VG/ShivaExtensions.hs
@@ -0,0 +1,27 @@
+{-# OPTIONS -Wall #-}
+
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenVG.Raw.VG.ShivaExtensions
+-- Copyright   :  (c) Stephen Tetley 2009
+-- License     :  BSD3
+--
+-- Maintainer  :  Stephen Tetley <stephen.tetley@gmail.com>
+-- Stability   :  unstable
+-- Portability :  GHC
+--
+-- Shiva extensions to replace EGL - see the README in the shiva-vg
+-- archive.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenVG.Raw.VG.ShivaExtensions (
+  -- * Functions
+  vgCreateContextSH,
+  vgResizeSurfaceSH,
+  vgDestroyContextSH
+
+) where
+
+import Graphics.Rendering.OpenVG.Raw.VG.Core101
+
diff --git a/src/Graphics/Rendering/OpenVG/Raw/VGU/CInternals.hsc b/src/Graphics/Rendering/OpenVG/Raw/VGU/CInternals.hsc
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenVG/Raw/VGU/CInternals.hsc
@@ -0,0 +1,116 @@
+{-# LANGUAGE CPP                        #-}
+{-# LANGUAGE ForeignFunctionInterface   #-}
+{-# OPTIONS -Wall #-}
+
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenVG.Raw.VGU.CInternals
+-- Copyright   :  (c) Stephen Tetley 2009
+-- License     :  BSD3
+--
+-- Maintainer  :  Stephen Tetley <stephen.tetley@gmail.com>
+-- Stability   :  highly unstable
+-- Portability :  GHC
+--
+-- Internal module declaring all the datatypes and foreign declarations 
+-- defined in <vg/openvgu.h>.
+--
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenVG.Raw.VGU.CInternals where
+
+#include <vg/vgu.h>
+
+import Graphics.Rendering.OpenVG.Raw.VG.Core101
+
+import Foreign.Ptr ( Ptr )
+
+type VGU_ErrorCode = VGenum
+
+-- | Enumerations
+
+#{enum VGenum,
+  , vgu_NO_ERROR                        = VGU_NO_ERROR
+  , vgu_BAD_HANDLE_ERROR                = VGU_BAD_HANDLE_ERROR
+  , vgu_ILLEGAL_ARGUMENT_ERROR          = VGU_ILLEGAL_ARGUMENT_ERROR
+  , vgu_OUT_OF_MEMORY_ERROR             = VGU_OUT_OF_MEMORY_ERROR
+  , vgu_PATH_CAPABILITY_ERROR           = VGU_PATH_CAPABILITY_ERROR
+  , vgu_BAD_WARP_ERROR                  = VGU_BAD_WARP_ERROR
+  }
+
+#{enum VGenum,
+  , vgu_ARC_OPEN                        = VGU_ARC_OPEN
+  , vgu_ARC_CHORD                       = VGU_ARC_CHORD
+  , vgu_ARC_PIE                         = VGU_ARC_PIE
+} 
+  
+
+foreign import ccall unsafe "vg/openvg.h vguLine" 
+    vguLine :: VGPath 
+            -> VGfloat -> VGfloat -> VGfloat -> VGfloat 
+            -> IO VGU_ErrorCode
+
+foreign import ccall unsafe "vg/openvg.h vguPolygon"
+    vguPolygon :: VGPath 
+               -> Ptr VGfloat -> VGint -> VGboolean 
+               -> IO VGU_ErrorCode 
+
+foreign import ccall unsafe "vg/openvg.h vguRect"
+    vguRect :: VGPath 
+            -> VGfloat -> VGfloat -> VGfloat -> VGfloat 
+            -> IO VGU_ErrorCode     
+
+foreign import ccall unsafe "vg/openvg.h vguRoundRect"
+    vguRoundRect :: VGPath 
+                 -> VGfloat -> VGfloat -> VGfloat -> VGfloat
+                 -> VGfloat -> VGfloat 
+                 -> IO VGU_ErrorCode  
+
+foreign import ccall unsafe "vg/openvg.h vguEllipse"
+    vguEllipse :: VGPath 
+               -> VGfloat -> VGfloat -> VGfloat -> VGfloat 
+               -> IO VGU_ErrorCode  
+
+foreign import ccall unsafe "vg/openvg.h vguArc"
+    vguArc :: VGPath 
+           -> VGfloat -> VGfloat -> VGfloat -> VGfloat
+           -> VGfloat -> VGfloat
+           -> VGenum 
+           -> IO VGU_ErrorCode  
+
+{-
+-- Stubbed in shivaVG 0.2.1 (not implemented)
+foreign import ccall unsafe "vg/openvg.h vguComputeWarpQuadToSquare"
+    vguComputeWarpQuadToSquare :: VGfloat -> VGfloat 
+                               -> VGfloat -> VGfloat
+                               -> VGfloat -> VGfloat
+                               -> VGfloat -> VGfloat
+                               -> Ptr VGfloat
+                               -> IO VGU_ErrorCode  
+
+-- Stubbed in shivaVG 0.2.1 (not implemented)
+foreign import ccall unsafe "vg/openvg.h vguComputeWarpSquareToQuad"
+    vguComputeWarpSquareToQuad :: VGfloat -> VGfloat 
+                               -> VGfloat -> VGfloat
+                               -> VGfloat -> VGfloat
+                               -> VGfloat -> VGfloat
+                               -> Ptr VGfloat
+                               -> IO VGU_ErrorCode  
+
+-- Stubbed in shivaVG 0.2.1 (not implemented)
+foreign import ccall unsafe "vg/openvg.h vguComputeWarpQuadToQuad"
+    vguComputeWarpQuadToQuad :: VGfloat -> VGfloat 
+                             -> VGfloat -> VGfloat
+                             -> VGfloat -> VGfloat
+                             -> VGfloat -> VGfloat
+                             -> VGfloat -> VGfloat 
+                             -> VGfloat -> VGfloat
+                             -> VGfloat -> VGfloat
+                             -> VGfloat -> VGfloat
+                             -> Ptr VGfloat
+                             -> IO VGU_ErrorCode  
+
+-}
+
+-- end of file
diff --git a/src/Graphics/Rendering/OpenVG/Raw/VGU/VGU.hs b/src/Graphics/Rendering/OpenVG/Raw/VGU/VGU.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenVG/Raw/VGU/VGU.hs
@@ -0,0 +1,45 @@
+{-# OPTIONS -Wall #-}
+
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenVG.Raw.VGU.VGU
+-- Copyright   :  (c) Stephen Tetley 2009
+-- License     :  BSD3
+--
+-- Maintainer  :  Stephen Tetley <stephen.tetley@gmail.com>
+-- Stability   :  unstable
+-- Portability :  GHC
+--
+-- This module corresponds to section 16 (The VGU Utility Library) 
+-- of the OpenVG 1.0.1 specs.
+--
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenVG.Raw.VGU.VGU (
+  -- * Functions
+  vguLine,
+  vguPolygon,
+  vguRect,
+  vguRoundRect,
+  vguEllipse,
+  vguArc,
+  
+  -- * Tokens
+  vgu_NO_ERROR,
+  vgu_BAD_HANDLE_ERROR,
+  vgu_ILLEGAL_ARGUMENT_ERROR,
+  vgu_OUT_OF_MEMORY_ERROR,
+  vgu_PATH_CAPABILITY_ERROR,
+  vgu_BAD_WARP_ERROR,
+
+  vgu_ARC_OPEN,
+  vgu_ARC_CHORD,
+  vgu_ARC_PIE
+
+) where
+
+
+import Graphics.Rendering.OpenVG.Raw.VGU.CInternals
+
+
