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
/*
 *  grafo - graph editor
 *  Copyright (c) 2003-2008
 *      Ulisses Cordeiro Pereira <ulisses@cordeiropereira.com.br>
 *
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 * 
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 *  See the GNU General Public License for more details (file COPYING).
 */ 


/* ******************* */
/* * stargraphexample.c * */
/* ******************* */

/* Plugin example: Generate a strar graph */

#include <stdio.h>
#include <stdlib.h>

/* Here the GRAFO headers */
/* Add plugins information */
#include "../pgin.h"

/* Add graph struct information */
#include "../graph.h"

/* Prototype functions */
Pgin *pgin_info(void);
int stargraph(Graph *G, char *mess);


/* This function returns the plugin info */
Pgin *pgin_info(void){
Pgin *pgin;

    pgin = (Pgin *) malloc(2 * sizeof(Pgin));

    pgin[0].type = PGIN_TRANSF_ALG;
    pgin[0].label = "Generate Star Graph";
    pgin[0].name = "stargraph";
    pgin[0].flags = PGIN_FLAG_REDRAWWITHCENTEREDVERTEX;

    pgin[1].type = PGIN_LIST_END;
    pgin[1].label = 0;
    pgin[1].name = 0;
    pgin[1].flags = 0;

    return pgin;
}

/* This is the plugin's main function */
int stargraph(Graph *G, char *mess){
int i, n;

    /* Get number of vertices */
    n = pgin_read_int("Generate Star Graph", "Number of vertices",
                5, 1, 2000000, 1);

    /* Generate graph */
    InitGraph(G, G->type);

    /* Adds N vertices in the position (0,0) */
    for (i = 0; i < n; i++)
        AddPoint(G, 0, 0);

    /* Adds N edges starting at the vertex 0 to N-1 */
    for (i = 1; i < n; i++) { 
        AddEdge(G, 0, i);
    }

    return 1;
}

/* ******* */
/* * End * */
/* ******* */