diff --git a/.gitignore b/.gitignore index 3443c8c..ccdc97c 100644 --- a/.gitignore +++ b/.gitignore @@ -51,3 +51,5 @@ tools/addpnm2fimg tools/cumulfimgs tools/fimgops tools/fimgfx +tools/*.png + diff --git a/floatimg.h b/floatimg.h index 3fd36b6..91ed52f 100644 --- a/floatimg.h +++ b/floatimg.h @@ -2,7 +2,7 @@ * floatimg.h */ -#define FIMG_VERSION 96 +#define FIMG_VERSION 97 /* * in memory descriptor diff --git a/funcs/Makefile b/funcs/Makefile index b7ccb0e..a849b0c 100644 --- a/funcs/Makefile +++ b/funcs/Makefile @@ -34,7 +34,7 @@ geometry.o: geometry.c $(DEPS) gcc $(COPT) -c $< rotate.o: rotate.c $(DEPS) - gcc $(COPT) -DDEBUG_LEVEL=1 -c $< + gcc $(COPT) -c $< sfx0.o: sfx0.c $(DEPS) gcc $(COPT) -c $< diff --git a/tools/essai.sh b/tools/essai.sh new file mode 100755 index 0000000..4364f27 --- /dev/null +++ b/tools/essai.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +# +# essai des differents outils +# + +# ----------------------------------------------------- + +TMPF="tmp.fimg" + +# ----------------------------------------------------- +function essai_rot90 +{ +echo "=== " $0 " ===" +./mkfimg -v -t hdeg $TMPF 800 600 +./fimg2png -v $TMPF foo.png +./fimgfx -v rot90 $TMPF bar.fimg +} +# ----------------------------------------------------- + +essai_rot90 + +# ----------------------------------------------------- diff --git a/tools/fimgfx.c b/tools/fimgfx.c index bd55c40..5ad9170 100644 --- a/tools/fimgfx.c +++ b/tools/fimgfx.c @@ -17,24 +17,27 @@ typedef struct { char *name; int id; int nbarg; + int flags; } Fx; enum fxid { Fx_cos01=5, Fx_cos010, Fx_pow2, Fx_sqrt, Fx_gray0, Fx_halfsz0, + Fx_rot90, Fx_xper }; Fx fx_list[] = { - { "cos01", Fx_cos01, 0 }, - { "cos010", Fx_cos010, 0 }, - { "pow2", Fx_pow2, 0 }, - { "sqrt", Fx_sqrt, 0 }, - { "gray0", Fx_gray0, 0 }, - { "halfsz0", Fx_halfsz0, 0 }, - { "xper", Fx_xper, 0 }, + { "cos01", Fx_cos01, 0, 1 }, + { "cos010", Fx_cos010, 0, 1 }, + { "pow2", Fx_pow2, 0, 1 }, + { "sqrt", Fx_sqrt, 0, 1 }, + { "gray0", Fx_gray0, 0, 1 }, + { "halfsz0", Fx_halfsz0, 0, 1 }, + { "rot90", Fx_rot90, 0, 0 }, + { "xper", Fx_xper, 0, 1 }, { NULL, 0, 0 } }; /* --------------------------------------------------------------------- */ -int lookup_fx(char *txt) +int lookup_fxidx(char *txt) { Fx *fx; int n; @@ -45,10 +48,10 @@ fprintf(stderr, ">>> %s ( '%s' )\n", __func__, txt); for (n=0, fx=fx_list; fx->name; fx++, n++) { #if DEBUG_LEVEL > 1 - fprintf(stderr, "-> %3d %s\n", n, fx->name); + fprintf(stderr, " -> %3d %s\n", n, fx->name); #endif if (!strcmp(fx->name, txt)) { - return fx->id; + return n; } } return -1; /* NOT FOUND */ @@ -101,15 +104,15 @@ fimg_print_version(1); exit(0); } /* --------------------------------------------------------------------- */ -int do_an_effect(char *sf, int act, char *df) +int do_an_effect(char *sf, int fxidx, char *df) { FloatImg src, dest; -int foo; +int foo, action; double maxval; #if DEBUG_LEVEL fprintf(stderr, ">>> %s ( '%s' %d '%s' )\n", __func__, - sf, act, df); + sf, action, df); #endif foo = fimg_create_from_dump(sf, &src); @@ -120,13 +123,21 @@ if (foo) { maxval = (double)fimg_get_maxvalue(&src); -foo = fimg_clone(&src, &dest, 0); -if (foo) { - fprintf(stderr, "err clone %p : %d\n", &src, foo); - return foo; +if (fx_list[fxidx].flags & 1) { + foo = fimg_clone(&src, &dest, 0); + if (foo) { + fprintf(stderr, "err clone %p : %d\n", &src, foo); + return foo; + } + } +else { + /* XXX */ + memset(&dest, 0, sizeof(dest)); } -switch (act) { +action = fx_list[fxidx].id; + +switch (action) { case Fx_cos01: fimg_cos_01(&src, &dest, maxval); break; case Fx_cos010: @@ -143,14 +154,16 @@ switch (act) { case Fx_xper: do_experiment(&src, &dest, maxval); break; - + case Fx_rot90: + foo = fimg_rotate_90(&src, &dest, 0); break; + case Fx_halfsz0: - fprintf(stderr, "not implemented\n"); + fprintf(stderr, "halfsize was not implemented\n"); return -3; default: fprintf(stderr, "%s %s : %d is bad action\n", - __FILE__, __func__, act); + __FILE__, __func__, action); break; } @@ -193,7 +206,7 @@ if (3 > argc-optind) { } operator = argv[optind]; -action = lookup_fx(operator); +action = lookup_fxidx(operator); if (action < 0) { fprintf(stderr, "garbage found in opcode field : %s\n", operator); exit(1);