working on glitching methods
This commit is contained in:
		
							parent
							
								
									70d811a7e5
								
							
						
					
					
						commit
						dcacb07738
					
				| @ -117,6 +117,9 @@ switch (idFx) { | ||||
| 		retval = trinarize(image, 0); | ||||
| 		break; | ||||
| 			/* --- WTF -- */ | ||||
| 	case 25: | ||||
| 		retval = vertical_singlitch(image, 250, fval, 18, 0); | ||||
| 		break; | ||||
| 	default : | ||||
| 		fprintf(stderr, "%s : effect #%d invalid\n",  | ||||
| 				__func__, idFx); | ||||
|  | ||||
| @ -10,6 +10,7 @@ | ||||
| #include  <floatimg.h> | ||||
| 
 | ||||
| #include  "fonctions.h" | ||||
| #include  "glitches.h" | ||||
| #include  "crapulator.h" | ||||
| 
 | ||||
| int			verbosity; | ||||
|  | ||||
| @ -113,10 +113,31 @@ int poke_a_random_pixel(FloatImg *picz, float fval, int kaboo) | ||||
| return -1; | ||||
| } | ||||
| /*   --------------------------------------------------------------   */ | ||||
| int vertical_singlitch(FloatImg *picz, float omega, float phi) | ||||
| int vertical_singlitch(FloatImg *picz, int xpos, float fval,  | ||||
| 						float omega, float phi) | ||||
| { | ||||
| int		y, x, w, h; | ||||
| 
 | ||||
| return -1; | ||||
| #if DEBUG_LEVEL | ||||
| fprintf(stderr, ">>> %s ( %p %d %f %f )\n", __func__, picz, | ||||
| 					xpos, omega, phi); | ||||
| #endif | ||||
| 
 | ||||
| h = picz->height;		w = picz->width; | ||||
| #define BB 12 | ||||
| for (y=BB; y<h-BB; y++) { | ||||
| 	x = xpos;	/* add sinus deviation here */ | ||||
| 	/* compute bounding box */ | ||||
| 	if ( (x>BB) && (x<w-BB) ) { | ||||
| 		/* an make the glitch */ | ||||
| 		fimg_plot_rgb(picz, x, y, fval, fval, fval); | ||||
| 		if (rand() & 8) | ||||
| 			fimg_plot_rgb(picz, x-1, y, 0.0, 0.0, 0.0); | ||||
| 		if (rand() & 8) | ||||
| 			fimg_plot_rgb(picz, x+1, y, 0.0, 0.0, 0.0); | ||||
| 		} | ||||
| 	} | ||||
| return 0; | ||||
| } | ||||
| /*   --------------------------------------------------------------   */ | ||||
| 
 | ||||
|  | ||||
| @ -9,6 +9,7 @@ int un_petit_flou_8x8(FloatImg *picture, int x, int y); | ||||
| int un_moyen_flou_8x8(FloatImg *picture, int x, int y); | ||||
| int poke_a_random_pixel(FloatImg *picz, float fval, int kaboo); | ||||
| 
 | ||||
| int vertical_singlitch(FloatImg *picz, float omega, float phi); | ||||
| int vertical_singlitch(FloatImg *picz, int xpos, float fv, float omega, | ||||
| 							float phi); | ||||
| 
 | ||||
| /* this is a wtf file */ | ||||
|  | ||||
| @ -39,7 +39,7 @@ static int cmp_idxvalues(const void *pa, const void *pb) | ||||
| return ( ((IdxValue *)pa)->value > ((IdxValue *)pb)->value); | ||||
| } | ||||
| 
 | ||||
| int tentative_triage(glob_t *ptr_glob, IdxValue **ptr_idxval) | ||||
| int tentative_triage(glob_t *ptr_glob, IdxValue **ptr_idxval, int method) | ||||
| { | ||||
| int		idx, foo, nombre; | ||||
| float		metrique; | ||||
| @ -47,7 +47,8 @@ char		*filename; | ||||
| IdxValue	*idxvalues; | ||||
| 
 | ||||
| #if DEBUG_LEVEL | ||||
| fprintf(stderr, ">>> %s ( %p %p )\n", __func__, ptr_glob, ptr_idxval); | ||||
| fprintf(stderr, ">>> %s ( %p %p %d )\n", __func__, ptr_glob, | ||||
| 				ptr_idxval, method); | ||||
| #endif | ||||
| 
 | ||||
| nombre = ptr_glob->gl_pathc; | ||||
| @ -71,13 +72,16 @@ for (idx=0; idx<nombre; idx++) { | ||||
| 				foo, filename); | ||||
| 		return -1; | ||||
| 		} | ||||
| 	fprintf(stderr, "%5d   %s   %f\n", idx, filename, metrique); | ||||
| 	if (verbosity) | ||||
| 		fprintf(stderr, "%5d   %s   %f\n", idx, filename, metrique); | ||||
| 	idxvalues[idx].idx = idx; | ||||
| 	idxvalues[idx].value = metrique; | ||||
| 	} | ||||
| 
 | ||||
| /* and now, we can massage all our datas */ | ||||
| qsort(idxvalues, nombre, sizeof(IdxValue), cmp_idxvalues); | ||||
| if (method) { | ||||
| 	/* and now, we can massage all our datas */ | ||||
| 	qsort(idxvalues, nombre, sizeof(IdxValue), cmp_idxvalues); | ||||
| 	} | ||||
| 
 | ||||
