Many small edits.
This commit is contained in:
parent
741f510ce7
commit
c8b6342d3c
160 changed files with 2204 additions and 864 deletions
102
src/cmd/draw/iconv.c
Normal file
102
src/cmd/draw/iconv.c
Normal file
|
|
@ -0,0 +1,102 @@
|
|||
#include <u.h>
|
||||
#include <libc.h>
|
||||
#include <draw.h>
|
||||
#include <memdraw.h>
|
||||
|
||||
void
|
||||
usage(void)
|
||||
{
|
||||
fprint(2, "usage: iconv [-u] [-c chanstr] [file]\n");
|
||||
exits("usage");
|
||||
}
|
||||
|
||||
void
|
||||
writeuncompressed(int fd, Memimage *m)
|
||||
{
|
||||
char chanstr[32];
|
||||
int bpl, y, j;
|
||||
uchar *buf;
|
||||
|
||||
if(chantostr(chanstr, m->chan) == nil)
|
||||
sysfatal("can't convert channel descriptor: %r");
|
||||
fprint(fd, "%11s %11d %11d %11d %11d ",
|
||||
chanstr, m->r.min.x, m->r.min.y, m->r.max.x, m->r.max.y);
|
||||
|
||||
bpl = bytesperline(m->r, m->depth);
|
||||
buf = malloc(bpl);
|
||||
if(buf == nil)
|
||||
sysfatal("malloc failed: %r");
|
||||
for(y=m->r.min.y; y<m->r.max.y; y++){
|
||||
j = unloadmemimage(m, Rect(m->r.min.x, y, m->r.max.x, y+1), buf, bpl);
|
||||
if(j != bpl)
|
||||
sysfatal("image unload failed: %r");
|
||||
if(write(fd, buf, bpl) != bpl)
|
||||
sysfatal("write failed: %r");
|
||||
}
|
||||
free(buf);
|
||||
}
|
||||
|
||||
void
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
char *tostr, *file;
|
||||
int fd, uncompressed;
|
||||
ulong tochan;
|
||||
Memimage *m, *n;
|
||||
|
||||
tostr = nil;
|
||||
uncompressed = 0;
|
||||
ARGBEGIN{
|
||||
case 'c':
|
||||
tostr = EARGF(usage());
|
||||
break;
|
||||
case 'u':
|
||||
uncompressed = 1;
|
||||
break;
|
||||
default:
|
||||
usage();
|
||||
}ARGEND
|
||||
|
||||
memimageinit();
|
||||
|
||||
file = "<stdin>";
|
||||
m = nil;
|
||||
|
||||
switch(argc){
|
||||
case 0:
|
||||
m = readmemimage(0);
|
||||
break;
|
||||
case 1:
|
||||
file = argv[0];
|
||||
fd = open(file, OREAD);
|
||||
if(fd < 0)
|
||||
sysfatal("can't open %s: %r", file);
|
||||
m = readmemimage(fd);
|
||||
close(fd);
|
||||
break;
|
||||
default:
|
||||
usage();
|
||||
}
|
||||
|
||||
if(m == nil)
|
||||
sysfatal("can't read %s: %r", file);
|
||||
|
||||
if(tostr == nil)
|
||||
tochan = m->chan;
|
||||
else{
|
||||
tochan = strtochan(tostr);
|
||||
if(tochan == 0)
|
||||
sysfatal("bad channel descriptor '%s'", tostr);
|
||||
}
|
||||
|
||||
n = allocmemimage(m->r, tochan);
|
||||
if(n == nil)
|
||||
sysfatal("can't allocate new image: %r");
|
||||
|
||||
memimagedraw(n, n->r, m, m->r.min, nil, ZP, S);
|
||||
if(uncompressed)
|
||||
writeuncompressed(1, n);
|
||||
else
|
||||
writememimage(1, n);
|
||||
exits(nil);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue