gvlayout_neato_layout.c 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. /*************************************************************************
  2. * Copyright (c) 2011 AT&T Intellectual Property
  3. * All rights reserved. This program and the accompanying materials
  4. * are made available under the terms of the Eclipse Public License v1.0
  5. * which accompanies this distribution, and is available at
  6. * https://www.eclipse.org/legal/epl-v10.html
  7. *
  8. * Contributors: Details at https://graphviz.org
  9. *************************************************************************/
  10. #include "config.h"
  11. #include <stdio.h>
  12. #include <gvc/gvplugin_layout.h>
  13. // FIXME - globals.h is needed for Nop
  14. #include <common/globals.h>
  15. typedef enum {
  16. LAYOUT_NEATO,
  17. LAYOUT_FDP,
  18. LAYOUT_SFDP,
  19. LAYOUT_TWOPI,
  20. LAYOUT_CIRCO,
  21. LAYOUT_PATCHWORK,
  22. LAYOUT_CLUSTER,
  23. LAYOUT_NOP1,
  24. LAYOUT_NOP2,
  25. } layout_type;
  26. extern void neato_layout(graph_t *g);
  27. extern void fdp_layout(graph_t *g);
  28. extern void sfdp_layout(graph_t *g);
  29. extern void twopi_layout(graph_t *g);
  30. extern void circo_layout(graph_t *g);
  31. extern void patchwork_layout(graph_t *g);
  32. extern void osage_layout(graph_t *g);
  33. extern void neato_cleanup(graph_t *g);
  34. extern void fdp_cleanup(graph_t *g);
  35. extern void sfdp_cleanup(graph_t *g);
  36. extern void twopi_cleanup(graph_t *g);
  37. extern void circo_cleanup(graph_t *g);
  38. extern void patchwork_cleanup(graph_t *g);
  39. extern void osage_cleanup(graph_t *g);
  40. static void nop1_layout(graph_t *g) {
  41. Nop = 1;
  42. neato_layout(g);
  43. Nop = 0;
  44. }
  45. static void nop2_layout(graph_t *g) {
  46. Nop = 2;
  47. neato_layout(g);
  48. Nop = 0;
  49. }
  50. gvlayout_engine_t neatogen_engine = {
  51. neato_layout,
  52. neato_cleanup,
  53. };
  54. gvlayout_engine_t fdpgen_engine = {
  55. fdp_layout,
  56. fdp_cleanup,
  57. };
  58. #ifdef SFDP
  59. gvlayout_engine_t sfdpgen_engine = {
  60. sfdp_layout,
  61. sfdp_cleanup,
  62. };
  63. #endif
  64. gvlayout_engine_t twopigen_engine = {
  65. twopi_layout,
  66. twopi_cleanup,
  67. };
  68. gvlayout_engine_t circogen_engine = {
  69. circo_layout,
  70. circo_cleanup,
  71. };
  72. gvlayout_engine_t nop1gen_engine = {
  73. nop1_layout,
  74. neato_cleanup,
  75. };
  76. gvlayout_engine_t nop2gen_engine = {
  77. nop2_layout,
  78. neato_cleanup,
  79. };
  80. gvlayout_engine_t patchwork_engine = {
  81. patchwork_layout,
  82. patchwork_cleanup,
  83. };
  84. gvlayout_engine_t osage_engine = {
  85. osage_layout,
  86. osage_cleanup,
  87. };
  88. gvlayout_features_t neatogen_features = {
  89. 0,
  90. };
  91. gvplugin_installed_t gvlayout_neato_types[] = {
  92. {LAYOUT_NEATO, "neato", 0, &neatogen_engine, &neatogen_features},
  93. {LAYOUT_FDP, "fdp", 0, &fdpgen_engine, &neatogen_features},
  94. #ifdef SFDP
  95. {LAYOUT_SFDP, "sfdp", 0, &sfdpgen_engine, &neatogen_features},
  96. #endif
  97. {LAYOUT_TWOPI, "twopi", 0, &twopigen_engine, &neatogen_features},
  98. {LAYOUT_CIRCO, "circo", 0, &circogen_engine, &neatogen_features},
  99. {LAYOUT_PATCHWORK, "patchwork", 0, &patchwork_engine, &neatogen_features},
  100. {LAYOUT_CLUSTER, "osage", 0, &osage_engine, &neatogen_features},
  101. {LAYOUT_NOP1, "nop", 0, &nop1gen_engine, &neatogen_features},
  102. {LAYOUT_NOP1, "nop1", 0, &nop1gen_engine, &neatogen_features},
  103. {LAYOUT_NOP2, "nop2", 0, &nop2gen_engine, &neatogen_features},
  104. {0, NULL, 0, NULL, NULL}};