Blame


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