##

     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 * */
    /* ******* */