Subversion Repositories planix.SVN

Rev

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

#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);
}