/* * This thing is just a mess ! * *************************** */ #include #include #include #include #include "../floatimg.h" int verbosity; // nasty global var. /* --------------------------------------------------------------------- */ int copy_metadata(FloatImg *src, FloatImg *dst) { FimgMetaData *mdsrc, *mddst; #if DEBUG_LEVEL fprintf(stderr, ">>> %s ( %p %p )\n", __func__, src, dst); #endif mdsrc = &(src->mdatas); mddst = &(dst->mdatas); fprintf(stderr, "metadata copy: %p --> %p\n", mdsrc, mddst); return 0; } /* --------------------------------------------------------------------- */ /* nouveau ~ 2 octobre 2022 */ int extractor(char *srcname, char *dstname, FimgArea51 *rect) { FloatImg src, dst; int foo; #if DEBUG_LEVEL fprintf(stderr, ">>> %s ( %s %s %p )\n", __func__, srcname, dstname, rect); #endif if (verbosity) { print_rectangle((char *)__func__, rect); } foo = fimg_create_from_dump(srcname, &src); if (foo) { fprintf(stderr, "%s: load %s from dump --> %d\n", __func__, srcname, foo); return foo; } foo = fimg_create(&dst, rect->w, rect->h, 3); if (foo) { fprintf(stderr, "%s: fimg create dst --> %d\n", __func__, foo); return foo; } /* REAL operation was here ! */ foo = fimg_extractor(&src, &dst, rect); if (foo) { fprintf(stderr, "%s: fimg extractor --> %d\n", __func__, foo); #ifdef MUST_ABORT abort(); // kill me hardly ! #endif return foo; } /* XXX * may be we can also copy the metadate from src to dst ? * with an option on the command line ? */ copy_metadata(&src, &dst); foo = fimg_dumpmd_to_file(&dst, dstname, NULL, 0); if (foo) { fprintf(stderr, "%s: dumping datas to '%s' give us a %d\n", __func__, dstname, foo); return foo; } return 0; } /* --------------------------------------------------------------------- */ void help(void) { printf("-- Fimg Extractor -- lib v%d -- %s %s\n", FIMG_VERSION, __DATE__, __TIME__); puts("usage:\n\tfimgextract [options] source.fimg width,height,xpos,ypos"); puts("options:"); puts("\t-m\t\tcopy metadata bloc"); puts("\t-o out.fimg\tname the output file"); puts("\t-v\t\tmake me a blabla box"); puts("\t-x\t\tenable crashy feature"); exit(0); } /* --------------------------------------------------------------------- */ int main(int argc, char *argv[]) { int foo, idx; int opt; int experiment = 0; FimgArea51 area; char *output_file = "out.fimg"; while ((opt = getopt(argc, argv, "ho:vx")) != -1) { switch(opt) { case 'h': help(); break; case 'o': output_file = optarg; break; case 'v': verbosity++; break; case 'x': experiment++; break; default: exit(1); } } if (verbosity) { fprintf(stderr, "argc = %d optind = %d\n", argc, optind); for (idx=optind; idx %d\n", argv[0], foo); exit(1); } foo = extractor(argv[optind], output_file, &area); if (foo) { fprintf(stderr, "%s: extractor --> %d\n", __func__, foo); exit(1); } return 0; } /* --------------------------------------------------------------------- */