Graph-Easy
view release on metacpan or search on metacpan
+ implement edge joints (shared start/end port) via invisible joints
+ handle attributes like labels with embedded newlines
+ output edges from/to groups (subgraphs/clusters)
* Layouter:
+ allow sharing of end ports (making edges join up on the way
to the target node)
+ min distance between node is 3, not 2, when there are edges
that share a start point (to make room for the joints)
+ Layouter: place nodes with a shared start point in the same column/row
than the others (to render tree-like layouts automatically)
* multiple attributes for autosplit nodes were broken, when:
+ the attribute did not have a strict check (link, f.i.)
+ there was a newline after the node ala "[A|B]\n { fill: red|green;}
+ the attribute did have a fixed list of words (like "shape")
(Due to Ron Newmann's question I stumbled over these bugs - thanx!
* add support for "shape: img;" (Thanx to Ron Newmann for the suggestion!)
+ as_html: use "<img...>"
+ as_graphviz: use "<<TABLE .. <IMG...>>"
2006-01-01 v0.38 Tels 1571 tests
* include the missing 4_flow.txt test files
* Group.pm: fix POD
* Parser: attributes on nodes in a node list apply to all nodes in the list
up to this point. So:
[ Bonn ] { color: blue; }, [ Berlin ] { fill: black; }
will fill both nodes black, but only color "Bonn" blue.
* remove unused arrow-code on hor-selfloops
* as_ascii: draw bidirectional self-loops with two arrows (Thanx Dan Horne!)
* Layout: fix bidirectional edges created by A* (multi-celled nodes) and
the straigh-path shortcut (more than one cell distance)
(Thanx to Dan Horne again)
* Layout: ignore links from/to groups, do them after splicing in group
filler cells
* Attributes: remove direction() and add:
+ _direction_as_number()
+ _flow_as_number()
+ _flow_as_side()
+ _direction_as_side()
* Graph: remove the unused and wrong angle() method
* Graph: allow add_edge('Node', 'Node2', 'edge label');
* Edge: add flow() and port()
* Node: add flow(), angle()
* check POD coverage of Graph::Easy::Attributes and As_ascii
* fix the flow model:
correctly handle absolut (south/180/east/90/down etc) and relative
(left/right/front/forward/back), as well as global and local flow
on a per node/edge basis
* as_txt(): output the original flow/start/end attribute instead of
a converted value ('down' vs 180, 'left' vs XX)
* Base: add _croak() method
* Node: growing nodes with edge end/start point restrictions did make
the node one to big on each restricted side
* use constant instead of home-grown "sub CONSTANT() { 1; }"
* as_graphviz(): output correctly nodes in a group w/o attributes and edges
* as_graphviz(): support correctly most node border and edge styles,
even in combination with fillcolor. Thanx to Ryan Schmidt!
2005-12-27 v0.37 Tels 1533 tests - Sing, sing, sing the birthday song...
* correctly handle '\\n' in labels/titles
* Node::Cell: allow 'x' and 'y' as arguments
* Layout: repair split multi-celled nodes after inserting group fillers
* Layout: insert short filler edge pieces on spliced edge for
group layouts (fixes "holes" at the start and end of edges
in ascii layouts with groups)
* Layout: set smaller minimum-size for group cells at non-corners
* Layout: grow group fillers to close gaps between nodes in things like:
"( Group: [ A ] [ B ] )"
* Parser: handle "([A]->[B])" (allow empty group name)
* Parser: don't set group name of '0' to ''
* Parser: handle "] -> ( ..." (edge from node to group)
* Parser: handle ") -> ( ..." (edge from group to group)
* Parser: "...) -> [ A ]" is a group-to-node edge, not node to node
* add attribute "flow" for edges (per-edge flow)
2005-12-18 v0.36 Tels 1516 tests
* Parser: add support for node lists on the right-hand side:
[ Bonn ], [ Berlin ] -> [ Potsdam ], [ Halle ]
* allow "inherit" for colors
* Node: fix edges_at_port() to skip edges not starting/ending here
* Group: fix add_member() and del_member() for edges
* Group: fix add_node()
* Node: fix background()
* Graph: fix default fill for groups in HTML
* Graph: add_group(): return $group, not $self
* Layouter:
+ stop chain-tracker at nodes that are grandchildren of the current node
+ grow nodes based on used/free ports (fixes shared ports)
+ grow nodes only in one direction if they have 'rows' or 'columns'
+ shuffle self-loop directions according to graph/node flow
+ A*: no longer cross edges along their flow line (leading to corrupted
layouts with multiple crossings in a row)
+ convert edge joiners to joints for shared edges
* render joints in as_ascii, as_boxart and as_html
* as_ascii: render no arrows on undirected edges (esp. for selfloops, corners
and cross sections)
* as_html: fix edge color if only "label-color" is set
* as_html: fix self-loop on east side
* as_html: render no arrows for undirected edges
* as_graphviz: output headport/tailport for edges with "start" or "end"
(this doesn't seem to work in "dot" at all, sadly :-(
* as_graphviz: output groups as clusters (subgraphs)
* do multiple edges from A to B,C,D etc in the order of "B,C,D" instead
of pseudo-random order
2005-12-10 v0.35 Tels 1483 tests
* Node: fix parent()
* allow "$graph->add_group('Name');"
* render group labels
* close edge gaps created by inserting group filler cells
* group label font-size defaults to 0.8
* fix doc about default font-size (0.8 for edge/group labels, not 0.75)
* as_html: fix borders of groups without a special class/border
* as_html: fix content and background of nodes with "shape: point;"
* as_html: fix group backgrounds (especially with edges and class/non-class
attributes)
* as_html: don't need to put text/font attributes on empty (group) cells
* as_html: fix shapes like "circle" on nodes with a link
* remove relicts of old group handling code in Nodes/Group Cells
* use more isa() instead of ref() checks for class names
* "class { label: ...; }" was ignored and did not change the label
* allow: "start: south , 1;" (space before ",")
( run in 0.685 second using v1.01-cache-2.11-cpan-71847e10f99 )