/* * crapulator.c */ #include #include #include #include "fonctions.h" #include "crapulator.h" /* -------------------------------------------------------------- */ /* * This is the main filter engine * used both for input and output */ int crapulator(FloatImg *image, int idFx, float fval) { int retval, foo; FloatImg imgtmp; static int count = 0; int flag_debug = 0; float value; #if DEBUG_LEVEL fprintf(stderr, ">>> %s ( %p %d %f )\n", __func__, image, idFx, fval); #endif retval = 0; if (666==count) { flag_debug = 1; fprintf(stderr, "DEBUG PT 1 in %s:%d\n", __func__, __LINE__); fimg_save_as_png(image, "crap_before.png", 0); } switch (idFx) { case 0: /* DO NOTHING */ retval = 0; break; case 1: fimg_cos_01(image, image, fimg_get_maxvalue(image)); break; case 2: fimg_cos_010(image, image, fimg_get_maxvalue(image)); break; case 3: value = fimg_get_maxvalue(image); fimg_mul_cste(image, -1.0); fimg_add_cste(image, value); foo = fimg_count_negativ(image); if (foo) { fimg_dump_to_file(image, "err.fimg", 0); fprintf(stderr, "%s negativ %d\n", __func__, foo); return -78; } break; case 4: brotche_rand48_a(image, 0.20, fimg_get_maxvalue(image)); break; case 5: brotche_rand48_b(image, 0.10, fimg_get_maxvalue(image)*0.8); break; case 6: fimg_killcolors_a(image, 0.0); break; case 7: retval = fimg_colors_mixer_a(image, 2.0); break; case 8: fimg_clone(image, &imgtmp, 0); fimg_clear(&imgtmp); retval = fimg_contour_2x2(image, &imgtmp, 0); if (retval) { fprintf(stderr, "%s : err contour %d\n", __func__, retval); exit(1); } fimg_copy_data(&imgtmp, image); fimg_destroy(&imgtmp); break; case 9: retval = fimg_classif_trial(image, image, 0.37, 0); if (retval) { fprintf(stderr, "err %d in classif\n", retval); exit(1); } break; default : fprintf(stderr, "%s : effect #%d invalid\n", __func__, idFx); return -77; } if (flag_debug) { fprintf(stderr, "DEBUG PT 2 in %s:%d\n", __func__, __LINE__); fimg_save_as_png(image, "crap_after.png", 0); } count++; flag_debug = 0; return retval; } /* -------------------------------------------------------------- */