X-Git-Url: http://git.kpe.io/?p=ctsim.git;a=blobdiff_plain;f=tools%2Fifexport.cpp;h=17656be3764750b98b68fb8d00575178b36fe8d2;hp=245d34c24c931834791b9428ca98c671b68b28bc;hb=1a050c98763fbbc0662731b0b76953acede6f5d7;hpb=c8b19dfaffba9f06d8b6c40cb1bb83a8964867f7 diff --git a/tools/ifexport.cpp b/tools/ifexport.cpp index 245d34c..17656be 100644 --- a/tools/ifexport.cpp +++ b/tools/ifexport.cpp @@ -28,7 +28,7 @@ #include "ct.h" -enum { O_SCALE, O_MIN, O_MAX, O_AUTO, O_CENTER, O_STATS, O_FORMAT, O_LABELS, +enum { O_SCALE, O_MIN, O_MAX, O_AUTO, O_CENTER, O_STATS, O_FORMAT, O_LABELS, O_HELP, O_VERBOSE, O_VERSION, O_DEBUG }; static struct option my_options[] = @@ -70,7 +70,7 @@ static const char O_FORMAT_PGM_STR[]="pgm"; static const char O_FORMAT_PGMASC_STR[]="pgmasc"; static const char O_FORMAT_RAW_STR[]="raw"; -void +void ifexport_usage (const char *program) { std::cout << "usage: " << fileBasename(program) << " ifname outfile [OPTIONS]\n"; @@ -108,7 +108,7 @@ ifexport_usage (const char *program) } -int +int ifexport_main (int argc, char *const argv[]) { ImageFile* pim = NULL; @@ -130,135 +130,135 @@ ifexport_main (int argc, char *const argv[]) int c = getopt_long (argc, argv, "", my_options, NULL); char *endptr = NULL; char *endstr; - + if (c == -1) - break; - + break; + switch (c) - { - case O_MIN: - opt_set_min = 1; - densmin = strtod(optarg, &endptr); - endstr = optarg + strlen(optarg); - if (endptr != endstr) - { - sys_error (ERR_SEVERE, "Error setting --min to %s", optarg); - ifexport_usage(argv[0]); - return (1); - } - break; - case O_MAX: - opt_set_max = 1; - densmax = strtod(optarg, &endptr); - endstr = optarg + strlen(optarg); - if (endptr != endstr) - { - sys_error (ERR_SEVERE, "Error setting --max to %s", optarg); - ifexport_usage(argv[0]); - return (1); - } - break; - case O_SCALE: - opt_scale = strtol(optarg, &endptr, 10); - endstr = optarg + strlen(optarg); - if (endptr != endstr) - { - sys_error (ERR_SEVERE, "Error setting --scale to %s", optarg); - ifexport_usage(argv[0]); - return (1); - } - break; - case O_AUTO: - if (strcmp(optarg, O_AUTO_FULL_STR) == 0) - opt_auto = O_AUTO_FULL; - else if (strcmp(optarg, O_AUTO_STD1_STR) == 0) - opt_auto = O_AUTO_STD1; - else if (strcmp(optarg, O_AUTO_STD0_5_STR) == 0) - opt_auto = O_AUTO_STD0_5; - else if (strcmp(optarg, O_AUTO_STD0_1_STR) == 0) - opt_auto = O_AUTO_STD0_1; - else if (strcmp(optarg, O_AUTO_STD2_STR) == 0) - opt_auto = O_AUTO_STD2; - else if (strcmp(optarg, O_AUTO_STD3_STR) == 0) - opt_auto = O_AUTO_STD3; - else - { - sys_error (ERR_SEVERE, "Invalid auto mode %s", optarg); - ifexport_usage(argv[0]); - return (1); - } - break; - case O_CENTER: - if (strcmp(optarg, O_CENTER_MEDIAN_STR) == 0) - opt_center = O_CENTER_MEDIAN; - else if (strcmp(optarg, O_CENTER_MEAN_STR) == 0) - opt_center = O_CENTER_MEAN; - else if (strcmp(optarg, O_CENTER_MODE_STR) == 0) - opt_center = O_CENTER_MODE; - else - { - sys_error (ERR_SEVERE, "Invalid center mode %s", optarg); - ifexport_usage(argv[0]); - return (1); - } - break; - case O_FORMAT: - if (strcmp(optarg, O_FORMAT_PGM_STR) == 0) - opt_format = O_FORMAT_PGM; - else if (strcmp(optarg, O_FORMAT_PGMASC_STR) == 0) - opt_format = O_FORMAT_PGMASC; + { + case O_MIN: + opt_set_min = 1; + densmin = strtod(optarg, &endptr); + endstr = optarg + strlen(optarg); + if (endptr != endstr) + { + sys_error (ERR_SEVERE, "Error setting --min to %s", optarg); + ifexport_usage(argv[0]); + return (1); + } + break; + case O_MAX: + opt_set_max = 1; + densmax = strtod(optarg, &endptr); + endstr = optarg + strlen(optarg); + if (endptr != endstr) + { + sys_error (ERR_SEVERE, "Error setting --max to %s", optarg); + ifexport_usage(argv[0]); + return (1); + } + break; + case O_SCALE: + opt_scale = strtol(optarg, &endptr, 10); + endstr = optarg + strlen(optarg); + if (endptr != endstr) + { + sys_error (ERR_SEVERE, "Error setting --scale to %s", optarg); + ifexport_usage(argv[0]); + return (1); + } + break; + case O_AUTO: + if (strcmp(optarg, O_AUTO_FULL_STR) == 0) + opt_auto = O_AUTO_FULL; + else if (strcmp(optarg, O_AUTO_STD1_STR) == 0) + opt_auto = O_AUTO_STD1; + else if (strcmp(optarg, O_AUTO_STD0_5_STR) == 0) + opt_auto = O_AUTO_STD0_5; + else if (strcmp(optarg, O_AUTO_STD0_1_STR) == 0) + opt_auto = O_AUTO_STD0_1; + else if (strcmp(optarg, O_AUTO_STD2_STR) == 0) + opt_auto = O_AUTO_STD2; + else if (strcmp(optarg, O_AUTO_STD3_STR) == 0) + opt_auto = O_AUTO_STD3; + else + { + sys_error (ERR_SEVERE, "Invalid auto mode %s", optarg); + ifexport_usage(argv[0]); + return (1); + } + break; + case O_CENTER: + if (strcmp(optarg, O_CENTER_MEDIAN_STR) == 0) + opt_center = O_CENTER_MEDIAN; + else if (strcmp(optarg, O_CENTER_MEAN_STR) == 0) + opt_center = O_CENTER_MEAN; + else if (strcmp(optarg, O_CENTER_MODE_STR) == 0) + opt_center = O_CENTER_MODE; + else + { + sys_error (ERR_SEVERE, "Invalid center mode %s", optarg); + ifexport_usage(argv[0]); + return (1); + } + break; + case O_FORMAT: + if (strcmp(optarg, O_FORMAT_PGM_STR) == 0) + opt_format = O_FORMAT_PGM; + else if (strcmp(optarg, O_FORMAT_PGMASC_STR) == 0) + opt_format = O_FORMAT_PGMASC; #if HAVE_PNG - else if (strcmp(optarg, O_FORMAT_PNG_STR) == 0) - opt_format = O_FORMAT_PNG; - else if (strcmp(optarg, O_FORMAT_PNG16_STR) == 0) - opt_format = O_FORMAT_PNG16; + else if (strcmp(optarg, O_FORMAT_PNG_STR) == 0) + opt_format = O_FORMAT_PNG; + else if (strcmp(optarg, O_FORMAT_PNG16_STR) == 0) + opt_format = O_FORMAT_PNG16; #endif - else if (strcmp(optarg, O_FORMAT_RAW_STR) == 0) - opt_format = O_FORMAT_RAW; + else if (strcmp(optarg, O_FORMAT_RAW_STR) == 0) + opt_format = O_FORMAT_RAW; #if HAVE_GIF - else if (strcmp(optarg, O_FORMAT_GIF_STR) == 0) - opt_format = O_FORMAT_GIF; + else if (strcmp(optarg, O_FORMAT_GIF_STR) == 0) + opt_format = O_FORMAT_GIF; #endif else { - sys_error (ERR_SEVERE, "Invalid format mode %s", optarg); - ifexport_usage(argv[0]); - return (1); - } - break; - case O_LABELS: - opt_labels = 1; - break; - case O_VERBOSE: - opt_verbose = 1; - break; - case O_DEBUG: - opt_debug = 1; - break; - case O_STATS: - opt_stats = 1; - break; + sys_error (ERR_SEVERE, "Invalid format mode %s", optarg); + ifexport_usage(argv[0]); + return (1); + } + break; + case O_LABELS: + opt_labels = 1; + break; + case O_VERBOSE: + opt_verbose = 1; + break; + case O_DEBUG: + opt_debug = 1; + break; + case O_STATS: + opt_stats = 1; + break; case O_VERSION: #ifdef VERSION - std::cout << "Version " << VERSION << std::endl << g_szIdStr << std::endl; + std::cout << "Version " << VERSION << std::endl << g_szIdStr << std::endl; #else std::cout << "Unknown version number\n"; #endif - return (0); - case O_HELP: - case '?': - ifexport_usage(argv[0]); - return (0); - default: - ifexport_usage(argv[0]); - return (1); - } + return (0); + case O_HELP: + case '?': + ifexport_usage(argv[0]); + return (0); + default: + ifexport_usage(argv[0]); + return (1); + } } if (optind + 2 != argc) { ifexport_usage(argv[0]); return (1); } - + in_file = argv[optind]; out_file = argv[optind+1]; @@ -276,66 +276,66 @@ ifexport_main (int argc, char *const argv[]) double min, max, mean, mode, median, stddev; double window = 0; im.statistics(min, max, mean, mode, median, stddev); - + if (opt_auto == O_AUTO_FULL) { - if (! opt_set_max) - densmax = max; - if (! opt_set_min) - densmin = min; + if (! opt_set_max) + densmax = max; + if (! opt_set_min) + densmin = min; } if (opt_stats || opt_auto != O_AUTO_FULL) { - if (opt_auto == O_AUTO_FULL) - ; - else if (opt_auto == O_AUTO_STD1) - window = stddev; - else if (opt_auto == O_AUTO_STD0_1) - window = stddev * 0.1; - else if (opt_auto == O_AUTO_STD0_5) - window = stddev * 0.5; - else if (opt_auto == O_AUTO_STD2) - window = stddev * 2; - else if (opt_auto == O_AUTO_STD3) - window = stddev * 3; - else { - sys_error (ERR_SEVERE, "Internal Error: Invalid auto mode %d", opt_auto); - return (1); - } + if (opt_auto == O_AUTO_FULL) + ; + else if (opt_auto == O_AUTO_STD1) + window = stddev; + else if (opt_auto == O_AUTO_STD0_1) + window = stddev * 0.1; + else if (opt_auto == O_AUTO_STD0_5) + window = stddev * 0.5; + else if (opt_auto == O_AUTO_STD2) + window = stddev * 2; + else if (opt_auto == O_AUTO_STD3) + window = stddev * 3; + else { + sys_error (ERR_SEVERE, "Internal Error: Invalid auto mode %d", opt_auto); + return (1); + } } if (opt_stats) { - std::cout <<"nx: " << im.nx() << std::endl; - std::cout <<"ny: " << im.ny() << std::endl; - std::cout <<"min: " << min << std::endl; - std::cout <<"max: " << max << std::endl; - std::cout <<"mean: " << mean << std::endl; - std::cout <<"mode: " << mode << std::endl; - std::cout <<"stddev: " << stddev << std::endl; + std::cout <<"nx: " << im.nx() << std::endl; + std::cout <<"ny: " << im.ny() << std::endl; + std::cout <<"min: " << min << std::endl; + std::cout <<"max: " << max << std::endl; + std::cout <<"mean: " << mean << std::endl; + std::cout <<"mode: " << mode << std::endl; + std::cout <<"stddev: " << stddev << std::endl; } if (opt_auto != O_AUTO_FULL) { - double center; - - if (opt_center == O_CENTER_MEDIAN) - center = median; - else if (opt_center == O_CENTER_MODE) - center = mode; - else if (opt_center == O_CENTER_MEAN) - center = mean; - else { - sys_error (ERR_SEVERE, "Internal Error: Invalid center mode %d", opt_center); - return (1); - } - if (! opt_set_max) - densmax = center + window; - if (! opt_set_min) - densmin = center - window; + double center; + + if (opt_center == O_CENTER_MEDIAN) + center = median; + else if (opt_center == O_CENTER_MODE) + center = mode; + else if (opt_center == O_CENTER_MEAN) + center = mean; + else { + sys_error (ERR_SEVERE, "Internal Error: Invalid center mode %d", opt_center); + return (1); + } + if (! opt_set_max) + densmax = center + window; + if (! opt_set_min) + densmin = center - window; } } - + if (opt_stats) { std::cout << "min display: " << densmin << std::endl; std::cout << "max display: " << densmax << std::endl; } - + if (opt_format == O_FORMAT_PGM) im.writeImagePGM (out_file, opt_scale, opt_scale, densmin, densmax); else if (opt_format == O_FORMAT_PGMASC) @@ -347,11 +347,11 @@ ifexport_main (int argc, char *const argv[]) im.writeImagePNG (out_file, 16, opt_scale, opt_scale, densmin, densmax); #endif #if HAVE_GIF - else if (opt_format == O_FORMAT_GIF) + else if (opt_format == O_FORMAT_GIF) im.writeImageGIF (out_file, opt_scale, opt_scale, densmin, densmax); #endif else if (opt_format == O_FORMAT_RAW) - im.writeImageRaw (out_file, opt_scale, opt_scale); + im.writeImageRaw (out_file, opt_scale, opt_scale); else { sys_error (ERR_SEVERE, "Internal Error: Invalid format mode %d", opt_format); @@ -362,7 +362,7 @@ ifexport_main (int argc, char *const argv[]) #ifndef NO_MAIN -int +int main (int argc, char *const argv[]) { int retval = 1; @@ -370,9 +370,9 @@ main (int argc, char *const argv[]) try { retval = ifexport_main(argc, argv); } catch (exception e) { - std::cerr << "Exception: " << e.what() << std::endl; + std::cerr << "Exception: " << e.what() << std::endl; } catch (...) { - std::cerr << "Unknown exception\n"; + std::cerr << "Unknown exception\n"; } return (retval);