// saves the actual active overlay data to a file. void save_edge_overlay(void) { char fn[64]; char msg[64]; FILE *fd; DIR* d; int fnum = 0; int fr = 0; int zoom = 0; struct dirent* de; static struct utimbuf t; // nothing to save? then dont save if( !is_buffer_ready() ) { draw_string(0, 0, "No overlay to save.", user_color(conf.osd_color)); return; } zoom = shooting_get_zoom(); // first figure out the most appropriate filename to use d = opendir(EDGE_SAVE_DIR); if( ! d ) { return; } while( (de = readdir(d)) ) { fr = get_edge_file_num(de->d_name); if( fr > fnum ) { fnum = fr; } } ++fnum; // the highest is set, we use the next one get_viewport_size(); // open the right file sprintf(fn, EDGE_SAVE_DIR "/" EDGE_FILE_FORMAT, fnum ); fd = fopen(fn, "wb"); if(fd !=NULL) { // write the data fwrite(edgebuf->ptr,edgebuf->ptrLen,1,fd); fwrite(&zoom,sizeof(zoom),1,fd); fclose(fd); t.actime = t.modtime = time(NULL); utime(fn, &t); sprintf(msg, "Saved as %s",fn); draw_string(0, 0, msg, user_color(conf.osd_color)); } closedir(d); }
//------------------------------------------------------------------- static void gui_osd_draw_values(int is_osd_edit, int is_zebra) { if (is_osd_edit || (camera_info.state.mode_rec_or_review && conf.show_values)) { // showtype // 1 - show all values // 2 - show DOF values only (for zebra & MF) int showtype = 0; if (!is_zebra && ((conf.show_values==SHOW_MISC_ALWAYS && camera_info.state.mode_photo) || ((camera_info.state.mode_video || is_video_recording()) && conf.show_values_in_video) || ((camera_info.state.is_shutter_half_press || (recreview_hold==1)) && (conf.show_values==SHOW_MISC_SHOOT)))) showtype = 1; else if (is_zebra || (shooting_get_common_focus_mode() && camera_info.state.mode_photo && conf.show_values && !((conf.show_dof==DOF_SHOW_IN_DOF) || (conf.show_dof==DOF_SHOW_IN_DOF_EX)))) showtype = 2; if (conf.values_show_real_iso || conf.values_show_market_iso || conf.values_show_ev_seted || conf.values_show_ev_measured || conf.values_show_bv_measured || conf.values_show_bv_seted || conf.values_show_overexposure || conf.values_show_canon_overexposure || conf.values_show_luminance) gui_osd_calc_expo_param(); m = 0; short f_ex = (conf.show_dof==DOF_SHOW_IN_MISC_EX); if (((conf.show_dof==DOF_SHOW_IN_MISC) || f_ex) && showtype && !is_osd_edit) { if (conf.dof_subj_dist_in_misc) gui_print_osd_dof_string_dist("SD :", camera_info.dof_values.subject_distance, f_ex && (camera_info.dof_values.distance_valid || shooting_get_focus_mode()), 0); if (conf.dof_near_limit_in_misc) gui_print_osd_dof_string_dist("NL :", camera_info.dof_values.near_limit, f_ex && camera_info.dof_values.distance_valid, 0); if (conf.dof_far_limit_in_misc) gui_print_osd_dof_string_dist("FL :", camera_info.dof_values.far_limit, f_ex && camera_info.dof_values.distance_valid, 0); if (conf.dof_depth_in_misc) gui_print_osd_dof_string_dist("DOF:", camera_info.dof_values.depth_of_field, f_ex && camera_info.dof_values.distance_valid, 0); if (conf.dof_hyperfocal_in_misc) gui_print_osd_dof_string_dist("HYP:", camera_info.dof_values.hyperfocal_distance, f_ex && camera_info.dof_values.hyperfocal_valid, 1); } if ((showtype == 1) || is_osd_edit) { if (conf.values_show_zoom || is_osd_edit) { int fl, zp=shooting_get_zoom(), fl1=get_focal_length(zp); switch (conf.zoom_value) { case ZOOM_SHOW_FL: sprintf(osd_buf, "Z:%d.%dmm%8s", fl1/1000, fl1%1000/100, ""); break; case ZOOM_SHOW_EFL: fl=get_effective_focal_length(zp); // scale by users adapter lens eg. Canon Wide .42 or Canon Tele 1.75 fl = fl * conf.zoom_scale / 100; sprintf(osd_buf, "Z:%3dmm%8s", fl/1000, ""); break; case ZOOM_SHOW_X: default: fl=get_zoom_x(zp); sprintf(osd_buf, "Z:%d/%d.%dx%8s", zp, fl/10, fl%10, ""); break; } gui_print_osd_misc_string(); } if (conf.values_show_real_aperture || is_osd_edit) gui_print_osd_misc_string_float("Av :%d.%02d ", 100, shooting_get_real_aperture()/10); int iso_mode = shooting_get_iso_mode(); if ((iso_mode <= 0) || !(conf.values_show_iso_only_in_autoiso_mode)) { if (conf.values_show_real_iso) gui_print_osd_misc_string_int("I-R:", expo.iso); if (conf.values_show_market_iso) gui_print_osd_misc_string_int("I-M:", expo.iso_market); } if (conf.values_show_bv_measured) gui_print_osd_misc_string_canon_values("Bvm:", expo.bv96_measured ); if (conf.values_show_bv_seted) gui_print_osd_misc_string_canon_values("Bvs:", expo.bv96_seted ); if (conf.values_show_ev_measured) gui_print_osd_misc_string_canon_values("Evm:", expo.ev96_measured); if (conf.values_show_ev_seted) gui_print_osd_misc_string_canon_values("Evs:", expo.ev96_seted ); if (conf.values_show_overexposure) gui_print_osd_misc_string_canon_values("dE :", expo.dev96); if (conf.values_show_canon_overexposure) gui_print_osd_misc_string_canon_values("dEc:", expo.dev96_canon); if (conf.values_show_luminance) gui_print_osd_misc_string_float("B :%d.%02d", 100, expo.b); } } }
static int luaCB_get_zoom( lua_State* L ) { lua_pushnumber( L, shooting_get_zoom() ); return 1; }