diff --git a/src/floatimg.h b/src/floatimg.h index d196508..57a8dc7 100644 --- a/src/floatimg.h +++ b/src/floatimg.h @@ -4,7 +4,7 @@ * http://la.buvette.org/photos/cumul */ -#define FIMG_VERSION 145 +#define FIMG_VERSION 147 /* * in memory descriptor @@ -218,6 +218,7 @@ int fimg_save_as_bmp(FloatImg *src, char *outname, int flags); int fimg_test_pattern(FloatImg *fimg, int type, double dval); int fimg_draw_something(FloatImg *fimg); +int fimg_mircol_1(FloatImg *dst, float mval); int fimg_multirandom(FloatImg *fimg, long nbpass); /* file is 'funcs/utils.c' */ diff --git a/src/funcs/displacement.c b/src/funcs/displacement.c index 1d3b40d..872b4e7 100644 --- a/src/funcs/displacement.c +++ b/src/funcs/displacement.c @@ -59,7 +59,7 @@ for (y=0; yheight; y++) { fimg_get_rgb(psrc, x, y, rgb); dispx = (float)x + (rgb[1]/dltg * 20.0); - dispy = (float)y + (rgb[2]/dltb * 10.0); + dispy = (float)y + (rgb[2]/dltb * 20.0); dstx = (int)roundf(dispx - 10.0); dsty = (int)roundf(dispy - 10.0); diff --git a/src/funcs/misc-plots.c b/src/funcs/misc-plots.c index 32c095b..3570b4f 100644 --- a/src/funcs/misc-plots.c +++ b/src/funcs/misc-plots.c @@ -86,6 +86,24 @@ for (y=1; yheight; y++) { return 0; } /* --------------------------------------------------------------------- */ +int fimg_mircol_1(FloatImg *dst, float mval) +{ +int x, y; +float fx, fy, rgb[3]; + +for (y=0; yheight; y++) { + fy = (float)y / (float)dst->height; + for (x=0; xwidth; x++) { + fx = (float)x / (float)dst->width; + rgb[0] = mval * fx; + rgb[1] = mval * ((fx+fy)/2.0); + rgb[2] = mval * fy; + fimg_put_rgb(dst, x, y, rgb); + } + } +return -1; +} +/* --------------------------------------------------------------------- */ int fimg_multirandom(FloatImg *fimg, long nbpass) { int foo, x, y; diff --git a/src/tools/mkfimg.c b/src/tools/mkfimg.c index e418fcd..6e568d8 100644 --- a/src/tools/mkfimg.c +++ b/src/tools/mkfimg.c @@ -20,7 +20,8 @@ int verbosity; #define T_HDEG_A 4 #define T_VDEG_A 5 #define T_TPAT0 6 - +#define T_MIRCOL1 7 +#define T_BLOUP 8 typedef struct { int code; char *name; @@ -34,10 +35,12 @@ Type types[] = { { T_HDEG_A, "hdeg" }, { T_VDEG_A, "vdeg" }, { T_TPAT0, "tpat0" }, + { T_MIRCOL1, "mircol1" }, + { T_BLOUP, "bloup" }, { 0, NULL } }; -static int get_type(char *name) +static int get_type_by_name(char *name) { Type *type; @@ -58,15 +61,18 @@ return -1; /* --------------------------------------------------------------------- */ static void help(int lj) { -int foo; +int foo, cc; puts("Usage:\tmkfimg [options] quux.fimg width height"); puts("\t-k N.N\tgive a float parameter"); -fputs("\t-t bla\thowto make the pic :\n\t\t", stdout); -for (foo=0; types[foo].code; foo++) { - printf("%s ", types[foo].name); +fputs("\t-t bla\thowto make the pic :\n\t\t| ", stdout); + +for (foo=cc=0; types[foo].code; foo++) { + cc += printf("%s ", types[foo].name); + if (cc>42) { cc=0; printf("\n\t\t| "); } } + puts("\n\t-v\tincrease verbosity"); if (verbosity) { @@ -92,7 +98,8 @@ 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 't': type = get_type_by_name(tname=optarg); + break; case 'v': verbosity++; break; } } @@ -122,13 +129,15 @@ switch (nbargs) { height = atoi(argv[optind+2]); break; default: - fprintf(stderr, "%s need filename, width & height\n", argv[0]); + fprintf(stderr, "%s need filename, width & height\n", + argv[0]); exit(1); } fname = argv[optind]; -if (verbosity>1) fprintf(stderr, "*** mkfimg *** %s %s\n", __DATE__, __TIME__); +if (verbosity>1) fprintf(stderr, "*** mkfimg *** %s %s\n", + __DATE__, __TIME__); if (verbosity) fprintf(stderr, "making '%s' %dx%d, type %d\n", fname, width, height, type); @@ -149,6 +158,8 @@ switch(type) { case T_HDEG_A: fimg_hdeg_a(&fimg, 1.0); break; case T_VDEG_A: fimg_vdeg_a(&fimg, 1.0); break; case T_TPAT0: fimg_test_pattern(&fimg, 0, fvalue); break; + case T_MIRCOL1: fimg_mircol_1(&fimg, fvalue); break; + case T_BLOUP: fimg_draw_something(&fimg); break; case -1: exit(1); }