#ifndef __VDEFS_H #define __VDEFS_H #ifndef NULL #define NULL 0 #endif #define DELETED -2 typedef struct tagFreenode { struct tagFreenode * nextfree; } Freenode ; typedef struct tagFreelist { Freenode * head; int nodesize; } Freelist ; typedef struct tagPoint { float x ; float y ; } Point ; /* structure used both for sites and for vertices */ typedef struct tagSite { Point coord ; int sitenbr ; int refcnt ; } Site ; typedef struct tagEdge { float a, b, c ; Site * ep[2] ; Site * reg[2] ; int edgenbr ; } Edge ; #define le 0 #define re 1 typedef struct tagHalfedge { struct tagHalfedge * ELleft ; struct tagHalfedge * ELright ; Edge * ELedge ; int ELrefcnt ; char ELpm ; Site * vertex ; float ystar ; struct tagHalfedge * PQnext ; } Halfedge ; /* edgelist.c */ void ELinitialize(void) ; Halfedge * HEcreate(Edge *, int) ; void ELinsert(Halfedge *, Halfedge *) ; Halfedge * ELgethash(int) ; Halfedge * ELleftbnd(Point *) ; void ELdelete(Halfedge *) ; Halfedge * ELright(Halfedge *) ; Halfedge * ELleft(Halfedge *) ; Site * leftreg(Halfedge *) ; Site * rightreg(Halfedge *) ; extern int ELhashsize ; extern Site * bottomsite ; extern Freelist hfl ; extern Halfedge * ELleftend, * ELrightend, **ELhash ; /* geometry.c */ void geominit(void) ; Edge * bisect(Site *, Site *) ; Site * intersect(Halfedge *, Halfedge *) ; int right_of(Halfedge *, Point *) ; void endpoint(Edge *, int, Site *) ; float dist(Site *, Site *) ; void makevertex(Site *) ; void deref(Site *) ; void ref(Site *) ; extern float deltax, deltay ; extern int nsites, nedges, sqrt_nsites, nvertices ; extern Freelist sfl, efl ; /* heap.c */ void PQinsert(Halfedge *, Site *, float) ; void PQdelete(Halfedge *) ; int PQbucket(Halfedge *) ; int PQempty(void) ; Point PQ_min(void) ; Halfedge * PQextractmin(void) ; void PQinitialize(void) ; extern int PQmin, PQcount, PQhashsize ; extern Halfedge * PQhash ; /* main.c */ extern int sorted, triangulate, plot, debug, nsites, siteidx ; extern float xmin, xmax, ymin, ymax ; extern Site * sites ; extern Freelist sfl ; /* getopt.c */ extern int getopt(int, char *const *, const char *); /* memory.c */ void freeinit(Freelist *, int) ; char *getfree(Freelist *) ; void makefree(Freenode *, Freelist *) ; char *myalloc(unsigned) ; /* output.c */ void openpl(void) ; void line(float, float, float, float) ; void circle(float, float, float) ; void range(float, float, float, float) ; void out_bisector(Edge *) ; void out_ep(Edge *) ; void out_vertex(Site *) ; void out_site(Site *) ; void out_triple(Site *, Site *, Site *) ; void plotinit(void) ; void clip_line(Edge *) ; /* voronoi.c */ void voronoi(Site *(*)()) ; #endif