#include #include #include #include #include #include "../floatimg.h" int verbosity; /* --------------------------------------------------------------------- */ #define T_BLACK 1 #define T_DRAND48 2 #define T_GRAY 3 typedef struct { int code; char *name; } Type; Type types[] = { { T_BLACK, "black" }, { T_DRAND48, "drand48" }, { T_GRAY, "gray" }, { T_GRAY, "grey" } }; static int get_type(char *name) { Type *type; #if DEBUG_LEVEL fprintf(stderr, ">>> %s ( '%s' )\n", __func__, name); #endif // #define TEST(str) ( ! strcmp(name, str) ) for (type = types; type->code; type++) { // printf("\t%-15s %d\n", type->name, type->code); if (!strcmp(name, type->name)) { return type->code; } } return -1; } /* --------------------------------------------------------------------- */ static void help(int lj) { puts("Usage:\tmkfimg [options] quux.fimg width height"); puts("\t-k N.N\tgive a float parameter"); puts("\t-t bla\t\thowto make the pic"); puts("\t\t\tblack, drand48..."); puts("\t-v\tincrease verbosity"); if (verbosity) fimg_print_version(1); exit(0); } /* --------------------------------------------------------------------- */ int main(int argc, char *argv[]) { int foo, opt; int width, height; char *fname; float fvalue = 0.01; int type = T_BLACK; char *tname = "wtf?"; FloatImg fimg; while ((opt = getopt(argc, argv, "hk:t:v")) != -1) { switch(opt) { case 'h': help(0); break; case 'k': fvalue = atof(optarg); break; case 't': type = get_type(tname=optarg); break; case 'v': verbosity++; break; } } #if DEBUG_LEVEL fprintf(stderr, "argc %d optind %d\n", argc, optind); for (foo=0; foo %d\n", foo); exit(3); } switch(type) { default: case T_BLACK: fimg_clear(&fimg); break; case T_DRAND48: fimg_drand48(&fimg, fvalue); break; case T_GRAY: fimg_rgb_constant(&fimg, fvalue, fvalue, fvalue); break; } foo = fimg_dump_to_file(&fimg, fname, 0); if (foo) { fprintf(stderr, "dump fimg -> %d\n", foo); exit(1); } return 0; } /* --------------------------------------------------------------------- */