Changeset 135


Ignore:
Timestamp:
04/21/07 11:27:54 (6 years ago)
Author:
GrAnd
Message:

+ OSD/histogram drawing over zebra
+ Clock in TextReader?
+ Focus distance in cm/m
+ Quick on/off Zebra mode by pressing [left] button while [shoot] button is half pressed ([up] for histogram toggle; [right] for OSD)

Location:
branches/grand
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • branches/grand/core/conf.c

    r134 r135  
    113113    CONF_INFO( 54, conf.zebra_under,            CONF_DEF_VALUE, i:0, NULL), 
    114114    CONF_INFO( 55, conf.zebra_color,            CONF_DEF_VALUE, cl:MAKE_COLOR(COLOR_RED, COLOR_RED), NULL), 
    115     CONF_INFO( 56, conf.zebra_draw_histo,       CONF_DEF_VALUE, i:0, NULL), 
     115    CONF_INFO( 56, conf.zebra_draw_osd,         CONF_DEF_VALUE, i:ZEBRA_DRAW_HISTO, NULL), 
    116116}; 
    117117#define CONF_NUM (sizeof(conf_info)/sizeof(conf_info[0])) 
  • branches/grand/core/gui.c

    r134 r135  
    5757static const char* gui_histo_layout_enum(int change, int arg); 
    5858static const char* gui_zebra_mode_enum(int change, int arg); 
     59static const char* gui_zebra_draw_osd_enum(int change, int arg); 
    5960static const char* gui_font_enum(int change, int arg); 
    6061static const char* gui_raw_prefix_enum(int change, int arg); 
     
    221222 
    222223static CMenuItem zebra_submenu_items[] = { 
    223     {"Draw Zebra instead of histo", MENUITEM_BOOL,                            &conf.zebra_draw }, 
     224    {"Draw Zebra",                  MENUITEM_BOOL,                            &conf.zebra_draw }, 
    224225    {"Zebra mode",                  MENUITEM_ENUM,                            (int*)gui_zebra_mode_enum }, 
    225226    {"Draw UnderExplosure",         MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX,  &conf.zebra_under,   MENU_MINMAX(0, 32)}, 
     
    227228    {"Restore original screen",     MENUITEM_BOOL|MENUITEM_ARG_CALLBACK,      &conf.zebra_restore_screen,     (int)cb_zebra_restore_screen }, 
    228229    {"Restore OSD",                 MENUITEM_BOOL|MENUITEM_ARG_CALLBACK,      &conf.zebra_restore_osd,        (int)cb_zebra_restore_osd }, 
    229     {"Draw histogram over zebra",   MENUITEM_BOOL,                            &conf.zebra_draw_histo }, 
     230    {"Draw over zebra",             MENUITEM_ENUM,                            (int*)gui_zebra_draw_osd_enum }, 
    230231    {"<- Back",                     MENUITEM_UP }, 
    231232    {0} 
     
    390391 
    391392    return modes[conf.zebra_mode]; 
     393} 
     394 
     395//------------------------------------------------------------------- 
     396const char* gui_zebra_draw_osd_enum(int change, int arg) { 
     397    static const char* modes[]={ "Nothing", "Histo", "OSD" }; 
     398 
     399    conf.zebra_draw_osd+=change; 
     400    if (conf.zebra_draw_osd<0) 
     401        conf.zebra_draw_osd=(sizeof(modes)/sizeof(modes[0]))-1; 
     402    else if (conf.zebra_draw_osd>=(sizeof(modes)/sizeof(modes[0]))) 
     403        conf.zebra_draw_osd=0; 
     404 
     405    return modes[conf.zebra_draw_osd]; 
    392406} 
    393407 
     
    663677    unsigned int m, n = 0, mode_photo; 
    664678    coord x; 
    665     static int flashlight = 0, zebra = 0, zebra_init = 0; 
     679    static int flashlight = 0, zebra = 0, zebra_init = 0, pressed = 0; 
    666680     
    667681    m = mode_get(); 
     
    679693    } 
    680694 
     695    if (kbd_is_key_pressed(KEY_SHOOT_HALF)) { 
     696        if (kbd_is_key_pressed(KEY_LEFT)) { 
     697            if (!pressed) { 
     698                conf.zebra_draw = !conf.zebra_draw; 
     699                if (zebra && !conf.zebra_draw) { 
     700                    zebra = 0; 
     701                    draw_restore(); 
     702                } 
     703                pressed = 1; 
     704            } 
     705        } else if (kbd_is_key_pressed(KEY_UP)) { 
     706            if (!pressed) { 
     707                conf.show_histo = !conf.show_histo; 
     708                if (!conf.show_histo) { 
     709                    draw_restore(); 
     710                } 
     711                pressed = 1; 
     712            } 
     713        } else if (kbd_is_key_pressed(KEY_RIGHT)) { 
     714            if (!pressed) { 
     715                conf.show_osd = !conf.show_osd; 
     716                if (!conf.show_osd) { 
     717                    draw_restore(); 
     718                } 
     719                pressed = 1; 
     720            } 
     721        } else { 
     722            pressed = 0; 
     723        } 
     724    } else { 
     725        pressed = 0; 
     726    } 
     727     
    681728    mode_photo = (m&MODE_MASK) == MODE_PLAY ||  
    682729                 !((m&MODE_SHOOTING_MASK)==MODE_VIDEO_STD || (m&MODE_SHOOTING_MASK)==MODE_VIDEO_SPEED || (m&MODE_SHOOTING_MASK)==MODE_VIDEO_COMPACT || 
     
    733780 
    734781    if (debug_vals_show) { 
    735 //        long v=get_file_counter(); 
     782        long v=get_file_counter(); 
    736783//      sprintf(osd_buf, "1:%03d-%04d  ", (v>>18)&0x3FF, (v>>4)&0x3FFF); 
    737784//      sprintf(osd_buf, "1:%d, %08X  ", xxxx, eeee); 
     
    744791        sprintf(osd_buf, "3:%8x  ", physw_status[2]); 
    745792        draw_txt_string(28, 12, osd_buf, conf.osd_color); 
     793 
     794        sprintf(osd_buf, "4:%8x  ", v); 
     795        draw_txt_string(28, 13, osd_buf, conf.osd_color); 
    746796    } 
    747797 
  • branches/grand/core/gui_osd.c

    r134 r135  
    168168 
    169169//------------------------------------------------------------------- 
     170static void gui_osd_draw_zebra_osd() { 
     171    switch (conf.zebra_draw_osd) { 
     172        case ZEBRA_DRAW_NONE: 
     173            break; 
     174        case ZEBRA_DRAW_OSD: 
     175            if (conf.show_osd) { 
     176                draw_set_draw_proc(draw_pixel_buffered); 
     177                if ((mode_get()&MODE_MASK) == MODE_REC) { 
     178                    if (conf.show_dof) { 
     179                        gui_osd_draw_dof(); 
     180                    } 
     181                    if (conf.show_state) { 
     182                        gui_osd_draw_state(); 
     183                    } 
     184                    if (conf.show_values) { 
     185                        gui_osd_draw_values(); 
     186                    } 
     187                } 
     188                gui_batt_draw_osd(); 
     189                if (conf.show_clock) { 
     190                    gui_osd_draw_clock(); 
     191                } 
     192                draw_set_draw_proc(NULL); 
     193            } 
     194            /* no break here */ 
     195        case ZEBRA_DRAW_HISTO: 
     196        default: 
     197            if (conf.show_histo) { 
     198                draw_set_draw_proc(draw_pixel_buffered); 
     199                gui_osd_draw_histo(); 
     200                draw_set_draw_proc(NULL); 
     201            } 
     202            break; 
     203    } 
     204} 
     205 
     206//------------------------------------------------------------------- 
    170207int gui_osd_draw_zebra() { 
    171208    unsigned int v, s, x, y, f, over; 
     
    207244                    draw_restore(); 
    208245                } else { 
    209                     memset(scr_buf, COLOR_TRANSPARENT, screen_size*2-1); 
     246                    memset(buf, COLOR_TRANSPARENT, screen_size); 
     247                    gui_osd_draw_zebra_osd(); 
     248                    memcpy(scr_buf, buf, screen_size); 
     249                    memcpy(scr_buf+screen_size, buf, screen_size); 
    210250                } 
    211251                need_restore=0; 
     
    233273            } 
    234274             
    235             if (conf.zebra_draw_histo && conf.show_histo) { 
    236                 draw_set_draw_proc(draw_pixel_buffered); 
    237                 gui_osd_draw_histo(); 
    238                 draw_set_draw_proc(NULL); 
    239             } 
    240  
     275            gui_osd_draw_zebra_osd(); 
    241276            memcpy(scr_buf, buf, screen_size); 
    242277            memcpy(scr_buf+screen_size, buf, screen_size); 
     
    425460 
    426461    lfp = lens_get_target_distance(); 
    427     if (lfp == 0xFFFF) { 
    428         sprintf(osd_buf, "F:inf%8s", ""); 
    429     } else { 
    430         sprintf(osd_buf, "F:%ld%8s", lfp, ""); 
    431     } 
     462    strcpy(osd_buf, "F:"); 
     463    sprintf_dist(osd_buf+2, lfp); 
     464    sprintf(osd_buf+strlen(osd_buf), "%8s", ""); 
    432465    osd_buf[8]=0; 
    433466    draw_string(conf.values_pos.x, conf.values_pos.y+FONT_HEIGHT, osd_buf, conf.osd_color); 
  • branches/grand/core/gui_osd.h

    r133 r135  
    1111#define OSD_HISTO_LAYOUT_Y_argb         5 
    1212#define OSD_HISTO_LAYOUT_BLEND          6 
     13 
     14#define ZEBRA_DRAW_NONE                 0 
     15#define ZEBRA_DRAW_HISTO                1 
     16#define ZEBRA_DRAW_OSD                  2 
    1317 
    1418//------------------------------------------------------------------- 
  • branches/grand/core/gui_read.c

    r128 r135  
    2626static void gui_read_draw_batt() { 
    2727    sprintf(buffer, "Batt:%3d%%", get_batt_perc()); 
    28     draw_txt_string(screen_width/FONT_WIDTH-2-1-3-9, 0, buffer, MAKE_COLOR(COLOR_BLACK, COLOR_WHITE)); 
     28    draw_txt_string(screen_width/FONT_WIDTH-2-1-1-9, 0, buffer, MAKE_COLOR(COLOR_BLACK, COLOR_WHITE)); 
     29} 
     30 
     31//------------------------------------------------------------------- 
     32static void gui_read_draw_clock() { 
     33    unsigned long t; 
     34    static struct tm *ttm; 
     35 
     36    t = time(NULL); 
     37    ttm = localtime(&t); 
     38    sprintf(buffer, "%2u:%02u", ttm->tm_hour, ttm->tm_min); 
     39    draw_txt_string(screen_width/FONT_WIDTH-2-1-1-9-2-5, 0, buffer, MAKE_COLOR(COLOR_BLACK, COLOR_WHITE)); 
    2940} 
    3041 
     
    148159    } 
    149160    gui_read_draw_batt(); 
     161    gui_read_draw_clock(); 
    150162} 
    151163 
  • branches/grand/core/main.c

    r131 r135  
    7272void core_spytask() 
    7373{ 
    74     int cnt = 0; 
     74    int cnt = 1; 
    7575 
    7676    raw_need_postprocess = 0; 
  • branches/grand/include/conf.h

    r134 r135  
    4545    int zebra_over; 
    4646    int zebra_under; 
    47     int zebra_draw_histo; 
     47    int zebra_draw_osd; 
    4848 
    4949    OSD_pos histo_pos; 
  • branches/grand/platform/s3is/main.c

    r131 r135  
    4444 
    4545    _GetPropertyCase(204, &t, 4); 
    46     mode  = (t==4)?MODE_REC:MODE_PLAY; 
     46    mode  = (t!=0)?MODE_REC:MODE_PLAY; 
    4747    mode |= (physw_status[1] & 0x00000001)?0:MODE_SCREEN_OPENED; 
    4848    mode |= (physw_status[1] & 0x00000002)?0:MODE_SCREEN_ROTATED; 
Note: See TracChangeset for help on using the changeset viewer.