Graphviz 13.0.0~dev.20241220.2304
|
#include <cgraph/list.h>
#include <circogen/blockpath.h>
#include <circogen/circular.h>
#include <circogen/edgelist.h>
#include <stddef.h>
#include <stdbool.h>
#include <util/agxbuf.h>
#include <util/alloc.h>
Go to the source code of this file.
Macros | |
#define | ORIGE(e) (ED_to_orig(e)) |
#define | CROSS_ITER 10 |
Functions | |
static Agraph_t * | clone_graph (Agraph_t *ing, Agraph_t **xg, circ_state *state) |
static int | cmpDegree (const Agnode_t **a, const Agnode_t **b) |
comparison function for sorting nodes by degree, descending | |
static deglist_t | getList (Agraph_t *g) |
Add nodes to deg_list, storing them by descending degree. | |
static void | find_pair_edges (Agraph_t *g, Agnode_t *n, Agraph_t *outg) |
static Agraph_t * | remove_pair_edges (Agraph_t *ing, circ_state *state) |
static void | measure_distance (Agnode_t *n, Agnode_t *ancestor, int dist, Agnode_t *change) |
static nodelist_t | find_longest_path (Agraph_t *tree) |
Find and return longest path in tree. | |
static void | dfs (Agraph_t *g, Agnode_t *n, Agraph_t *tree) |
Simple depth first search, adding traversed edges to tree. | |
static Agraph_t * | spanning_tree (Agraph_t *g, circ_state *state) |
static void | block_graph (Agraph_t *g, block_t *sn) |
Add induced edges. | |
static int | count_all_crossings (nodelist_t *list, Agraph_t *subg) |
static nodelist_t | reduce (nodelist_t list, Agraph_t *subg, int *cnt) |
static nodelist_t | reduce_edge_crossings (nodelist_t list, Agraph_t *subg) |
static double | largest_nodesize (nodelist_t *list) |
Return max dimension of nodes on list. | |
static void | place_node (Agraph_t *g, Agnode_t *n, nodelist_t *list) |
Add n to list. By construction, n is not in list at start. | |
static void | place_residual_nodes (Agraph_t *g, nodelist_t *list) |
Add nodes not in list to list. | |
nodelist_t | layout_block (Agraph_t *g, block_t *sn, double min_dist, circ_state *state) |
#define CROSS_ITER 10 |
Definition at line 454 of file blockpath.c.
#define ORIGE | ( | e | ) | (ED_to_orig(e)) |
Definition at line 24 of file blockpath.c.
Definition at line 393 of file blockpath.c.
References agfstnode(), agfstout(), aghead, agnxtnode(), agnxtout(), agsubedge(), BLOCK, and block::sub_graph.
Referenced by layout_block().
|
static |
Definition at line 33 of file blockpath.c.
References agbindrec(), agedge(), agfstnode(), agfstout(), aghead, agnameof(), agnode(), agnxtnode(), agnxtout(), agopen(), agsubedge(), agsubg(), agsubnode(), agxbfree(), agxbprint(), agxbuse(), CLONE, DEGREE, Agraph_s::desc, gname, circ_state::graphCopyCount, NULL, and ORIGE.
Referenced by remove_pair_edges().
Definition at line 75 of file blockpath.c.
References DEGREE.
Referenced by getList(), and remove_pair_edges().
|
static |
Definition at line 407 of file blockpath.c.
References add_edge(), agfstedge(), agfstnode(), agfstout(), aghead, agnxtedge(), agnxtnode(), agnxtout(), agtail, dtfirst, dtnext, edgelistitem::edge, EDGEORDER, free_edgelist(), init_edgelist(), and remove_edge().
Referenced by reduce(), and reduce_edge_crossings().
Definition at line 342 of file blockpath.c.
References agfstedge(), aghead, agnxtedge(), agsubedge(), agtail, dfs(), neighbor, SET_VISITED, TPARENT, tree, and VISITED.
Referenced by dfs(), and spanning_tree().
|
static |
Definition at line 288 of file blockpath.c.
References agfstedge(), agfstnode(), agnnodes(), agnxtedge(), agnxtnode(), DISTONE, DISTTWO, endPath(), LEAFONE, LEAFTWO, measure_distance(), NULL, reverseAppend(), SET_ONPATH, TPARENT, and tree.
Referenced by layout_block().
Definition at line 106 of file blockpath.c.
References agbindrec(), agdelete(), agedge(), agfindedge, agfstedge(), aghead, agnxtedge(), agtail, DEGREE, free(), gv_calloc(), mark(), node_degree, NULL, and ORIGE.
Referenced by remove_pair_edges().
|
static |
Definition at line 95 of file blockpath.c.
References agfstnode(), agnxtnode(), and cmpDegree().
Referenced by remove_pair_edges().
|
static |
Definition at line 516 of file blockpath.c.
References ND_height, ND_width, and ORIGN.
Referenced by layout_block().
nodelist_t layout_block | ( | Agraph_t * | g, |
block_t * | sn, | ||
double | min_dist, | ||
circ_state * | state | ||
) |
state | Context containing a counter to use for graph copy naming |
Definition at line 591 of file blockpath.c.
References agclose(), block_graph(), find_longest_path(), ISPARENT, largest_nodesize(), M_PI, N, ND_pos, block::parent_pos, place_residual_nodes(), POSITION, PSI, block::rad0, block::radius, realignNodelist(), reduce_edge_crossings(), remove_pair_edges(), spanning_tree(), block::sub_graph, and tree.
Referenced by doBlock().
|
static |
Definition at line 250 of file blockpath.c.
References dist(), DISTONE, DISTTWO, LEAFONE, LEAFTWO, measure_distance(), NULL, parent, and TPARENT.
Referenced by find_longest_path(), and measure_distance().
Definition at line 531 of file blockpath.c.
References agfstin(), agfstout(), aghead, agnxtin(), agnxtout(), agtail, appendNodelist(), NEIGHBOR, SET_NEIGHBOR, and UNSET_NEIGHBOR.
Referenced by place_residual_nodes().
|
static |
Definition at line 580 of file blockpath.c.
References agfstnode(), agnxtnode(), ONPATH, and place_node().
Referenced by layout_block().
|
static |
Definition at line 460 of file blockpath.c.
References agfstedge(), agfstnode(), aghead, agnxtedge(), agnxtnode(), agtail, cnt(), count_all_crossings(), insertNodelist(), and neighbor.
Referenced by reduce_edge_crossings().
|
static |
Definition at line 498 of file blockpath.c.
References count_all_crossings(), CROSS_ITER, and reduce().
Referenced by layout_block().
|
static |
Create layout skeleton of ing. Why is returned graph connected?
state | Context containing a counter to use for graph copy naming |
Definition at line 204 of file blockpath.c.
References agclose(), agdelete(), agfstedge(), aghead, agnnodes(), agnxtedge(), agtail, clone_graph(), cmpDegree(), DEGREE, find_pair_edges(), getList(), and NULL.
Referenced by layout_block().
|
static |
Construct spanning forest of g as subgraph
state | Context containing a counter to use for spanning tree naming |
Definition at line 365 of file blockpath.c.
References agbindrec(), agfstnode(), agnxtnode(), agsubg(), agsubnode(), agxbfree(), agxbprint(), agxbuse(), dfs(), DISTONE, DISTTWO, gname, NULL, circ_state::spanningTreeCount, TPARENT, tree, UNSET_VISITED, and VISITED.
Referenced by layout_block().