#include #include #include #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; }