int main( int argc, char **argv) { FILE *header; FILE *source = fopen("table.c", "w"); if (source == NULL) { perror("table.c"); return 1; } header = fopen("table.h", "w"); if (header == NULL) { perror("table.h"); return 1; } fprintf(header, "#ifndef _TABLE_H\n#define _TABLE_H\n#define qual_nn %f\n", log(0.25)); buildmatrix(header, source, "qual_match", match); buildmatrix(header, source, "qual_mismatch", mismatch); buildlist(header, source, "qual_nmatch", nmatch); buildlist(header, source, "qual_score", score); fprintf(header, "#endif\n"); fclose(source); fclose(header); return 0; }
void plfill_soft(short *x, short *y, PLINT n) { PLINT i, j; PLINT xp1, yp1, xp2, yp2, xp3, yp3; PLINT k, dinc; PLFLT ci, si; double temp; buffersize = 2 * BINC; buffer = (PLINT *) malloc((size_t) buffersize * sizeof(PLINT)); if ( ! buffer) { plabort("plfill: Out of memory"); return; } /* Loop over sets of lines in pattern */ for (k = 0; k < plsc->nps; k++) { bufferleng = 0; temp = DTOR * plsc->inclin[k] * 0.1; si = sin(temp) * plsc->ypmm; ci = cos(temp) * plsc->xpmm; /* normalize: 1 = si*si + ci*ci */ temp = sqrt((double) (si*si + ci*ci)); si /= temp; ci /= temp; dinc = plsc->delta[k] * SSQR(plsc->ypmm * ABS(ci), plsc->xpmm * ABS(si)) / 1000.; if (dinc < 0) dinc = -dinc; if (dinc == 0) dinc = 1; xp1 = x[n-2]; yp1 = y[n-2]; tran(&xp1, &yp1, (PLFLT) ci, (PLFLT) si); xp2 = x[n-1]; yp2 = y[n-1]; tran(&xp2, &yp2, (PLFLT) ci, (PLFLT) si); /* Loop over points in polygon */ for (i = 0; i < n; i++) { xp3 = x[i]; yp3 = y[i]; tran(&xp3, &yp3, (PLFLT) ci, (PLFLT) si); buildlist(xp1, yp1, xp2, yp2, xp3, yp3, dinc); xp1 = xp2; yp1 = yp2; xp2 = xp3; yp2 = yp3; } /* Sort list by y then x */ qsort((void *) buffer, (size_t) bufferleng / 2, (size_t) sizeof(struct point), compar); /* OK, now do the hatching */ i = 0; while (i < bufferleng) { xp1 = buffer[i]; yp1 = buffer[i + 1]; i += 2; xp2 = xp1; yp2 = yp1; tran(&xp1, &yp1, (PLFLT) ci, (PLFLT) (-si)); plP_movphy(xp1, yp1); xp1 = buffer[i]; yp1 = buffer[i + 1]; i += 2; if (yp2 != yp1) { fprintf(stderr, "plfill: oh oh we are lost\n"); for (j = 0; j < bufferleng; j+=2) { fprintf(stderr, "plfill: %d %d\n", (int) buffer[j], (int) buffer[j+1]); } continue; /* Uh oh we're lost */ } tran(&xp1, &yp1, (PLFLT) ci, (PLFLT) (-si)); plP_draphy(xp1, yp1); } } free((void *) buffer); }
/* update is called only for TXT_FULL tables */ static void update (txtnode_t *pnode, long ptim) { txtnode_t *cnode, *seennode; long ctim; int i; Gawsetmode (&Gwidgets[pnode->u.f.t.mwi], TRUE); if (!pnode->u.f.t.list) buildlist (pnode); else if (ptim < Tgettime (pnode->vo)) rebuildlist (pnode); for ( i = 0, cnode = &pnode->u.f.t.list[0]; i < pnode->u.f.t.n; i++, cnode++ ) { ctim = cnode->time; if (txtvo2toggle == cnode->vo) { switch (cnode->mode) { case TXT_SEEN: break; case TXT_ABSTRACT: unfillnode (cnode); cnode->mode = TXT_FULL; fillnode (pnode, cnode); break; case TXT_FULL: unfillnode (cnode); cnode->mode = TXT_ABSTRACT; fillnode (pnode, cnode); break; } } if (!(seennode = findseen (cnode))) add2seen (cnode); if ( seennode && cnode->mode == TXT_SEEN && seennode->ko != cnode->u.s.ko ) { unfillnode (cnode); cnode->u.s.txtnode = seennode; cnode->u.s.ko = seennode->ko; fillnode (pnode, cnode); } else if (seennode && cnode->mode != TXT_SEEN) { unfillnode (cnode); cnode->mode = TXT_SEEN; cnode->u.s.txtnode = seennode; cnode->u.s.ko = seennode->ko; fillnode (pnode, cnode); } else if (!seennode && cnode->mode == TXT_SEEN) { unfillnode (cnode); cnode->mode = TXT_ABSTRACT; fillnode (pnode, cnode); } else if (cnode->time == -1) { unfillnode (cnode); if (seennode) cnode->u.s.txtnode = seennode; fillnode (pnode, cnode); } if (cnode->ttype == T_TABLE && cnode->mode == TXT_FULL) update (cnode, ctim); } Gaworder (&Gwidgets[pnode->u.f.t.mwi], pnode, orderfunc); Gawsetmode (&Gwidgets[pnode->u.f.t.mwi], FALSE); }