sig
  val supported : bool
  module CPoint :
    sig
      type t = Cairo.point = { x : float; y : float; }
      val add :
        Mlpost.Concrete.CPoint.t ->
        Mlpost.Concrete.CPoint.t -> Mlpost.Concrete.CPoint.t
      val sub :
        Mlpost.Concrete.CPoint.t ->
        Mlpost.Concrete.CPoint.t -> Mlpost.Concrete.CPoint.t
      val opp : Mlpost.Concrete.CPoint.t -> Mlpost.Concrete.CPoint.t
      val mult :
        float -> Mlpost.Concrete.CPoint.t -> Mlpost.Concrete.CPoint.t
      val div : Mlpost.Concrete.CPoint.t -> float -> Mlpost.Concrete.CPoint.t
      module Infix :
        sig
          val ( +/ ) :
            Mlpost.Concrete.CPoint.t ->
            Mlpost.Concrete.CPoint.t -> Mlpost.Concrete.CPoint.t
          val ( -/ ) :
            Mlpost.Concrete.CPoint.t ->
            Mlpost.Concrete.CPoint.t -> Mlpost.Concrete.CPoint.t
          val ( */ ) :
            float -> Mlpost.Concrete.CPoint.t -> Mlpost.Concrete.CPoint.t
          val ( // ) :
            Mlpost.Concrete.CPoint.t -> float -> Mlpost.Concrete.CPoint.t
        end
      val print : Format.formatter -> Mlpost.Concrete.CPoint.t -> unit
    end
  module CPath :
    sig
      type t
      type abscissa = float
      val length : Mlpost.Concrete.CPath.t -> float
      val is_closed : Mlpost.Concrete.CPath.t -> bool
      val is_a_point :
        Mlpost.Concrete.CPath.t -> Mlpost.Concrete.CPoint.t option
      val intersection :
        Mlpost.Concrete.CPath.t ->
        Mlpost.Concrete.CPath.t ->
        (Mlpost.Concrete.CPath.abscissa * Mlpost.Concrete.CPath.abscissa)
        list
      val one_intersection :
        Mlpost.Concrete.CPath.t ->
        Mlpost.Concrete.CPath.t ->
        Mlpost.Concrete.CPath.abscissa * Mlpost.Concrete.CPath.abscissa
      val reverse : Mlpost.Concrete.CPath.t -> Mlpost.Concrete.CPath.t
      val iter :
        (Mlpost.Concrete.CPoint.t ->
         Mlpost.Concrete.CPoint.t ->
         Mlpost.Concrete.CPoint.t -> Mlpost.Concrete.CPoint.t -> unit) ->
        Mlpost.Concrete.CPath.t -> unit
      val fold_left :
        ('->
         Mlpost.Concrete.CPoint.t ->
         Mlpost.Concrete.CPoint.t ->
         Mlpost.Concrete.CPoint.t -> Mlpost.Concrete.CPoint.t -> 'a) ->
        '-> Mlpost.Concrete.CPath.t -> 'a
      val cut_before :
        Mlpost.Concrete.CPath.t ->
        Mlpost.Concrete.CPath.t -> Mlpost.Concrete.CPath.t
      val cut_after :
        Mlpost.Concrete.CPath.t ->
        Mlpost.Concrete.CPath.t -> Mlpost.Concrete.CPath.t
      val split :
        Mlpost.Concrete.CPath.t ->
        Mlpost.Concrete.CPath.abscissa ->
        Mlpost.Concrete.CPath.t * Mlpost.Concrete.CPath.t
      val subpath :
        Mlpost.Concrete.CPath.t ->
        Mlpost.Concrete.CPath.abscissa ->
        Mlpost.Concrete.CPath.abscissa -> Mlpost.Concrete.CPath.t
      val direction_of_abscissa :
        Mlpost.Concrete.CPath.t ->
        Mlpost.Concrete.CPath.abscissa -> Mlpost.Concrete.CPoint.t
      val point_of_abscissa :
        Mlpost.Concrete.CPath.t ->
        Mlpost.Concrete.CPath.abscissa -> Mlpost.Concrete.CPoint.t
      val bounding_box :
        Mlpost.Concrete.CPath.t ->
        Mlpost.Concrete.CPoint.t * Mlpost.Concrete.CPoint.t
      val dist_min_point :
        Mlpost.Concrete.CPath.t ->
        Mlpost.Concrete.CPoint.t -> float * Mlpost.Concrete.CPath.abscissa
      val dist_min_path :
        Mlpost.Concrete.CPath.t ->
        Mlpost.Concrete.CPath.t ->
        float *
        (Mlpost.Concrete.CPath.abscissa * Mlpost.Concrete.CPath.abscissa)
      val print : Format.formatter -> Mlpost.Concrete.CPath.t -> unit
    end
  module CTransform :
    sig
      type t =
        Cairo.matrix = {
        xx : float;
        yx : float;
        xy : float;
        yy : float;
        x0 : float;
        y0 : float;
      }
    end
  val float_of_num : Mlpost.Num.t -> float
  val compute_nums : unit -> (Mlpost.Num.t -> unit) * (unit -> unit)
  val cpoint_of_point : Mlpost.Point.t -> Mlpost.Concrete.CPoint.t
  val cpath_of_path : Mlpost.Path.t -> Mlpost.Concrete.CPath.t
  val ctransform_of_transform :
    Mlpost.Transform.t -> Mlpost.Concrete.CTransform.t
  val baselines : string -> float list
  val num_of_float : float -> Mlpost.Num.t
  val point_of_cpoint : Mlpost.Concrete.CPoint.t -> Mlpost.Point.t
  val path_of_cpath : Mlpost.Concrete.CPath.t -> Mlpost.Path.t
  val transform_of_ctransform :
    Mlpost.Concrete.CTransform.t -> Mlpost.Transform.t
  val set_verbosity : bool -> unit
  val set_prelude : string -> unit
  val set_prelude2 : string option -> unit
  val set_t1disasm : string option -> unit
end