--- ray/src/px/oki20c.c 1989/02/02 10:49:21 1.1 +++ ray/src/px/oki20c.c 1989/10/20 10:28:59 1.3 @@ -58,7 +58,7 @@ char *fname; /* discard header */ getheader(input, NULL); /* get picture dimensions */ - if (fscanf(input, "-Y %d +X %d\n", &yres, &xres) != 2) { + if (fgetresolu(&xres, &yres, input) != (YMAJOR|YDECR)) { fprintf(stderr, "%s: bad picture size\n", fname); return(-1); } @@ -66,9 +66,9 @@ char *fname; fprintf(stderr, "%s: resolution mismatch\n", fname); return(-1); } - - fputs("\033A\014\0332", stdout); - + /* set line spacing (overlap for knitting) */ + fputs("\0333\042", stdout); + /* put out scanlines */ for (i = yres-1; i >= 0; i--) { if (freadscan(scanline, xres, input) < 0) { fprintf(stderr, "%s: read error (y=%d)\n", fname, i); @@ -76,7 +76,7 @@ char *fname; } plotscan(scanline, xres, i); } - + /* advance page */ putchar('\f'); fclose(input); @@ -95,7 +95,7 @@ int y; register long c; register int i, j; - if (bpos = y % 24) { + if (bpos = y % 23) { for (j = 0; j < 3; j++) for (i = 0; i < len; i++) @@ -110,8 +110,13 @@ int y; putchar(len & 255); putchar(len >> 8); for (i = 0; i < len; i++) { - c = pat[i][j] | colbit(scan[i],i,j); - pat[i][j] = 0; + if (y!=0 & i+j) { /* knit bit */ + c = pat[i][j]; + pat[i][j] = colbit(scan[i],i,j) << 23; + } else { + c = pat[i][j] | colbit(scan[i],i,j); + pat[i][j] = 0; + } putchar(c>>16); putchar(c>>8 & 255); putchar(c & 255);