sig   type warning =       [ `Other of string       | `Textless_glyph_cut of Vg.I.t       | `Unsupported_cut of Vg.P.area * Vg.I.t       | `Unsupported_glyph_cut of Vg.P.area * Vg.I.t ]   val pp_warning : Format.formatter -> Vg.Vgr.warning -> unit   type warn = Vg.Vgr.warning -> unit   val xmp :     ?title:string ->     ?authors:string list ->     ?subjects:string list ->     ?description:string ->     ?rights:string ->     ?creator_tool:string -> ?create_date:float -> unit -> string   type renderable = Gg.size2 * Gg.box2 * Vg.image   type dst_stored =       [ `Buffer of Buffer.t | `Channel of Pervasives.out_channel | `Manual ]   type dst =       [ `Buffer of Buffer.t       | `Channel of Pervasives.out_channel       | `Manual       | `Other ]   type 'a target constraint 'a = [< Vg.Vgr.dst ]   type t = Vg.renderer   val create :     ?limit:int ->     ?warn:Vg.Vgr.warn ->     ([< Vg.Vgr.dst ] as 'a) Vg.Vgr.target -> '-> Vg.renderer   val render :     Vg.renderer ->     [< `Await | `End | `Image of Vg.Vgr.renderable ] -> [ `Ok | `Partial ]   val renderer_dst : Vg.renderer -> Vg.Vgr.dst   val renderer_limit : Vg.renderer -> int   module Manual :     sig       val dst : Vg.renderer -> bytes -> int -> int -> unit       val dst_rem : Vg.renderer -> int     end   module Private :     sig       module Data :         sig           type segment =               [ `Ccurve of Gg.p2 * Gg.p2 * Gg.p2               | `Close               | `Earc of bool * bool * float * Gg.size2 * Gg.p2               | `Line of Gg.p2               | `Qcurve of Gg.p2 * Gg.p2               | `Sub of Gg.p2 ]           type path = Vg.Vgr.Private.Data.segment list           val of_path : Vg.P.t -> Vg.Vgr.Private.Data.path           type tr =               Move of Gg.v2             | Rot of float             | Scale of Gg.v2             | Matrix of Gg.m3           val tr_to_m3 : Vg.Vgr.Private.Data.tr -> Gg.M3.t           val inv_tr_to_m3 : Vg.Vgr.Private.Data.tr -> Gg.M3.t           type blender =               [ `Atop | `Copy | `In | `Out | `Over | `Plus | `Xor ]           type primitive =               Const of Gg.color             | Axial of Gg.Color.stops * Gg.p2 * Gg.p2             | Radial of Gg.Color.stops * Gg.p2 * Gg.p2 * float             | Raster of Gg.box2 * Gg.raster           type glyph_run = {             font : Vg.font;             text : string option;             o : Gg.p2;             blocks : bool * (int * int) list;             advances : Gg.v2 list;             glyphs : Vg.glyph list;           }           type image =               Primitive of Vg.Vgr.Private.Data.primitive             | Cut of Vg.P.area * Vg.Vgr.Private.Data.path *                 Vg.Vgr.Private.Data.image             | Cut_glyphs of Vg.P.area * Vg.Vgr.Private.Data.glyph_run *                 Vg.Vgr.Private.Data.image             | Blend of Vg.Vgr.Private.Data.blender * float option *                 Vg.Vgr.Private.Data.image * Vg.Vgr.Private.Data.image             | Tr of Vg.Vgr.Private.Data.tr * Vg.Vgr.Private.Data.image           val of_image : Vg.I.t -> Vg.Vgr.Private.Data.image         end       module Font :         sig           val css_font : unit:string -> Vg.font -> string           val css_weight : Vg.font -> string           val css_slant : Vg.font -> string         end       module P :         sig           val of_data : Vg.Vgr.Private.Data.path -> Vg.P.t           val earc_params :             Gg.p2 ->             large:bool ->             cw:bool ->             float -> Gg.v2 -> Gg.p2 -> (Gg.p2 * Gg.m2 * float * float) option           val miter_limit : Vg.P.outline -> float         end       module I : sig val of_data : Vg.Vgr.Private.Data.image -> Vg.I.t end       type renderer       type k = Vg.Vgr.Private.renderer -> [ `Ok | `Partial ]       type render_fun =           [ `End | `Image of Gg.size2 * Gg.box2 * Vg.Vgr.Private.Data.image ] ->           Vg.Vgr.Private.k -> Vg.Vgr.Private.k       type 'a render_target =           Vg.Vgr.Private.renderer -> '-> bool * Vg.Vgr.Private.render_fun         constraint 'a = [< Vg.Vgr.dst ]       val create_target :         ([< Vg.Vgr.dst ] as 'a) Vg.Vgr.Private.render_target ->         'Vg.Vgr.target       val renderer : Vg.Vgr.t -> Vg.Vgr.Private.renderer       val limit : Vg.Vgr.Private.renderer -> int       val warn : Vg.Vgr.Private.renderer -> Vg.Vgr.warning -> unit       val partial :         Vg.Vgr.Private.k -> Vg.Vgr.Private.renderer -> [> `Partial ]       val flush :         Vg.Vgr.Private.k -> Vg.Vgr.Private.renderer -> [ `Ok | `Partial ]       val writeb :         int ->         Vg.Vgr.Private.k -> Vg.Vgr.Private.renderer -> [ `Ok | `Partial ]       val writes :         string ->         int ->         int ->         Vg.Vgr.Private.k -> Vg.Vgr.Private.renderer -> [ `Ok | `Partial ]       val writebuf :         Buffer.t ->         int ->         int ->         Vg.Vgr.Private.k -> Vg.Vgr.Private.renderer -> [ `Ok | `Partial ]       val add_xml_data : Buffer.t -> string -> unit     end end