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 -> 'a -> bool * Vg.Vgr.Private.render_fun
constraint 'a = [< Vg.Vgr.dst ]
val create_target :
([< Vg.Vgr.dst ] as 'a) Vg.Vgr.Private.render_target -> 'a 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