First version of ImageScaler Widget
[mussa.git] / mussa.cxx
index a946faeb68fb4620644d5ff10ddd9830f9c0a8b6..6a54d01c0a24e95425cc59161d07ef7b3127cb92 100644 (file)
--- a/mussa.cxx
+++ b/mussa.cxx
@@ -8,13 +8,15 @@
 // file for more information, or contact Tristan directly.
 
 
-#include "ConnWindow.hh"
+#include "gui/ConnWindow.hh"
+#include "alg/mussa_class.hh"
+#include "mussa_exceptions.hh"
 #include <iostream>
 using namespace std;
 
 char
 parse_args(int argc, char **argv, string *a_file_path, int *window, 
-           int *threshold, char *ana_mode, float *ent_thres);
+           int *threshold, enum Mussa::analysis_modes *ana_mode, float *ent_thres);
 
 
 int main(int argc, char **argv) 
@@ -24,7 +26,8 @@ int main(int argc, char **argv)
   char * picked_file;
   int window, threshold;
   float ent_thres;
-  char run_mode, ana_mode;
+  char run_mode;
+  enum Mussa::analysis_modes ana_mode;
   int x_max=1000;
   int y_max=500;
   string err_msg;
@@ -49,7 +52,7 @@ int main(int argc, char **argv)
     if ((run_mode == 'f') || (run_mode == 'n'))
     {
       err_msg = an_analysis.load_mupa_file(a_file_path);
-      err_msg = an_analysis.analyze(window, threshold, ana_mode, ent_thres);
+      an_analysis.analyze(window, threshold, ana_mode, ent_thres);
       //an_overlord.do_analysis();
     }
 
@@ -82,16 +85,11 @@ int main(int argc, char **argv)
   }
 }
 
-struct ParseError
-{
-  string err;
-  ParseError(const string& msg) : err(msg) { } ;
-};
 
 // minimal arg reading function, not very robust to errors
 char
 parse_args(int argc, char **argv, string *a_file_path, int *window, 
-           int *threshold, char *ana_mode, float *ent_thres)
+           int *threshold, enum Mussa::analysis_modes *ana_mode, float *ent_thres)
 {
   int i, else_i;
   string an_arg;
@@ -102,19 +100,11 @@ parse_args(int argc, char **argv, string *a_file_path, int *window,
   *threshold = 0;
   *ent_thres = 0.0;
   run_mode = 'e'; //error default if no run mode set implicitly or explicitly
-  *ana_mode = 't'; // default to transitivie analyses mode
+  *ana_mode = Mussa::TransitiveNway; // default to transitivie analyses mode
 
-
   // no args means gui only mode
   if (argc == 1)
     run_mode = 'g';
-  // 1 arg means its a mupa file and run in full mode
-  /*
-  else if (argc == 2)
-  {
-  }
-  */
   else
   {
     else_i = 0;
@@ -127,68 +117,67 @@ parse_args(int argc, char **argv, string *a_file_path, int *window,
       // see what alternate mode the user wants to run in
       if (an_arg == "-m")
       {
-       an_arg = * ++argv;
-       i++;
-       if ( (an_arg == "v") || (an_arg == "n") ) //only 2 valid modes so far
-         run_mode = an_arg[0];
-       else
-       {
-         cout << "Error: \'" << an_arg;
-         cout << "\' is not a valid analysis mode for -a argument" << endl; 
-          throw ParseError("not valid -a argument");
-       }
-       *a_file_path = * ++argv;
-       i++;
+        an_arg = * ++argv;
+        i++;
+        if ( (an_arg == "v") || (an_arg == "n") ) //only 2 valid modes so far
+          run_mode = an_arg[0];
+        else
+        {
+          cout << "Error: \'" << an_arg;
+          cout << "\' is not a valid analysis mode for -a argument" << endl; 
+          throw cmdline_error("not valid -a argument");
+        }
+        *a_file_path = * ++argv;
+        i++;
       }
       // alternate analyses modes
       else if (an_arg == "-a")
       {
-       an_arg = * ++argv;
-       i++;
-       // t = transitive, r = radial, e = entropy
-       if ( (an_arg == "t") || (an_arg == "r") || (an_arg == "e") )
-         *ana_mode = an_arg[0];
-       else
-       {
-         cout << "Error: \'" << an_arg;
-         cout << "\' is not a valid run mode for -m argument" << endl; 
-         throw ParseError("bad argument -m");
-       }
-
+        an_arg = * ++argv;
+        i++;
+        // t = transitive, r = radial, e = entropy
+        if (an_arg == "t") *ana_mode = Mussa::TransitiveNway;
+        else if (an_arg == "r") *ana_mode = Mussa::RadialNway;
+        else if (an_arg == "e") *ana_mode = Mussa::EntropyNway;
+        else
+        {
+          cout << "Error: \'" << an_arg;
+          cout << "\' is not a valid run mode for -m argument" << endl; 
+          throw cmdline_error("bad argument -m");
+        }
       }
       else if (an_arg == "-w") // alternate window size arg
       {
-       *window = atoi(* ++argv);
-       i++;
+        *window = atoi(* ++argv);
+        i++;
       }
       else if (an_arg == "-t") // alternate threshold arg
       {
-       *threshold = atoi(* ++argv);
-       i++;
+        *threshold = atoi(* ++argv);
+        i++;
       }
       else if (an_arg == "-et") // alternate entropy threshold arg
       {
-       *ent_thres = atof(* ++argv);
-       i++;
+        *ent_thres = atof(* ++argv);
+        i++;
       }
       else
       {
-       if (else_i == 0)
-       {
-         *a_file_path = an_arg;
-         run_mode = 'f';
-         else_i++;
-       }
-       else
-       {
-         //cout << "Error, unknown arg: \'" << an_arg << "\'" << endl;
-         cout << "Error, too many filenames: \'" << an_arg << "\'" << endl;
-         run_mode == 'e';
-       }
+        if (else_i == 0)
+        {
+          *a_file_path = an_arg;
+          run_mode = 'f';
+          else_i++;
+        }
+        else
+        {
+          //cout << "Error, unknown arg: \'" << an_arg << "\'" << endl;
+          cout << "Error, too many filenames: \'" << an_arg << "\'" << endl;
+          run_mode == 'e';
+        }
       }
     }
   }
-
   return run_mode;
 }