summaryrefslogtreecommitdiff
path: root/graphics/pgf/base/source/CirclePlacer_script.h
blob: f208dbdecff5f9d4090cbb8b32ac6b829b8052bc (plain)
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
#include <pgf/gd/ogdf/c/InterfaceFromOGDF.h>
#include <ogdf/energybased/multilevelmixer/CirclePlacer.h>

struct CirclePlacer_script :
  scripting::declarations,
  scripting::factory<ogdf::CirclePlacer>
{
  ogdf::CirclePlacer* make (scripting::run_parameters* parameters) {
    using namespace ogdf;
    CirclePlacer* r = new CirclePlacer;

    parameters->configure_option ("CirclePlacer.circleSize",
                                  &CirclePlacer::setCircleSize, *r);
    parameters->configure_option ("CirclePlacer.radiusFixed",
                                  &CirclePlacer::setRadiusFixed, *r);


    char* s = 0;
    
    if (parameters->option("CirclePlacer.nodeSelection", s)) {
      if (strcmp(s, "new") == 0)
	r->setNodeSelection(CirclePlacer::nsNew);
      else if (strcmp(s, "old") == 0)
	r->setNodeSelection(CirclePlacer::nsOld);
      else if (strcmp(s, "all") == 0)
	r->setNodeSelection(CirclePlacer::nsAll);

      free(s);
    }
          
    return r;
  }
  
  void declare (scripting::script s) {
    using namespace scripting;
    using namespace ogdf;

    s.declare (key ("CirclePlacer")
               .set_module ("InitialPlacer", this)
               .documentation_in ("pgf.gd.doc.ogdf.energybased.multilevelmixer.CirclePlacer"));

    s.declare (key ("CirclePlacer.circleSize")
               .type ("number")
               .documentation_in ("pgf.gd.doc.ogdf.energybased.multilevelmixer.CirclePlacer"));
                    
    s.declare (key ("CirclePlacer.radiusFixed")
               .type ("boolean")
               .documentation_in ("pgf.gd.doc.ogdf.energybased.multilevelmixer.CirclePlacer"));
                    
    s.declare (key ("CirclePlacer.nodeSelection")
               .type ("string")
               .documentation_in ("pgf.gd.doc.ogdf.energybased.multilevelmixer.CirclePlacer"));
                    
  }
  
};