Module Vg.Vgr.Private

module Private: sig .. end
Private functions for implementing renderers.

Warning. Vg users should not use these definitions, they exposes Vg's internals for implementing renderers. This functionality is subject to change even between minor versions of the library.

In order to provide a consistant interface for Vg users, renderer writers should follow the guidelines below. You may want to drop an email to Daniel B├╝nzli <daniel.buenzl> for help and discussion.

Internal data

module Data: sig .. end
Internal data.
module Font: sig .. end
Font helpers.
module P: sig .. end
Paths helpers.
module I: sig .. end
Image helpers


type renderer 
The type for renderers.
type k = renderer -> [ `Ok | `Partial ] 
The type for renderer continuations.
type render_fun = [ `End | `Image of Gg.size2 * Gg.box2 * Data.image ] ->
k -> k
The type for rendering functions.
type [< Vg.Vgr.dst ] render_target = renderer ->
([< Vg.Vgr.dst ] as 'a) -> bool * render_fun
The type for render targets. The function takes a created renderer and its destination. It should return a boolean indicating whether multiple images can be rendered on the target, and a function that is invoked by the renderer to render a new image or end the rendering sequence.
val create_target : ([< Vg.Vgr.dst ] as 'a) render_target -> 'a
create_target t makes an end-user render target from t.
val renderer : Vg.Vgr.t -> renderer
renderer r is r's internal representation.
val limit : renderer -> int
limit r is r's render limit.
val warn : renderer -> Vg.Vgr.warning -> unit
warn r w reports the warning w on r.
val partial : k -> renderer -> [> `Partial ]
partial k r suspends the renderer r and returns `Partial. Rendering will continue with k r, on Vg.Vgr.render `Await.

Writing Vg.Vgr.dst_stored destinations

val flush : k -> renderer -> [ `Ok | `Partial ]
flush k r flushes the renderer r. If r writes on a stored destination this function must be called by the rendering function on `End.
val writeb : int -> k -> renderer -> [ `Ok | `Partial ]
writeb b k r writes the byte b and kontinues.
val writes : string ->
int ->
int -> k -> renderer -> [ `Ok | `Partial ]
writes s j l k r writes l bytes from s starting at j and kontinues.
val writebuf : Buffer.t ->
int ->
int -> k -> renderer -> [ `Ok | `Partial ]
writebuf buf j l k r write l bytes from buf starting at j and kontinues.


val add_xml_data : Buffer.t -> string -> unit
add_xml_data b s adds s to b, escapes '<', '>', '&' and '"' (but not single quotes) and maps illegal XML unicode characters to the replacement character U+FFFD.