Module XDotDraw

module XDotDraw: sig .. end

Parses xdot drawing operations


See dot documentation to understand the drawing operations

Types

type pos = float * float 

Dot layout coordinates

type width = float 

Dimensions

type height = float 
type size = int 
type align = 
| Left
| Center
| Right

Text alignment

type style_attr = 
| Filled
| Invisible
| Diagonals
| Rounded
| Dashed
| Dotted
| Solid
| Bold
| StyleString of string

Style attributes

type operation = 
| Filled_ellipse of pos * width * height
| Unfilled_ellipse of pos * width * height
| Filled_polygon of pos array
| Unfilled_polygon of pos array
| Polyline of pos array
| Bspline of pos array
| Filled_bspline of pos array
| Text of pos * align * width * string
| Fill_color of string
| Pen_color of string
| Font of float * string
| Style of style_attr list

Drawing operations

val string_scale_size : string -> float -> string -> width * height

string_scale_size font font_size text. Interpolates the font metrics we have to use to draw the given text with the given font but preserving the bounding box of the text even with a proportional font. For a fixed width font the result is font_size*font_size.

Parsing and drawing state

Parses an xdot drawing attribute

val parse : string -> operation list

Some drawing operations modify the following drawing state (pen_color, font and style).

type draw_state = private {
   mutable fill_color : string;
   mutable pen_color : string;
   mutable font : float * string;
   mutable style : style_attr list;
}
val draw_with : (draw_state -> operation -> unit) ->
operation list -> unit

Iterates on the drawing operations and updates the implicit drawing state

Miscellaneous

val normalize_color : string -> string

Reads the color string and converts to rgb if in an another format