--- ray/src/px/ra_t8.c 1990/01/18 23:58:24 1.4 +++ ray/src/px/ra_t8.c 1991/04/18 14:35:45 1.9 @@ -59,7 +59,7 @@ char *progname; char errmsg[128]; -COLR *inline; +COLR *inl; pixel *tarData; @@ -124,7 +124,8 @@ char *argv[]; quiterr(errmsg); } /* put header */ - printargs(argc, argv, stdout); + printargs(i, argv, stdout); + fputformat(COLRFMT, stdout); putchar('\n'); fputresolu(YMAJOR|YDECR, xmax, ymax, stdout); /* convert file */ @@ -282,10 +283,10 @@ register struct hdStruct *h; p->fp = stdin; else if ((p->fp = fopen(fname, "r")) == NULL) return(NULL); - /* discard header */ - getheader(p->fp, NULL); - if (fgetresolu(&xmax, &ymax, p->fp) != (YMAJOR|YDECR)) - quiterr("bad picture size"); + /* get header info. */ + if (checkheader(p->fp, COLRFMT, NULL) < 0 || + fgetresolu(&xmax, &ymax, p->fp) != (YMAJOR|YDECR)) + quiterr("bad picture format"); p->nexty = 0; p->bytes_line = 0; /* variable length lines */ p->pos.y = (long *)ecalloc(ymax, sizeof(long)); @@ -304,7 +305,7 @@ register struct hdStruct *h; h->dataBits = 8; h->imType = 0; /* allocate scanline */ - inline = (COLR *)emalloc(xmax*sizeof(COLR)); + inl = (COLR *)emalloc(xmax*sizeof(COLR)); /* allocate targa data */ tarData = taralloc(h); @@ -368,7 +369,7 @@ register rgbpixel *l3; if (inpic->bytes_line == 0) { if (inpic->pos.y[y] == 0) { while (inpic->nexty < y) { - if (freadcolrs(inline, xmax, inpic->fp) < 0) + if (freadcolrs(inl, xmax, inpic->fp) < 0) quiterr("read error in picreadline3"); inpic->pos.y[++inpic->nexty] = ftell(inpic->fp); } @@ -378,15 +379,15 @@ register rgbpixel *l3; quiterr("seek error in picreadline3"); } else if (inpic->bytes_line == 0 && inpic->pos.y[inpic->nexty] == 0) inpic->pos.y[inpic->nexty] = ftell(inpic->fp); - if (freadcolrs(inline, xmax, inpic->fp) < 0) /* read scanline */ + if (freadcolrs(inl, xmax, inpic->fp) < 0) /* read scanline */ quiterr("read error in picreadline3"); inpic->nexty = y+1; /* convert scanline */ - normcolrs(inline, xmax); + normcolrs(inl, xmax, 0); for (i = 0; i < xmax; i++) { - l3[i].r = inline[i][RED]; - l3[i].g = inline[i][GRN]; - l3[i].b = inline[i][BLU]; + l3[i].r = inl[i][RED]; + l3[i].g = inl[i][GRN]; + l3[i].b = inl[i][BLU]; } } @@ -465,7 +466,7 @@ colormap map; register int i, val; for (i = 0; i < 256; i++) { - val = pow(i/256.0, 1.0/gamma) * 256.0; + val = pow((i+0.5)/256.0, 1.0/gamma) * 256.0; map[0][i] = map[1][i] = map[2][i] = val; } }