better better better image maker

This commit is contained in:
tth 2019-09-11 06:06:59 +02:00
parent a5d4e5cc98
commit 7afe2b1b63
1 changed files with 40 additions and 8 deletions

View File

@ -1,4 +1,5 @@
#include <stdio.h> #include <stdio.h>
#include <string.h>
#include <stdlib.h> #include <stdlib.h>
#include <unistd.h> #include <unistd.h>
@ -7,9 +8,27 @@
int verbosity; int verbosity;
/* --------------------------------------------------------------------- */ /* --------------------------------------------------------------------- */
void help(int lj) #define T_BLACK 0
#define T_DRAND48 1
#define T_RGB_0 2
static int get_type(char *name)
{ {
fimg_print_version(1);
fprintf(stderr, ">>> %s ( '%s' )\n", __func__, name);
#define TEST(str) ( ! strcmp(name, str) )
if TEST("black") return T_BLACK;
if TEST("drand48") return T_DRAND48;
return -1;
}
/* --------------------------------------------------------------------- */
static void help(int lj)
{
puts("Usage:\n\tmkfimg [options] quux.fimg width height\n");
if (verbosity) fimg_print_version(1);
exit(0); exit(0);
} }
@ -20,32 +39,45 @@ int foo, opt;
int width, height; int width, height;
char *fname; char *fname;
float fvalue; float fvalue;
int type = 0;
FloatImg fimg; FloatImg fimg;
while ((opt = getopt(argc, argv, "ho:v")) != -1) { while ((opt = getopt(argc, argv, "ht:v")) != -1) {
switch(opt) { switch(opt) {
case 'h': help(0); break; case 'h': help(0); break;
case 't': type = get_type(optarg); break;
case 'v': verbosity++; break; case 'v': verbosity++; break;
} }
} }
if (4 != argc) { #if DEBUG_LEVEL
fimg_print_version(1); fprintf(stderr, "argc %d optind %d\n", argc, optind);
fprintf(stderr, "Usage:\n\t%s quux.fimg width height\n", argv[0]); for (foo=0; foo<argc; foo++)
fprintf(stderr, "%3d %s\n", foo, argv[foo]);
#endif
if (3 != argc-optind) {
fprintf(stderr, "%s need filename, width & height\n", argv[0]);
exit(1); exit(1);
} }
fname = argv[optind]; fname = argv[optind];
width = atoi(argv[optind+1]); height = atoi(argv[optind+2]); width = atoi(argv[optind+1]); height = atoi(argv[optind+2]);
fprintf(stderr, "making '%s' %d x %d\n", fname, width, height);
if (verbosity) fprintf(stderr, "making '%s' %d x %d\n", fname, width, height);
foo = fimg_create(&fimg, width, height, 3); foo = fimg_create(&fimg, width, height, 3);
if (foo) { if (foo) {
fprintf(stderr, "create floatimg -> %d\n", foo); fprintf(stderr, "create floatimg -> %d\n", foo);
exit(1); exit(1);
} }
fimg_clear(&fimg);
switch(type) {
default:
case T_BLACK: fimg_clear(&fimg); break;
case T_DRAND48: fimg_drand48(&fimg, 1.0); break;
}
foo = fimg_dump_to_file(&fimg, fname, 0); foo = fimg_dump_to_file(&fimg, fname, 0);
if (foo) { if (foo) {