/* -------------------------------------------------------------- regio_read_xfm() - reads a transform. If the file ends in .xfm, then the last three lines are read, and the last line of the transform is set to 0 0 0 1. Otherwise, the last four lines are read. Blank lines at the end will defeat it. This should be able to read tlas properly. -------------------------------------------------------------- */ int regio_read_xfm(char *xfmfile, MATRIX **R) { char *ext, *fileinfo; int err = 0; ext = fio_extension(xfmfile); if (strcmp(ext,"xfm") == 0) { err = regio_read_mincxfm(xfmfile,R,&fileinfo); free(fileinfo); } else err = regio_read_xfm4(xfmfile,R); free(ext); return(err); }
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) ; }