sig   type cap = [ `Butt | `Round | `Square ]   type join = [ `Bevel | `Miter | `Round ]   type dashes = float * float list   type outline = {     width : float;     cap : Vg.P.cap;     join : Vg.P.join;     miter_angle : float;     dashes : Vg.P.dashes option;   }   val o : Vg.P.outline   val pp_outline : Format.formatter -> Vg.P.outline -> unit   type area = [ `Aeo | `Anz | `O of Vg.P.outline ]   val pp_area : Format.formatter -> Vg.P.area -> unit   type t = Vg.path   val empty : Vg.path   val sub : ?rel:bool -> Gg.p2 -> Vg.path -> Vg.path   val line : ?rel:bool -> Gg.p2 -> Vg.path -> Vg.path   val qcurve : ?rel:bool -> Gg.p2 -> Gg.p2 -> Vg.path -> Vg.path   val ccurve : ?rel:bool -> Gg.p2 -> Gg.p2 -> Gg.p2 -> Vg.path -> Vg.path   val earc :     ?rel:bool ->     ?large:bool ->     ?cw:bool -> ?angle:float -> Gg.size2 -> Gg.p2 -> Vg.path -> Vg.path   val close : Vg.path -> Vg.path   val circle : ?rel:bool -> Gg.p2 -> float -> Vg.path -> Vg.path   val ellipse :     ?rel:bool -> ?angle:float -> Gg.p2 -> Gg.size2 -> Vg.path -> Vg.path   val rect : ?rel:bool -> Gg.box2 -> Vg.path -> Vg.path   val rrect : ?rel:bool -> Gg.box2 -> Gg.size2 -> Vg.path -> Vg.path   val last_pt : Vg.path -> Gg.p2   val append : Vg.path -> Vg.path -> Vg.path   val tr : Gg.m3 -> Vg.path -> Vg.path   type fold =       [ `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 ]   val fold : ?rev:bool -> ('-> Vg.P.fold -> 'a) -> '-> Vg.path -> 'a   val is_empty : Vg.path -> bool   val equal : Vg.path -> Vg.path -> bool   val equal_f : (float -> float -> bool) -> Vg.path -> Vg.path -> bool   val compare : Vg.path -> Vg.path -> int   val compare_f : (float -> float -> int) -> Vg.path -> Vg.path -> int   val to_string : Vg.path -> string   val pp : Format.formatter -> Vg.path -> unit   val pp_f :     (Format.formatter -> float -> unit) ->     Format.formatter -> Vg.path -> unit end