Subversion Repositories wimsdev

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
10 reyssat 1
#ifndef __VDEFS_H
2
#define __VDEFS_H
3
 
4
#ifndef NULL
5
#define NULL 0
6
#endif
7
 
8
#define DELETED -2
9
 
10
typedef struct tagFreenode
11
    {
12
    struct tagFreenode * nextfree;
13
    } Freenode ;
14
 
15
 
16
typedef struct tagFreelist
17
    {
18
    Freenode * head;
19
    int nodesize;
20
    } Freelist ;
21
 
22
typedef struct tagPoint
23
    {
24
    float x ;
25
    float y ;
26
    } Point ;
27
 
28
/* structure used both for sites and for vertices */
29
 
30
typedef struct tagSite
31
    {
32
    Point coord ;
33
    int sitenbr ;
34
    int refcnt ;
35
    } Site ;
36
 
37
 
38
typedef struct tagEdge
39
    {
40
    float a, b, c ;
41
    Site * ep[2] ;
42
    Site * reg[2] ;
43
    int edgenbr ;
44
    } Edge ;
45
 
46
#define le 0
47
#define re 1
48
 
49
typedef struct tagHalfedge
50
    {
51
    struct tagHalfedge * ELleft ;
52
    struct tagHalfedge * ELright ;
53
    Edge * ELedge ;
54
    int ELrefcnt ;
55
    char ELpm ;
56
    Site * vertex ;
57
    float ystar ;
58
    struct tagHalfedge * PQnext ;
59
    } Halfedge ;
60
 
61
/* edgelist.c */
62
void ELinitialize(void) ;
63
Halfedge * HEcreate(Edge *, int) ;
64
void ELinsert(Halfedge *, Halfedge *) ;
65
Halfedge * ELgethash(int) ;
66
Halfedge * ELleftbnd(Point *) ;
67
void ELdelete(Halfedge *) ;
68
Halfedge * ELright(Halfedge *) ;
69
Halfedge * ELleft(Halfedge *) ;
70
Site * leftreg(Halfedge *) ;
71
Site * rightreg(Halfedge *) ;
72
extern int ELhashsize ;
73
extern Site * bottomsite ;
74
extern Freelist hfl ;
75
extern Halfedge * ELleftend, * ELrightend, **ELhash ;
76
 
77
/* geometry.c */
78
void geominit(void) ;
79
Edge * bisect(Site *, Site *) ;
80
Site * intersect(Halfedge *, Halfedge *) ;
81
int right_of(Halfedge *, Point *) ;
82
void endpoint(Edge *, int, Site *) ;
83
float dist(Site *, Site *) ;
84
void makevertex(Site *) ;
85
void deref(Site *) ;
86
void ref(Site *) ;
87
extern float deltax, deltay ;
88
extern int nsites, nedges, sqrt_nsites, nvertices ;
89
extern Freelist sfl, efl ;
90
 
91
/* heap.c */
92
void PQinsert(Halfedge *, Site *, float) ;
93
void PQdelete(Halfedge *) ;
94
int PQbucket(Halfedge *) ;
95
int PQempty(void) ;
96
Point PQ_min(void) ;
97
Halfedge * PQextractmin(void) ;
98
void PQinitialize(void) ;
99
extern int PQmin, PQcount, PQhashsize ;
100
extern Halfedge * PQhash ;
101
 
102
/* main.c */
103
extern int sorted, triangulate, plot, debug, nsites, siteidx ;
104
extern float xmin, xmax, ymin, ymax ;
105
extern Site * sites ;
106
extern Freelist sfl ;
107
 
108
/* getopt.c */
109
extern int getopt(int, char *const *, const char *);
110
 
111
/* memory.c */
112
void freeinit(Freelist *, int) ;
113
char *getfree(Freelist *) ;
114
void makefree(Freenode *, Freelist *) ;
115
char *myalloc(unsigned) ;
116
 
117
/* output.c */
118
void openpl(void) ;
119
void line(float, float, float, float) ;
120
void circle(float, float, float) ;
121
void range(float, float, float, float) ;
122
void out_bisector(Edge *) ;
123
void out_ep(Edge *) ;
124
void out_vertex(Site *) ;
125
void out_site(Site *) ;
126
void out_triple(Site *, Site *, Site *) ;
127
void plotinit(void) ;
128
void clip_line(Edge *) ;
129
 
130
/* voronoi.c */
131
void voronoi(Site *(*)()) ;
132
 
133
#endif  
134
 
135