forked from tTh/FloatImg
faire des bords sombres
This commit is contained in:
parent
f61f428066
commit
54ee71119d
|
@ -1,5 +1,6 @@
|
|||
#
|
||||
# compilation de la fonderie
|
||||
# compilation de la fonderie, du crapulator
|
||||
# et de tout le crap...
|
||||
#
|
||||
|
||||
COPT = -g -no-pie -Wall -DDEBUG_LEVEL=0 -Werror=parentheses
|
||||
|
|
|
@ -53,6 +53,9 @@ return 0;
|
|||
* This is the main filter engine
|
||||
* used both for input and output
|
||||
*/
|
||||
|
||||
#define DEBUG_THIS_CRAP 1
|
||||
|
||||
int crapulator(FloatImg *image, int idFx, float fval)
|
||||
{
|
||||
int retval;
|
||||
|
@ -67,11 +70,13 @@ fprintf(stderr, ">>> %s ( %p %d %f )\n", __func__,
|
|||
|
||||
retval = 0;
|
||||
|
||||
#if DEBUG_THIS_CRAP
|
||||
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);
|
||||
}
|
||||
#endif
|
||||
|
||||
switch (idFx) {
|
||||
case 0: /* DO NOTHING */
|
||||
|
@ -117,6 +122,9 @@ switch (idFx) {
|
|||
case 11:
|
||||
retval = trinarize(image, 0);
|
||||
break;
|
||||
case 24: /* experiment ! */
|
||||
retval = des_bords_sombres_a(image, 260);
|
||||
break;
|
||||
case 25:
|
||||
/* please make this function more tweakable */
|
||||
retval = vertical_singlitch(image, 290+rand()%35,
|
||||
|
@ -128,12 +136,15 @@ switch (idFx) {
|
|||
return -77;
|
||||
}
|
||||
|
||||
#if DEBUG_THIS_CRAP
|
||||
if (flag_debug) {
|
||||
fprintf(stderr, "DEBUG PT 2 in %s:%d\n", __func__, __LINE__);
|
||||
fimg_save_as_png(image, "crap_after.png", 0);
|
||||
flag_debug = 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
count++; flag_debug = 0;
|
||||
count++;
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
|
|
@ -40,6 +40,7 @@ int create_fifo(int nbslot, int w, int h, int t);
|
|||
* funcs in 'sfx.c'
|
||||
*/
|
||||
|
||||
int des_bords_sombres_a(FloatImg *pimg, int offset);
|
||||
int trinarize(FloatImg *pimg, int notused);
|
||||
int binarize(FloatImg *pimg, int notused);
|
||||
|
||||
|
|
|
@ -89,6 +89,11 @@ else fprintf(stderr, "\tno out fx\n");
|
|||
|
||||
memset(&globbuf, 0, sizeof(glob_t));
|
||||
foo = glob(pattern, 0, NULL, &globbuf);
|
||||
if (foo) {
|
||||
fprintf(stderr, "glob failure %d\n", foo);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
fprintf(stderr, "glob '%s' -> %d, %ld files found\n", pattern, foo,
|
||||
globbuf.gl_pathc);
|
||||
|
||||
|
@ -136,7 +141,7 @@ for (idx=0; idx<globbuf.gl_pathc; idx++) {
|
|||
fprintf(stderr, "traitement %s -> %d WTF?\n", cptr, foo);
|
||||
break;
|
||||
}
|
||||
fprintf(stderr, "\t%5d\r", idx);
|
||||
fprintf(stderr, "\t%5d / %5ld\r", idx, globbuf.gl_pathc);
|
||||
}
|
||||
fputs("\n", stderr);
|
||||
|
||||
|
|
|
@ -164,7 +164,7 @@ for (idx=0; idx<globbuf.gl_pathc; idx++) {
|
|||
/* OK try it ... */
|
||||
foo = crapulator(&B, infx, value/2.0);
|
||||
if (foo) {
|
||||
fprintf(stderr, "in fx crapulator failure %d\n", foo);
|
||||
fprintf(stderr, "%s: input fx fail %d\n", __func__, foo);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
|
@ -175,8 +175,8 @@ for (idx=0; idx<globbuf.gl_pathc; idx++) {
|
|||
/* here we can insert the OUTPUT filter */
|
||||
foo = crapulator(&Out, outfx, value);
|
||||
if (foo) {
|
||||
fprintf(stderr, "\nout fx %d crapulator failure %d\n",
|
||||
outfx, foo);
|
||||
fprintf(stderr, "\n%s: out fx %d failure %d\n",
|
||||
__func__, outfx, foo);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
|
|
|
@ -17,6 +17,38 @@
|
|||
*/
|
||||
extern int verbosity;
|
||||
|
||||
/* -------------------------------------------------------------- */
|
||||
/* nouveau du 20 novembre 2020, pour encoder une vidz du vernissage
|
||||
* du festival Sauvageonnes de Mixart-Myrys */
|
||||
int des_bords_sombres_a(FloatImg *pimg, int offset)
|
||||
{
|
||||
float coef;
|
||||
int xpos, lidx, y;
|
||||
|
||||
#if DEBUG_LEVEL
|
||||
fprintf(stderr, ">>> %s ( %p %d )\n", __func__, pimg, offset);
|
||||
#endif
|
||||
|
||||
if (offset<0 || offset>pimg->width) {
|
||||
fprintf(stderr, "%s offset %d is bad\n", __func__, offset);
|
||||
return -66;
|
||||
}
|
||||
|
||||
for (y=0; y<pimg->height; y++) {
|
||||
lidx = y * pimg->width;
|
||||
for (xpos=0; xpos<offset; xpos++) {
|
||||
coef = (float)xpos / (float)offset;
|
||||
pimg->R[xpos+lidx] *= coef;
|
||||
pimg->G[xpos+lidx] *= coef;
|
||||
pimg->B[xpos+lidx] *= coef;
|
||||
pimg->R[(pimg->width-xpos)+lidx] *= coef;
|
||||
pimg->G[(pimg->width-xpos)+lidx] *= coef;
|
||||
pimg->B[(pimg->width-xpos)+lidx] *= coef;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
/* -------------------------------------------------------------- */
|
||||
int trinarize(FloatImg *pimg, int notused)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue