#include <u.h> | |
#include <libc.h> | |
#include <draw.h> | |
#include <memdraw.h> | |
#include <ctype.h> | |
#include <bio.h> | |
#include <flate.h> | |
#include "imagefile.h" | |
void | |
usage(void) | |
{ | |
fprint(2, "usage: topng [-c 'comment'] [-g 'gamma'] [file]\n"); | |
exits("usage"); | |
} | |
void | |
main(int argc, char *argv[]) | |
{ | |
Biobuf bout; | |
Memimage *i; | |
int fd; | |
char *err, *filename; | |
ImageInfo II; | |
ARGBEGIN{ | |
case 'c': | |
II.comment = ARGF(); | |
if(II.comment == nil) | |
usage(); | |
II.fields_set |= II_COMMENT; | |
break; | |
case 'g': | |
II.gamma = atof(ARGF()); | |
if(II.gamma == 0.) | |
usage(); | |
II.fields_set |= II_GAMMA; | |
break; | |
case 't': | |
break; | |
default: | |
usage(); | |
}ARGEND | |
if(Binit(&bout, 1, OWRITE) < 0) | |
sysfatal("Binit failed: %r"); | |
memimageinit(); | |
if(argc == 0){ | |
fd = 0; | |
filename = "<stdin>"; | |
}else{ | |
fd = open(argv[0], OREAD); | |
if(fd < 0) | |
sysfatal("can't open %s: %r", argv[0]); | |
filename = argv[0]; | |
} | |
i = readmemimage(fd); | |
if(i == nil) | |
sysfatal("can't readimage %s: %r", filename); | |
close(fd); | |
err = memwritepng(&bout, i, &II); | |
freememimage(i); | |
if(err != nil) | |
fprint(2, "topng: %s\n", err); | |
exits(err); | |
} |