Commit a15d63f5 authored by promayon's avatar promayon
Browse files

FIXED all binary generated by application_extension macro are prefix with...

FIXED all binary generated by application_extension macro are prefix with camitk- (this means "imp" becomes camitk-imp and "wizard" becomes camitk-wizard)
FIXED imp argument -noConsole becomes --noConsole (standard policy for options on the command line)

NEW commandline management for imp (a list of files can be given on the command line, imp answers to --help and --version), using gengetopt
NEW man pages for imp and wizard
FIXED component and action CMakeLists.txt should specify all the directory explicitely to respect inner dependency
FIXED wrong include in LaplacianRecursiveGaussian
FIXED gcc compilation for RegionGrowing
FIXED some minor command line management for wizard



git-svn-id: svn+ssh://scm.forge.imag.fr/var/lib/gforge/chroot/scmrepos/svn/camitk/trunk/camitk@178 ec899d31-69d1-42ba-9299-647d76f65fb3
parent fcf67865
......@@ -6,10 +6,12 @@
# CMakeLists.txt
# In your CMakeLists.txt, use the action_extension() macro apropriately
# find components
get_subdirectories(ACTIONS_IMAGE_LIST)
# Add subdirectories in CMake project but respect a specific
# order (i.e., consider actions inter dependencies)
add_subdirectory(imagelut)
add_subdirectory(reconstruction)
add_subdirectory(volumerendering)
add_subdirectory(multipicking)
add_subdirectory(itksegmentation)
add_subdirectory(itkfilters)
# Add subdirectories in CMake project
foreach(ACTION_IMAGE_NAME ${ACTIONS_IMAGE_LIST})
add_subdirectory(${ACTION_IMAGE_NAME})
endforeach()
\ No newline at end of file
......@@ -66,7 +66,7 @@ void LaplacianRecursiveGaussian::process(ImageComponent * comp) {
}
#include "LaplacianRecursiveGaussian_implementation"
#include "LaplacianRecursiveGaussian.impl"
// ITK filter implementation
template <class InputPixelType, class OutputPixelType, const int dim>
......
......@@ -195,7 +195,7 @@ vtkSmartPointer<vtkImageData> RegionGrowing::itkProcess(vtkSmartPointer<vtkImage
connectedThreshold->SetReplaceValue(255);
// set the initial seeds
for (int i = 0; i < seedPoints->size(); i++) {
InputImageType::IndexType seed;
typename InputImageType::IndexType seed;
seed[0] = seedPoints->at(i).x();
seed[1] = seedPoints->at(i).y();
if (dim == 3) {
......
/*
File autogenerated by gengetopt version 2.22.5
generated with the following command:
gengetopt --file-name=CommandLineParser --unamed-opts
The developers of gengetopt consider the fixed text that goes in all
gengetopt output files to be in the public domain:
we make no copyright claims on it.
*/
/* If we use autoconf. */
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#ifndef FIX_UNUSED
#define FIX_UNUSED(X) (void) (X) /* avoid warnings for unused params */
#endif
#include <getopt.h>
#include "CommandLineParser.h"
const char *gengetopt_args_info_purpose = "";
const char *gengetopt_args_info_usage = "Usage: camitk-imp [OPTIONS]... [FILES]...";
const char *gengetopt_args_info_description = "Build using CamiTK 3.0.2 \nPlease visit http://camitk.imag.fr for more information. \n(c) UJF-Grenoble 1, CNRS, TIMC-IMAG UMR 5525\n\ncamitk-imp is a medical image analysis and modeling software.\nThis is the flagship GUI application of a larger framework called CamiTK \n(Computer Assisted Medical Interventions Tool Kit) designed to ease the \ncollaborative work of a research team.\n\nThe targeted users are in R&D departments or laboratories.\ncamitk-imp provides an easy and interactive access to all your data and \nalgorithm parameters.\n\ncamitk-imp can visualize medical images from a lot of different (standard) \nformats, offers image processing and segmentation algorithms to reconstruct a \nmesh geometry and run a biomechanical simulation.\n\nFor a tutorial on camitk-imp, please visit the website:\nh\nttps://forge.imag.fr/plugins/mediawiki/wiki/camitk/index.php/Camitk-imp_tutorial\n\nCamiTK is highly modular and make an extensive use of extensions (plugins).\n\nCamiTK goals are to:\n - Gather knowledge & know-how from several fields\n - Avoid reinventing the wheel\n - Accelerate the integration/validation of new algorithms\n - Provide fast technological transfer between students (PhD and others), \nresearch scientists, clinicians and industrial partners\n - Rapidly provide a stable and usable prototype for clinicians\n - Support for lectures and dissemination";
const char *gengetopt_args_info_help[] = {
" -h, --help Print help and exit",
" -V, --version Print version and exit",
"\noptions:",
" These are the possible options:",
" --noConsole Disable CamiTK application consoleand redirect everything to \n the standard output (default=off)",
0
};
typedef enum {ARG_NO
, ARG_FLAG
} cmdline_parser_arg_type;
static
void clear_given (struct gengetopt_args_info *args_info);
static
void clear_args (struct gengetopt_args_info *args_info);
static int
cmdline_parser_internal (int argc, char **argv, struct gengetopt_args_info *args_info,
struct cmdline_parser_params *params, const char *additional_error);
static char *
gengetopt_strdup (const char *s);
static
void clear_given (struct gengetopt_args_info *args_info)
{
args_info->help_given = 0 ;
args_info->version_given = 0 ;
args_info->noConsole_given = 0 ;
}
static
void clear_args (struct gengetopt_args_info *args_info)
{
FIX_UNUSED (args_info);
args_info->noConsole_flag = 0;
}
static
void init_args_info(struct gengetopt_args_info *args_info)
{
args_info->help_help = gengetopt_args_info_help[0] ;
args_info->version_help = gengetopt_args_info_help[1] ;
args_info->noConsole_help = gengetopt_args_info_help[4] ;
}
void
cmdline_parser_print_version (void)
{
printf ("%s %s\n",
(strlen(CMDLINE_PARSER_PACKAGE_NAME) ? CMDLINE_PARSER_PACKAGE_NAME : CMDLINE_PARSER_PACKAGE),
CMDLINE_PARSER_VERSION);
}
static void print_help_common(void) {
cmdline_parser_print_version ();
if (strlen(gengetopt_args_info_purpose) > 0)
printf("\n%s\n", gengetopt_args_info_purpose);
if (strlen(gengetopt_args_info_usage) > 0)
printf("\n%s\n", gengetopt_args_info_usage);
printf("\n");
if (strlen(gengetopt_args_info_description) > 0)
printf("%s\n\n", gengetopt_args_info_description);
}
void
cmdline_parser_print_help (void)
{
int i = 0;
print_help_common();
while (gengetopt_args_info_help[i])
printf("%s\n", gengetopt_args_info_help[i++]);
}
void
cmdline_parser_init (struct gengetopt_args_info *args_info)
{
clear_given (args_info);
clear_args (args_info);
init_args_info (args_info);
args_info->inputs = 0;
args_info->inputs_num = 0;
}
void
cmdline_parser_params_init(struct cmdline_parser_params *params)
{
if (params)
{
params->override = 0;
params->initialize = 1;
params->check_required = 1;
params->check_ambiguity = 0;
params->print_errors = 1;
}
}
struct cmdline_parser_params *
cmdline_parser_params_create(void)
{
struct cmdline_parser_params *params =
(struct cmdline_parser_params *)malloc(sizeof(struct cmdline_parser_params));
cmdline_parser_params_init(params);
return params;
}
static void
cmdline_parser_release (struct gengetopt_args_info *args_info)
{
unsigned int i;
for (i = 0; i < args_info->inputs_num; ++i)
free (args_info->inputs [i]);
if (args_info->inputs_num)
free (args_info->inputs);
clear_given (args_info);
}
static void
write_into_file(FILE *outfile, const char *opt, const char *arg, const char *values[])
{
FIX_UNUSED (values);
if (arg) {
fprintf(outfile, "%s=\"%s\"\n", opt, arg);
} else {
fprintf(outfile, "%s\n", opt);
}
}
int
cmdline_parser_dump(FILE *outfile, struct gengetopt_args_info *args_info)
{
int i = 0;
if (!outfile)
{
fprintf (stderr, "%s: cannot dump options to stream\n", CMDLINE_PARSER_PACKAGE);
return EXIT_FAILURE;
}
if (args_info->help_given)
write_into_file(outfile, "help", 0, 0 );
if (args_info->version_given)
write_into_file(outfile, "version", 0, 0 );
if (args_info->noConsole_given)
write_into_file(outfile, "noConsole", 0, 0 );
i = EXIT_SUCCESS;
return i;
}
int
cmdline_parser_file_save(const char *filename, struct gengetopt_args_info *args_info)
{
FILE *outfile;
int i = 0;
outfile = fopen(filename, "w");
if (!outfile)
{
fprintf (stderr, "%s: cannot open file for writing: %s\n", CMDLINE_PARSER_PACKAGE, filename);
return EXIT_FAILURE;
}
i = cmdline_parser_dump(outfile, args_info);
fclose (outfile);
return i;
}
void
cmdline_parser_free (struct gengetopt_args_info *args_info)
{
cmdline_parser_release (args_info);
}
/** @brief replacement of strdup, which is not standard */
char *
gengetopt_strdup (const char *s)
{
char *result = 0;
if (!s)
return result;
result = (char*)malloc(strlen(s) + 1);
if (result == (char*)0)
return (char*)0;
strcpy(result, s);
return result;
}
int
cmdline_parser (int argc, char **argv, struct gengetopt_args_info *args_info)
{
return cmdline_parser2 (argc, argv, args_info, 0, 1, 1);
}
int
cmdline_parser_ext (int argc, char **argv, struct gengetopt_args_info *args_info,
struct cmdline_parser_params *params)
{
int result;
result = cmdline_parser_internal (argc, argv, args_info, params, 0);
if (result == EXIT_FAILURE)
{
cmdline_parser_free (args_info);
exit (EXIT_FAILURE);
}
return result;
}
int
cmdline_parser2 (int argc, char **argv, struct gengetopt_args_info *args_info, int override, int initialize, int check_required)
{
int result;
struct cmdline_parser_params params;
params.override = override;
params.initialize = initialize;
params.check_required = check_required;
params.check_ambiguity = 0;
params.print_errors = 1;
result = cmdline_parser_internal (argc, argv, args_info, &params, 0);
if (result == EXIT_FAILURE)
{
cmdline_parser_free (args_info);
exit (EXIT_FAILURE);
}
return result;
}
int
cmdline_parser_required (struct gengetopt_args_info *args_info, const char *prog_name)
{
FIX_UNUSED (args_info);
FIX_UNUSED (prog_name);
return EXIT_SUCCESS;
}
static char *package_name = 0;
/**
* @brief updates an option
* @param field the generic pointer to the field to update
* @param orig_field the pointer to the orig field
* @param field_given the pointer to the number of occurrence of this option
* @param prev_given the pointer to the number of occurrence already seen
* @param value the argument for this option (if null no arg was specified)
* @param possible_values the possible values for this option (if specified)
* @param default_value the default value (in case the option only accepts fixed values)
* @param arg_type the type of this option
* @param check_ambiguity @see cmdline_parser_params.check_ambiguity
* @param override @see cmdline_parser_params.override
* @param no_free whether to free a possible previous value
* @param multiple_option whether this is a multiple option
* @param long_opt the corresponding long option
* @param short_opt the corresponding short option (or '-' if none)
* @param additional_error possible further error specification
*/
static
int update_arg(void *field, char **orig_field,
unsigned int *field_given, unsigned int *prev_given,
char *value, const char *possible_values[],
const char *default_value,
cmdline_parser_arg_type arg_type,
int check_ambiguity, int override,
int no_free, int multiple_option,
const char *long_opt, char short_opt,
const char *additional_error)
{
char *stop_char = 0;
const char *val = value;
int found;
FIX_UNUSED (field);
stop_char = 0;
found = 0;
if (!multiple_option && prev_given && (*prev_given || (check_ambiguity && *field_given)))
{
if (short_opt != '-')
fprintf (stderr, "%s: `--%s' (`-%c') option given more than once%s\n",
package_name, long_opt, short_opt,
(additional_error ? additional_error : ""));
else
fprintf (stderr, "%s: `--%s' option given more than once%s\n",
package_name, long_opt,
(additional_error ? additional_error : ""));
return 1; /* failure */
}
FIX_UNUSED (default_value);
if (field_given && *field_given && ! override)
return 0;
if (prev_given)
(*prev_given)++;
if (field_given)
(*field_given)++;
if (possible_values)
val = possible_values[found];
switch(arg_type) {
case ARG_FLAG:
*((int *)field) = !*((int *)field);
break;
default:
break;
};
/* store the original value */
switch(arg_type) {
case ARG_NO:
case ARG_FLAG:
break;
default:
if (value && orig_field) {
if (no_free) {
*orig_field = value;
} else {
if (*orig_field)
free (*orig_field); /* free previous string */
*orig_field = gengetopt_strdup (value);
}
}
};
return 0; /* OK */
}
int
cmdline_parser_internal (
int argc, char **argv, struct gengetopt_args_info *args_info,
struct cmdline_parser_params *params, const char *additional_error)
{
int c; /* Character of the parsed option. */
int error = 0;
struct gengetopt_args_info local_args_info;
int override;
int initialize;
int check_required;
int check_ambiguity;
package_name = argv[0];
override = params->override;
initialize = params->initialize;
check_required = params->check_required;
check_ambiguity = params->check_ambiguity;
if (initialize)
cmdline_parser_init (args_info);
cmdline_parser_init (&local_args_info);
optarg = 0;
optind = 0;
opterr = params->print_errors;
optopt = '?';
while (1)
{
int option_index = 0;
static struct option long_options[] = {
{ "help", 0, NULL, 'h' },
{ "version", 0, NULL, 'V' },
{ "noConsole", 0, NULL, 0 },
{ 0, 0, 0, 0 }
};
c = getopt_long (argc, argv, "hV", long_options, &option_index);
if (c == -1) break; /* Exit from `while (1)' loop. */
switch (c)
{
case 'h': /* Print help and exit. */
cmdline_parser_print_help ();
cmdline_parser_free (&local_args_info);
exit (EXIT_SUCCESS);
case 'V': /* Print version and exit. */
cmdline_parser_print_version ();
cmdline_parser_free (&local_args_info);
exit (EXIT_SUCCESS);
case 0: /* Long option with no short option */
/* Disable CamiTK application consoleand redirect everything to the standard output. */
if (strcmp (long_options[option_index].name, "noConsole") == 0)
{
if (update_arg((void *)&(args_info->noConsole_flag), 0, &(args_info->noConsole_given),
&(local_args_info.noConsole_given), optarg, 0, 0, ARG_FLAG,
check_ambiguity, override, 1, 0, "noConsole", '-',
additional_error))
goto failure;
}
break;
case '?': /* Invalid option. */
/* `getopt_long' already printed an error message. */
goto failure;
default: /* bug: option not considered. */
fprintf (stderr, "%s: option unknown: %c%s\n", CMDLINE_PARSER_PACKAGE, c, (additional_error ? additional_error : ""));
abort ();
} /* switch */
} /* while */
cmdline_parser_release (&local_args_info);
if ( error )
return (EXIT_FAILURE);
if (optind < argc)
{
int i = 0 ;
int found_prog_name = 0;
/* whether program name, i.e., argv[0], is in the remaining args
(this may happen with some implementations of getopt,
but surely not with the one included by gengetopt) */
i = optind;
while (i < argc)
if (argv[i++] == argv[0]) {
found_prog_name = 1;
break;
}
i = 0;
args_info->inputs_num = argc - optind - found_prog_name;
args_info->inputs =
(char **)(malloc ((args_info->inputs_num)*sizeof(char *))) ;
while (optind < argc)
if (argv[optind++] != argv[0])
args_info->inputs[ i++ ] = gengetopt_strdup (argv[optind-1]) ;
}
return 0;
failure:
cmdline_parser_release (&local_args_info);
return (EXIT_FAILURE);
}
/** @file CommandLineParser.h
* @brief The header file for the command line option parser
* generated by GNU Gengetopt version 2.22.5
* http://www.gnu.org/software/gengetopt.
* DO NOT modify this file, since it can be overwritten
* @author GNU Gengetopt by Lorenzo Bettini */
#ifndef COMMANDLINEPARSER_H
#define COMMANDLINEPARSER_H
/* If we use autoconf. */
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <stdio.h> /* for FILE */
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#ifndef CMDLINE_PARSER_PACKAGE
/** @brief the program name (used for printing errors) */
#define CMDLINE_PARSER_PACKAGE "camitk-imp"
#endif
#ifndef CMDLINE_PARSER_PACKAGE_NAME
/** @brief the complete program name (used for help and version) */
#define CMDLINE_PARSER_PACKAGE_NAME "camitk-imp"
#endif
#ifndef CMDLINE_PARSER_VERSION
/** @brief the program version */
#define CMDLINE_PARSER_VERSION "3.0.2"
#endif
/** @brief Where the command line options are stored */
struct gengetopt_args_info
{
const char *help_help; /**< @brief Print help and exit help description. */
const char *version_help; /**< @brief Print version and exit help description. */
int noConsole_flag; /**< @brief Disable CamiTK application consoleand redirect everything to the standard output (default=off). */
const char *noConsole_help; /**< @brief Disable CamiTK application consoleand redirect everything to the standard output help description. */
unsigned int help_given ; /**< @brief Whether help was given. */
unsigned int version_given ; /**< @brief Whether version was given. */
unsigned int noConsole_given ; /**< @brief Whether noConsole was given. */
char **inputs ; /**< @brief unamed options (options without names) */
unsigned inputs_num ; /**< @brief unamed options number */
} ;
/** @brief The additional parameters to pass to parser functions */
struct cmdline_parser_params
{
int override; /**< @brief whether to override possibly already present options (default 0) */
int initialize; /**< @brief whether to initialize the option structure gengetopt_args_info (default 1) */
int check_required; /**< @brief whether to check that all required options were provided (default 1) */