| for (idx=0; idx<nombre; idx++) { | ||||
| 	printf("%5d   %9.6f  %5d\n", idx, | ||||
| @ -92,7 +96,8 @@ return 0; | ||||
| /*
 | ||||
|  *		This is the mega working loop | ||||
|  */ | ||||
| int interpolator(char *pattern, char *outdir, int Nsteps, int infx) | ||||
| int interpolator(char *pattern, char *outdir, int Nsteps, | ||||
| 				int infx, int outfx, int sort) | ||||
| { | ||||
| FloatImg	A, B, Out, *pFirst, *pSecond; | ||||
| glob_t		globbuf; | ||||
| @ -117,7 +122,7 @@ if (0 == globbuf.gl_pathc) { | ||||
| 	} | ||||
| 
 | ||||
| idx_values = NULL; | ||||
| foo = tentative_triage(&globbuf, &idx_values); | ||||
| foo = tentative_triage(&globbuf, &idx_values, sort); | ||||
| fprintf(stderr, "\tTRI of %p -> %d\n\n", idx_values, foo); | ||||
| 
 | ||||
| foo = fimg_fileinfos(globbuf.gl_pathv[0], iarray); | ||||
| @ -151,10 +156,10 @@ for (idx=0; idx<globbuf.gl_pathc; idx++) { | ||||
| 	value = idx_values[idx].value; | ||||
| 
 | ||||
| 	/* here, we can insert the input filter */ | ||||
| 	/* OK try it ... */ | ||||
| 	/*				 OK try it ... */ | ||||
| 	foo = crapulator(&B, infx, value/2.0); | ||||
| 	if (foo) { | ||||
| 		fprintf(stderr, "crapulator failure %d\n", foo); | ||||
| 		fprintf(stderr, "in fx crapulator failure %d\n", foo); | ||||
| 		exit(1); | ||||
| 		} | ||||
| 
 | ||||
| @ -163,9 +168,11 @@ for (idx=0; idx<globbuf.gl_pathc; idx++) { | ||||
| 		fimg_interpolate(pSecond, pFirst, &Out, coef); | ||||
| 
 | ||||
| 		/* here we can insert the output filter */ | ||||
| 		if (rand() & 0x55) { | ||||
| 			kill_a_few_lines(&Out, value/2.0, 5+(rand()%20)); | ||||
| 			kill_a_few_lines(&Out,   0.0, 5+(rand()%20)); | ||||
| 		foo = crapulator(&Out, outfx, value); | ||||
| 		if (foo) { | ||||
| 			fprintf(stderr, "\nout fx %d crapulator failure %d\n", | ||||
| 						outfx,		foo); | ||||
| 			exit(1); | ||||
| 			} | ||||
| 
 | ||||
| 		sprintf(line, "%s/%05d.png", outdir, ipng); | ||||
| @ -210,29 +217,36 @@ int main (int argc, char *argv[]) | ||||
| int		foo; | ||||
| int		nbrsteps = 9; | ||||
| int		opt; | ||||
| int		inFx = 0; | ||||
| int		outFx = 0; | ||||
| int		sort = 0; | ||||
| 
 | ||||
| fprintf(stderr, "*** %s : compiled by tTh, %s %s\n", __FILE__, | ||||
| 			__DATE__, __TIME__); | ||||
| fimg_print_version(2); | ||||
| 
 | ||||
| while ((opt = getopt(argc, argv, "hv")) != -1) { | ||||
| while ((opt = getopt(argc, argv, "hS:vw:x:")) != -1) { | ||||
| 	switch(opt) { | ||||
| 		case 'h':	help();			break; | ||||
| 		case 'S':	sort = atoi(optarg);	break; | ||||
| 		case 'v':	verbosity++;		break; | ||||
| 		case 'w':	inFx = atoi(optarg);	break; | ||||
| 		case 'x':	outFx = atoi(optarg);	break; | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| /*              TO BE CONTINUED 		*****/ | ||||
| #if DEBUG_LEVEL | ||||
| fprintf(stderr, "%s : argc = %d, optind = %d\n", argv[0], argc, optind); | ||||
| #endif | ||||
| 
 | ||||
| if (4 != argc) { | ||||
| 	fprintf(stderr, "args: <in globpattern> <out dir> <nbrsteep>\n"); | ||||
| if (3 != (argc-optind)) { | ||||
| 	fprintf(stderr, "args: [options] <inglob> <outdir> <nbsteep>\n"); | ||||
| 	exit(1); | ||||
| 	} | ||||
| 
 | ||||
| nbrsteps = atoi(argv[3]); | ||||
| 
 | ||||
| #define EFFECT	7 | ||||
| foo = interpolator(argv[1], argv[2], nbrsteps, EFFECT); | ||||
| nbrsteps = atoi(argv[optind+2]); | ||||
| foo = interpolator(argv[optind], argv[optind+1], nbrsteps, | ||||
| 					inFx, outFx, sort); | ||||
| 
 | ||||
| fprintf(stderr, "interpolator give a %d score\n", foo); | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 le vieux
						le vieux