Compare commits
2 Commits
a587a66af8
...
8f29cb0db0
Author | SHA1 | Date | |
---|---|---|---|
8f29cb0db0 | |||
a450ac4291 |
1
.gitignore
vendored
1
.gitignore
vendored
@ -66,6 +66,7 @@ tools/*.tiff
|
|||||||
Fonderie/*.o
|
Fonderie/*.o
|
||||||
Fonderie/*.png
|
Fonderie/*.png
|
||||||
Fonderie/*.pnm
|
Fonderie/*.pnm
|
||||||
|
Fonderie/*.gif
|
||||||
Fonderie/fonderie
|
Fonderie/fonderie
|
||||||
Fonderie/interpolator
|
Fonderie/interpolator
|
||||||
Fonderie/t
|
Fonderie/t
|
||||||
|
@ -7,7 +7,7 @@ COPT = -g -fpic -no-pie -Wall -DDEBUG_LEVEL=0 -Werror=parentheses
|
|||||||
LIBS = ../libfloatimg.a -lpnglite -lm
|
LIBS = ../libfloatimg.a -lpnglite -lm
|
||||||
|
|
||||||
OBJS = fonctions.o sfx.o crapulator.o glitches.o metriques.o
|
OBJS = fonctions.o sfx.o crapulator.o glitches.o metriques.o
|
||||||
DEPS = fonctions.h crapulator.h metriques.h glitches.h
|
DEPS = fonctions.h crapulator.h metriques.h glitches.h sfx.h
|
||||||
|
|
||||||
all: fonderie interpolator t
|
all: fonderie interpolator t
|
||||||
|
|
||||||
|
@ -10,6 +10,7 @@
|
|||||||
#include "fonctions.h"
|
#include "fonctions.h"
|
||||||
#include "crapulator.h"
|
#include "crapulator.h"
|
||||||
#include "glitches.h"
|
#include "glitches.h"
|
||||||
|
#include "sfx.h"
|
||||||
|
|
||||||
/* -------------------------------------------------------------- */
|
/* -------------------------------------------------------------- */
|
||||||
static int effect_3(FloatImg *image)
|
static int effect_3(FloatImg *image)
|
||||||
@ -122,13 +123,16 @@ switch (idFx) {
|
|||||||
case 11:
|
case 11:
|
||||||
retval = trinarize(image, 0);
|
retval = trinarize(image, 0);
|
||||||
break;
|
break;
|
||||||
|
case 12:
|
||||||
|
retval = fimg_lissage_2x2(image);
|
||||||
|
break;
|
||||||
case 24: /* experiment ! */
|
case 24: /* experiment ! */
|
||||||
retval = des_bords_sombres_a(image, 160);
|
retval = des_bords_sombres_a(image, 160);
|
||||||
break;
|
break;
|
||||||
case 25:
|
case 25:
|
||||||
/* please make this function more tweakable */
|
/* please make this function more tweakable */
|
||||||
retval = vertical_singlitch(image, 290+rand()%35,
|
retval = vertical_singlitch(image, 290+rand()%45,
|
||||||
fval, 0.18, 0);
|
fval, 0.19, 0);
|
||||||
break;
|
break;
|
||||||
default :
|
default :
|
||||||
fprintf(stderr, "%s : effect #%d invalid\n",
|
fprintf(stderr, "%s : effect #%d invalid\n",
|
||||||
|
17
Fonderie/essai.sh
Executable file
17
Fonderie/essai.sh
Executable file
@ -0,0 +1,17 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
OUTF='/tmp/out_a*.png'
|
||||||
|
|
||||||
|
rm $OUTF
|
||||||
|
|
||||||
|
make t && ./t
|
||||||
|
|
||||||
|
|
||||||
|
A_PART=$(ls -1 $OUTF)
|
||||||
|
Z_PART=$(ls -r1 $OUTF)
|
||||||
|
|
||||||
|
convert -delay 10 ${A_PART} ${Z_PART} foo.gif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -37,16 +37,5 @@ int create_fifo(int nbslot, int w, int h, int t);
|
|||||||
|
|
||||||
/* -------------------------------------------------------------- */
|
/* -------------------------------------------------------------- */
|
||||||
/*
|
/*
|
||||||
* funcs in 'sfx.c'
|
* funcs in 'sfx.c' ---> sfx.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int des_bords_sombres_a(FloatImg *pimg, int offset);
|
|
||||||
int trinarize(FloatImg *pimg, int notused);
|
|
||||||
int binarize(FloatImg *pimg, int notused);
|
|
||||||
|
|
||||||
int brotche_rand48_a(FloatImg *fimg, float ratio, float mval);
|
|
||||||
int brotche_rand48_b(FloatImg *fimg, float ratio, float mval);
|
|
||||||
int colors_brotcher(FloatImg *fimg, float fval);
|
|
||||||
|
|
||||||
/* -------------------------------------------------------------- */
|
|
||||||
|
|
||||||
|
@ -113,11 +113,26 @@ int poke_a_random_pixel(FloatImg *picz, float fval, int kaboo)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
/* -------------------------------------------------------------- */
|
/* -------------------------------------------------------------- */
|
||||||
|
/*
|
||||||
|
* used by vertical_singlitch()
|
||||||
|
*/
|
||||||
|
int x_delta(float dy, float phy)
|
||||||
|
{
|
||||||
|
float param, fv;
|
||||||
|
param = dy + phy;
|
||||||
|
fv = 9.999*sin(param) + 6.666*sin(param*3) + 3.333*sin(param*5);
|
||||||
|
return (int)fv;
|
||||||
|
}
|
||||||
|
/* -------------------------------------------------------------- */
|
||||||
|
/*
|
||||||
|
* please explain arguments
|
||||||
|
*/
|
||||||
int vertical_singlitch(FloatImg *picz, int xpos, float fval,
|
int vertical_singlitch(FloatImg *picz, int xpos, float fval,
|
||||||
float omega, float phi)
|
float omega, float phi)
|
||||||
{
|
{
|
||||||
int y, x, w, h;
|
int y, x, w, h;
|
||||||
double dy;
|
float dy;
|
||||||
|
float fv;
|
||||||
|
|
||||||
#if DEBUG_LEVEL
|
#if DEBUG_LEVEL
|
||||||
fprintf(stderr, ">>> %s ( %p %d %f %f )\n", __func__, picz,
|
fprintf(stderr, ">>> %s ( %p %d %f %f )\n", __func__, picz,
|
||||||
@ -125,21 +140,23 @@ fprintf(stderr, ">>> %s ( %p %d %f %f )\n", __func__, picz,
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
h = picz->height; w = picz->width;
|
h = picz->height; w = picz->width;
|
||||||
#define BB 10
|
#define BB 4
|
||||||
for (y=BB; y<h-BB; y++) {
|
for (y=BB; y<h-BB; y++) {
|
||||||
|
|
||||||
dy = (double)y * omega;
|
dy = (float)y * omega; /* normalize vertical position */
|
||||||
|
|
||||||
x = xpos + (int)(10.9*sin(dy+phi)); /* add sinus deviation */
|
x = xpos + x_delta(dy, phi); /* add sinus deviation */
|
||||||
|
|
||||||
/* compute bounding box */
|
/* compute bounding box */
|
||||||
if ( (x>BB) && (x<w-BB) ) {
|
if ( (x>BB) && (x<w-BB) ) {
|
||||||
/* an make the glitch */
|
/* an make the glitch */
|
||||||
fimg_plot_rgb(picz, x, y, fval, fval, fval);
|
fimg_plot_rgb(picz, x, y, fval, fval, fval);
|
||||||
|
fv = fval / 3.0;
|
||||||
if (rand() & 8)
|
if (rand() & 8)
|
||||||
fimg_plot_rgb(picz, x-1, y, 0.0, 0.0, 0.0);
|
fimg_plot_rgb(picz, x-1, y, fv, fv, fv);
|
||||||
if (rand() & 8)
|
if (rand() & 8)
|
||||||
fimg_plot_rgb(picz, x+1, y, 0.0, 0.0, 0.0);
|
// XXX else
|
||||||
|
fimg_plot_rgb(picz, x+1, y, fv, fv, fv);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -8,9 +8,10 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <malloc.h>
|
#include <malloc.h>
|
||||||
|
|
||||||
#include <floatimg.h>
|
#include "../floatimg.h"
|
||||||
|
|
||||||
#include "fonctions.h"
|
#include "fonctions.h"
|
||||||
|
#include "sfx.h"
|
||||||
|
|
||||||
/* -------------------------------------------------------------- */
|
/* -------------------------------------------------------------- */
|
||||||
/* here are global vars exported by the main module
|
/* here are global vars exported by the main module
|
||||||
@ -72,25 +73,23 @@ mBb = (mm[5] - mm[4]) * 0.66666;
|
|||||||
|
|
||||||
size = pimg->width * pimg->height;
|
size = pimg->width * pimg->height;
|
||||||
|
|
||||||
#define VAL (255.0)
|
|
||||||
|
|
||||||
for (foo=0; foo<size; foo++) {
|
for (foo=0; foo<size; foo++) {
|
||||||
|
|
||||||
fptr = pimg->R;
|
fptr = pimg->R;
|
||||||
if (fptr[foo] < mRa || fptr[foo] > mRb)
|
if (fptr[foo] < mRa || fptr[foo] > mRb)
|
||||||
fptr[foo] = 0.0;
|
fptr[foo] = mm[0];
|
||||||
else
|
else
|
||||||
fptr[foo] = mm[1];
|
fptr[foo] = mm[1];
|
||||||
|
|
||||||
fptr = pimg->G;
|
fptr = pimg->G;
|
||||||
if (fptr[foo] < mGa || fptr[foo] > mGb)
|
if (fptr[foo] < mGa || fptr[foo] > mGb)
|
||||||
fptr[foo] = 0.0;
|
fptr[foo] = mm[2];
|
||||||
else
|
else
|
||||||
fptr[foo] = mm[3];
|
fptr[foo] = mm[3];
|
||||||
|
|
||||||
fptr = pimg->B;
|
fptr = pimg->B;
|
||||||
if (fptr[foo] < mBa || fptr[foo] > mBb)
|
if (fptr[foo] < mBa || fptr[foo] > mBb)
|
||||||
fptr[foo] = 0.0;
|
fptr[foo] = mm[4];
|
||||||
else
|
else
|
||||||
fptr[foo] = mm[5];
|
fptr[foo] = mm[5];
|
||||||
|
|
||||||
|
15
Fonderie/sfx.h
Normal file
15
Fonderie/sfx.h
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
/*
|
||||||
|
* sfx.h - special effects for fonderie & interpolator
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
int des_bords_sombres_a(FloatImg *pimg, int offset);
|
||||||
|
|
||||||
|
int trinarize(FloatImg *pimg, int notused); // in sfx.c
|
||||||
|
|
||||||
|
int binarize(FloatImg *pimg, int notused);
|
||||||
|
|
||||||
|
int brotche_rand48_a(FloatImg *fimg, float ratio, float mval);
|
||||||
|
int brotche_rand48_b(FloatImg *fimg, float ratio, float mval);
|
||||||
|
int colors_brotcher(FloatImg *fimg, float fval);
|
||||||
|
|
19
Fonderie/t.c
19
Fonderie/t.c
@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
#include "../floatimg.h"
|
#include "../floatimg.h"
|
||||||
#include "glitches.h"
|
#include "glitches.h"
|
||||||
|
#include "sfx.h"
|
||||||
|
|
||||||
/* ----------------------------------------------------------- */
|
/* ----------------------------------------------------------- */
|
||||||
|
|
||||||
@ -15,13 +16,10 @@ int verbosity;
|
|||||||
|
|
||||||
#define PNG "out.png"
|
#define PNG "out.png"
|
||||||
#define W 512
|
#define W 512
|
||||||
#define H 512
|
#define H 256
|
||||||
#define LMAX 233.333
|
#define LMAX 249.9999
|
||||||
#define TIMER 1
|
#define TIMER 1
|
||||||
|
|
||||||
|
|
||||||
int trinarize(FloatImg *pimg, int notused); // in sfx.c
|
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
int foo, iter, xloc, bloub;
|
int foo, iter, xloc, bloub;
|
||||||
@ -40,16 +38,16 @@ if (foo) {
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
fimg_printhead(&image);
|
// fimg_printhead(&image);
|
||||||
|
|
||||||
srand(getpid());
|
srand(getpid());
|
||||||
debut = fimg_timer_set(TIMER);
|
debut = fimg_timer_set(TIMER);
|
||||||
|
|
||||||
for (iter=0; iter<16; iter++) {
|
fimg_hdeg_a(&image, LMAX);
|
||||||
|
|
||||||
fimg_vdeg_a(&image, LMAX);
|
for (iter=0; iter<32; iter++) {
|
||||||
|
|
||||||
for (bloub=0; bloub<16; bloub++) {
|
for (bloub=0; bloub<6; bloub++) {
|
||||||
xloc = rand() % W;
|
xloc = rand() % W;
|
||||||
omega = (float)(0.1 + drand48()*0.6) * 0.4;
|
omega = (float)(0.1 + drand48()*0.6) * 0.4;
|
||||||
foo = vertical_singlitch(&image, xloc, LMAX,
|
foo = vertical_singlitch(&image, xloc, LMAX,
|
||||||
@ -64,6 +62,7 @@ for (iter=0; iter<16; iter++) {
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
foo = trinarize(&image, 0); /* XXX */
|
foo = trinarize(&image, 0); /* XXX */
|
||||||
|
|
||||||
sprintf(buff, "/tmp/out_b%03d.png", iter);
|
sprintf(buff, "/tmp/out_b%03d.png", iter);
|
||||||
@ -72,7 +71,7 @@ for (iter=0; iter<16; iter++) {
|
|||||||
fprintf(stderr, "err %d saving to '%s'\n", foo, buff);
|
fprintf(stderr, "err %d saving to '%s'\n", foo, buff);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
fin = fimg_timer_set(TIMER);
|
fin = fimg_timer_set(TIMER);
|
||||||
|
Loading…
Reference in New Issue
Block a user