/* **************************************************************************** * * MODULE: v.transform * AUTHOR(S): See other files as well... * Eric G. Miller * PURPOSE: To transform a vector layer's coordinates via a set of tie * points. * COPYRIGHT: (C) 2002 by the GRASS Development Team * * This program is free software under the GNU General Public * License (>=v2). Read the file COPYING that comes with GRASS * for details. * *****************************************************************************/ /* * create_transform_conversion () - main driver routine to prepare * the transformation equation. * * yes_no_quest(s) - ask the user a yes, no question. * returns: 1 for yes, 0 for no * Written by the GRASS Team, 02/16/90, -mh. */ #include #include #include #include #include #include "trans.h" #include "local_proto.h" int create_transform_conversion (struct file_info *Coord, int quiet) { if ( Coord->name[0] != '\0') create_transform_from_file( Coord, quiet) ; else create_transform_from_user () ; return 0; } int create_transform_from_user (void) { int status ; int n_points; int ok ; init_transform_arrays() ; n_points = 0 ; ok = 0 ; while (! ok) { #ifdef __MINGW32__ G_fatal_error ( "Points cannot be entered interactively on Windows" ); #else /* go to Vask page to enter the coordinates */ if ((n_points = ask_transform_coor (n_points)) < 0) exit(-1) ; #endif system("clear") ; status = setup_transform( n_points) ; if (status != ALL_OK ) { G_message ( _(" Number of points that have been entered: %d\n"), n_points ); print_transform_error(status) ; continue ; } print_transform_resids( n_points) ; ok = yes_no_quest ("\n\n\nIf satisfied with the residuals, enter 'y', else 'n' and : "); } /* while (!ok) */ return(0) ; } /* create_transform_conversion() */ int yes_no_quest (char *s) { char buff[200]; while (1) { G_message ( _("%s"),s); if (NULL == fgets(buff,200,stdin)) exit(-1) ; switch (*buff) { case 'Y': case 'y': return(1); case 'N': case 'n': return(0); default: G_message ( _("Please answer yes or no")); } } } int create_transform_from_file (struct file_info *Coord, int quiet) { int status ; int n_points; init_transform_arrays() ; n_points = 0 ; /* Get the coordinates from the file. */ if ((n_points = get_coor_from_file (Coord->fp) ) < 0) exit(-1) ; status = setup_transform( n_points) ; if (status != ALL_OK ) { G_message ( _("Number of points that have been entered: %d\n"), n_points ); print_transform_error(status) ; exit(-1) ; } if (!quiet) print_transform_resids( n_points) ; return(0) ; } /* create_transform_from_file() */