//------------------------------------------------------------------- static void gui_space_draw_mb() { int perc = get_space_perc(); color cl = conf.space_color; if (conf.space_warn_type == 0){ cl = (perc<=conf.space_perc_warn)?conf.osd_color_warn:(conf.space_color); } if (conf.space_warn_type == 1){ cl = (GetFreeCardSpaceKb()/1024<=conf.space_mb_warn)?conf.osd_color_warn:(conf.space_color); } if (conf.space_warn_type == 2){ cl = conf.space_color; } unsigned int freemb=GetFreeCardSpaceKb()/1024; if (freemb < 10000) sprintf(osd_buf, "%3d%M",freemb); else sprintf(osd_buf, "%3d%G",freemb/1024); // if 10 GiB or more free, print in GiB instead of MiB. osd_buf[5]=0; draw_string(conf.space_txt_pos.x, conf.space_txt_pos.y, osd_buf, cl); }
static void gui_space_draw_spacebar_vertical () { coord y; color cl = conf.space_color; int perc = get_space_perc(), width = 2; float size = 0; if (conf.space_warn_type == 0){ cl = (perc<=conf.space_perc_warn)?conf.osd_color_warn:(conf.space_color); } if (conf.space_warn_type == 1){ cl = (GetFreeCardSpaceKb()/1024<=conf.space_mb_warn)?conf.osd_color_warn:(conf.space_color); } if (conf.space_warn_type == 2){ cl = conf.space_color; } // space icon / bar width = conf.space_bar_width+1; if (conf.space_bar_size == 0){ size = screen_height/4-4; if (conf.space_ver_pos.y>(screen_height-size)){ conf.space_ver_pos.y = screen_height-size; } } if (conf.space_bar_size == 1){ size = screen_height/2-4; if (conf.space_ver_pos.y>(screen_height-size)){ conf.space_ver_pos.y = screen_height-size; } } if (conf.space_bar_size == 2){ size = screen_height-4; if (conf.space_ver_pos.y>(screen_height-size)){ conf.space_ver_pos.y = 0; } } if (conf.space_ver_pos.x > (screen_width-width-3)){ conf.space_ver_pos.x = screen_width-width-3; } draw_rect(conf.space_ver_pos.x+1, conf.space_ver_pos.y+1, conf.space_ver_pos.x+1+width+1, conf.space_ver_pos.y+1+size+2, cl); draw_line(conf.space_ver_pos.x+1-1, conf.space_ver_pos.y+1-1, conf.space_ver_pos.x+1-1, conf.space_ver_pos.y+1+5, COLOR_BLACK); // l draw_line(conf.space_ver_pos.x+1-1, conf.space_ver_pos.y+1-1, conf.space_ver_pos.x+1+width+2, conf.space_ver_pos.y+1-1, COLOR_BLACK); // t draw_line(conf.space_ver_pos.x+1-1, conf.space_ver_pos.y+1+size+3, conf.space_ver_pos.x+1+width+2, conf.space_ver_pos.y+1+size+3, COLOR_BLACK); // b draw_line(conf.space_ver_pos.x+1+width+2, conf.space_ver_pos.y+1-1, conf.space_ver_pos.x+1+width+2, conf.space_ver_pos.y+1+size+3, COLOR_BLACK); // r // space bar fill y=conf.space_ver_pos.y+size-(perc/(100/size)); if (y<=conf.space_ver_pos.y+1) y=conf.space_ver_pos.y+1; if (y>conf.space_ver_pos.y+size) y=conf.space_ver_pos.y+size; draw_filled_rect(conf.space_ver_pos.x+1+1, conf.space_ver_pos.y+1+1, conf.space_ver_pos.x+1+width, y-1, MAKE_COLOR(COLOR_TRANSPARENT, COLOR_BLACK)); draw_filled_rect(conf.space_ver_pos.x+1+1, y, conf.space_ver_pos.x+1+width, conf.space_ver_pos.y+1+size+2, MAKE_COLOR(cl, cl)); }
static void gui_space_draw_spacebar_horizontal () { coord x; color cl = conf.space_color; int perc = get_space_perc(),height = 2; float size = 0; if (conf.space_warn_type == 0){ cl = (perc<=conf.space_perc_warn)?conf.osd_color_warn:(conf.space_color); } if (conf.space_warn_type == 1){ cl = (GetFreeCardSpaceKb()/1024<=conf.space_mb_warn)?conf.osd_color_warn:(conf.space_color); } if (conf.space_warn_type == 2){ cl = conf.space_color; } // space icon / bar height = conf.space_bar_width+1; if (conf.space_bar_size == 0){ size = screen_width/4-4; if (conf.space_hor_pos.x>(screen_width-size)){ conf.space_hor_pos.x = screen_width-size; } } if (conf.space_bar_size == 1){ size = screen_width/2-4; if (conf.space_hor_pos.x>(screen_width-size)){ conf.space_hor_pos.x = screen_width-size; } } if (conf.space_bar_size == 2){ size = screen_width-4; if (conf.space_hor_pos.x>(screen_width-size)){ conf.space_hor_pos.x = 0; } } if (conf.space_hor_pos.y > (screen_height-height-3)){ conf.space_hor_pos.y = screen_height-height-3; } draw_rect(conf.space_hor_pos.x+1, conf.space_hor_pos.y+1, conf.space_hor_pos.x+1+size+2, conf.space_hor_pos.y+1+height+1, cl); draw_line(conf.space_hor_pos.x+1-1, conf.space_hor_pos.y+1-1, conf.space_hor_pos.x+1-1, conf.space_hor_pos.y+1+height+2, COLOR_BLACK); // l draw_line(conf.space_hor_pos.x+1-1, conf.space_hor_pos.y+1-1, conf.space_hor_pos.x+1+size+3, conf.space_hor_pos.y+1-1, COLOR_BLACK); // t draw_line(conf.space_hor_pos.x+1-1, conf.space_hor_pos.y+1+height+2, conf.space_hor_pos.x+1+size+3, conf.space_hor_pos.y+1+height+2, COLOR_BLACK); // b draw_line(conf.space_hor_pos.x+1+size+3, conf.space_hor_pos.y+1-1, conf.space_hor_pos.x+1+size+3, conf.space_hor_pos.y+1+height+2, COLOR_BLACK); // r // space bar fill x=conf.space_hor_pos.x+size-(perc/(100/size)); if (x<=conf.space_hor_pos.x+1) x=conf.space_hor_pos.x+1; if (x>conf.space_hor_pos.x+size) x=conf.space_hor_pos.x+size; draw_filled_rect(conf.space_hor_pos.x+1+1, conf.space_hor_pos.y+1+1, x-1, conf.space_hor_pos.y+1+height, MAKE_COLOR(COLOR_TRANSPARENT, COLOR_BLACK)); draw_filled_rect(x, conf.space_hor_pos.y+1+1, conf.space_hor_pos.x+1+size+2, conf.space_hor_pos.y+1+height, MAKE_COLOR(cl, cl)); }
//------------------------------------------------------------------- static void gui_space_draw_percent(){ int perc = get_space_perc(); color cl = conf.space_color; if (conf.space_warn_type == 0){ cl = (perc<=conf.space_perc_warn)?conf.osd_color_warn:(conf.space_color); } if (conf.space_warn_type == 1){ cl = (GetFreeCardSpaceKb()/1024<=conf.space_mb_warn)?conf.osd_color_warn:(conf.space_color); } if (conf.space_warn_type == 2){ cl = conf.space_color; } sprintf(osd_buf, "%3d%%", get_space_perc()); osd_buf[5]=0; draw_string(conf.space_txt_pos.x, conf.space_txt_pos.y, osd_buf, cl); }
static void gui_space_draw_icon () { coord x; color cl = conf.space_color; int perc = get_space_perc(); if (conf.space_warn_type == 0){ cl = (perc<=conf.space_perc_warn)?conf.osd_color_warn:(conf.space_color); } if (conf.space_warn_type == 1){ cl = (GetFreeCardSpaceKb()/1024<=conf.space_mb_warn)?conf.osd_color_warn:(conf.space_color); } if (conf.space_warn_type == 2){ cl = conf.space_color; } int i; int le = 23;//length int wi = 15;//width draw_line(conf.space_icon_pos.x+5, conf.space_icon_pos.y, conf.space_icon_pos.x+le, conf.space_icon_pos.y, COLOR_BLACK); // outer top draw_line(conf.space_icon_pos.x+6, conf.space_icon_pos.y+1, conf.space_icon_pos.x+le-1, conf.space_icon_pos.y+1, MAKE_COLOR(cl, cl)); // inner top draw_line(conf.space_icon_pos.x, conf.space_icon_pos.y+5, conf.space_icon_pos.x, conf.space_icon_pos.y+wi, COLOR_BLACK); // outer left draw_line(conf.space_icon_pos.x+1, conf.space_icon_pos.y+6, conf.space_icon_pos.x+1, conf.space_icon_pos.y+wi-1, MAKE_COLOR(cl, cl)); // inner left draw_line(conf.space_icon_pos.x, conf.space_icon_pos.y+wi, conf.space_icon_pos.x+le, conf.space_icon_pos.y+wi, COLOR_BLACK); // outer bottom draw_line(conf.space_icon_pos.x+1, conf.space_icon_pos.y+wi-1, conf.space_icon_pos.x+le-1, conf.space_icon_pos.y+wi-1, MAKE_COLOR(cl, cl)); // inner bottom draw_line(conf.space_icon_pos.x+le, conf.space_icon_pos.y, conf.space_icon_pos.x+le, conf.space_icon_pos.y+wi, COLOR_BLACK); // outer right draw_line(conf.space_icon_pos.x+le-1, conf.space_icon_pos.y+1, conf.space_icon_pos.x+le-1, conf.space_icon_pos.y+wi-1, MAKE_COLOR(cl, cl)); // inner right draw_line(conf.space_icon_pos.x+5, conf.space_icon_pos.y, conf.space_icon_pos.x, conf.space_icon_pos.y+5, COLOR_BLACK); // edge draw_line(conf.space_icon_pos.x+5, conf.space_icon_pos.y+1, conf.space_icon_pos.x+1, conf.space_icon_pos.y+5, MAKE_COLOR(cl, cl)); // edge draw_line(conf.space_icon_pos.x+6, conf.space_icon_pos.y+1, conf.space_icon_pos.x+1, conf.space_icon_pos.y+6, MAKE_COLOR(cl, cl)); // edge // memory fill x=le-(perc*(le-3)/100)-2; if (x>5) draw_line(conf.space_icon_pos.x+6, conf.space_icon_pos.y+2, conf.space_icon_pos.x+x, conf.space_icon_pos.y+2, COLOR_BLACK); if (x>2) draw_line(conf.space_icon_pos.x+x+1, conf.space_icon_pos.y+2, conf.space_icon_pos.x+le-2, conf.space_icon_pos.y+2, MAKE_COLOR(cl, cl)); else draw_line(conf.space_icon_pos.x+4, conf.space_icon_pos.y+2, conf.space_icon_pos.x+le-2, conf.space_icon_pos.y+2, MAKE_COLOR(cl, cl)); for(i=3;i<7;i++){ // /--------------| if (x>7-i) draw_pixel(conf.space_icon_pos.x+8-i, conf.space_icon_pos.y+i, COLOR_BLACK); // / 1st for loop | if (x>7-i) draw_pixel(conf.space_icon_pos.x+x, conf.space_icon_pos.y+i, COLOR_BLACK); // /__________________| draw_line(conf.space_icon_pos.x+x+1, conf.space_icon_pos.y+i, conf.space_icon_pos.x+le-2, conf.space_icon_pos.y+i, MAKE_COLOR(cl, cl));// | | } // | 2nd for loop | for(i=7;i<wi-2;i++){ // | | if (x>1) draw_pixel(conf.space_icon_pos.x+2, conf.space_icon_pos.y+i, COLOR_BLACK); // |-------------------| if (x>1) draw_pixel(conf.space_icon_pos.x+x, conf.space_icon_pos.y+i, COLOR_BLACK); draw_line(conf.space_icon_pos.x+x+1, conf.space_icon_pos.y+i, conf.space_icon_pos.x+le-2, conf.space_icon_pos.y+i, MAKE_COLOR(cl, cl)); } if (x>1) draw_line(conf.space_icon_pos.x+2, conf.space_icon_pos.y+wi-2, conf.space_icon_pos.x+x, conf.space_icon_pos.y+wi-2, COLOR_BLACK); draw_line(conf.space_icon_pos.x+x+1, conf.space_icon_pos.y+wi-2, conf.space_icon_pos.x+le-2, conf.space_icon_pos.y+wi-2, MAKE_COLOR(cl, cl)); }
unsigned long get_space_perc() { return GetFreeCardSpaceKb()*100/GetTotalCardSpaceKb(); }
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; } } } }
static int luaCB_get_free_disk_space( lua_State* L ) { lua_pushnumber( L, GetFreeCardSpaceKb() ); return 1; }
unsigned int GetRawCount(void){ return GetFreeCardSpaceKb()/((hook_raw_size() / 1024)+GetFreeCardSpaceKb()/GetJpgCount()); }