/* * FLOATIMG - a kluge from tTh * --------------------------- * * some strange effects on floating pictures. */ #include #include #include #include "../floatimg.h" extern int verbosity; /* -------------------------------------------------------------- */ int fimg_sfx_triplemul(FloatImg *src, FloatImg *dst, int notused) { int x, y, foo; float in[3], out[3]; #if DEBUG_LEVEL fprintf(stderr, ">>> %s ( %p %p 0x%04x )\n", __func__, src, dst, notused); #endif for (y=0; yheight; y++) { for (x=0; xwidth; x++) { foo = fimg_get_rgb(src, x, y, in); if (foo) return foo; out[0] = in[1] * in[2]; out[1] = in[0] * in[2]; out[2] = in[0] * in[1]; // fprintf(stderr, "%9f %9f %9f\n", out[0], out[1], out[2]); foo = fimg_put_rgb(dst, x, y, out); if (foo) return foo; } } return 0; } /* -------------------------------------------------------------- */ /* * see also: sfx3.c:fimg_crump_hard() */ int fimg_split_level(FloatImg *src, FloatImg *dst, int notused) { float means[4]; float in[3], out[3]; int foo, idx, surface; #if DEBUG_LEVEL fprintf(stderr, ">>> %s ( %p %p 0x%04x )\n", __func__, src, dst, notused); #endif foo = fimg_meanvalues(src, means); if (foo) { return -66; } surface = src->width*src->height; for(idx=0; idxR[idx]R[idx]=src->R[idx]*2.0; else dst->R[idx]=(src->R[idx]-means[0])*2.0; if (src->G[idx]G[idx]=src->G[idx]*2.0; else dst->G[idx]=(src->G[idx]-means[1])*2.0; if (src->B[idx]B[idx]=src->B[idx]*2.0; else dst->B[idx]=(src->B[idx]-means[2])*2.0; } return 0; } /* -------------------------------------------------------------- */ /* -------------------------------------------------------------- */