sig
  type context
  external allocate_context : Magick.image -> Magick.Draw.context
    = "caml_DrawAllocateContext"
  external destroy_context : Magick.Draw.context -> unit
    = "caml_DrawDestroyContext"
  external stroke_color_string : Magick.Draw.context -> string -> unit
    = "caml_DrawSetStrokeColorString"
  external fill_color_string : Magick.Draw.context -> string -> unit
    = "caml_DrawSetFillColorString"
  external stroke_width : Magick.Draw.context -> float -> unit
    = "caml_DrawSetStrokeWidth"
  external circle :
    Magick.Draw.context ->
    ox:float -> oy:float -> px:float -> py:float -> unit = "caml_DrawCircle"
  external line :
    Magick.Draw.context ->
    x1:float -> y1:float -> x2:float -> y2:float -> unit = "caml_DrawLine"
  external rectangle :
    Magick.Draw.context ->
    x1:float -> y1:float -> x2:float -> y2:float -> unit
    = "caml_DrawRectangle"
  external round_rectangle :
    Magick.Draw.context ->
    p1:float * float -> p2:float * float -> r:float * float -> unit
    = "caml_DrawRoundRectangle"
  external arc :
    Magick.Draw.context ->
    p1:float * float -> p2:float * float -> rot:float * float -> unit
    = "caml_DrawArc"
  external ellipse :
    Magick.Draw.context ->
    o:float * float -> r:float * float -> rot:float * float -> unit
    = "caml_DrawEllipse"
  external bezier :
    Magick.Draw.context -> coords:(float * float) array -> unit
    = "caml_DrawBezier"
  external render : Magick.Draw.context -> unit = "caml_DrawRender"
end