Compare commits

..

3 Commits

Author SHA1 Message Date
le vieux
54ee71119d faire des bords sombres 2020-11-20 22:25:30 +01:00
le vieux
f61f428066 output dir option is NOW working (maybe) 2020-11-20 19:06:08 +01:00
le vieux
ba945daa54 tweaking a glitcher 2020-11-18 11:47:26 +01:00
7 changed files with 73 additions and 19 deletions

View File

@ -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 COPT = -g -no-pie -Wall -DDEBUG_LEVEL=0 -Werror=parentheses

View File

@ -53,6 +53,9 @@ return 0;
* This is the main filter engine * This is the main filter engine
* used both for input and output * used both for input and output
*/ */
#define DEBUG_THIS_CRAP 1
int crapulator(FloatImg *image, int idFx, float fval) int crapulator(FloatImg *image, int idFx, float fval)
{ {
int retval; int retval;
@ -67,11 +70,13 @@ fprintf(stderr, ">>> %s ( %p %d %f )\n", __func__,
retval = 0; retval = 0;
#if DEBUG_THIS_CRAP
if (666==count) { if (666==count) {
flag_debug = 1; flag_debug = 1;
fprintf(stderr, "DEBUG PT 1 in %s:%d\n", __func__, __LINE__); fprintf(stderr, "DEBUG PT 1 in %s:%d\n", __func__, __LINE__);
fimg_save_as_png(image, "crap_before.png", 0); fimg_save_as_png(image, "crap_before.png", 0);
} }
#endif
switch (idFx) { switch (idFx) {
case 0: /* DO NOTHING */ case 0: /* DO NOTHING */
@ -117,9 +122,13 @@ switch (idFx) {
case 11: case 11:
retval = trinarize(image, 0); retval = trinarize(image, 0);
break; break;
/* --- WTF -- */ case 24: /* experiment ! */
retval = des_bords_sombres_a(image, 260);
break;
case 25: case 25:
retval = vertical_singlitch(image, 250+rand()%15 , fval, 18, 0); /* please make this function more tweakable */
retval = vertical_singlitch(image, 290+rand()%35,
fval, 0.18, 0);
break; break;
default : default :
fprintf(stderr, "%s : effect #%d invalid\n", fprintf(stderr, "%s : effect #%d invalid\n",
@ -127,12 +136,15 @@ switch (idFx) {
return -77; return -77;
} }
#if DEBUG_THIS_CRAP
if (flag_debug) { if (flag_debug) {
fprintf(stderr, "DEBUG PT 2 in %s:%d\n", __func__, __LINE__); fprintf(stderr, "DEBUG PT 2 in %s:%d\n", __func__, __LINE__);
fimg_save_as_png(image, "crap_after.png", 0); fimg_save_as_png(image, "crap_after.png", 0);
flag_debug = 0;
} }
#endif
count++; flag_debug = 0; count++;
return retval; return retval;
} }

View File

@ -40,6 +40,7 @@ int create_fifo(int nbslot, int w, int h, int t);
* funcs in 'sfx.c' * funcs in 'sfx.c'
*/ */
int des_bords_sombres_a(FloatImg *pimg, int offset);
int trinarize(FloatImg *pimg, int notused); int trinarize(FloatImg *pimg, int notused);
int binarize(FloatImg *pimg, int notused); int binarize(FloatImg *pimg, int notused);

View File

@ -17,7 +17,7 @@ int verbosity;
int convert_to_gray; int convert_to_gray;
/* -------------------------------------------------------------- */ /* -------------------------------------------------------------- */
int traite_une_image(FloatImg *image, int proc, int step) int traite_une_image(FloatImg *image, int proc, int step, char *outd)
{ {
static int numero; static int numero;
int foo; int foo;
@ -29,10 +29,7 @@ if (foo) {
fprintf(stderr, "%s: err %d on insert\n", __func__, foo); fprintf(stderr, "%s: err %d on insert\n", __func__, foo);
return foo; return foo;
} }
sprintf(ligne, "p8/%05d.png", numero); sprintf(ligne, "%s/%05d.png", outd, numero);
/* ^^^
XXX hardcoded value ? wtf ?
*/
foo = export_fifo(ligne, proc, step); foo = export_fifo(ligne, proc, step);
if (foo) { if (foo) {
fprintf(stderr, "%s: err %d on export\n", __func__, foo); fprintf(stderr, "%s: err %d on export\n", __func__, foo);
@ -42,7 +39,8 @@ numero++; /* VERY IMPORTANT :) */
return 0; return 0;
} }
/* -------------------------------------------------------------- */ /* -------------------------------------------------------------- */
int insert_blank(FloatImg *image, int nbre, int pproc, float fval) int insert_blank(FloatImg *image, int nbre, int pproc,
float fval, char *outd)
{ {
int idx, foo; int idx, foo;
@ -50,7 +48,7 @@ fimg_clear(image);
for (idx=0; idx<nbre; idx++) { for (idx=0; idx<nbre; idx++) {
fimg_vdeg_a(image, fval); fimg_vdeg_a(image, fval);
// brotche_rand48_b(image, drand48()*0.10, 1e5); // brotche_rand48_b(image, drand48()*0.10, 1e5);
if ((foo=traite_une_image(image, pproc, 1))) { if ((foo=traite_une_image(image, pproc, 1, outd))) {
fprintf(stderr, "%s : err %d from 'traite_une_image'\n", fprintf(stderr, "%s : err %d from 'traite_une_image'\n",
__func__, foo); __func__, foo);
break; break;
@ -91,6 +89,11 @@ else fprintf(stderr, "\tno out fx\n");
memset(&globbuf, 0, sizeof(glob_t)); memset(&globbuf, 0, sizeof(glob_t));
foo = glob(pattern, 0, NULL, &globbuf); 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, fprintf(stderr, "glob '%s' -> %d, %ld files found\n", pattern, foo,
globbuf.gl_pathc); globbuf.gl_pathc);
@ -115,7 +118,7 @@ foo = create_fifo(szfifo, width, height, FIMG_TYPE_RGB);
fprintf(stderr, "init fifo (%d slots) --> %d\n", szfifo, foo); fprintf(stderr, "init fifo (%d slots) --> %d\n", szfifo, foo);
/* XXX inject a few strange pics in the fifo */ /* XXX inject a few strange pics in the fifo */
insert_blank(&input, BLANK, outfx, maxvalue); insert_blank(&input, BLANK, outfx, maxvalue, outdir);
for (idx=0; idx<globbuf.gl_pathc; idx++) { for (idx=0; idx<globbuf.gl_pathc; idx++) {
cptr = globbuf.gl_pathv[idx]; cptr = globbuf.gl_pathv[idx];
@ -133,16 +136,16 @@ for (idx=0; idx<globbuf.gl_pathc; idx++) {
fprintf(stderr, "%s crapulator -> %d\n", __func__, foo); fprintf(stderr, "%s crapulator -> %d\n", __func__, foo);
exit(1); exit(1);
} }
foo = traite_une_image(&input, outfx, step); foo = traite_une_image(&input, outfx, step, outdir);
if (foo) { if (foo) {
fprintf(stderr, "traitement %s -> %d WTF?\n", cptr, foo); fprintf(stderr, "traitement %s -> %d WTF?\n", cptr, foo);
break; break;
} }
fprintf(stderr, "\t%5d\r", idx); fprintf(stderr, "\t%5d / %5ld\r", idx, globbuf.gl_pathc);
} }
fputs("\n", stderr); fputs("\n", stderr);
insert_blank(&input, BLANK*2, outfx, maxvalue); insert_blank(&input, BLANK*2, outfx, maxvalue, outdir);
/* /*
* PLEASE, FLUSH THE FIFO ! * PLEASE, FLUSH THE FIFO !
@ -212,6 +215,11 @@ while ((opt = getopt(argc, argv, "ghI:O:s:T:vw:x:")) != -1) {
} }
} }
if (verbosity) {
fprintf(stderr, "input glob %s\n", in_pattern);
fprintf(stderr, "output dir %s\n", out_dir);
}
foo = demarre_la_machine(in_pattern, out_dir, fifosize, in_effect, foo = demarre_la_machine(in_pattern, out_dir, fifosize, in_effect,
out_effect, steps); out_effect, steps);
fprintf(stderr, "retour du big-run de la machine -> %d\n", foo); fprintf(stderr, "retour du big-run de la machine -> %d\n", foo);

View File

@ -164,7 +164,7 @@ for (idx=0; idx<globbuf.gl_pathc; idx++) {
/* OK try it ... */ /* OK try it ... */
foo = crapulator(&B, infx, value/2.0); foo = crapulator(&B, infx, value/2.0);
if (foo) { if (foo) {
fprintf(stderr, "in fx crapulator failure %d\n", foo); fprintf(stderr, "%s: input fx fail %d\n", __func__, foo);
exit(1); exit(1);
} }
@ -175,8 +175,8 @@ for (idx=0; idx<globbuf.gl_pathc; idx++) {
/* here we can insert the OUTPUT filter */ /* here we can insert the OUTPUT filter */
foo = crapulator(&Out, outfx, value); foo = crapulator(&Out, outfx, value);
if (foo) { if (foo) {
fprintf(stderr, "\nout fx %d crapulator failure %d\n", fprintf(stderr, "\n%s: out fx %d failure %d\n",
outfx, foo); __func__, outfx, foo);
exit(1); exit(1);
} }

View File

@ -17,6 +17,38 @@
*/ */
extern int verbosity; 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) int trinarize(FloatImg *pimg, int notused)
{ {

View File

@ -51,7 +51,7 @@ for (iter=0; iter<72; iter++) {
if (foo) abort(); if (foo) abort();
} }
sprintf(buff, "out%03d.png", iter); sprintf(buff, "/tmp/out%03d.png", iter);
foo = fimg_save_as_png(&image, buff, 0); foo = fimg_save_as_png(&image, buff, 0);
if (foo) { if (foo) {
fprintf(stderr, "err %d saving to '%s'\n", foo, PNG); fprintf(stderr, "err %d saving to '%s'\n", foo, PNG);