예제 #1
0
//-------------------------------------------------------------------
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);
}
예제 #2
0
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));
}
예제 #3
0
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));
}
예제 #4
0
//-------------------------------------------------------------------
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);
}
예제 #5
0
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));
}
예제 #6
0
unsigned long get_space_perc() {
    return GetFreeCardSpaceKb()*100/GetTotalCardSpaceKb();
}
예제 #7
0
파일: gui_osd.c 프로젝트: de-wolff/CHDK
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;
            }
        }
    }
}
예제 #8
0
파일: luascript.c 프로젝트: emlyn/chdk
static int luaCB_get_free_disk_space( lua_State* L )
{
    lua_pushnumber( L, GetFreeCardSpaceKb() );
    return 1;
}
예제 #9
0
파일: wrappers.c 프로젝트: emlyn/chdk
unsigned int GetRawCount(void){
 return GetFreeCardSpaceKb()/((hook_raw_size() / 1024)+GetFreeCardSpaceKb()/GetJpgCount());

}