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