X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=src%2Fsdf-1.c;h=0b591c784efbf5c87738652893f6dbbec83f77c0;hb=8f6d22c1d18c183cfcb95ca97cea85cbae0ab6c3;hp=1acb2d0d3c5d03de871992daa8c7b7612243b951;hpb=cda35cc393bfef9a53de1a5c611e09992fb77022;p=ctsim.git diff --git a/src/sdf-1.c b/src/sdf-1.c index 1acb2d0..0b591c7 100644 --- a/src/sdf-1.c +++ b/src/sdf-1.c @@ -2,8 +2,20 @@ ** This is part of the CTSim program ** Copyright (C) 1983-2000 Kevin Rosenberg ** -** $Id: sdf-1.c,v 1.2 2000/05/03 08:49:50 kevin Exp $ +** $Id: sdf-1.c,v 1.6 2000/05/24 22:50:04 kevin Exp $ ** $Log: sdf-1.c,v $ +** Revision 1.6 2000/05/24 22:50:04 kevin +** Added support for new SGP library +** +** Revision 1.5 2000/05/16 04:33:59 kevin +** Improved option processing +** +** Revision 1.4 2000/05/09 14:52:27 kevin +** added sqr and sqrt functions +** +** Revision 1.3 2000/05/08 20:02:32 kevin +** ANSI C changes +** ** Revision 1.2 2000/05/03 08:49:50 kevin ** Code cleanup ** @@ -25,18 +37,14 @@ ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ + /* FILE * sdf-1.c Filter a single SDF file */ #include "ct.h" -#define O_LOG 4 -#define O_EXP 5 -#define O_INVERT 6 -#define O_VERBOSE 7 -#define O_HELP 8 -#define O_VERSION 9 +enum {O_LOG, O_EXP, O_SQRT, O_SQR, O_INVERT, O_VERBOSE, O_HELP, O_VERSION}; static struct option my_options[] = { @@ -44,28 +52,31 @@ static struct option my_options[] = {"verbose", 0, 0, O_VERBOSE}, {"log", 0, 0, O_LOG}, {"exp", 0, 0, O_EXP}, + {"sqr", 0, 0, O_SQR}, + {"sqrt", 0, 0, O_SQRT}, {"help", 0, 0, O_HELP}, {"version", 0, 0, O_VERSION}, {0, 0, 0, 0} }; void -usage (const char *program) +sdf1_usage (const char *program) { - fprintf(stdout, "usage: %s infile outfile [OPTIONS]\n", kbasename(program)); + fprintf(stdout, "sdf1_usage: %s infile outfile [OPTIONS]\n", kbasename(program)); fprintf(stdout, "Generate a SDF2D file from a SDF2D file\n"); fprintf(stdout, "\n"); fprintf(stdout, " --invert Invert image\n"); fprintf(stdout, " --log Natural logrithm of image\n"); fprintf(stdout, " --exp Natural exponential of image\n"); + fprintf(stdout, " --sqr Square of image\n"); + fprintf(stdout, " --sqrt Square root of image\n"); fprintf(stdout, " --verbose Verbose modem\n"); fprintf(stdout, " --version Print version\n"); fprintf(stdout, " --help Print this help message\n"); - exit(1); } int -main (int argc, char *const argv[]) +sdf1_main (int argc, char *const argv[]) { IMAGE *im_in; IMAGE *im_out; @@ -75,6 +86,8 @@ main (int argc, char *const argv[]) int opt_invert = 0; int opt_log = 0; int opt_exp = 0; + int opt_sqr = 0; + int opt_sqrt = 0; while (1) { @@ -91,6 +104,12 @@ main (int argc, char *const argv[]) case O_LOG: opt_log = 1; break; + case O_SQR: + opt_sqr = 1; + break; + case O_SQRT: + opt_sqrt = 1; + break; case O_EXP: opt_exp = 1; break; @@ -106,25 +125,25 @@ main (int argc, char *const argv[]) exit(0); case O_HELP: case '?': - usage(argv[0]); - exit(0); + sdf1_usage(argv[0]); + return (0); default: - usage(argv[0]); - exit(1); + sdf1_usage(argv[0]); + return (1); } } if (optind + 2 != argc) { - usage(argv[0]); - exit(1); + sdf1_usage(argv[0]); + return (1); } in_file = argv[optind]; out_file = argv[optind + 1]; - if (opt_invert || opt_log || opt_exp) { + if (opt_invert || opt_log || opt_exp || opt_sqr || opt_sqrt) { int ix, iy; im_in = image_load (in_file); @@ -132,18 +151,28 @@ main (int argc, char *const argv[]) if (opt_invert) { for (ix = 0; ix < im_in->nx; ix++) - for (iy = 0; iy < im_in->ny; iy++) - im_out->v[ix][iy] = - im_in->v[ix][iy]; + for (iy = 0; iy < im_in->ny; iy++) + im_out->v[ix][iy] = - im_in->v[ix][iy]; } if (opt_log) { for (ix = 0; ix < im_in->nx; ix++) - for (iy = 0; iy < im_in->ny; iy++) - im_out->v[ix][iy] = log (im_in->v[ix][iy]); + for (iy = 0; iy < im_in->ny; iy++) + im_out->v[ix][iy] = log (im_in->v[ix][iy]); } if (opt_exp) { for (ix = 0; ix < im_in->nx; ix++) - for (iy = 0; iy < im_in->ny; iy++) - im_out->v[ix][iy] = exp (im_in->v[ix][iy]); + for (iy = 0; iy < im_in->ny; iy++) + im_out->v[ix][iy] = exp (im_in->v[ix][iy]); + } + if (opt_sqr) { + for (ix = 0; ix < im_in->nx; ix++) + for (iy = 0; iy < im_in->ny; iy++) + im_out->v[ix][iy] = im_in->v[ix][iy] * im_in->v[ix][iy]; + } + if (opt_sqrt) { + for (ix = 0; ix < im_in->nx; ix++) + for (iy = 0; iy < im_in->ny; iy++) + im_out->v[ix][iy] = sqrt (im_in->v[ix][iy]); } image_save(im_out); @@ -151,3 +180,12 @@ main (int argc, char *const argv[]) return (0); } + +#ifndef NO_MAIN +int +main (int argc, char *const argv[]) +{ + return (sdf1_main(argc, argv)); +} +#endif +