Exemplo n.º 1
0
//-------------------------------------------------------------------
void gui_osd_draw_raw_info(int is_osd_edit) 
{
    if (is_osd_edit ||
        (conf.save_raw && conf.show_raw_state && 
         !camera_info.state.mode_video && !camera_info.state.is_shutter_half_press && 
         camera_info.state.mode_rec_or_review
        )
       )
    {
        static int b;
        if (is_raw_enabled() || is_osd_edit)
        { 
            int raw_count = GetRawCount();
            twoColors col = user_color(((raw_count > conf.remaining_raw_treshold) || (b <= 6)) ? conf.osd_color : conf.osd_color_warn);
            if (conf.show_remaining_raw || is_osd_edit) 
            {
                sprintf(osd_buf, "%s:%3d", (conf.dng_raw)?"DNG":"RAW", raw_count);
                draw_osd_string(conf.mode_raw_pos, 0, 0, osd_buf, col, conf.mode_raw_scale);
            }
            else
                draw_osd_string(conf.mode_raw_pos, 0, 0, (conf.dng_raw)?"DNG":"RAW", col, conf.mode_raw_scale);
            if (++b > 12) b = 0;
        }   
        else if (conf.raw_exceptions_warn)
        {
            gui_print_osd_state_string_chr((conf.dng_raw)?"DNG Disabled":"RAW Disabled",""); 
        }
    }
}
Exemplo n.º 2
0
void gui_osd_draw_clock(int x, int y, twoColors cl, int is_osd_edit)
{
    if (conf.show_clock || is_osd_edit)
    {
        static char *ampm[2][3] = { { " AM", "A", " "}, { " PM", "P", "." } };

        struct tm *ttm = get_localtime();

        int w = 0;          // Extra width from AM/PM indicator and seconds (if displayed)

        if ((FG_COLOR(cl) == 0) && (BG_COLOR(cl) == 0)) cl = user_color(conf.osd_color);

        if ((camera_info.state.is_shutter_half_press == 0) || (conf.clock_halfpress == 0) || is_osd_edit)
        {
            unsigned int hour = (ttm->tm_hour);
            char *ampm_ind = "";    // AM / PM indicator

            if (conf.clock_format == CLOCK_FORMAT_12)
            {
                ampm_ind = ampm[hour/12][conf.clock_indicator]; //(hour >= 12) ? pm : am; 
                w = strlen(ampm_ind);
                if (hour == 0)
                    hour = 12;
                else if (hour > 12)
                    hour = hour - 12;
            }

            if ((conf.show_clock != CLOCK_WITHOUT_SEC) || is_osd_edit)
            {
                sprintf(osd_buf, "%2u:%02u:%02u%s", hour, ttm->tm_min, ttm->tm_sec, ampm_ind);
                w += 3;
            }
            else
            {
                sprintf(osd_buf, "%2u:%02u%s", hour, ttm->tm_min, ampm_ind);
            }

            if (x)  // for gui_4wins.c
                draw_string(x, y, osd_buf, cl);
            else
                draw_osd_string(conf.clock_pos, 0, 0, osd_buf, cl, conf.clock_scale);
        }
        else if (camera_info.state.is_shutter_half_press && (conf.clock_halfpress == 1))
        {
            sprintf(osd_buf, "%02u", ttm->tm_sec);
            if (conf.clock_pos.x >= 4*FONT_WIDTH) w = 3;
            draw_osd_string(conf.clock_pos, w*FONT_WIDTH, 0, osd_buf, cl, conf.clock_scale);
        }
    }
}
Exemplo n.º 3
0
//-------------------------------------------------------------------
static void draw_temp(char *lbl, int val, int yofst)
{
    if (conf.temperature_unit != 0)
        val = (val*18+320)/10;
    sprintf(osd_buf,"%s: %i\xb0",lbl, val);
    draw_osd_string(conf.temp_pos, 0, yofst*FONT_HEIGHT, osd_buf, user_color(conf.osd_color), conf.temp_scale);
}
Exemplo n.º 4
0
static void gui_print_osd_misc_string()
{
    sprintf(osd_buf+strlen(osd_buf), "%9s", "");
    osd_buf[9]=0;  // limit length to 9 max
    draw_osd_string(conf.values_pos, 0, m, osd_buf, user_color(conf.osd_color), conf.values_scale);
    m+=FONT_HEIGHT;
}
Exemplo n.º 5
0
static void gui_print_osd_state_string()
{
    sprintf(osd_buf+strlen(osd_buf), "%12s", "");
    osd_buf[12]=0;  // limit length to 12 max
    draw_osd_string(conf.mode_state_pos, 0, n, osd_buf, user_color(conf.osd_color_override), conf.mode_state_scale);
    n+=FONT_HEIGHT;
}
Exemplo n.º 6
0
static void gui_print_osd_dof_string_dist(const char * title, int value, short use_good_color, short is_hyp) {
  strcpy(osd_buf, title);
  int i=strlen(osd_buf);
  if (i<8) {
    draw_osd_string(conf.values_pos, 0, m, osd_buf, conf.osd_color, conf.values_scale);
    if (is_hyp) {
        sprintf_dist_hyp(osd_buf, value);
    } else {
        sprintf_dist(osd_buf, value);
    }
    sprintf(osd_buf+strlen(osd_buf), "%9s", "");
    osd_buf[9-i]=0;
    draw_osd_string(conf.values_pos, i*FONT_WIDTH, m, osd_buf, use_good_color?((conf.osd_color & 0xff00) | COLOR_HISTO_G):conf.osd_color, conf.values_scale);
  } else {
    osd_buf[9]=0;
    draw_osd_string(conf.values_pos, 0, m, osd_buf, conf.osd_color,conf.values_scale);
  }
  m+=FONT_HEIGHT;
}
Exemplo n.º 7
0
static void gui_print_osd_dof_string_dist(const char * title, int value, short use_good_color, short is_hyp) {
  strcpy(osd_buf, title);
  int i=strlen(osd_buf);
  twoColors col = user_color(conf.osd_color);
  twoColors valid_col = MAKE_COLOR(BG_COLOR(col), COLOR_GREEN);
  if (i<8) {
    draw_osd_string(conf.values_pos, 0, m, osd_buf, col, conf.values_scale);
    if (is_hyp) {
        sprintf_dist_hyp(osd_buf, value);
    } else {
        sprintf_dist(osd_buf, value);
    }
    sprintf(osd_buf+strlen(osd_buf), "%9s", "");
    osd_buf[9-i]=0;
    draw_osd_string(conf.values_pos, i*FONT_WIDTH, m, osd_buf, use_good_color?valid_col:col, conf.values_scale);
  } else {
    osd_buf[9]=0;
    draw_osd_string(conf.values_pos, 0, m, osd_buf, col,conf.values_scale);
  }
  m+=FONT_HEIGHT;
}
Exemplo n.º 8
0
void gui_osd_draw_dof(int is_osd_edit) 
{
    if (conf.show_dof != DOF_DONT_SHOW)
        shooting_update_dof_values();

    if (is_osd_edit ||
        (camera_info.state.mode_rec_or_review && ((conf.show_dof == DOF_SHOW_IN_DOF) || (conf.show_dof == DOF_SHOW_IN_DOF_EX)) &&
         (((camera_info.state.is_shutter_half_press || camera_info.state.state_kbd_script_run || shooting_get_common_focus_mode()) &&
           (camera_info.state.mode_photo || camera_info.state.mode_shooting==MODE_STITCH)) ||
          ((camera_info.state.mode_video || is_video_recording()) && conf.show_values_in_video))))
    {
        twoColors col = user_color(conf.osd_color);
        twoColors valid_col = MAKE_COLOR(BG_COLOR(col), COLOR_GREEN);
        int i = 8, j;
        short f_ex = (conf.show_dof==DOF_SHOW_IN_DOF_EX);
        draw_osd_string(conf.dof_pos, 0, 0, "S/NL/FL:", col, conf.dof_scale);
        sprintf_dist(osd_buf, camera_info.dof_values.subject_distance);
        j = strlen(osd_buf);
        draw_osd_string(conf.dof_pos, i*FONT_WIDTH, 0, osd_buf, (f_ex && (camera_info.dof_values.distance_valid || shooting_get_focus_mode()))?valid_col:col, conf.dof_scale);
        i = i+j;
        draw_osd_string(conf.dof_pos, i*FONT_WIDTH, 0, "/", col, conf.dof_scale);
        sprintf_dist(osd_buf, camera_info.dof_values.near_limit);
        j = strlen(osd_buf);
        draw_osd_string(conf.dof_pos, (++i)*FONT_WIDTH, 0, osd_buf, (f_ex && camera_info.dof_values.distance_valid)?valid_col:col, conf.dof_scale);
        i = i+j;
	    draw_osd_string(conf.dof_pos, i*FONT_WIDTH, 0, "/", col, conf.dof_scale);
        sprintf_dist(osd_buf, camera_info.dof_values.far_limit);
	    draw_osd_string(conf.dof_pos, (++i)*FONT_WIDTH, 0, osd_buf, (f_ex && camera_info.dof_values.distance_valid)?valid_col:col, conf.dof_scale);
        i = 8;
	    draw_osd_string(conf.dof_pos, 0, FONT_HEIGHT, "DOF/HYP:", col, conf.dof_scale);
        sprintf_dist(osd_buf, camera_info.dof_values.depth_of_field);
        j = strlen(osd_buf);
	    draw_osd_string(conf.dof_pos, i*FONT_WIDTH, FONT_HEIGHT, osd_buf, (f_ex && camera_info.dof_values.distance_valid)?valid_col:col, conf.dof_scale);
        i = i+j;
	    draw_osd_string(conf.dof_pos, i*FONT_WIDTH, FONT_HEIGHT, "/", col, conf.dof_scale);
        sprintf_dist_hyp(osd_buf, camera_info.dof_values.hyperfocal_distance);
	    draw_osd_string(conf.dof_pos, (++i)*FONT_WIDTH, FONT_HEIGHT, osd_buf, (f_ex && camera_info.dof_values.hyperfocal_valid)?valid_col:col, conf.dof_scale);
    }
}
Exemplo n.º 9
0
void gui_osd_draw_ev(int is_osd_edit)
{
    static char *s[6] = {"   ", "1/6", "1/3", "1/2", "2/3", "5/6"};

    if ((!camera_info.state.mode_video && camera_info.state.mode_rec && conf.fast_ev) || is_osd_edit)
    {
        short ev = shooting_get_ev_correction1();

        if (ev/96 || (ev==0))
            sprintf(osd_buf, "EV:  %d %s", abs(ev/96), s[abs(ev/16%6)]);
        else
            sprintf(osd_buf, "EV:  %s   ", s[abs(ev/16%6)]);

        if (ev>0)
            osd_buf[4]='+';
        else if (ev<0)
            osd_buf[4]='-';

        draw_osd_string(conf.mode_ev_pos, 0, 0, osd_buf, user_color(conf.osd_color), conf.mode_ev_scale);
    }
}
Exemplo n.º 10
0
static void gui_osd_draw_movie_time_left()
{
    static int card_used, init_space, elapsed, avg_use, time_left;
    static long init_time;
    static int record_running = 0;
    static int init = 0;
    static unsigned int skipcalls = 1;
    unsigned int hour=0, min=0, sec=0;

    twoColors col = user_color(conf.osd_color);

    if ((conf.show_movie_time > 0) && (camera_info.state.mode_video || is_video_recording()) && !camera_info.state.mode_play)
    {
#if CAM_CHDK_HAS_EXT_VIDEO_MENU
        if (camera_info.state.mode_video || is_video_recording())
        {
            // if manual adjust, show the field item to be adjusted
            // if any value overriden, show the override value
#if !CAM_VIDEO_QUALITY_ONLY
            if ((conf.video_mode == 0 && conf.fast_movie_quality_control==1) || conf.video_bitrate != VIDEO_DEFAULT_BITRATE)
            {
                // gui_print_osd_state_string_chr("Bitrate: ",video_bitrate_strings[conf.video_bitrate]);
                sprintf(osd_buf, "Bit:%5s",gui_video_bitrate_enum(0,0));
                draw_osd_string(conf.mode_video_pos, 0, 2*FONT_HEIGHT, osd_buf, col, conf.mode_video_scale);
            }
#endif
            if ((conf.video_mode == 1 && conf.fast_movie_quality_control==1) || conf.video_quality != VIDEO_DEFAULT_QUALITY)
            {
                // gui_print_osd_state_string_int("Quality: ",conf.video_quality);
                sprintf(osd_buf, "Qual:%2i",conf.video_quality);
                draw_osd_string(conf.mode_video_pos, 0, 3*FONT_HEIGHT, osd_buf, col, conf.mode_video_scale);
            }
            // everything else is for when recording
            if (!is_video_recording())
            {
                record_running = 0;
                init = 0;
                return;
            }
        }
#endif

        if (movie_reset == 1)
        {
            init = 0;
            movie_reset = 0;
        }

        if (is_video_recording())
            record_running = 1;
        else
        {
            record_running = 0;
            init = 0;
        }

        if (record_running == 1 && init == 0)
        {
            init = 1;
            init_space = GetFreeCardSpaceKb();
            init_time  = get_tick_count();
        }

        if (init == 1)
        {
            card_used = init_space - GetFreeCardSpaceKb();
            elapsed = (int) ( get_tick_count() - init_time ) / 1000;
            avg_use = card_used / elapsed;  // running average Kb/sec
            time_left = (GetFreeCardSpaceKb() / avg_use);
            hour = time_left / 3600;
            min = (time_left % 3600) / 60;
            sec = (time_left % 3600) % 60;

            if (elapsed < 1)
            {
                sprintf(osd_buf, "Calc...");
                draw_osd_string(conf.mode_video_pos, 0, 0, osd_buf, col, conf.mode_video_scale);
            }

            if (--skipcalls ==0)
            {
                if (elapsed > 1)
                {
                    int time_yofst = 0;
                    if (conf.show_movie_time == 3)
                    {
                        // Both lines displayed so offset time value below bit rate
                        time_yofst = FONT_HEIGHT;
                    }
                    if (conf.show_movie_time & 2)
                    {
                        sprintf(osd_buf, "%04d KB/s", avg_use);
                        draw_osd_string(conf.mode_video_pos, 0, 0, osd_buf, col, conf.mode_video_scale);
                    }
                    if (conf.show_movie_time & 1)
                    {
                        sprintf(osd_buf, "-%02d:%02d:%02d", hour, min, sec);
                        draw_osd_string(conf.mode_video_pos, 0, time_yofst, osd_buf, col, conf.mode_video_scale);
                    }
#if CAM_CHDK_HAS_EXT_VIDEO_TIME
                    if( (int)conf.ext_video_time == 1 )
                    {
                        draw_txt_string(0, 13, lang_str(LANG_WARN_VIDEO_EXT_TIME), user_color(conf.osd_color_warn));
                    }		
#endif
                }

                skipcalls = conf.show_movie_refresh*5;
            }
        }
    }
}