sig
  type pos = float * float
  type width = float
  type height = float
  type size = int
  type align = Left | Center | Right
  type style_attr =
      Filled
    | Invisible
    | Diagonals
    | Rounded
    | Dashed
    | Dotted
    | Solid
    | Bold
    | StyleString of string
  type operation =
      Filled_ellipse of XDotDraw.pos * XDotDraw.width * XDotDraw.height
    | Unfilled_ellipse of XDotDraw.pos * XDotDraw.width * XDotDraw.height
    | Filled_polygon of XDotDraw.pos array
    | Unfilled_polygon of XDotDraw.pos array
    | Polyline of XDotDraw.pos array
    | Bspline of XDotDraw.pos array
    | Filled_bspline of XDotDraw.pos array
    | Text of XDotDraw.pos * XDotDraw.align * XDotDraw.width * string
    | Fill_color of string
    | Pen_color of string
    | Font of float * string
    | Style of XDotDraw.style_attr list
  val string_scale_size :
    string -> float -> string -> XDotDraw.width * XDotDraw.height
  val parse : string -> XDotDraw.operation list
  type draw_state = private {
    mutable fill_color : string;
    mutable pen_color : string;
    mutable font : float * string;
    mutable style : XDotDraw.style_attr list;
  }
  val draw_with :
    (XDotDraw.draw_state -> XDotDraw.operation -> unit) ->
    XDotDraw.operation list -> unit
  val normalize_color : string -> string
end