sig
  val init_identity : Cairo.matrix
  val init_translate : float -> float -> Cairo.matrix
  val init_scale : float -> float -> Cairo.matrix
  val init_rotate : float -> Cairo.matrix
  external translate : Cairo.matrix -> float -> float -> Cairo.matrix
    = "ml_cairo_matrix_translate"
  external scale : Cairo.matrix -> float -> float -> Cairo.matrix
    = "ml_cairo_matrix_scale"
  external rotate : Cairo.matrix -> float -> Cairo.matrix
    = "ml_cairo_matrix_rotate"
  external invert : Cairo.matrix -> Cairo.matrix = "ml_cairo_matrix_invert"
  external multiply : Cairo.matrix -> Cairo.matrix -> Cairo.matrix
    = "ml_cairo_matrix_multiply"
  external transform_distance : Cairo.matrix -> Cairo.point -> Cairo.point
    = "ml_cairo_matrix_transform_distance"
  external transform_point : Cairo.matrix -> Cairo.point -> Cairo.point
    = "ml_cairo_matrix_transform_point"
end