From 979be5f588a1ffd6e1d060cd794e87526d517b7a Mon Sep 17 00:00:00 2001 From: Sébastien Dailly Date: Mon, 11 Jan 2021 05:36:46 +0100 Subject: Layer review --- layer/fillPrinter.ml | 70 +++++++++++++++++++--------------------------------- 1 file changed, 26 insertions(+), 44 deletions(-) (limited to 'layer/fillPrinter.ml') 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 -- cgit v1.2.3