forked from tTh/FloatImg
adding a new tool : fimgops
This commit is contained in:
parent
0eff0039eb
commit
9f42b813e7
1
.gitignore
vendored
1
.gitignore
vendored
@ -36,3 +36,4 @@ tools/png2fimg
|
|||||||
tools/addtga2fimg
|
tools/addtga2fimg
|
||||||
tools/addpnm2fimg
|
tools/addpnm2fimg
|
||||||
tools/cumulfimgs
|
tools/cumulfimgs
|
||||||
|
tools/fimgops
|
||||||
|
@ -9,7 +9,7 @@ DEPS = ../floatimg.h ../libfloatimg.a Makefile
|
|||||||
# ----------
|
# ----------
|
||||||
|
|
||||||
all: fimg2pnm mkfimg png2fimg fimgstats fimg2png \
|
all: fimg2pnm mkfimg png2fimg fimgstats fimg2png \
|
||||||
addpnm2fimg cumulfimgs
|
addpnm2fimg cumulfimgs fimgops
|
||||||
|
|
||||||
fimgstats: fimgstats.c $(DEPS)
|
fimgstats: fimgstats.c $(DEPS)
|
||||||
gcc $(COPT) $< ../libfloatimg.a -o $@
|
gcc $(COPT) $< ../libfloatimg.a -o $@
|
||||||
@ -20,6 +20,9 @@ cumulfimgs: cumulfimgs.c $(DEPS)
|
|||||||
mkfimg: mkfimg.c $(DEPS)
|
mkfimg: mkfimg.c $(DEPS)
|
||||||
gcc $(COPT) $< ../libfloatimg.a -o $@
|
gcc $(COPT) $< ../libfloatimg.a -o $@
|
||||||
|
|
||||||
|
fimgops: fimgops.c $(DEPS)
|
||||||
|
gcc $(COPT) $< ../libfloatimg.a -o $@
|
||||||
|
|
||||||
fimg2pnm: fimg2pnm.c $(DEPS)
|
fimg2pnm: fimg2pnm.c $(DEPS)
|
||||||
gcc $(COPT) $< ../libfloatimg.a -o $@
|
gcc $(COPT) $< ../libfloatimg.a -o $@
|
||||||
|
|
||||||
|
81
tools/fimgops.c
Normal file
81
tools/fimgops.c
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
#include "../floatimg.h"
|
||||||
|
|
||||||
|
int verbosity;
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------- */
|
||||||
|
#define OP_ADD 1
|
||||||
|
#define OP_MUL 2
|
||||||
|
typedef struct {
|
||||||
|
int code;
|
||||||
|
char *op;
|
||||||
|
} Opcode;
|
||||||
|
|
||||||
|
Opcode opcodes[] = {
|
||||||
|
{ OP_ADD, "add" },
|
||||||
|
{ OP_MUL, "mul" },
|
||||||
|
{ 0, NULL }
|
||||||
|
};
|
||||||
|
static void pr_opcodes(void)
|
||||||
|
{
|
||||||
|
Opcode *optr;
|
||||||
|
puts("operators:");
|
||||||
|
for (optr = opcodes; optr->code; optr++) {
|
||||||
|
printf("\t%-20s %d\n", optr->op, optr->code);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
static int look_opcodes(char *txt)
|
||||||
|
{
|
||||||
|
Opcode *optr;
|
||||||
|
|
||||||
|
for (optr = opcodes; optr->code; optr++) {
|
||||||
|
if (!strcmp(txt, optr->op)) {
|
||||||
|
printf("found %s as %d\n", optr->op, optr->code);
|
||||||
|
return optr->code;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
/* --------------------------------------------------------------------- */
|
||||||
|
static void help(int lj)
|
||||||
|
{
|
||||||
|
|
||||||
|
puts("usage:\n\tfimgops [options] A.fimg B.fimg operator D.fimg");
|
||||||
|
pr_opcodes();
|
||||||
|
if (verbosity) fimg_print_version(1);
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
/* --------------------------------------------------------------------- */
|
||||||
|
int main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
int foo, opt;
|
||||||
|
float fvalue;
|
||||||
|
|
||||||
|
FloatImg fimg;
|
||||||
|
|
||||||
|
while ((opt = getopt(argc, argv, "hk:v")) != -1) {
|
||||||
|
switch(opt) {
|
||||||
|
case 'h': help(0); break;
|
||||||
|
case 'k': fvalue = atof(optarg); break;
|
||||||
|
case 'v': verbosity++; break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#if DEBUG_LEVEL
|
||||||
|
fprintf(stderr, "argc %d optind %d\n", argc, optind);
|
||||||
|
for (foo=0; foo<argc; foo++)
|
||||||
|
fprintf(stderr, "%3d %s\n", foo, argv[foo]);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (4 != argc-optind) {
|
||||||
|
fprintf(stderr, "%s need some arguments...\n", argv[0]);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
/* --------------------------------------------------------------------- */
|
Loading…
Reference in New Issue
Block a user