diff --git a/floatimg.h b/floatimg.h index b405eb15..57c4a741 100644 --- a/floatimg.h +++ b/floatimg.h @@ -3,7 +3,7 @@ * ugly code from tTh */ -#define FIMG_VERSION 116 +#define FIMG_VERSION 117 /* * in memory descriptor @@ -126,11 +126,12 @@ int fimg_square_root(FloatImg *s, FloatImg *d, double maxval); int fimg_power_2(FloatImg *s, FloatImg *d, double maxval); int fimg_cos_01(FloatImg *s, FloatImg *d, double maxval); int fimg_cos_010(FloatImg *s, FloatImg *d, double maxval); - - int fimg_mix_rgb_gray(FloatImg *img, float mix); int fimg_shift_to_zero(FloatImg *s, FloatImg *d, float coefs[6]); +/* --> funcs/plasmas.c */ +int fimg_prototype_plasma(FloatImg *img, char *txt, int type); + /* * * * experimental ! */ int fimg_classif_trial(FloatImg *src, FloatImg*dst, float fval, int notused); int fimg_qsort_rgb_a(FloatImg *psrc, FloatImg *pdst, int notused); diff --git a/funcs/Makefile b/funcs/Makefile index 8e8c90eb..30825d0c 100644 --- a/funcs/Makefile +++ b/funcs/Makefile @@ -1,19 +1,16 @@ #--------------------------------------------------------------- -COPT = -Wall -fpic -g -no-pie -DDEBUG_LEVEL=0 +COPT = -Wall -fpic -g -no-pie -DDEBUG_LEVEL=1 DEPS = ../floatimg.h Makefile OBJS = fimg-png.o fimg-tiff.o misc-plots.o filtrage.o utils.o \ fimg-libpnm.o rampes.o sfx0.o geometry.o rotate.o \ equalize.o fimg-fits.o saturation.o histogram.o \ hsv.o classif.o contour2x2.o qsortrgb.o exporter.o \ - displacement.o dithering.o + displacement.o dithering.o plasmas.o #--------------------------------------------------------------- -tests.o: tests.c tests.h $(DEPS) - gcc $(COPT) -c $< - t: t.c $(DEPS) ../libfloatimg.a tests.o gcc $(COPT) $< \ tests.o \ @@ -23,7 +20,11 @@ t: t.c $(DEPS) ../libfloatimg.a tests.o -ltiff \ -lz -lm -o $@ +tests.o: tests.c tests.h $(DEPS) + gcc $(COPT) -c $< + #--------------------------------------------------------------- +# upper-level functions ../libfloatimg.a: $(OBJS) $(AR) r $@ $? @@ -67,6 +68,8 @@ equalize.o: equalize.c $(DEPS) dithering.o: dithering.c $(DEPS) gcc $(COPT) -c $< +plasmas.o: plasmas.c $(DEPS) + gcc $(COPT) -c $< sfx0.o: sfx0.c $(DEPS) gcc $(COPT) -c $< diff --git a/funcs/t.c b/funcs/t.c index 35279357..3162cc25 100644 --- a/funcs/t.c +++ b/funcs/t.c @@ -21,7 +21,7 @@ float global_fvalue; /* --------------------------------------------------------------------- */ enum nCmd { Equalize=1, Rotate, Sfx0, F3x3, MIRE, Wfits, Wpng, Wtiff, Histo, Hsv, Classif, Ctr2x2, Qsortrgb, - Displace, ReadPNG }; + Displace, ReadPNG, Plasmas }; typedef struct { char *name; int Cmd; @@ -43,6 +43,7 @@ Command commands[] = { { "qsortrgb", Qsortrgb }, { "displace", Displace }, { "readpng", ReadPNG }, + { "plasma", Plasmas }, { NULL, 0 } } ; @@ -64,7 +65,7 @@ void help(int k) { Command *pcmd; -fprintf(stderr, "usage:\n\t./t [options] command filename\n"); +fprintf(stderr, "usage:\n\t./t [options] command [filename]\n"); fprintf(stderr, "options:\n"); fprintf(stderr, "\t-o outfile\n"); @@ -89,8 +90,9 @@ fprintf(stderr, "++++++++ test des fonctions pid=%d\n", getpid()); fprintf(stderr, "++++++++ compiled "__DATE__" at " __TIME__ "\n"); global_fvalue = 1.0; -outfile = "out.pnm"; +outfile = "out.pnm"; command = "none"; +filename = "in.fimg"; while ((opt = getopt(argc, argv, "hk:o:p:v")) != -1) { switch(opt) { @@ -103,17 +105,22 @@ while ((opt = getopt(argc, argv, "hk:o:p:v")) != -1) { // fprintf(stderr, "argc %d optind %d\n", argc, optind); -filename = NULL; -if (2 != argc-optind) { - fprintf(stderr, "%s: bad command line\n", argv[0]); - help(1); +switch (argc-optind) { + case 1: /* only command */ + command = argv[optind]; + break; + case 2: + command = argv[optind]; + filename = argv[optind+1]; + break; + default: + fprintf(stderr, "%s: bad command line ?\n", argv[0]); + help(1); + break; } -command = argv[optind]; -filename = argv[optind+1]; - if (verbosity) { - fprintf(stderr, "%s : running command '%s' on '%s'\n", + fprintf(stderr, "++++++++ %s : running command '%s' on '%s'\n", argv[0], command, filename); fprintf(stderr, "global fvalue : %f\n", global_fvalue); } @@ -163,6 +170,10 @@ switch(opt) { case ReadPNG: foo = essai_lecture_png(filename, outfile, 0); break; + case Plasmas: + foo = essai_plasma(filename, outfile, 1, 13.37); + fprintf(stderr, "we are all plasmafields\n"); + break; default: fprintf(stderr, "%s : bad command\n", command); exit(1); diff --git a/funcs/tests.c b/funcs/tests.c index 28ed2304..430b67ba 100644 --- a/funcs/tests.c +++ b/funcs/tests.c @@ -16,6 +16,35 @@ extern int verbosity; +/* --------------------------------------------------------------------- */ +int essai_plasma(char *infile, char *outfile, int ikoef, float fkoef) +{ +FloatImg src, dst; +int foo; + +fprintf(stderr, ">>> %s ( '%s' '%s' %d %g )\n", __func__, + infile, outfile, ikoef, fkoef); + +/* if infile is loadable, use it for background */ +foo = fimg_create_from_dump(infile, &src); +if (foo) { + fprintf(stderr, "%s: error loading '%s'\n", __func__, infile); + return foo; + } +fprintf(stderr, "'%s' loaded\n", infile); +fimg_printhead(&src); + +fimg_clone(&src, &dst, 1); + + +foo = fimg_export_picture(&dst, outfile, 0); +if (foo) { + fprintf(stderr, "%s : err %d saving result\n", __func__, foo); + return foo; + } + +return -1; +} /* --------------------------------------------------------------------- */ /* nouveau 24 octobre 2020, pendant le masque-flamme coronavidique */ diff --git a/funcs/tests.h b/funcs/tests.h index f7881010..58450d17 100644 --- a/funcs/tests.h +++ b/funcs/tests.h @@ -3,6 +3,8 @@ see also: t.c & tests.c */ +int essai_plasma(char *infile, char *outfile, int ikoef, float fkoef); + int essai_displacement(char *infile, char *outfile); int essai_qsort_rgb(char *infile, char *outfile); int essai_equalize(char *infile); diff --git a/lib/fimg-file.c b/lib/fimg-file.c index 1281ee25..32c988c5 100644 --- a/lib/fimg-file.c +++ b/lib/fimg-file.c @@ -188,9 +188,11 @@ if (foo) { return foo; } +/* NO No no !!! don't do that !!! */ foo = fread(head->R, sizeof(float), filehead.w*filehead.h*filehead.t, fp); + fclose(fp); return 0;