Graph-Easy

 view release on metacpan or  search on metacpan

CHANGES  view on Meta::CPAN

    + 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 )