//------------------------------------------------------------------- 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",""); } } }
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); } } }
//------------------------------------------------------------------- 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); }
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; }
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; }
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; }
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; }
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); } }
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); } }
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; } } } }