sig
  type t = Archimedes_internals.Path.t
  val make : unit -> Archimedes.Path.t
  val is_empty : Archimedes.Path.t -> bool
  val copy : Archimedes.Path.t -> Archimedes.Path.t
  val clear : Archimedes.Path.t -> unit
  val extents : Archimedes.Path.t -> Archimedes.Matrix.rectangle
  val move_to : Archimedes.Path.t -> x:float -> y:float -> unit
  val rel_move_to : Archimedes.Path.t -> x:float -> y:float -> unit
  val line_to : Archimedes.Path.t -> x:float -> y:float -> unit
  val rel_line_to : Archimedes.Path.t -> x:float -> y:float -> unit
  val line_of_array :
    Archimedes.Path.t ->
    ?i0:int ->
    ?i1:int ->
    ?const_x:bool -> float array -> ?const_y:bool -> float array -> unit
  type vec =
      (float, Bigarray.float64_elt, Bigarray.fortran_layout)
      Bigarray.Array1.t
  val line_of_vec :
    Archimedes.Path.t ->
    ?i0:int ->
    ?i1:int ->
    ?const_x:bool ->
    Archimedes.Path.vec -> ?const_y:bool -> Archimedes.Path.vec -> unit
  type cvec =
      (float, Bigarray.float64_elt, Bigarray.c_layout) Bigarray.Array1.t
  val line_of_cvec :
    Archimedes.Path.t ->
    ?i0:int ->
    ?i1:int ->
    ?const_x:bool ->
    Archimedes.Path.cvec -> ?const_y:bool -> Archimedes.Path.cvec -> unit
  val rectangle :
    Archimedes.Path.t -> x:float -> y:float -> w:float -> h:float -> unit
  val curve_to :
    Archimedes.Path.t ->
    x1:float ->
    y1:float -> x2:float -> y2:float -> x3:float -> y3:float -> unit
  val arc : Archimedes.Path.t -> r:float -> a1:float -> a2:float -> unit
  val close : Archimedes.Path.t -> unit
  val current_point : Archimedes.Path.t -> float * float
  val append : Archimedes.Path.t -> Archimedes.Path.t -> unit
  val transform :
    Archimedes.Matrix.t -> Archimedes.Path.t -> Archimedes.Path.t
end