/* * FloatImg library from tTh - really ugly code inside * * F A L S E C O L O R S * or fake colors ? */ #include #include #include #include #include #include "../floatimg.h" /* -------------------------------------------------------------- */ /* this is a global vars exported from main */ extern int verbosity; /* -------------------------------------------------------------- */ /* TRUCS A VOIR f(x,y) = (((y & x) * (y - x)) % ((21 & x) * (y | 8))) ^ (~((x & 7) | (x % x))) */ /* -------------------------------------------------------------- */ /* nouveau 18 mai 2022 */ /* please explain the meaning of 'valf' parameter */ int fimg_falsecolors_0(FloatImg *src, FloatImg *dst, int k, float valf) { int x, y, offset; float r, g, b, gray, maxv; #if DEBUG_LEVEL fprintf(stderr, ">>> %s ( %p %p %d %f )\n", __func__, src, dst, k, valf); #endif if (k) { fprintf(stderr, "%s : %d %f\n", __func__, k, valf); } /* check validity of parameters */ if (FIMG_TYPE_RGB != dst->type) { fprintf(stderr, "in %s, picz at %p is not valid\n", __func__, dst); abort(); /* BLAM! */ } maxv = fimg_get_plane_maxvalue(src, 'r'); fprintf(stderr, "%s: maxv of red plane = %f\n", __func__, maxv); /* enter big loop */ offset = 0; for (y=0; yheight; y++) { for (x=0; xwidth; x++) { gray = src->R[offset]; if (gray < maxv/2.0) { r = gray * 2.0; g = 0.0; } else { r = 0.0; g = gray * 2.0; } b = fmodf(gray*8.0, maxv); dst->R[offset] = r; dst->G[offset] = g; dst->B[offset] = b; /* and GOTO next pixel */ offset++; } } return 0; } /* -------------------------------------------------------------- */