Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
#include <u.h>
2
#include <libc.h>
3
#include <draw.h>
4
#include <memdraw.h>
5
#include <ctype.h>
6
#include <bio.h>
7
#include <flate.h>
8
#include "imagefile.h"
9
 
10
void
11
usage(void)
12
{
13
	fprint(2, "usage: topng [-c 'comment'] [-g 'gamma'] [file]\n");
14
	exits("usage");
15
}
16
 
17
void
18
main(int argc, char *argv[])
19
{
20
	Biobuf bout;
21
	Memimage *i;
22
	int fd;
23
	char *err, *filename;
24
	ImageInfo II;
25
 
26
	ARGBEGIN{
27
	case 'c':
28
		II.comment = ARGF();
29
		if(II.comment == nil)
30
			usage();
31
		II.fields_set |= II_COMMENT;
32
		break;
33
	case 'g':
34
		II.gamma = atof(ARGF());
35
		if(II.gamma == 0.)
36
			usage();
37
		II.fields_set |= II_GAMMA;
38
		break;
39
	case 't':
40
		break;
41
	default:
42
		usage();
43
	}ARGEND
44
 
45
	if(Binit(&bout, 1, OWRITE) < 0)
46
		sysfatal("Binit failed: %r");
47
	memimageinit();
48
 
49
	if(argc == 0){
50
		fd = 0;
51
		filename = "<stdin>";
52
	}else{
53
		fd = open(argv[0], OREAD);
54
		if(fd < 0)
55
			sysfatal("can't open %s: %r", argv[0]);
56
		filename = argv[0];
57
	}
58
 
59
	i = readmemimage(fd);
60
	if(i == nil)
61
		sysfatal("can't readimage %s: %r", filename);
62
	close(fd);
63
 
64
	err = memwritepng(&bout, i, &II);
65
	freememimage(i);
66
 
67
	if(err != nil)
68
		fprint(2, "topng: %s\n", err);
69
	exits(err);
70
}