static void createface(void) { int i; facedl = glGenLists(1); face_first = FALSE; glNewList(facedl, GL_COMPILE); glRotatef(-90, 1, 0, 0); glBegin(GL_TRIANGLES); for (i = 0; i < numTriangles; i++) { createvertex(face[i][0], face[i][3]); createvertex(face[i][1], face[i][4]); createvertex(face[i][2], face[i][5]); } glEnd(); glEndList(); }
edge_t *createedge (edgedata_t *edp, char *name) { edge_t *ememp, *ep; vertex_t *v0p, *v1p; ememp = ep = NULL; if (!(ememp = vmalloc (evm, sizeof (edge_t)))) goto abortcreateedge; ememp->tlid = edp->tlid; if (!(ep = dtinsert (edgedict, ememp))) goto abortcreateedge; if (ep != ememp) { SUwarning (2, "createedge", "duplicate edge %d", edp->tlid); if (!edp->onesided || !ep->onesided) { SUwarning ( 1, "createedge", "cannot handle two-sided duplicate edge %d", edp->tlid ); return ep; } ep->onesided = 0; if (ep->statel == 0) { if (edp->statel != 0) { ep->zipl = edp->zipl; ep->npanxxlocl = edp->npanxxlocl; ep->statel = edp->statel; ep->countyl = edp->countyl; ep->ctbnal = edp->ctbnal; ep->blkl = edp->blkl; ep->blksl = edp->blksl; } else { ep->zipl = edp->zipr; ep->npanxxlocl = edp->npanxxlocr; ep->statel = edp->stater; ep->countyl = edp->countyr; ep->ctbnal = edp->ctbnar; ep->blkl = edp->blkr; ep->blksl = edp->blksr; } } else { if (edp->statel != 0) { ep->zipr = edp->zipl; ep->npanxxlocr = edp->npanxxlocl; ep->stater = edp->statel; ep->countyr = edp->countyl; ep->ctbnar = edp->ctbnal; ep->blkr = edp->blkl; ep->blksr = edp->blksl; } else { ep->zipr = edp->zipr; ep->npanxxlocr = edp->npanxxlocr; ep->stater = edp->stater; ep->countyr = edp->countyr; ep->ctbnar = edp->ctbnar; ep->blkr = edp->blkr; ep->blksr = edp->blksr; } } return ep; } ep->onesided = edp->onesided; ep->v0p = ep->v1p = NULL; if (!(ep->sp = createstring (name))) goto abortcreateedge; ep->cfccid = edp->cfccid; ep->zipl = edp->zipl, ep->zipr = edp->zipr; ep->npanxxlocl = edp->npanxxlocl, ep->npanxxlocr = edp->npanxxlocr; ep->statel = edp->statel, ep->stater = edp->stater; ep->countyl = edp->countyl, ep->countyr = edp->countyr; ep->ctbnal = edp->ctbnal, ep->ctbnar = edp->ctbnar; ep->blkl = edp->blkl, ep->blkr = edp->blkr; ep->blksl = edp->blksl, ep->blksr = edp->blksr; if ( !(v0p = createvertex (edp->xy0)) || !(v1p = createvertex (edp->xy1)) || linkedgenvertices (ep, v0p, v1p) == -1 ) goto abortcreateedge; ep->p0p = ep->p1p = NULL; ep->p0i = ep->p1i = -1; ep->xys = NULL; ep->xyn = 0; ep->mark = 0; return ep; abortcreateedge: SUwarning (1, "createedge", "create failed for edge %d", edp->tlid); if (ep) { if (ep == ememp) dtdelete (edgedict, ep); if (ep->sp) destroystring (ep->sp); if (ep->v0p || ep->v1p) unlinkedgenvertices (ep); if (ep->v0p) destroyvertex (ep->v0p); if (ep->v1p) destroyvertex (ep->v1p); } if (ememp) vmfree (evm, ememp); return NULL; }