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