123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- #include <string.h>
- #include <math.h>
- #include <grass/gis.h>
- #include "local_proto.h"
- int get_double(const struct proj_parm *parm, const struct proj_desc *desc,
- double *val)
- {
- char answer[200];
- sprintf(answer, "Enter %s ", desc->desc);
- *val = prompt_num_double(answer, parm->deflt, 1);
- return 1;
- }
- int get_int(const struct proj_parm *parm, const struct proj_desc *desc,
- int *val)
- {
- char answer[200];
- sprintf(answer, "Enter %s ", desc->desc);
- *val = prompt_num_int(answer, (int)parm->deflt, 1);
- return 1;
- }
- int get_zone(void)
- {
- char answer[200];
- int first_time = 1;
- zone = -1;
- while ((zone < 0) || (zone > 60)) {
- if (first_time)
- first_time = 0;
- else
- fprintf(stdout, "Invalid zone! Try Again:\n");
- sprintf(answer, "Enter Zone");
- zone = prompt_num_int(answer, 0, 0);
- }
- return (1);
- }
- /*
- * Get the Prime Meridian value and std parallel value
- **** */
- int get_LL_stuff(const struct proj_parm *parm, const struct proj_desc *desc,
- int lat, double *val)
- {
- char answer[200];
- char buff[256];
- /* get LONCEN value arguments */
- if (parm->def_exists == 1) {
- if (lat == 1) {
- G_format_northing(parm->deflt, buff, PROJECTION_LL);
- fprintf(stderr, "\n Enter %s (%s) :", desc->desc, buff);
- }
- else {
- G_format_easting((parm->deflt), buff, PROJECTION_LL);
- fprintf(stderr, "\n Enter %s (%s) :", desc->desc, buff);
- }
- G_gets(answer);
- if (strlen(answer) == 0) {
- *val = parm->deflt;
- return (1);
- }
- }
- else {
- fprintf(stderr, "\n Enter %s :", desc->desc);
- G_gets(answer);
- if (strlen(answer) == 0) {
- *val = 0.0;
- return (0);
- }
- }
- if (lat == 1) {
- if (!get_deg(answer, 1)) {
- return (0);
- }
- }
- else {
- if (!get_deg(answer, 0)) {
- return (0);
- }
- }
- sscanf(answer, "%lf", val);
- return (1);
- }
- double prompt_num_double(char *str, double deflt, int is_default)
- {
- char answer[300];
- double tmp;
- while (1) {
- if (is_default)
- fprintf(stderr, "\n%s [%.10f]: ", str, deflt);
- else
- fprintf(stderr, "\n%s: ", str);
- G_gets(answer);
- G_strip(answer);
- if (strlen(answer) == 0 && is_default)
- return deflt;
- else if (sscanf(answer, "%lf", &tmp) == 1)
- break;
- }
- return tmp;
- }
- int prompt_num_int(char *str, int deflt, int is_default)
- {
- char answer[300];
- int tmp;
- while (1) {
- if (is_default)
- fprintf(stderr, "\n%s [%d]: ", str, deflt);
- else
- fprintf(stderr, "\n%s: ", str);
- G_gets(answer);
- G_strip(answer);
- if (strlen(answer) == 0 && is_default)
- return deflt;
- else if (1 == sscanf(answer, "%d", &tmp))
- break;
- }
- return tmp;
- }
|