we can now ADD or MUL two images
This commit is contained in:
		
							parent
							
								
									342fc4a721
								
							
						
					
					
						commit
						8990d1f9a9
					
				@ -3,7 +3,7 @@
 | 
			
		||||
cp	libfloatimg.a 	/usr/local/lib
 | 
			
		||||
cp	floatimg.h 	/usr/local/include
 | 
			
		||||
 | 
			
		||||
cp	tools/mkfimg tools/fimg2pnm 	\
 | 
			
		||||
cp	tools/mkfimg tools/fimg2pnm tools/fimgops 	\
 | 
			
		||||
	tools/png2fimg tools/fimgstats			\
 | 
			
		||||
	/usr/local/bin
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -9,7 +9,8 @@ int		verbosity;
 | 
			
		||||
 | 
			
		||||
/* --------------------------------------------------------------------- */
 | 
			
		||||
#define		OP_ADD		1
 | 
			
		||||
#define		OP_MUL		2
 | 
			
		||||
#define		OP_SUB		2
 | 
			
		||||
#define		OP_MUL		4
 | 
			
		||||
typedef struct {
 | 
			
		||||
	int	code;
 | 
			
		||||
	char	*op;
 | 
			
		||||
@ -17,6 +18,7 @@ typedef struct {
 | 
			
		||||
 | 
			
		||||
Opcode opcodes[] = {
 | 
			
		||||
	{ OP_ADD,		"add"		},
 | 
			
		||||
	{ OP_SUB,		"sub"		},
 | 
			
		||||
	{ OP_MUL,		"mul"		},
 | 
			
		||||
	{ 0,			NULL		}
 | 
			
		||||
	};
 | 
			
		||||
@ -28,13 +30,17 @@ for (optr = opcodes; optr->code; optr++) {
 | 
			
		||||
	printf("\t%-20s %d\n", optr->op, optr->code); 
 | 
			
		||||
	} 
 | 
			
		||||
}
 | 
			
		||||
static int look_opcodes(char *txt)
 | 
			
		||||
static int look_opcode(char *txt)
 | 
			
		||||
{
 | 
			
		||||
Opcode *optr;
 | 
			
		||||
 | 
			
		||||
#if DEBUG_LEVEL
 | 
			
		||||
fprintf(stderr, ">>> %s ( '%s' )\n", __func__, txt);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
for (optr = opcodes; optr->code; optr++) {
 | 
			
		||||
	if (!strcmp(txt, optr->op)) {
 | 
			
		||||
		printf("found %s as %d\n", optr->op, optr->code);
 | 
			
		||||
		// printf("found %s as %d\n", optr->op, optr->code);
 | 
			
		||||
		return optr->code;
 | 
			
		||||
		}
 | 
			
		||||
	} 
 | 
			
		||||
@ -50,12 +56,33 @@ if (verbosity) fimg_print_version(1);
 | 
			
		||||
exit(0);
 | 
			
		||||
}
 | 
			
		||||
/* --------------------------------------------------------------------- */
 | 
			
		||||
int exec_operator(FloatImg *A, FloatImg *B, int action, FloatImg *D)
 | 
			
		||||
{
 | 
			
		||||
int	foo;
 | 
			
		||||
 | 
			
		||||
switch (action)	{
 | 
			
		||||
 | 
			
		||||
	case OP_ADD:
 | 
			
		||||
		foo = fimg_add(A, B, D);		break;
 | 
			
		||||
	case OP_SUB:
 | 
			
		||||
		foo = fimg_sub(A, B, D);		break;
 | 
			
		||||
	case OP_MUL:
 | 
			
		||||
		foo = fimg_add(A, B, D);		break;
 | 
			
		||||
	default:
 | 
			
		||||
		foo = -99;				break;
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
return foo;
 | 
			
		||||
}
 | 
			
		||||
/* --------------------------------------------------------------------- */
 | 
			
		||||
int main(int argc, char *argv[])
 | 
			
		||||
{
 | 
			
		||||
int		foo, opt;
 | 
			
		||||
int		foo, opt, action;
 | 
			
		||||
float		fvalue;
 | 
			
		||||
char		*operator;
 | 
			
		||||
 | 
			
		||||
FloatImg	fimg;
 | 
			
		||||
FloatImg	srcA, srcB, dest;
 | 
			
		||||
 | 
			
		||||
while ((opt = getopt(argc, argv, "hk:v")) != -1) {
 | 
			
		||||
	switch(opt) {
 | 
			
		||||
@ -76,6 +103,53 @@ if (4 != argc-optind) {
 | 
			
		||||
	exit(1);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
operator = argv[optind+2];
 | 
			
		||||
action = look_opcode(operator);
 | 
			
		||||
if (action < 0) {
 | 
			
		||||
	fprintf(stderr, "%s : opcode '%s' unknow\n", argv[0], operator);
 | 
			
		||||
	exit(1);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	load the two source files, and check comatibility
 | 
			
		||||
 */
 | 
			
		||||
if ((foo=fimg_create_from_dump(argv[optind], &srcA))) {
 | 
			
		||||
	fprintf(stderr, "read error on '%s' is %d\n", argv[optind], foo);
 | 
			
		||||
	exit(2);
 | 
			
		||||
	}
 | 
			
		||||
if ((foo=fimg_create_from_dump(argv[optind+1], &srcB))) {
 | 
			
		||||
	fprintf(stderr, "read error on '%s' is %d\n", argv[optind+1], foo);
 | 
			
		||||
	exit(3);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
if (verbosity) {				/* please, debug me */
 | 
			
		||||
	fimg_describe(&srcA, argv[optind]);
 | 
			
		||||
	fimg_describe(&srcB, argv[optind+1]);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
foo = fimg_images_compatible(&srcA, &srcB);
 | 
			
		||||
if (foo) {
 | 
			
		||||
	fprintf(stderr, "images are not compatibles, %d\n", foo);
 | 
			
		||||
	exit(4);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	we can now create the resultant image, and going coredump...
 | 
			
		||||
 */
 | 
			
		||||
foo = fimg_create(&dest, srcA.width, srcA.height, srcA.type);
 | 
			
		||||
// fimg_describe(&dest, "destination");
 | 
			
		||||
 | 
			
		||||
foo = exec_operator(&srcA, &srcB, action, &dest);
 | 
			
		||||
if (foo) {
 | 
			
		||||
	fprintf(stderr, "operator exec give us a %d\n", foo);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
foo = fimg_dump_to_file(&dest, argv[optind+3], 0);
 | 
			
		||||
if (foo) {
 | 
			
		||||
	fprintf(stderr, "dumping datas to file give us a %d\n", foo);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
return 0;
 | 
			
		||||
}
 | 
			
		||||
/* --------------------------------------------------------------------- */
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user