summaryrefslogtreecommitdiff
path: root/script.it/layer/repr.ml
blob: 552e2b76ff0b8001087c04913bee8d6bbc00abbf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
module type PRINTER = sig

  type t

  val create: unit -> t

  (* Start a new path. *)
  val move_to: Gg.v2 -> t -> t

  val line_to: Gg.v2 -> t -> t

  (** [quadratic_to ctrl0 ctrl1 p1] create a quadratic curve from the current
      point to [p1], with control points [ctrl0] and [ctrl1] *)
  val quadratic_to: Gg.v2 -> Gg.v2 -> Gg.v2 -> t -> t

  (** Request for the path to be closed *)
  val close: t -> t

end

module type ENGINE = sig
  type t

  type point = Path.Point.t

  type repr

  val get
    : t -> repr

  val create_path
    : (repr -> repr) -> t

  val start
    : point -> point -> t -> t

  val line_to
    : (point * point) -> (point * point) -> t -> t

  val quadratic_to
    : (point * Gg.v2 * Gg.v2 * point)
    -> (point * Gg.v2 * Gg.v2 * point)
    -> t
    -> t

  val stop
    : t -> t

end