9 int line, bpp, x, y, dx, dy;
20 if((w = allocmemimage(m->r, GREY8)) == nil)
21 sysfatal("allocmemimage: %r");
22 memimagedraw(w, w->r, m, m->r.min, nil, ZP, S);
30 if((w = allocmemimage(Rect(m->r.min.x, m->r.min.y,
31 m->r.min.x+dy, m->r.min.y+dx), m->chan)) == nil)
32 sysfatal("allocmemimage: %r");
33 line = w->width*sizeof(ulong);
35 s = byteaddr(m, addpt(m->r.min, Pt(0, y)));
36 d = byteaddr(w, addpt(w->r.min, Pt(dy-y-1, 0)));
54 if((m = allocmemimage(w->r, chan)) == nil)
55 sysfatal("allocmemimage: %r");
56 memimagedraw(m, m->r, w, w->r.min, nil, ZP, S);
64 upsidedown(Memimage *m)
70 w = m->width * sizeof(ulong);
71 if((t = malloc(w)) == nil)
72 sysfatal("malloc: %r");
73 for(y=0; y<dy/2; y++){
74 s = byteaddr(m, addpt(m->r.min, Pt(0, y)));
75 d = byteaddr(m, addpt(m->r.min, Pt(0, dy-y-1)));
87 fprint(2, "usage: %s [ -r degree ] [ -u | -l ] [ file ]\n", argv0);
92 main(int argc, char *argv[])
109 r = atoi(EARGF(usage()));
115 fd = open(*argv, OREAD);
117 sysfatal("open: %r");
120 if((m = readmemimage(fd)) == nil)
121 sysfatal("readmemimage: %r");
122 if(f == 'u' || f == 'l'){
136 if(writememimage(1, m) < 0)
137 sysfatal("writememimage: %r");