void process_general_transform( VIO_General_transform* t ) { switch (t->type) { case LINEAR: process_linear_transform( get_linear_transform_ptr(t) ); break; case THIN_PLATE_SPLINE: print("[THIN PLATE SPLINE]\n"); break; case USER_TRANSFORM: print("[USER SPECIFIED TRANSFORM]\n"); break; case CONCATENATED_TRANSFORM: process_concatenated_transform( t ); break; case GRID_TRANSFORM: print("[GRID TRANSFORM]\n"); break; } }
int main(int argc, char *argv[]) { char **av ; int ac, nargs ; MRI *mri=NULL ; char *xform_fname=NULL, *in_fname=NULL, *out_fname=NULL ; /* rkt: check for and handle version tag */ nargs = handle_version_option (argc, argv, "$Id: mri_add_xform_to_header.c,v 1.12 2011/03/02 00:04:13 nicks Exp $", "$Name: $"); argc -= nargs; Progname = argv[0] ; ErrorInit(NULL, NULL, NULL) ; DiagInit(NULL, NULL, NULL) ; if (argc == 1) { usage_exit(); } ac = argc ; av = argv ; for ( ; argc > 1 && ISOPTION(*argv[1]) ; argc--, argv++) { nargs = get_option(argc, argv) ; argc -= nargs ; argv += nargs ; } if (argc < 2) { ErrorExit(ERROR_BADPARM, "%s: no transform name specified", Progname) ; } xform_fname = argv[1] ; if (argc < 3) { ErrorExit(ERROR_BADPARM, "%s: no input name specified", Progname) ; } in_fname = argv[2] ; if (argc < 4) { out_fname = in_fname ; } else { out_fname = argv[3] ; } if (verbose) { fprintf(stderr, "reading from %s...", in_fname) ; } // we have two cases, in_fname is just a directory name or .mgz if (fio_IsDirectory(in_fname)) { mri = MRIreadInfo(in_fname) ; // must be old COR volume } else if (fio_FileExistsReadable(in_fname)) { char *ext = fio_extension(in_fname); if (ext==0) { ErrorExit(ERROR_BADPARM, "%s: no extension found", Progname) ; } printf("INFO: extension is %s\n", ext); if (strcmp(ext, "mgz")==0 || strcmp(ext, "mgh")==0) { mri = MRIread(in_fname); // mgh or mgz } else { ErrorExit(ERROR_BADPARM, "%s: currently only .mgz or .mgh saves transform name", Progname) ; } } if (!mri) ErrorExit(ERROR_NO_FILE, "%s: could not open source file %s", Progname, in_fname) ; if (! CopyNameOnly) { // why do we need to load the transform at this time // mri is removed anyway???? -- good point, added -s for noload if (input_transform_file(xform_fname, &mri->transform) != OK) ErrorPrintf(ERROR_NO_MEMORY, "%s: could not read xform file '%s'\n", Progname, xform_fname); // my guess is just to verify the validity of the transform? mri->linear_transform = get_linear_transform_ptr(&mri->transform) ; mri->inverse_linear_transform = get_inverse_linear_transform_ptr(&mri->transform) ; mri->free_transform = 1 ; } strcpy(mri->transform_fname, xform_fname) ; if (verbose) { fprintf(stderr, "done.\nwriting to %s...", out_fname) ; } // this writes COR-.info only if (fio_IsDirectory(out_fname)) { MRIwriteInfo(mri, out_fname) ; } else { MRIwrite(mri, out_fname); // currently only mgh format write xform info } if (verbose) { fprintf(stderr, "done.\n") ; } MRIfree(&mri) ; exit(0) ; return(0) ; }