aboutsummaryrefslogtreecommitdiff
path: root/layer/fillPrinter.ml
diff options
context:
space:
mode:
authorSébastien Dailly <sebastien@chimrod.com>2021-01-11 05:36:46 +0100
committerSébastien Dailly <sebastien@chimrod.com>2021-01-11 13:55:43 +0100
commit979be5f588a1ffd6e1d060cd794e87526d517b7a (patch)
treea96605b6ae27bcf646b17f022acf7f5f0cf0b8bf /layer/fillPrinter.ml
parent85b40e5712fcbe76c697d1a22fb126db8079098c (diff)
Layer review
Diffstat (limited to 'layer/fillPrinter.ml')
-rwxr-xr-xlayer/fillPrinter.ml70
1 files changed, 26 insertions, 44 deletions
diff --git a/layer/fillPrinter.ml b/layer/fillPrinter.ml
index 9b6546c..f3717c2 100755
--- a/layer/fillPrinter.ml
+++ b/layer/fillPrinter.ml
@@ -1,16 +1,16 @@
-module Point = Path.Point
-
module Make(Repr: Repr.PRINTER) = struct
- type t = Point.t
+ type point = Path.Point.t
+
+ type repr = Repr.t
- type repr =
+ type t =
{ path: Repr.t
; close : Repr.t -> Repr.t
}
let create_path
- : (Repr.t -> Repr.t) -> repr
+ : (Repr.t -> Repr.t) -> t
= fun f ->
{ close = f
; path = Repr.create ()
@@ -18,23 +18,23 @@ module Make(Repr: Repr.PRINTER) = struct
(* Start a new path. *)
- let start'
- : Gg.v2 -> Gg.v2 -> repr -> repr
+ let start
+ : point -> point -> t -> t
= fun p1 _ {close ; path } ->
- let path = Repr.move_to p1 path in
+ let path = Repr.move_to (Path.Point.get_coord p1) path in
{ close
; path
}
- let start
- : Path.Point.t -> repr -> repr
- = fun pt t ->
- let p = (Point.get_coord pt) in
- start' p p t
-
- let line_to'
- : (Gg.v2 * Gg.v2) -> (Gg.v2 * Gg.v2) -> repr -> repr
+ let line_to
+ : (point * point) -> (point * point) -> t -> t
= fun (p0, p1) (p0', p1') t ->
+
+ let p0 = Path.Point.get_coord p0
+ and p1 = Path.Point.get_coord p1
+ and p0' = Path.Point.get_coord p0'
+ and p1' = Path.Point.get_coord p1' in
+
let path =
Repr.move_to p1 t.path
|> Repr.line_to p1'
@@ -45,21 +45,15 @@ module Make(Repr: Repr.PRINTER) = struct
let path = t.close path in
{ t with path}
- let line_to
- : Point.t -> Point.t -> repr -> repr
- = fun p0 p1 t ->
-
- line_to'
- ( Point.get_coord p0
- , Point.get_coord p1 )
- ( Point.get_coord' p0
- , Point.get_coord' p1 )
- t
-
- let quadratic_to'
- : (Gg.v2 * Gg.v2 * Gg.v2 * Gg.v2) -> (Gg.v2 * Gg.v2 * Gg.v2 * Gg.v2) -> repr -> repr
- = fun (p0, ctrl0, ctrl1, p1) (p0', ctrl0', ctrl1', p1') t ->
+ let quadratic_to
+ : (point * Gg.v2 * Gg.v2 * point) -> (point * Gg.v2 * Gg.v2 * point) -> t -> t
+ = fun (p0, ctrl0, ctrl1, p1) (p0', ctrl0', ctrl1', p1') t ->
+ let p0 = Path.Point.get_coord p0
+ and p1 = Path.Point.get_coord p1
+ and p0' = Path.Point.get_coord p0'
+ and p1' = Path.Point.get_coord p1'
+ in
let path =
Repr.move_to p1 t.path
@@ -83,25 +77,13 @@ module Make(Repr: Repr.PRINTER) = struct
{ t with path }
- let quadratic_to
- : (t * Gg.v2 * Gg.v2 * t) -> repr -> repr
- = fun (p0, ctrl0, ctrl1, p1) t ->
-
-
- let ctrl0' = Point.get_coord' @@ Point.copy p0 ctrl0
- and ctrl1' = Point.get_coord' @@ Point.copy p1 ctrl1 in
- quadratic_to'
- (Point.get_coord p0, ctrl0, ctrl1, Point.get_coord p1)
- (Point.get_coord' p0, ctrl0', ctrl1', Point.get_coord' p1)
- t
-
let stop
- : repr -> repr
+ : t -> t
= fun t ->
t
let get
- : repr -> Repr.t
+ : t -> Repr.t
= fun t ->
t.path
end