static void set_ignores_rgb(ImageStatsRGB *stats, const char *clr) { char buf[128]; sprintf(buf, "%s_ignore_value_checkbutton", clr); stats->have_no_data = get_checked(buf); if (stats->have_no_data) { sprintf(buf, "%s_ignore_value_entry", clr); stats->no_data_value = get_double_from_entry(buf); } else { stats->no_data_value = 0; } sprintf(buf, "%s_ignore_range_checkbutton", clr); stats->have_no_data_range = get_checked(buf); if (stats->have_no_data_range) { sprintf(buf, "%s_ignore_range_min_entry", clr); stats->no_data_min = get_double_from_entry(buf); sprintf(buf, "%s_ignore_range_max_entry", clr); stats->no_data_max = get_double_from_entry(buf); } else { stats->no_data_min = 0; stats->no_data_max = 0; } }
int PluginAutomation::handle_event() { set_checked(!get_checked()); mwindow->edl->session->auto_conf->plugins = get_checked(); mwindow->gui->draw_overlays(1); mwindow->gui->unlock_window(); mwindow->gwindow->gui->update_toggles(1); mwindow->gui->lock_window("PluginAutomation::handle_event"); return 1; }
int ShowTransitions::handle_event() { set_checked(get_checked() ^ 1); mwindow->edl->session->auto_conf->transitions = get_checked(); mwindow->gui->draw_overlays(1); // mwindow->gui->mainmenu->draw_items(); mwindow->gui->unlock_window(); mwindow->gwindow->gui->update_toggles(1); mwindow->gui->lock_window("ShowTransitions::handle_event"); return 1; }
static int get_format() { if (get_checked("format_asf_internal_radiobutton")) return FORMAT_ASF_INTERNAL; else if (get_checked("format_csv_radiobutton")) return FORMAT_CSV; // not reached assert(0); return -1; }
static void update_gs_map_settings() { int on; on = get_checked("rb_gs_custom"); enable_widget("hbox_gs_custom_range", on); on = get_checked("gs_ignore_range_checkbutton"); enable_widget("hbox_gs_ignore_range", on); on = get_checked("gs_ignore_value_checkbutton"); enable_widget("hbox_gs_ignore_value", on); }
int ShowAutomation::handle_event() { set_checked(get_checked() ^ 1); mwindow->edl->session->auto_conf->autos[subscript] = get_checked(); mwindow->gui->canvas->draw_overlays(); mwindow->gui->canvas->flash(); // mwindow->gui->mainmenu->draw_items(); mwindow->gui->unlock_window(); mwindow->gwindow->gui->update_toggles(1); mwindow->gui->lock_window("ShowAutomation::handle_event"); return 1; }
static void set_ignores(ImageInfo *ii, int from_gui) { if (ii->data_ci->data_type == GREYSCALE_FLOAT || ii->data_ci->data_type == GREYSCALE_BYTE) { ImageStats *stats = &ii->stats; if (from_gui) { stats->have_no_data = get_checked("gs_ignore_value_checkbutton"); if (stats->have_no_data) stats->no_data_value = get_double_from_entry("gs_ignore_value_entry"); else stats->no_data_value = 0; stats->have_no_data_range = get_checked("gs_ignore_range_checkbutton"); if (stats->have_no_data_range) { stats->no_data_min = get_double_from_entry("gs_ignore_range_min_entry"); stats->no_data_max = get_double_from_entry("gs_ignore_range_max_entry"); } else { stats->no_data_min = 0; stats->no_data_max = 0; } } else { if (meta_is_valid_double(ii->meta->general->no_data)) { stats->have_no_data = TRUE; stats->no_data_value = ii->meta->general->no_data; } else { stats->have_no_data = FALSE; stats->no_data_value = -99999; // should never be checked } stats->have_no_data_range = FALSE; } } else { if (from_gui) { set_ignores_rgb(&ii->stats_r, "red"); set_ignores_rgb(&ii->stats_g, "green"); set_ignores_rgb(&ii->stats_b, "blue"); } else { ii->stats_r.have_no_data = FALSE; ii->stats_r.have_no_data_range = FALSE; ii->stats_g.have_no_data = FALSE; ii->stats_g.have_no_data_range = FALSE; ii->stats_b.have_no_data = FALSE; ii->stats_b.have_no_data_range = FALSE; } } }
static void set_mapping_rgb(ImageStatsRGB *stats, const char *color) { char buf[64]; sprintf(buf, "rb_%s_truncate", color); if (get_checked(buf)) { stats->truncate = TRUE; return; } stats->truncate = FALSE; sprintf(buf, "rb_%s_minmax", color); if (get_checked(buf)) { stats->map_min = stats->act_min; stats->map_max = stats->act_max; return; } sprintf(buf, "rb_%s_custom", color); if (get_checked(buf)) { sprintf(buf, "%s_custom_min_entry", color); stats->map_min = get_double_from_entry(buf); sprintf(buf, "%s_custom_max_entry", color); stats->map_max = get_double_from_entry(buf); return; } // remaining mappings use the standard deviation... guard against // that being zero (all data identical) if (stats->stddev <= 0) { stats->map_min = stats->avg - 1; stats->map_max = stats->avg + 1; return; } sprintf(buf, "rb_%s_2sigma", color); if (get_checked(buf)) { stats->map_min = stats->avg - 2*stats->stddev; stats->map_max = stats->avg + 2*stats->stddev; return; } sprintf(buf, "rb_%s_3sigma", color); if (get_checked(buf)) { stats->map_min = stats->avg - 3*stats->stddev; stats->map_max = stats->avg + 3*stats->stddev; return; } }
int ShowTitles::handle_event() { set_checked(get_checked() ^ 1); mwindow->edl->session->show_titles = get_checked(); mwindow->gui->update(1, 1, 0, 0, 1, 0, 0); mwindow->gui->unlock_window(); mwindow->gwindow->gui->update_toggles(1); mwindow->gui->lock_window("ShowTitles::handle_event"); return 1; }
static void disable_correct_hbox() { int is_rgb = get_checked("combine_bands_into_rgb_radiobutton"); enable_widget("single_band_as_greyscale_hbox", !is_rgb); enable_widget("combine_bands_into_rgb_hbox", is_rgb); enable_widget("lut_optionmenu", !is_rgb); }
SIGNAL_CALLBACK void on_save_button_clicked(GtkWidget *w) { // save the specified subset! const char *dir = get_string_from_entry("dir_entry"); const char *file = get_string_from_entry("filename_entry"); const char *ext = get_format()==FORMAT_CSV ? "csv" : "img"; if (strlen(file) == 0) { message_box("Please provide a name for the file."); return; } char *save_file = MALLOC(sizeof(char)*(strlen(dir)+strlen(file)+strlen(ext)+5)); if (strlen(dir) > 0) { if (dir[strlen(dir)-1] == DIR_SEPARATOR || dir[strlen(dir)-1] == '/') sprintf(save_file, "%s%s.%s", dir, file, ext); else sprintf(save_file, "%s/%s.%s", dir, file, ext); } else sprintf(save_file, "%s.%s", file, ext); int strict_boundary = get_checked("strict_boundary_checkbutton"); int load = get_checked("load_saved_subset_checkbutton"); int ok; if (get_format()==FORMAT_CSV) { ok = save_as_csv(curr, save_file, get_what_to_save(), strict_boundary, load); } else { assert(get_format()==FORMAT_ASF_INTERNAL); ok = save_as_asf(curr, save_file, get_what_to_save(), strict_boundary, load); } free(save_file); if (ok) close_subset_window(curr); }
SIGNAL_CALLBACK void on_bands_apply_button_clicked(GtkWidget *w) { int ml = get_checked("multilook_checkbutton"); if (!is_multiband) { // multilook checkbox only, single-band data char *f = STRDUP(curr->filename); reload_file_banded(f, NULL, ml); free(f); } else if (get_checked("combine_bands_into_rgb_radiobutton")) { // multiband rgb char *r = get_band_combo_text(curr->meta, "red_combobox"); char *g = get_band_combo_text(curr->meta, "green_combobox"); char *b = get_band_combo_text(curr->meta, "blue_combobox"); char *s = MALLOC(sizeof(char)*(strlen(r)+strlen(g)+strlen(b)+10)); sprintf(s,"%s,%s,%s",r?r:"-",g?g:"-",b?b:"-"); //printf("Load banded: %s, %s\n", g_filename, s); char *f = STRDUP(curr->filename); reload_file_banded(f, s, ml); free(s); FREE(r); FREE(g); FREE(b); free(f); } else { // greyscale char *gs = get_band_combo_text(curr->meta, "single_band_as_greyscale_combobox"); if (gs) { char *f = STRDUP(curr->filename); reload_file_banded(f, gs, ml); FREE(gs); FREE(f); } } }
inline void compare(Point& p, int x, int y, int offsetx, int offsety) { Point other = get_checked(x + offsetx, y + offsety); other.dx += offsetx; other.dy += offsety; other.dist_sq = other.dx*other.dx + other.dy*other.dy; if (other.dist_sq < p.dist_sq) p = other; //int newX = x + offsetx, newY = y + offsety; //if (0 <= newX && 0 <= newY && newX < width && newY < height) //{ // Point newp = data[newX*width + newY]; // newp.dx += offsetx; // newp.dy += offsety; // newp.dist_sq = newp.dx*newp.dx + newp.dy*newp.dy; // if (newp.dist_sq < p.dist_sq) // p = newp; //} }
void process() { clear_results_message(); child_params_t *cp = MALLOC(sizeof(child_params_t)); strcpy(cp->in_file, get_string_from_entry("input_file_entry")); char *odir = get_string_from_entry("output_directory_entry"); char *ofile = get_string_from_entry("output_file_entry"); if (strlen(odir) > 0) { #ifdef win32 if (odir[strlen(odir)-1]=='/' || odir[strlen(odir)-1]=='\\') #else if (odir[strlen(odir)-1]=='/') #endif sprintf(cp->out_file, "%s%s", odir, ofile); else sprintf(cp->out_file, "%s/%s", odir, ofile); } else { strcpy(cp->out_file, ofile); } if (strlen(cp->in_file)==0) { message_box("No input file specified!"); free(cp); return; } else if (strlen(cp->out_file)==0) { message_box("No output file selected!"); free(cp); return; } else if (!fileExists(cp->in_file)) { message_box("Input file \"%s\" not found!", cp->in_file); free(cp); return; } int input_format = get_combo_box_item("input_format_combobox"); int output_format = get_combo_box_item("output_format_combobox"); if (input_format==INPUT_AUTO) { select_defaults_by_file_type(cp->in_file, FALSE); input_format = get_combo_box_item("input_format_combobox"); if (input_format==INPUT_AUTO) { message_box("Can't figure out which type of data this is.\n" "Please select the input format manually."); free(cp); return; } } strcpy(cp->in_format, input_format_to_str(input_format)); strcpy(cp->out_format, output_format_to_str(output_format)); char *logFile = appendExt(cp->out_file, ".log"); #ifdef win32 STARTUPINFO si; PROCESS_INFORMATION pi; memset(&si, 0, sizeof(si)); memset(&pi, 0, sizeof(pi)); si.cb = sizeof(si); char *cmd = MALLOC(sizeof(char)* (strlen(cp->in_file) + strlen(cp->out_file) + strlen(get_asf_bin_dir_win()) + 512)); sprintf(cmd, "\"%s/convert2vector.exe\" " "-log \"%s\" " "-input-format %s -output-format %s \"%s\" \"%s\"", get_asf_bin_dir_win(), logFile, cp->in_format, cp->out_format, cp->in_file, cp->out_file); // clear out any previously existing log file fLog = fopen(logFile, "a"); FCLOSE(fLog); if (!CreateProcess(NULL, cmd, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { DWORD dw = GetLastError(); //printf( "CreateProcess failed (%ld)\n", dw ); LPVOID lpMsgBuf; FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, dw, MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT), (LPTSTR)&lpMsgBuf, 0, NULL); printf("CreateProcess() failed with error %ld: %s\n", dw, (char*)lpMsgBuf); printf("Failed command: %s\n", cmd); } DWORD dwWaitResult; // now wait for process to finish do { while (gtk_events_pending()) gtk_main_iteration(); dwWaitResult = WaitForSingleObject(pi.hProcess, 50); } while (dwWaitResult == WAIT_TIMEOUT); #else asfFork(child_func, (void*)cp, parent_func, NULL); #endif char message[1024]; strcpy(message, "-"); int success=FALSE; FILE *lfp = fopen(logFile, "r"); if (!lfp) { sprintf(message, "Error Opening Log File '%s': %s\n", logFile, strerror(errno)); } else { char *output = NULL; char line[1024]; while (fgets(line, 1024, lfp)) { if (output) { output = realloc(output, sizeof(char)*(strlen(output)+strlen(line)+1)); strcat(output, line); } else { output = malloc(sizeof(char)*(strlen(line)+1)); strcpy(output, line); } } fclose(lfp); //unlink(logFile); char *p = output, *q; while (p) { q = strchr(p+1, '\n'); if (q) { *q = '\0'; if (strstr(p, "Error")!=NULL || strstr(p, "ERROR")!=NULL) { *q = '\n'; int i,n = 0; do { p = q + 1; q = strchr(p, '\n') - 1; while (isspace(*q)) --q; if (q - p > 2) { // First 220 characters of the error string, unless line ends // first. Don't cut off in the middle of a word, though strcpy(message, "Error: "); strncat(message, p, 220); while (isalnum(message[strlen(message)-1])) message[strlen(message)-1] = '\0'; for (n=0; n<strlen(message); ++n) if (message[n] == '\n' || message[n] == '*') message[n] = ' '; int eating=FALSE; for (n=0,i=0; n<strlen(message); ++n) { if (isspace(message[n])) { if (!eating) { eating=TRUE; message[i++] = message[n]; } } else { eating=FALSE; message[i++] = message[n]; } } message[i]='\0'; char *eoe = strstr(message, "End of error"); if (eoe) *eoe = '\0'; else if (strlen(message)>200) strcat(message, " ..."); break; } } while (*p != '*' && ++n<5); // * flags the end of the error message } if (strstr(p,"Successful completion!") != NULL) { strcpy(message, "Processed successfully!"); success=TRUE; break; } *q = '\n'; } p=q; } if (strlen(message)==0) { // Did not find an error message, or the success message! // So, assume there was an error, but we don't know why strcpy(message, "Processing failed!"); } FREE(output); } int open_output = get_checked("open_output_checkbutton"); if (!success) open_output = FALSE; put_string_to_label("result_label", message); asfPrintStatus(message); asfPrintStatus("\n\nDone.\n\n"); if (open_output) { switch (output_format) { case OUTPUT_KML: open_in_google_earth(cp->out_file); break; case OUTPUT_ALOS_CSV: open_in_excel(cp->out_file); default: // do nothing, output type has no natural associated app break; } } free(cp); }
static void set_mapping(ImageInfo *ii, int from_gui) { if (ii->data_ci->data_type == GREYSCALE_FLOAT || ii->data_ci->data_type == GREYSCALE_BYTE) { ImageStats *stats = &(ii->stats); if (from_gui) { if (get_checked("rb_gs_minmax")) { stats->map_min = stats->act_min; stats->map_max = stats->act_max; stats->truncate = FALSE; } else if (get_checked("rb_gs_truncate")) { stats->truncate = TRUE; } else if (get_checked("rb_gs_custom")) { stats->map_min = get_double_from_entry("gs_custom_min_entry"); stats->map_max = get_double_from_entry("gs_custom_max_entry"); stats->truncate = FALSE; } else if (stats->stddev <= 0) { stats->map_min = stats->avg - 1; stats->map_max = stats->avg + 1; stats->truncate = FALSE; } else if (get_checked("rb_gs_2sigma")) { stats->map_min = stats->avg - 2*stats->stddev; stats->map_max = stats->avg + 2*stats->stddev; stats->truncate = FALSE; } else if (get_checked("rb_gs_3sigma")) { stats->map_min = stats->avg - 3*stats->stddev; stats->map_max = stats->avg + 3*stats->stddev; stats->truncate = FALSE; } } else { // initialize to defaults stats->truncate = FALSE; if (stats->stddev <= 0) { stats->map_min = stats->avg - 1; stats->map_max = stats->avg + 1; } else { stats->map_min = stats->avg - 2*stats->stddev; stats->map_max = stats->avg + 2*stats->stddev; } } } else { if (from_gui) { set_mapping_rgb(&ii->stats_r, "red"); set_mapping_rgb(&ii->stats_g, "green"); set_mapping_rgb(&ii->stats_b, "blue"); } else { if(ii->data_ci->data_type == RGB_FLOAT) { // Default to 2sigma byte conversion when dealing with RGB_FLOAT images ii->stats_r.truncate = ii->stats_g.truncate = ii->stats_b.truncate = FALSE; ii->stats_r.map_min = ii->stats_r.avg - 2*ii->stats_r.stddev; ii->stats_r.map_max = ii->stats_r.avg + 2*ii->stats_r.stddev; ii->stats_g.map_min = ii->stats_g.avg - 2*ii->stats_g.stddev; ii->stats_g.map_max = ii->stats_g.avg + 2*ii->stats_g.stddev; ii->stats_b.map_min = ii->stats_b.avg - 2*ii->stats_b.stddev; ii->stats_b.map_max = ii->stats_b.avg + 2*ii->stats_b.stddev; } else { set_mapping_defaults_rgb(&ii->stats_r); set_mapping_defaults_rgb(&ii->stats_g); set_mapping_defaults_rgb(&ii->stats_b); } } } }
int AutosFollowEdits::handle_event() { mwindow->edl->session->autos_follow_edits ^= 1; set_checked(!get_checked()); return 1; }
int PluginsFollowEdits::handle_event() { set_checked(get_checked() ^ 1); mwindow->edl->session->plugins_follow_edits = get_checked(); return 1; }
int LabelsFollowEdits::handle_event() { set_checked(get_checked() ^ 1); mwindow->set_labels_follow_edits(get_checked()); return 1; }
int TransitionPopupOn::handle_event() { popup->transition->on = !get_checked(); mwindow->sync_parameters(CHANGE_EDL); return 1; }