blockdiag generate block-diagram image file from spec-text file.
Features
- Generate block-diagram from dot like text (basic feature).
- Multilingualization for node-label (utf-8 only).
You can get some examples and generated images on blockdiag.com .
Setup
Use easy_install or pip:
$ sudo easy_install blockdiag Or $ sudo pip install blockdiag
If you want to export as PDF format, give pdf arguments:
$ sudo easy_install "blockdiag[pdf]"
Copy and modify ini file. example:
$ cp <blockdiag installed path>/blockdiag/examples/simple.diag . $ vi simple.diag
Please refer to spec-text setting sample section for the format of the simpla.diag configuration file.
spec-text setting sample
Few examples are available. You can get more examples at blockdiag.com .
simple.diag
simple.diag is simply define nodes and transitions by dot-like text format:
diagram admin { top_page -> config -> config_edit -> config_confirm -> top_page; }
screen.diag
screen.diag is more complexly sample. diaglam nodes have a alternative label and some transitions:
diagram admin { top_page [label = "Top page"]; foo_index [label = "List of FOOs"]; foo_detail [label = "Detail FOO"]; foo_add [label = "Add FOO"]; foo_add_confirm [label = "Add FOO (confirm)"]; foo_edit [label = "Edit FOO"]; foo_edit_confirm [label = "Edit FOO (confirm)"]; foo_delete_confirm [label = "Delete FOO (confirm)"]; bar_detail [label = "Detail of BAR"]; bar_edit [label = "Edit BAR"]; bar_edit_confirm [label = "Edit BAR (confirm)"]; logout; top_page -> foo_index; top_page -> bar_detail; foo_index -> foo_detail; foo_detail -> foo_edit; foo_detail -> foo_delete_confirm; foo_index -> foo_add -> foo_add_confirm -> foo_index; foo_index -> foo_edit -> foo_edit_confirm -> foo_index; foo_index -> foo_delete_confirm -> foo_index; bar_detail -> bar_edit -> bar_edit_confirm -> bar_detail; }
Usage
Execute blockdiag command:
$ blockdiag simple.diag $ ls simple.png simple.png
Requirements
- Python 2.6, 2.7, 3.2, 3.3
- Pillow 2.2.1
- funcparserlib 0.3.6
- setuptools
License
Apache License 2.0
History
1.3.2 (2013-11-19)
- Fix bugs
1.3.1 (2013-10-22)
- Fix bugs
1.3.0 (2013-10-05)
- Support python 3.2 and 3.3 (thanks to @masayuko)
- Drop supports for python 2.4 and 2.5
- Replace dependency: PIL -> Pillow
1.2.4 (2012-11-21)
- Fix bugs
1.2.3 (2012-11-05)
- Fix bugs
1.2.2 (2012-10-28)
- Fix bugs
1.2.1 (2012-10-28)
- Add external imagedraw plugin supports
- Add node attribute: label_orientation*
- Fix bugs
1.2.0 (2012-10-22)
- Optimize algorithm for rendering shadow
- Add options to docutils directive
- Fix bugs
1.1.8 (2012-09-28)
- Add --ignore-pil option
- Fix bugs
1.1.7 (2012-09-20)
- Add diagram attribute: shadow_style
- Add font path for centos 6.2
- Add a setting 'antialias' in the configuration file
- Fix bugs
1.1.6 (2012-06-06)
- Support for readthedocs.org
- reST directive supports :caption: option
- Fix bugs
1.1.5 (2012-04-22)
- Embed source code to SVG document as description
- Fix bugs
1.1.4 (2012-03-15)
- Add new edge.hstyles: oneone, onemany, manyone, manymany
- Add edge attribute: description (for build description-tables)
- Fix bugs
1.1.3 (2012-02-13)
- Add new edge type for data-models (thanks to David Lang)
- Add --no-transparency option
- Fix bugs
1.1.2 (2011-12-26)
- Support font-index for TrueType Font Collections (.ttc file)
- Allow to use reST syntax in descriptions of nodes
- Fix bugs
1.1.1 (2011-11-27)
- Add node attribute: href (thanks to @r_rudi!)
- Fix bugs
1.1.0 (2011-11-19)
- Add shape: square and circle
- Add fontfamily attribute for switching fontface
- Fix bugs
1.0.3 (2011-11-13)
- Add plugin: attributes
- Change plugin syntax; (cf. plugin attributes [attr = value, attr, value])
- Fix bugs
1.0.2 (2011-11-07)
- Fix bugs
1.0.1 (2011-11-06)
- Add group attribute: shape
- Fix bugs
1.0.0 (2011-11-04)
- Add node attribute: linecolor
- Rename diagram attributes:
- fontsize -> default_fontsize
- default_line_color -> default_linecolor
- default_text_color -> default_textcolor
- Add docutils extention
- Fix bugs
0.9.7 (2011-11-01)
- Add node attribute: fontsize
- Add edge attributes: thick, fontsize
- Add group attribute: fontsize
- Change color of shadow in PDF mode
- Add class feature (experimental)
- Add handler-plugin framework (experimental)
0.9.6 (2011-10-22)
- node.style supports dashed_array format style
- Fix bugs
0.9.5 (2011-10-19)
- Add node attributes: width and height
- Fix bugs
0.9.4 (2011-10-07)
- Fix bugs
0.9.3 (2011-10-06)
- Replace SVG core by original's (simplesvg.py)
- Refactored
- Fix bugs
0.9.2 (2011-09-30)
- Add node attribute: textcolor
- Add group attribute: textcolor
- Add edge attribute: textcolor
- Add diagram attributes: default_text_attribute
- Fix beginpoint shape and endpoint shape were reversed
- Fix bugs
0.9.1 (2011-09-26)
- Add diagram attributes: default_node_color, default_group_color and default_line_color
- Fix bugs
0.9.0 (2011-09-25)
- Add icon attribute to node
- Make transparency to background of PNG images
- Fix bugs
0.8.9 (2011-08-09)
- Fix bugs
0.8.8 (2011-08-08)
- Fix bugs
0.8.7 (2011-08-06)
- Fix bugs
0.8.6 (2011-08-01)
- Support Pillow as replacement of PIL (experimental)
- Fix bugs
0.8.5 (2011-07-31)
- Allow dot characters in node_id
- Fix bugs
0.8.4 (2011-07-05)
- Fix bugs
0.8.3 (2011-07-03)
- Support input from stdin
- Fix bugs
0.8.2 (2011-06-29)
- Add node.stacked
- Add node shapes: dots, none
- Add hiragino-font to font search list
- Support background image fetching from web
- Add diagram.edge_layout (experimental)
- Fix bugs
0.8.1 (2011-05-14)
- Change license to Apache License 2.0
- Fix bugs
0.8.0 (2011-05-04)
- Add --separate option and --version option
- Fix bugs
0.7.8 (2011-04-19)
- Update layout engine
- Update requirements: PIL >= 1.1.5
- Update parser for tokenize performance
- Add --nodoctype option
- Fix bugs
- Add many testcases
0.7.7 (2011-03-29)
- Fix bugs
0.7.6 (2011-03-26)
- Add new layout manager for portrait edges
- Fix bugs
0.7.5 (2011-03-20)
- Support multiple nodes relations (cf. A -> B, C)
- Support node group declaration at attribute of nodes
- Fix bugs
0.7.4 (2011-03-08)
- Fix bugs
0.7.3 (2011-03-02)
- Use UTF-8 characters as Name token (by @swtw7466)
- Fix htmlentities included in labels was not escaped on SVG images
- Fix bugs
0.7.2 (2011-02-28)
- Add default_shape attribute to diagram
0.7.1 (2011-02-27)
- Fix edge has broken with antialias option
0.7.0 (2011-02-25)
- Support node shape
0.6.7 (2011-02-12)
- Change noderenderer interface to new style
- Render dashed ellipse more clearly (contributed by @cocoatomo)
- Support PDF exporting
0.6.6 (2011-01-31)
- Support diagram.shape_namespace
- Add new node shapes; mail, cloud, beginpoint, endpoint, minidiamond, actor
- Support plug-in structure to install node shapes
- Fix bugs
0.6.5 (2011-01-18)
- Support node shape (experimental)
0.6.4 (2011-01-17)
- Fix bugs
0.6.3 (2011-01-15)
- Fix bugs
0.6.2 (2011-01-08)
- Fix bugs
0.6.1 (2011-01-07)
- Implement 'folded' attribute for edge
- Refactor layout engine
0.6 (2011-01-02)
- Support nested groups.
0.5.5 (2010-12-24)
- Specify direction of edges as syntax (->, --, <-, <->)
- Fix bugs.
0.5.4 (2010-12-23)
- Remove debug codes.
0.5.3 (2010-12-23)
- Support NodeGroup.label.
- Implement --separate option (experimental)
- Fix right-up edge overrapped on other nodes.
- Support configration file: .blockdiagrc
0.5.2 (2010-11-06)
- Fix unicode errors for UTF-8'ed SVG exportion.
- Refactoring codes for running on GAE.
0.5.1 (2010-10-26)
- Fix license text on diagparser.py
- Update layout engine.
0.5 (2010-10-15)
- Support background-image of node (SVG)
- Support labels for edge.
- Fix bugs.
0.4.2 (2010-10-10)
- Support background-color of node groups.
- Draw edge has jumped at edge's cross-points.
- Fix bugs.
0.4.1 (2010-10-07)
- Fix bugs.
0.4 (2010-10-07)
- Support SVG exporting.
- Support dashed edge drawing.
- Support background image of nodes (PNG only)
0.3.1 (2010-09-29)
- Fasten anti-alias process.
- Fix text was broken on windows.
0.3 (2010-09-26)
- Add --antialias option.
- Fix bugs.
0.2.2 (2010-09-25)
- Fix edge bugs.
0.2.1 (2010-09-25)
- Fix bugs.
- Fix package style.
0.2 (2010-09-23)
- Update layout engine.
- Support group { ... } sentence for create Node-Groups.
- Support numbered badge on node (cf. A [numbered = 5])
0.1 (2010-09-20)
- first release