ref: d67596f1bbdce63cd6a053cc17443fde1631ed10
dir: /sys/src/cmd/postscript/p9bitpost/p9bitpost.c/
#include <u.h> #include <libc.h> #include <draw.h> #include <memdraw.h> #include "pslib.h" #define HDLEN 60 int dpi = -1; int debug = 0; int landscape = 0; char *file = "<stdin>"; int paperlength = 11*72; int paperwidth = 612; /* 8.5*72 */ void error(char *s) { fprint(2, "p9bitpost: can't %s file %s: %r\n", s, file); exits("error"); } void main(int argc, char *argv[]) { int i, fd = 0; double xmag = 1.0, ymag = 1.0; char *optstr, *Patch; Memimage *memimage; Patch = nil; for (i=1; i<argc; i++) { if (*argv[i] != '-') break; switch(argv[i][1]) { case 'b': if (argv[i][2] == '\0') dpi = atoi(argv[++i]); else dpi = atoi(&(argv[i][2])); break; case 'd': debug = 1; break; case 'm': if (argv[i][2] == '\0') optstr = argv[++i]; else optstr = &(argv[i][2]); if ((optstr=strtok(optstr, " ,")) != 0) xmag = ymag = atof(optstr); if ((optstr=strtok(0, " ,")) != 0) ymag = atof(optstr); break; case 'L': landscape = 1; break; case 'P': if (argv[i][2] == '\0') Patch = argv[++i]; else Patch = &(argv[i][2]); break; case 'p': optstr = argv[++i]; if(optstr == nil) goto Usage; paperlength = 72*atof(optstr); optstr = argv[++i]; if(optstr == nil) goto Usage; paperwidth = 72*atof(optstr); if(paperlength < 72 || paperwidth < 72) goto Usage; break; default: Usage: fprint(2, "usage: %s [-b dpi] [-m magnification] [-L] [-P postscript_patch_string] [-p paperlength paperwidth (in inches)] inputfile\n", argv[0]); exits("usage"); } } if (i < argc) { file = argv[i]; fd = open(file, OREAD); if (fd < 0) error("open"); } memimageinit(); memimage = readmemimage(fd); if(memimage == nil) error("alloc memory for"); psinit(0, 0); if(xmag != 1.0) psopt("xmagnification", &xmag); if(ymag != 1.0) psopt("ymagnification", &ymag); if(landscape) psopt("landscape", &landscape); if(Patch) psopt("Patch", &Patch); image2psfile(1, memimage, dpi); exits(""); }