static int read_geoid(void) { int x,y; FILE *f=fopen_share_file("WW15MGH.DAC","rb"); for (y=0;y<h;y++) for (x=0;x<w;x++) { signed char hi=fgetc(f); unsigned char lo=fgetc(f); float height=((hi<<8)+lo)*(1.0/100); *(geoid_heights + y*w + x) = height; } fclose(f); return 0; }
SIGNAL_CALLBACK void on_help_button_clicked(GtkWidget *widget) { #ifdef win32 char pdf_dir[1024], pdf_file[128], pdf_viewer[1024]; snprintf(pdf_dir, 1023, "%s/doc/", get_asf_share_dir()); strcpy(pdf_file, "mapready_manual.pdf"); //printf("pdf: %s/%s\n", pdf_dir, pdf_file); FindExecutable((LPCTSTR)pdf_file, (LPCTSTR)pdf_dir, (LPTSTR)pdf_viewer); printf("Found PDF Viewer: %s\n", pdf_viewer); if (strlen(pdf_viewer)) { asfSystem_NoWait("\"%s\" \"%s/%s\"", pdf_viewer, pdf_dir, pdf_file); } else { message_box("Couldn't find path to a PDF Viewer!"); } #else GtkWidget *help_dialog; GtkWidget *help_text; GtkTextBuffer * text_buffer; FILE * help_file; gchar * help_filename; help_dialog = get_widget_checked("help_dialog"); help_text = get_widget_checked("help_text"); text_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(help_text)); gtk_text_buffer_set_text(text_buffer, "", -1); help_filename = "mapready.txt"; //help_file = fopen(help_filename, "rt"); help_file = fopen_share_file(help_filename, "rt"); if (help_file) { int line_count = 0; gchar * buffer = (gchar *) g_malloc(sizeof(gchar) * max_line_len); while (!feof(help_file)) { gchar *p = fgets(buffer, max_line_len, help_file); if (p) { if (strlen(p)) line_count++; GtkTextIter end; gchar * q = strstr(buffer, "$VERSION"); if (q) { gchar * r = g_strdup(q + 8); /* 8 = length of '$VERSION' */ strcpy(q, MAPREADY_VERSION_STRING); strcat(buffer, r); g_free(r); } gtk_text_buffer_get_end_iter(text_buffer, &end); gtk_text_buffer_insert(text_buffer, &end, buffer, -1); } } if (!line_count) { sprintf(buffer, "\n\n ERROR: Empty help file (mapready.txt) in share folder\n(%s)\n", get_asf_share_dir()); GtkTextIter end; gtk_text_buffer_get_end_iter(text_buffer, &end); gtk_text_buffer_insert(text_buffer, &end, buffer, -1); } fclose(help_file); g_free(buffer); } else { // No help file found gchar *buffer = (gchar *) g_malloc(sizeof(gchar) * max_line_len); strcpy(buffer, "\n\n ERROR: Cannot find help file (mapready.txt) in share folder.\n"); GtkTextIter end; gtk_text_buffer_get_end_iter(text_buffer, &end); gtk_text_buffer_insert(text_buffer, &end, buffer, -1); g_free(buffer); } gtk_widget_show(help_dialog); #endif }
SIGNAL_CALLBACK void on_help_button_clicked(GtkWidget *widget) { #ifdef win32 char hh[1024]; // First method, get location of help viewer from the standard registry location get_string_from_registry_ex("SOFTWARE\\Classes\\chm.file\\shell\\open\\command", "", hh); if (strlen(hh) > 0) { char *p = strstr(hh, "%1"); if (p) *p = '\0'; char * escaped_share_dir = escapify(get_asf_share_dir()); strcat(hh, escaped_share_dir); strcat(hh, "/mapready.chm"); FREE(escaped_share_dir); } // Failed to find location of hh.exe through registry... try the system directory char *sr = getenv("SYSTEMROOT"); if (strlen(sr) > 0) { int i, j = 0; for (i = 0; i < strlen(sr); ++i) { switch(sr[i]) { case '\\': hh[j] = '\\'; hh[j+1] = '\\'; ++j; break; default: hh[j] = sr[i]; break; } ++j; } hh[j] = '\0'; strcat(hh, "/hh.exe "); char * escaped_share_dir = escapify(get_asf_share_dir()); strcat(hh, escaped_share_dir); strcat(hh, "/mapready.chm"); FREE(escaped_share_dir); } if (strlen(hh)>0) { static GThreadPool *ttp = NULL; GError *err = NULL; if (!ttp) { if (!g_thread_supported ()) g_thread_init (NULL); ttp = g_thread_pool_new ((GFunc)help_viewer_thread, NULL, 4, TRUE, &err); g_assert(!err); } g_thread_pool_push (ttp, g_string_new (hh), &err); g_assert(!err); } else { // Failed, give up. message_box("Couldn't find the help viewer!"); } #else GtkWidget *help_dialog; GtkWidget *help_text; GtkTextBuffer * text_buffer; FILE * help_file; gchar * help_filename; help_dialog = get_widget_checked("help_dialog"); help_text = get_widget_checked("help_text"); text_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(help_text)); gtk_text_buffer_set_text(text_buffer, "", -1); help_filename = "mapready.txt"; //help_file = fopen(help_filename, "rt"); help_file = fopen_share_file(help_filename, "rt"); if (help_file) { int line_count = 0; gchar * buffer = (gchar *) g_malloc(sizeof(gchar) * max_line_len); while (!feof(help_file)) { gchar *p = fgets(buffer, max_line_len, help_file); if (p) { if (strlen(p)) line_count++; GtkTextIter end; gchar * q = strstr(buffer, "$VERSION"); if (q) { gchar * r = g_strdup(q + 8); /* 8 = length of '$VERSION' */ strcpy(q, MAPREADY_VERSION_STRING); strcat(buffer, r); g_free(r); } gtk_text_buffer_get_end_iter(text_buffer, &end); gtk_text_buffer_insert(text_buffer, &end, buffer, -1); } } if (!line_count) { sprintf(buffer, "\n\n ERROR: Empty help file (mapready.txt) in share folder\n(%s)\n", get_asf_share_dir()); GtkTextIter end; gtk_text_buffer_get_end_iter(text_buffer, &end); gtk_text_buffer_insert(text_buffer, &end, buffer, -1); } fclose(help_file); g_free(buffer); } else { // No help file found gchar *buffer = (gchar *) g_malloc(sizeof(gchar) * max_line_len); strcpy(buffer, "\n\n ERROR: Cannot find help file (mapready.txt) in share folder.\n"); GtkTextIter end; gtk_text_buffer_get_end_iter(text_buffer, &end); gtk_text_buffer_insert(text_buffer, &end, buffer, -1); g_free(buffer); } gtk_widget_show(help_dialog); #endif }