forked from tTh/FloatImg
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