static UI_MENU_CALLBACK(save_movie_callback) { char *name = NULL; int width; int height; if (activated) { if (!ffmpeg_drv) { ui_error("FFMPEG not available."); return NULL; } name = sdl_ui_file_selection_dialog("Choose movie file", FILEREQ_MODE_SAVE_FILE); if (name != NULL) { width = sdl_active_canvas->draw_buffer->draw_buffer_width; height = sdl_active_canvas->draw_buffer->draw_buffer_height; memcpy(sdl_active_canvas->draw_buffer->draw_buffer, sdl_ui_get_draw_buffer(), width * height); util_add_extension(&name, ffmpeg_drv->default_extension); if (screenshot_save("FFMPEG", name, sdl_active_canvas) < 0) { ui_error("Cannot save movie."); } lib_free(name); return sdl_menu_text_exit_ui; } } return NULL; }
static UI_MENU_CALLBACK(save_screenshot_callback) { char title[20]; char *name = NULL; int width; int height; gfxoutputdrv_t *selected_driver = NULL; if (activated) { sprintf(title, "Choose %s file", (char *)param); name = sdl_ui_file_selection_dialog(title, FILEREQ_MODE_SAVE_FILE); if (name != NULL) { width = sdl_active_canvas->draw_buffer->draw_buffer_width; height = sdl_active_canvas->draw_buffer->draw_buffer_height; memcpy(sdl_active_canvas->draw_buffer->draw_buffer, sdl_ui_get_draw_buffer(), width * height); selected_driver = gfxoutput_get_driver((char *)param); util_add_extension(&name, selected_driver->default_extension); if (screenshot_save((char *)param, name, sdl_active_canvas) < 0) { ui_error("Cannot save screenshot."); } lib_free(name); } } return NULL; }
void screenshot_try_reopen(void) { if (reopen == 1) { screenshot_save(reopen_recording_drivername, reopen_filename, reopen_recording_canvas); } reopen = 0; }
static int save_screenshot(trapaction_t *act) { // FIXME! const HWND owner = (HWND)WinDefFileDlgProc(act->hwnd, WM_QUERYFOCUSCHAIN, (MPARAM)QFC_NEXTINCHAIN, 0); video_canvas_t *canvas = (video_canvas_t*)WinQueryWindowPtr(owner, QWL_USER); char drv[4]; strupr(strcpy(drv, act->path + strlen(act->path) - 3)); return screenshot_save(drv, act->path, canvas); }
static char *screenshot_save_file(char *screenshot_type, char *screenshot_save_failed, char *screenshot_save_success) { if (file_name == NULL || *file_name == 0) { tui_error("Specify a file name first."); return NULL; } if (!util_file_exists(file_name) || tui_ask_confirmation("The specified file already exists. Replace? (Y/N)")) { if (screenshot_save(screenshot_type, file_name, last_canvas) < 0) { tui_error(screenshot_save_failed); } else { tui_message(screenshot_save_success); } } return NULL; }
int ui_screenshot_dialog(char *name, struct video_canvas_s *wid) { int res, i; char *fn, *tmp; const char *driver, *ext; if (screenshot_dialog) { gdk_window_show(screenshot_dialog->window); gdk_window_raise(screenshot_dialog->window); gtk_widget_show(screenshot_dialog); } else { screenshot_dialog = build_screenshot_dialog(); if (screenshot_dialog) g_signal_connect(G_OBJECT(screenshot_dialog), "destroy", G_CALLBACK(gtk_widget_destroyed), &screenshot_dialog); else return -1; } ui_popup(screenshot_dialog, _("Save Screenshot"), FALSE); res = gtk_dialog_run(GTK_DIALOG(screenshot_dialog)); ui_popdown(screenshot_dialog); if (res != GTK_RESPONSE_ACCEPT) return -1; fn = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(fileentry)); if (!fn) { ui_error(_("Invalid filename")); return -1; } i = gtk_combo_box_get_active(GTK_COMBO_BOX(drv_menu)); if (i < 0) return -1; driver = buttons[i].driver; ext = buttons[i].ext; #ifdef HAVE_FFMPEG if (strcmp(driver, "FFMPEG") == 0) { int audio_bitrate, video_bitrate; audio_bitrate = (int) gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(ffmpg_audio)); resources_set_int("FFMPEGAudioBitrate", audio_bitrate); video_bitrate = (int) gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(ffmpg_video)); resources_set_int("FFMPEGVideoBitrate", video_bitrate); resources_set_string("FFMPEGFormat", selected_driver); resources_set_int("FFMPEGAudioCodec", selected_ac); resources_set_int("FFMPEGVideoCodec", selected_vc); log_message(LOG_DEFAULT, "FFMPEG: Driver: %s, ac: %d, vc: %d\n", selected_driver, selected_ac, selected_vc); } #endif tmp = lib_stralloc(fn); lib_free(fn); if (!util_get_extension(tmp)) util_add_extension(&tmp, ext); if (screenshot_save(driver, tmp, wid) < 0) { ui_error(_("Couldn't write screenshot to `%s' with driver `%s'."), tmp, driver); lib_free(tmp); return -1; } else { if (screenshot_is_recording()) gtk_widget_show(video_ctrl_checkbox); ui_message(_("Successfully wrote `%s'"), tmp); lib_free(tmp); } return 0; }