Changeset 875


Ignore:
Timestamp:
02/23/10 20:27:48 (4 years ago)
Author:
fe50
Message:
  • added extended Tv fix for some newer cameras like the SX10 / SD980, by barberofcivil (http://chdk.setepontos.com/index.php/topic,4392.0.html) Normally the shutter overrides work by setting the propcase values at some point after auto-exposure has happened; the Canon code previously took these values unchanged for short exposures. In some newer cameras, the value is changed, apparently some time after it has been retrieved from the propcase; the modified code now handles this.
Location:
trunk
Files:
5 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/core/gui.c

    r860 r875  
    11131113//------------------------------------------------------------------- 
    11141114const char* gui_font_enum(int change, int arg) { 
    1115     static const char* fonts[]={ "Win1250", "Win1251", "Win1252", "Win1254", "Win1257"}; 
     1115    static const char* fonts[]={ "Win1250", "Win1251", "Win1252", "Win1253", "Win1254", "Win1257"}; 
    11161116 
    11171117    conf.font_cp+=change; 
  • trunk/include/font.h

    r515 r875  
    1313#define  FONT_CP_WIN_1254       3 
    1414#define  FONT_CP_WIN_1257       4 
     15/* 1253 (Greek) */ 
     16#define  FONT_CP_WIN_1253       5 
    1517 
    1618//------------------------------------------------------------------- 
     
    4143#endif 
    4244 
    43  
    44  
    45  
  • trunk/lib/font/codepages.h

    r515 r875  
    4646}; 
    4747 
    48 /* 1253 (Greek) */ 
     48/* 1253 (Greek) */   
     49static unsigned short cp_win_1253[] = { 
     50    0x20AC, 0xFFFF, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, 0xFFFF, 0x2030, 0xFFFF, 0x2039, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,  
     51    0xFFFF, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, 0xFFFF, 0x2122, 0xFFFF, 0x203A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,  
     52    0x00A0, 0x0385, 0x0386, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, 0x00A8, 0x00A9, 0xFFFF, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x2015,  
     53    0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x0384, 0x00B5, 0x00B6, 0x00B7, 0x0388, 0x0389, 0x038A, 0x00BB, 0x038C, 0x00BD, 0x038E, 0x038F,  
     54    0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F,  
     55    0x03A0, 0x03A1, 0xFFFF, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9, 0x03AA, 0x03AB, 0x03AC, 0x03AD, 0x03AE, 0x03AF,  
     56    0x03B0, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, 0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF,  
     57    0x03C0, 0x03C1, 0x03C2, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8, 0x03C9, 0x03CA, 0x03CB, 0x03CC, 0x03CD, 0x03CE, 0xFFFF,  
     58}; 
    4959 
    5060/* 1254 (Turkish) */ 
     
    8696    cp_win_1251,  
    8797    cp_win_1252,  
     98    cp_win_1253,  
    8899    cp_win_1254,  
    89     cp_win_1257 
     100    cp_win_1257  
    90101}; 
    91102 
  • trunk/platform/generic/wrappers.c

    r871 r875  
    890890int  apex2us(int apex_tv){ 
    891891#if CAM_EXT_TV_RANGE 
    892  if (apex_tv<-576) return 1000000.0*pow(2.0, -apex_tv/96.0); 
    893  else return _apex2us(apex_tv); 
    894 #else 
    895  return 0; 
     892/* 
     893 Extended Tv, by barberofcivil, http://chdk.setepontos.com/index.php/topic,4392.0.html 
     894 Explanation by reyalP: 
     895 In every port, the original shutter overrides (as opposed to super long exposure) worked by 
     896 setting the propcase values at some point after auto-exposure has happened (except in manual 
     897 modes, where the manual control propcases may be used instead). The Canon code previously took 
     898 these values unchanged for short exposures. In newer cameras, like on the SX10 / SD980, the value 
     899 is changed, apparently some time after it has been retrieved from the propcase. We know this is 
     900 the case, because the propcase value itself doesn't get clamped to the allowed range (if it did, 
     901 barberofcivil's code wouldn't work). 
     902*/ 
     903        short tv; 
     904        tv = shooting_get_tv96(); 
     905        if (tv<-576 || tv!=apex_tv) return 1000000.0*pow(2.0, -tv/96.0); 
     906        else return _apex2us(apex_tv); 
     907#else 
     908        return 0; 
    896909#endif 
    897910} 
Note: See TracChangeset for help on using the changeset viewer.