+ line shifter and bla

This commit is contained in:
tonton th 2020-12-31 00:46:12 +01:00
parent af1a48f149
commit 864c8d2d05
8 changed files with 73 additions and 15 deletions

View File

@ -218,6 +218,10 @@ switch (idFx) {
retval = random_blocks(image, 70);
break;
case CR_shiftln0:
retval = multilines_shift_0(image, 11, 120);
break;
case CR_message:
fprintf(stderr, "### message from pid %d, fv=%f ###\n",
getpid(), fval);
@ -289,18 +293,15 @@ return "???";
/* -------------------------------------------------------------- */
int crap_number_from_name(char *name)
{
int idx, foo, retval;
int idx, retval;
#if DEBUG_LEVEL
fprintf(stderr, ">>> %s ( '%s' )\n", __func__, name);
#endif
retval = -1; /* not found */
for (idx=0; CrapL[idx].id!=-1; idx++) {
foo = strcmp(CrapL[idx].name, name);
if (0 == foo) {
if (0 == strcmp(CrapL[idx].name, name)) {
// fprintf(stderr, "found '%s' -> %d\n", name,
// CrapL[idx].id);
retval = CrapL[idx].id;

View File

@ -2,18 +2,20 @@
* crapulator.h
*/
/*
* some constants for effect numbers */
/*
* the main function */
int crapulator(FloatImg *image, int id_effect, float fparam);
/*
* naming system */
void list_crapulors(char *texte);
char *crap_name_from_number(int num);
int crap_number_from_name(char *name);
/*
* this generated file contains the #define
* for symbolic name of effect ids.
*/
#include "crapdef.h"

View File

@ -22,5 +22,6 @@
24 bsombra 1 1.0
25 vsglitch 1 1.0
26 rndblks 1 1.0
27 shiftln0 1 1.0
99 message 1 1.0
-1 end 1 1.0

View File

@ -208,6 +208,11 @@ for (;;) {
value = crap_number_from_name(cptr);
// fprintf(stderr, "%s: '%s' -> %d\n", __func__,
// cptr, value);
if (value < 0) {
fprintf(stderr, "%s: '%s' not found\n",
__func__, cptr);
return -1;
}
foo = filterstack_add(numid, value, 1, 1.0);
continue;
}

View File

@ -7,6 +7,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include "../floatimg.h"
@ -188,4 +189,48 @@ for (y=BB; y<h-BB; y++) {
return 0;
}
/* -------------------------------------------------------------- */
static void shifter(float *fs, float *fd, int w, int nbr)
{
int krkr;
for (krkr=0; krkr<nbr; krkr++) {
fd[krkr] = fs[(krkr+w)%nbr];
}
/* take your sixpack, film at 11 */
}
int multilines_shift_0(FloatImg *picz, int step, int nombre)
{
float *buffline, *sptr;
int idx, ypos;
#if DEBUG_LEVEL
fprintf(stderr, ">>> %s ( %p %d %d )\n", __func__, picz, step, nombre);
#endif
buffline = alloca(picz->width * sizeof(float));
if (NULL==buffline) {
fprintf(stderr, "%s: memory panic\n", __func__);
abort();
}
for (idx=0; idx<nombre; idx++) {
ypos = rand() % picz->height;
sptr = picz->R + (ypos * picz->width);
shifter(sptr, buffline, step, picz->width);
memcpy(sptr, buffline, picz->width*sizeof(float));
sptr = picz->G + (ypos * picz->width);
shifter(sptr, buffline, step, picz->width);
memcpy(sptr, buffline, picz->width*sizeof(float));
sptr = picz->B + (ypos * picz->width);
shifter(sptr, buffline, step, picz->width);
memcpy(sptr, buffline, picz->width*sizeof(float));
}
return 0;
}
/* -------------------------------------------------------------- */

View File

@ -12,5 +12,6 @@ int poke_a_random_pixel(FloatImg *picz, float fval, int kaboo);
int vertical_singlitch(FloatImg *picz, int xpos, float fv, float omega,
float phi);
int multilines_shift_0(FloatImg *picz, int step, int nombre);
/* this is a wtf file */

View File

@ -229,9 +229,6 @@ for (idx=0; idx<globbuf.gl_pathc; idx++) {
/* XXX THIS CODE DON'T WORK !!! */
#endif
}
fprintf(stderr, "\ngenerated %d png files\n", ipng);
@ -273,11 +270,11 @@ fprintf(stderr, "*** %s : compiled by tTh, %s %s\n", __FILE__,
__DATE__, __TIME__);
fimg_print_version(2);
//#if DEBUG_LEVEL
#if DEBUG_LEVEL
/* this is for the debug off calling shellscript */
for (foo=0; foo<argc; foo++)
fprintf(stderr, "%5d %s\n", foo, argv[foo]);
//#endif
#endif
while ((opt = getopt(argc, argv, "E:F:hLS:vw:x:")) != -1) {
switch(opt) {

View File

@ -69,6 +69,9 @@ return 0;
int help(void)
{
puts("yolo!");
puts("\t-L\tlist available filters");
exit(0);
}
/* ----------------------------------------------------------- */
@ -103,11 +106,14 @@ fprintf(stderr, "*** %s : compiled by tTh, %s %s\n", __FILE__,
__DATE__, __TIME__);
fimg_print_version(2);
while ((opt = getopt(argc, argv, "hF:i:o:vx")) != -1) {
while ((opt = getopt(argc, argv, "hF:i:Lo:vx")) != -1) {
switch(opt) {
case 'h': help(); break;
case 'F': filterchain = optarg; break;
case 'i': infile = optarg; break;
case 'L':
list_crapulors("available filters");
exit(0);
case 'o': outfile = optarg; break;
case 'v': verbosity++; break;
case 'x': experiment(); break;