FloatImg/funcs/sfx3.c

53 lines
1.1 KiB
C

/*
* FLOATIMG - a kluge from tTh
* ---------------------------
*
* some strange effects on floating pictures, made in
* the batcave of "Le Bib", in Montpellier.
*/
#include <stdio.h>
#include <string.h>
#include <stdint.h>
#include "../floatimg.h"
extern int verbosity;
/* -------------------------------------------------------------- */
int fimg_crump_hard(FloatImg *src, FloatImg *dst, float kval, int notused)
{
float halfval;
float rgb[3];
int x, y, foo;
#if DEBUG_LEVEL
fprintf(stderr, ">>> %s ( %p %p %f 0x%04x )\n", __func__,
src, dst, kval, notused);
#endif
halfval = fimg_get_maxvalue(src) / 2.0;
if (verbosity > 1) {
fprintf(stderr, "%s: halfval=%f\n", __func__, halfval);
}
for (y=0; y<src->height; y++) {
for (x=0; x<src->width; x++) {
foo = fimg_get_rgb(src, x, y, rgb);
if (foo) return foo;
if (rgb[0] > halfval) rgb[0] /= 2.0;
if (rgb[1] > halfval) rgb[1] /= 2.0;
if (rgb[2] > halfval) rgb[2] /= 2.0;
foo = fimg_put_rgb(dst, x, y, rgb);
if (foo) return foo;
}
}
return 0;
}
/* -------------------------------------------------------------- */