r31: Code cleanup
[ctsim.git] / src / sdf-1.c
index 79e01d3260f6063af51577eb91f095d1bcd96d02..1acb2d0d3c5d03de871992daa8c7b7612243b951 100644 (file)
@@ -2,10 +2,14 @@
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
-**  $Id: sdf-1.c,v 1.1 2000/04/28 13:02:44 kevin Exp $
+**  $Id: sdf-1.c,v 1.2 2000/05/03 08:49:50 kevin Exp $
 **  $Log: sdf-1.c,v $
-**  Revision 1.1  2000/04/28 13:02:44  kevin
-**  Initial revision
+**  Revision 1.2  2000/05/03 08:49:50  kevin
+**  Code cleanup
+**
+**  Revision 1.1.1.1  2000/04/28 13:02:44  kevin
+**  Initial CVS import for first public release
+**
 **
 **
 **  This program is free software; you can redistribute it and/or modify
@@ -27,6 +31,8 @@
 
 #include "ct.h"
 
+#define O_LOG      4
+#define O_EXP      5
 #define O_INVERT   6
 #define O_VERBOSE  7
 #define O_HELP     8
@@ -36,6 +42,8 @@ static struct option my_options[] =
 {
   {"invert", 0, 0, O_INVERT},
   {"verbose", 0, 0, O_VERBOSE},
+  {"log", 0, 0, O_LOG},
+  {"exp", 0, 0, O_EXP},
   {"help", 0, 0, O_HELP},
   {"version", 0, 0, O_VERSION},
   {0, 0, 0, 0}
@@ -48,6 +56,8 @@ usage (const char *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, "     --verbose  Verbose modem\n");
   fprintf(stdout, "     --version  Print version\n");
   fprintf(stdout, "     --help     Print this help message\n");
@@ -63,6 +73,8 @@ main (int argc, char *const argv[])
   char *out_file;
   int opt_verbose = 0;
   int opt_invert = 0;
+  int opt_log = 0;
+  int opt_exp = 0;
 
   while (1)
     {
@@ -76,6 +88,12 @@ main (int argc, char *const argv[])
        case O_INVERT:
          opt_invert = 1;
          break;
+       case O_LOG:
+         opt_log = 1;
+         break;
+       case O_EXP:
+         opt_exp = 1;
+         break;
        case O_VERBOSE:
          opt_verbose = 1;
          break;
@@ -106,16 +124,28 @@ main (int argc, char *const argv[])
   out_file = argv[optind + 1];
 
 
-  if (opt_invert) {
+  if (opt_invert || opt_log || opt_exp) {
     int ix, iy;
 
     im_in = image_load (in_file);
     im_out = image_create (out_file, im_in->nx, im_in->ny);
 
-    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];
-       
+    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];
+    }
+    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]);
+    }
+    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]);
+    }
+
     image_save(im_out);
   }