1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
|
/* $Id: gvlayout_neato_layout.c,v 1.20 2009/09/04 14:23:35 erg Exp $ $Revision: 1.20 $ */
/* vim:set shiftwidth=4 ts=8: */
/**********************************************************
* This software is part of the graphviz package *
* http://www.graphviz.org/ *
* *
* Copyright (c) 1994-2004 AT&T Corp. *
* and is licensed under the *
* Common Public License, Version 1.0 *
* by AT&T Corp. *
* *
* Information and Software Systems Research *
* AT&T Research, Florham Park NJ *
**********************************************************/
/*
* neato layout plugin
*
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <stdio.h>
#include "gvplugin_layout.h"
/* FIXME - globals.h is needed for Nop */
#include "globals.h"
typedef enum { LAYOUT_NEATO,
LAYOUT_FDP,
LAYOUT_SFDP,
LAYOUT_TWOPI,
LAYOUT_CIRCO,
LAYOUT_PATCHWORK,
LAYOUT_CLUSTER,
LAYOUT_NOP1,
LAYOUT_NOP2,
} layout_type;
extern void neato_layout(graph_t * g);
extern void fdp_layout(graph_t * g);
extern void sfdp_layout(graph_t * g);
extern void twopi_layout(graph_t * g);
extern void circo_layout(graph_t * g);
extern void patchwork_layout(graph_t * g);
extern void osage_layout(graph_t * g);
extern void neato_cleanup(graph_t * g);
extern void fdp_cleanup(graph_t * g);
extern void sfdp_cleanup(graph_t * g);
extern void twopi_cleanup(graph_t * g);
extern void circo_cleanup(graph_t * g);
extern void patchwork_cleanup(graph_t * g);
extern void osage_cleanup(graph_t * g);
static void nop1_layout(graph_t * g)
{
Nop = 1;
neato_layout(g);
Nop = 0;
}
static void nop2_layout(graph_t * g)
{
Nop = 2;
neato_layout(g);
Nop = 0;
}
gvlayout_engine_t neatogen_engine = {
neato_layout,
neato_cleanup,
};
gvlayout_engine_t fdpgen_engine = {
fdp_layout,
fdp_cleanup,
};
#ifdef SFDP
gvlayout_engine_t sfdpgen_engine = {
sfdp_layout,
sfdp_cleanup,
};
#endif
gvlayout_engine_t twopigen_engine = {
twopi_layout,
twopi_cleanup,
};
gvlayout_engine_t circogen_engine = {
circo_layout,
circo_cleanup,
};
gvlayout_engine_t nop1gen_engine = {
nop1_layout,
neato_cleanup,
};
gvlayout_engine_t nop2gen_engine = {
nop2_layout,
neato_cleanup,
};
gvlayout_engine_t patchwork_engine = {
patchwork_layout,
patchwork_cleanup,
};
gvlayout_engine_t osage_engine = {
osage_layout,
osage_cleanup,
};
gvlayout_features_t neatogen_features = {
0,
};
gvplugin_installed_t gvlayout_neato_types[] = {
{LAYOUT_NEATO, "neato", 0, &neatogen_engine, &neatogen_features},
{LAYOUT_FDP, "fdp", 0, &fdpgen_engine, &neatogen_features},
#ifdef SFDP
{LAYOUT_SFDP, "sfdp", 0, &sfdpgen_engine, &neatogen_features},
#endif
{LAYOUT_TWOPI, "twopi", 0, &twopigen_engine, &neatogen_features},
{LAYOUT_CIRCO, "circo", 0, &circogen_engine, &neatogen_features},
{LAYOUT_PATCHWORK, "patchwork", 0, &patchwork_engine, &neatogen_features},
{LAYOUT_CLUSTER, "osage", 0, &osage_engine, &neatogen_features},
{LAYOUT_NOP1, "nop", 0, &nop1gen_engine, &neatogen_features},
{LAYOUT_NOP1, "nop1", 0, &nop1gen_engine, &neatogen_features},
{LAYOUT_NOP1, "nop2", 0, &nop2gen_engine, &neatogen_features},
{0, NULL, 0, NULL, NULL}
};
|