Exemple #1
0
// 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);
}
Exemple #2
0
//-------------------------------------------------------------------
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);
        }
    }
}
Exemple #3
0
static int luaCB_get_zoom( lua_State* L )
{
    lua_pushnumber( L, shooting_get_zoom() );
    return 1;
}