Diff of /trunk/src/pos.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 40 by harbaum, Sun Jan 18 19:43:20 2009 UTC revision 221 by harbaum, Mon Jul 13 14:29:58 2009 UTC
# Line 24  Line 24 
24  #define TAG_STATE  GTK_STATE_PRELIGHT  #define TAG_STATE  GTK_STATE_PRELIGHT
25    
26  void pos_lat_str(char *str, int len, pos_float_t latitude) {  void pos_lat_str(char *str, int len, pos_float_t latitude) {
27    snprintf(str, len-1, "%.5f", latitude);    if(isnan(latitude))
28    /* eliminate trailing zeros */      strcpy(str, "---");
29    if((strchr(str, '.') != NULL) || (strchr(str, ',') != NULL)) {    else {
30      char *p = str+strlen(str)-1;      snprintf(str, len-1, "%.5f", latitude);
31      while(*p == '0') *p-- = 0;  
32      if((*p == '.')||(*p == ','))      /* eliminate trailing zeros */
33        *p = 0;      if((strchr(str, '.') != NULL) || (strchr(str, ',') != NULL)) {
34          char *p = str+strlen(str)-1;
35          while(*p == '0') *p-- = 0;
36          if((*p == '.')||(*p == ','))
37            *p = 0;
38        }
39    }    }
40    strcat(str, "°");    strcat(str, "°");
41  }  }
42    
43  void pos_lon_str(char *str, int len, pos_float_t longitude) {  void pos_lon_str(char *str, int len, pos_float_t longitude) {
44    snprintf(str, len-1, "%.5f", longitude);    if(isnan(longitude))
45    /* eliminate trailing zeros */      strcpy(str, "---");
46    if((strchr(str, '.') != NULL) || (strchr(str, ',') != NULL)) {    else {
47      char *p = str+strlen(str)-1;      snprintf(str, len-1, "%.5f", longitude);
48      while(*p == '0') *p-- = 0;  
49      if((*p == '.')||(*p == ','))      /* eliminate trailing zeros */
50        *p = 0;      if((strchr(str, '.') != NULL) || (strchr(str, ',') != NULL)) {
51          char *p = str+strlen(str)-1;
52          while(*p == '0') *p-- = 0;
53          if((*p == '.')||(*p == ','))
54            *p = 0;
55        }
56    }    }
57    strcat(str, "°");    strcat(str, "°");
58  }  }
# Line 194  void lpos2pos(bounds_t *bounds, lpos_t * Line 204  void lpos2pos(bounds_t *bounds, lpos_t *
204  }  }
205    
206  void pos_dist_str(char *str, int len, pos_float_t dist, gboolean is_mil) {  void pos_dist_str(char *str, int len, pos_float_t dist, gboolean is_mil) {
207    /* is this to be displayed as miles? */    if(isnan(dist))
208    if(is_mil) dist /= KMPMIL;  // kilometer per mile      strcpy(str, "---");
209      else {
210    snprintf(str, len, "%.4f", dist);      /* is this to be displayed as miles? */
211    /* eliminate trailing zeros */      if(is_mil) dist /= KMPMIL;  // kilometer per mile
212    if((strchr(str, '.') != NULL) || (strchr(str, ',') != NULL)) {  
213      char *p = str+strlen(str)-1;      snprintf(str, len, "%.4f", dist);
214      while(*p == '0') *p-- = 0;      /* eliminate trailing zeros */
215      if((*p == '.')||(*p == ','))      if((strchr(str, '.') != NULL) || (strchr(str, ',') != NULL)) {
216        *p = 0;        char *p = str+strlen(str)-1;
217          while(*p == '0') *p-- = 0;
218          if((*p == '.')||(*p == ','))
219            *p = 0;
220        }
221    }    }
222  }  }
223    

Legend:
Removed from v.40  
changed lines
  Added in v.221