parcon.railroad.raildraw
index
/home/jcp/github/parcon/parcon/railroad/raildraw.py

This module provides support for drawing railroad diagrams created by
parcon.railroad (which usually creates them from Parcon parsers) into image
files or other locations.
 
It's possible to use this module and parcon.railroad as standalone modules to
create syntax diagrams for things unrelated to Parcon. I'll write up
documentation on how to use this module separate from Parcon at some point.
 
A simple example of how to use this module is present in the module
documentation of parcon.railroad.
 
This module requires Cairo and PyCairo in order to function. These must be
installed separately from Parcon; both Cairo and PyCairo are available for
Windows, Linux, and Mac. A Google search should turn up information on where to
download and install both. (If it doesn't, go to pypi.python.org/pypi/parcon
and send an email to the email address you find there.)
 
This module also requires Pango and PyGTK (for the Pango bindings). A similar
Google search should turn up information on how to install these.
 
If you're on Ubuntu, all of the above dependencies can be installed via
apt-get; I'll get a list of the specific packages to install up here soon.

 
Modules
       
cairo
parcon.options
pango
pangocairo
parcon.railroad

 
Functions
       
create_options(map)
draw(image, x, y, construct, options, forward)
draw_Bullet(image, x, y, construct, options, forward)
draw_Loop(image, x, y, construct, options, forward)
draw_Nothing(image, x, y, construct, options, forward)
draw_Or(image, x, y, construct, options, forward)
draw_Then(image, x, y, construct, options, forward)
draw_Token(image, x, y, construct, options, forward)
draw_arrow(image, x, y, options, forward)
Draws an arrow at the specified position.
draw_arrow_or_line(image, x, y, arrow_width, arrow_height, options, forward, arrow)
draw_line(image, x1, y1, x2, y2)
draw_text(context, x, y, font, text)
draw_to_context(context, diagram, options, filename, forward=True, x=8, y=8)
Same as draw_to_png, but draws the specified railroad diagram to a context,
which should be an instance of cairo.Context, instead of to a PNG file.
draw_to_png actually delegates to this function to do the actual drawing.
 
x and y are the position at which to draw the specified diagram.
draw_to_png(diagram, options, filename, forward=True)
Draws the specified railroad diagram, which should be an instance of
parcon.railroad.Component or one of its subclasses, or a dictionary, into
the PNG file at the specified file name.
 
If the specified diagram is a dict, each of the diagrams contained as its
values will be drawn into the file, top to bottom, with the corresponding
keys (which should be strings) used as titles before each diagram.
 
You can either manually create instances of any of
parcon.railroad.Component's subclasses to pass to this method, or you can
convert a Parcon parser to a Component by calling its create_railroad
method.
 
options is a dictionary of options to use. For now, just use the empty
dict; I'll get around to documenting the options that you can use here at
some point.
get_font_for_token(options, token)
radians(...)
radians(x)
 
Convert angle x from degrees to radians.
size_of(image, construct, options)
size_of_Bullet(image, construct, options)
size_of_Loop(image, construct, options)
size_of_Nothing(image, construct, options)
size_of_Or(image, construct, options)
size_of_Then(image, construct, options)
size_of_Token(image, construct, options)
size_of_arrow(options)
Returns the size of an arrow, in the same format as all of the other size
functions, namely (width, height, line_position).

 
Data
        bold_font = <PangoFontDescription>
bold_italic_font = <PangoFontDescription>
default_line_size = 2
division = _Feature((2, 2, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 8192)
draw_functions = {<class 'parcon.railroad.Nothing'>: <function draw_Nothing>, <class 'parcon.railroad.Then'>: <function draw_Then>, <class 'parcon.railroad.Or'>: <function draw_Or>, <class 'parcon.railroad.Token'>: <function draw_Token>, <class 'parcon.railroad.Loop'>: <function draw_Loop>, <class 'parcon.railroad.Bullet'>: <function draw_Bullet>}
italic_font = <PangoFontDescription>
plain_font = <PangoFontDescription>
size_functions = {<class 'parcon.railroad.Nothing'>: <function size_of_Nothing>, <class 'parcon.railroad.Then'>: <function size_of_Then>, <class 'parcon.railroad.Or'>: <function size_of_Or>, <class 'parcon.railroad.Token'>: <function size_of_Token>, <class 'parcon.railroad.Loop'>: <function size_of_Loop>, <class 'parcon.railroad.Bullet'>: <function size_of_Bullet>}
title_font = <PangoFontDescription>