This is pnmpad.c in view mode; [Download] [Up]
/* pnmpad.c - add border to sides of a portable anymap ** AJCD 4/9/90 */ #include <stdio.h> #include "pnm.h" int main(argc, argv) int argc; char *argv[]; { FILE *ifd; xel *xelrow, *bgrow, background; xelval maxval; int rows, cols, newcols, row, col, format; int left, right, top, bot, black; char *usage = "[-white|-black] [-l#] [-r#] [-t#] [-b#] [pnmfile]"; pnm_init( &argc, argv ); black = 1; left = right = top = bot = 0; while (argc >= 2 && argv[1][0] == '-') { if (strcmp(argv[1]+1,"black") == 0) black = 1; else if (strcmp(argv[1]+1,"white") == 0) black = 0; else switch (argv[1][1]) { case 'l': if ((left = atoi(argv[1]+2)) < 0) pm_error("left border too small"); break; case 'r': if ((right = atoi(argv[1]+2)) < 0) pm_error("right border too small"); break; case 'b': if ((bot = atoi(argv[1]+2)) < 0) pm_error("bottom border too small"); break; case 't': if ((top = atoi(argv[1]+2)) < 0) pm_error("top border too small"); break; default: pm_usage(usage); } argc--, argv++; } if (argc > 2) pm_usage(usage); if (argc == 2) ifd = pm_openr(argv[1]); else ifd = stdin; pnm_readpnminit(ifd, &cols, &rows, &maxval, &format); if (black) background = pnm_blackxel(maxval, format); else background = pnm_whitexel(maxval, format); if (cols == 0 || rows == 0) { pm_message("empty bitmap"); left = right = bot = top = 0; } newcols = cols+left+right; xelrow = pnm_allocrow(newcols); bgrow = pnm_allocrow(newcols); for (col = 0; col < newcols; col++) xelrow[col] = bgrow[col] = background; pnm_writepnminit(stdout, newcols, rows+top+bot, maxval, format, 0); for (row = 0; row < top; row++) pnm_writepnmrow(stdout, bgrow, newcols, maxval, format, 0); for (row = 0; row < rows; row++) { pnm_readpnmrow(ifd, xelrow+left, cols, maxval, format); pnm_writepnmrow(stdout, xelrow, newcols, maxval, format, 0); } for (row = 0; row < bot; row++) pnm_writepnmrow(stdout, bgrow, newcols, maxval, format, 0); pm_close(ifd); exit(0); }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.