Changeset 447
- Timestamp:
- 07/14/08 08:44:42 (5 years ago)
- Location:
- branches/juciphox
- Files:
-
- 5 edited
-
core/curves.c (modified) (6 diffs)
-
core/curves.h (modified) (1 diff)
-
core/gui.c (modified) (5 diffs)
-
include/platform.h (modified) (1 diff)
-
platform/generic/shooting.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
branches/juciphox/core/curves.c
r432 r447 5 5 #include "curves.h" 6 6 7 7 /* 8 Expands curves features 9 10 RGB curves: ouput = curve[input] 11 L cruves: output = curve[L] *(input-black) + black 12 RGB curves and L curves are 4 colors curves 13 L curves contain multiplicator factor (value = multiplicator * 10^12) 14 15 DR curves: output = curve[L] *(input-black) + black 16 DR curves are gray scale only 17 There are 2 DR curves +1EV and +2EV gain 18 19 Auto DR automatically calculate the +1EV or +2EV base on 20 EV under exposure selected by user to avoid highlight burnout 21 (using Zebra) 22 23 External function added: shooting_get_ev_correction1 (added in generic/shooting) 24 Modified gui.c for curve enable 25 26 */ 8 27 unsigned short curve0[CURVE_SIZE]; 9 28 unsigned short curve1[CURVE_SIZE]; … … 16 35 #define RBLACK( a ) (((a)>BLACK) ? ((a)-BLACK) : 0) 17 36 18 /* 19 #define CURVE0( a, b ) (((((a + b) * curve0[b]) >> 10) + a - b) >> 1) 20 #define CURVE1( a, b ) (((((a + b) * curve1[b]) >> 10) + a - b) >> 1) 21 #define CURVE2( a, b ) (((((a + b) * curve2[b]) >> 10) + a - b) >> 1) 22 #define CURVE3( a, b ) (((((a + b) * curve3[b]) >> 10) + a - b) >> 1) 23 */ 24 25 #define CURVE0( a, b ) (((a) * curve0[b]) >> 10) 26 #define CURVE1( a, b ) (((a) * curve1[b]) >> 10) 27 #define CURVE2( a, b ) (((a) * curve2[b]) >> 10) 28 #define CURVE3( a, b ) (((a) * curve3[b]) >> 10) 37 #define CURVE0( a, b ) (((a) * curve0[b]) >> 12) 38 #define CURVE1( a, b ) (((a) * curve1[b]) >> 12) 39 #define CURVE2( a, b ) (((a) * curve2[b]) >> 12) 40 #define CURVE3( a, b ) (((a) * curve3[b]) >> 12) 29 41 30 42 31 43 unsigned char curve_loaded; 44 unsigned char drcurve_loaded; 32 45 33 46 //------------------------------------------------------------------- … … 36 49 int fd; 37 50 38 if (!fn[0]) { // no cur evdefined51 if (!fn[0]) { // no curve defined 39 52 curve_loaded = 0; 40 53 return; … … 58 71 } 59 72 60 void curve_apply() { 73 //------------------------------------------------------------------- 74 // Curve to be loaded upon power up 75 void drcurve_load(const char *fn) { 76 int fd; 77 78 if (!fn[0]) { // no curve defined 79 drcurve_loaded = 0; 80 return; 81 } else { 82 fd = fopen(fn, "r+b"); 83 if (!fd) { 84 drcurve_loaded = 0; 85 return; 86 } 87 } 88 89 fread(drcurve0, 1, 4*CURVE_SIZE*sizeof(unsigned short), fd); // load a set of 4 curves - only 2 are used 90 fclose(fd); 91 drcurve_loaded = 1; 92 } 93 94 95 void curveRGB_apply() { 61 96 short i,j; 62 unsigned short pixVal0, pixVal1, pixVal2, y;97 unsigned short pixVal0, pixVal1, pixVal2, col; 63 98 unsigned char *src; 64 99 65 if (!curve_loaded) return;66 //if (!conf.curve_enable) return;67 68 100 // Set pointer to picture raw data in memory 69 101 src = (unsigned char *) hook_raw_image_addr(); 70 102 71 103 // Loop through picture rows 72 for (i=CAM_RAW_ROWS; i;i-=2){ 104 col = CAM_RAW_ROWPIX-48; 105 src += 8 * (CAM_RAW_ROWPIX * 10 / 8); // skip 8 first rows 106 for (i=CAM_RAW_ROWS - 8; i;i-=2){ // skip 8 first rows 107 // for (i=CAM_RAW_ROWS; i;i-=2){ // No skip 8 first rows 73 108 // Loop through picture columns 74 for (j=CAM_RAW_ROWPIX; j; j-=8, src+=10){ 109 // for (j=CAM_RAW_ROWPIX; j; j-=8, src+=10){ // No skip 8 first and 40 last columns 110 src += 10; // Skip columns 111 for (j=col; j; j-=8, src+=10){ // Skip columns 112 //Skip first 8 columns and 40 last columns 113 pixVal0=((0x3fc&(((unsigned short)(src[1]))<<2)) | (src[0] >> 6)); 114 pixVal1=((0x3f0&(((unsigned short)(src[0]))<<4)) | (src[3] >> 4)); 115 pixVal0 = curve0[pixVal0]; 116 pixVal1 = curve1[pixVal1]; 117 *(src+1) = (unsigned char) ((pixVal0>>2)); // 0 118 *src = (unsigned char) ((pixVal0<<6)|(pixVal1>>4)); //0, 1 119 120 pixVal2=((0x3c0&(((unsigned short)(src[3]))<<6)) | (src[2] >> 2)); 121 pixVal0=((0x300&(((unsigned short)(src[2]))<<8)) | (src[5])); 122 pixVal2 = curve0[pixVal2]; 123 pixVal0 = curve1[pixVal0]; 124 *(src+3) = (unsigned char) ((pixVal1<<4)|(pixVal2>>6)); //1,2 125 *(src+2) = (unsigned char) ((pixVal2<<2)|(pixVal0>>8)); //2,3 =>(2,0) 126 *(src+5) = (unsigned char) ((pixVal0)); //3 (=>0) 127 128 pixVal0=((0x3fc&(((unsigned short)(src[4]))<<2)) | (src[7] >> 6)); 129 pixVal1=((0x3f0&(((unsigned short)(src[7]))<<4)) | (src[6] >> 4)); 130 pixVal0 = curve0[pixVal0]; 131 pixVal1 = curve1[pixVal1]; 132 *(src+4) = (unsigned char) ((pixVal0>>2)); // 4 => 0 133 *(src+7) = (unsigned char) ((pixVal0<<6)|(pixVal1>>4)); // 4,5 => (0,1) 134 135 pixVal2=((0x3c0&(((unsigned short)(src[6]))<<6)) | (src[9] >> 2)); 136 pixVal0=((0x300&(((unsigned short)(src[9]))<<8)) | (src[8])); 137 pixVal2 = curve0[pixVal2]; 138 pixVal0 = curve1[pixVal0]; 139 *(src+6) = (unsigned char) ((pixVal1<<4)|(pixVal2>>6)); // 5,6 => (1,2) 140 *(src+9) = (unsigned char) ((pixVal2<<2)|(pixVal0>>8)); // 6,7 =>(2,0) 141 *(src+8) = (unsigned char) ((pixVal0)); //7 (=>0) } 142 } 143 src += 60; // skip columns 40+8 144 // for (j=CAM_RAW_ROWPIX;j; j-=8, src+=10){ // No skip 145 for (j=col; j; j-=8, src+=10){ 146 pixVal0=((0x3fc&(((unsigned short)(src[1]))<<2)) | (src[0] >> 6)); 147 pixVal1=((0x3f0&(((unsigned short)(src[0]))<<4)) | (src[3] >> 4)); 148 pixVal0 = curve2[pixVal0]; 149 pixVal1 = curve3[pixVal1]; 150 *(src+1) = (unsigned char) ((pixVal0>>2)); // 0 151 *src = (unsigned char) ((pixVal0<<6)|(pixVal1>>4)); //0, 1 152 153 pixVal2=((0x3c0&(((unsigned short)(src[3]))<<6)) | (src[2] >> 2)); 154 pixVal0=((0x300&(((unsigned short)(src[2]))<<8)) | (src[5])); 155 pixVal2 = curve2[pixVal2]; 156 pixVal0 = curve3[pixVal0]; 157 *(src+3) = (unsigned char) ((pixVal1<<4)|(pixVal2>>6)); //1,2 158 *(src+2) = (unsigned char) ((pixVal2<<2)|(pixVal0>>8)); //2,3 =>(2,0) 159 *(src+5) = (unsigned char) ((pixVal0)); //3 (=>0) 160 161 pixVal0=((0x3fc&(((unsigned short)(src[4]))<<2)) | (src[7] >> 6)); 162 pixVal1=((0x3f0&(((unsigned short)(src[7]))<<4)) | (src[6] >> 4)); 163 pixVal0 = curve2[pixVal0]; 164 pixVal1 = curve3[pixVal1]; 165 *(src+4) = (unsigned char) ((pixVal0>>2)); // 4 => 0 166 *(src+7) = (unsigned char) ((pixVal0<<6)|(pixVal1>>4)); // 4,5 => (0,1) 167 168 pixVal2=((0x3c0&(((unsigned short)(src[6]))<<6)) | (src[9] >> 2)); 169 pixVal0=((0x300&(((unsigned short)(src[9]))<<8)) | (src[8])); 170 pixVal2 = curve2[pixVal2]; 171 pixVal0 = curve3[pixVal0]; 172 *(src+6) = (unsigned char) ((pixVal1<<4)|(pixVal2>>6)); // 5,6 => (1,2) 173 *(src+9) = (unsigned char) ((pixVal2<<2)|(pixVal0>>8)); // 6,7 =>(2,0) 174 *(src+8) = (unsigned char) ((pixVal0)); //7 (=>0) 175 } 176 src += 50; // skip columns 177 } 178 } 179 180 181 void curveL_apply() { 182 short i,j; 183 unsigned short pixVal0, pixVal1, pixVal2, y, col; 184 unsigned char *src; 185 186 // Set pointer to picture raw data in memory 187 src = (unsigned char *) hook_raw_image_addr(); 188 189 // Loop through picture rows 190 col = CAM_RAW_ROWPIX-48; 191 src += 8 * (CAM_RAW_ROWPIX * 10 / 8); // skip 8 first rows 192 for (i=CAM_RAW_ROWS - 8; i;i-=2){ // skip 8 first rows 193 // for (i=CAM_RAW_ROWS; i;i-=2){ // No skip 8 first rows 194 // Loop through picture columns 195 // for (j=CAM_RAW_ROWPIX; j; j-=8, src+=10){ // No skip 8 first and 40 last columns 196 src += 10; // Skip columns 197 for (j=col; j; j-=8, src+=10){ // Skip columns 198 //Skip first 8 columns and 40 last columns 75 199 pixVal0=((0x3fc&(((unsigned short)(src[1]))<<2)) | (src[0] >> 6)); 76 200 pixVal1=((0x3f0&(((unsigned short)(src[0]))<<4)) | (src[3] >> 4)); … … 123 247 *(src+8) = (unsigned char) ((pixVal0)); //7 (=>0) } 124 248 } 125 126 for (j=CAM_RAW_ROWPIX; j; j-=8, src+=10){ 249 src += 60; // skip columns 40+8 250 // for (j=CAM_RAW_ROWPIX;j; j-=8, src+=10){ // No skip 251 for (j=col; j; j-=8, src+=10){ 127 252 pixVal0=((0x3fc&(((unsigned short)(src[1]))<<2)) | (src[0] >> 6)); 128 253 pixVal1=((0x3f0&(((unsigned short)(src[0]))<<4)) | (src[3] >> 4)); … … 175 300 *(src+8) = (unsigned char) ((pixVal0)); //7 (=>0) 176 301 } 302 src += 50; // skip columns 177 303 } 178 304 } 305 306 /* 307 DR curves 308 - DR curve unidimension: gray scale only 309 */ 310 #define DRCURVE0( a, b ) (((a) * curve0[b]) >> 12) 311 #define DRCURVE1( a, b ) (((a) * curve1[b]) >> 12) 312 #define DRCURVE2( a, b ) (((a) * curve2[b]) >> 12) 313 #define DRCURVE3( a, b ) (((a) * curve3[b]) >> 12) 314 315 unsigned short drcurve0[DRCURVE_CNT][CURVE_SIZE]; // Dynamic range curves are only gray scale for now... 316 //unsigned short drcurve1[DRCURVE_CNT][CURVE_SIZE]; 317 //unsigned short drcurve2[DRCURVE_CNT][CURVE_SIZE]; 318 //unsigned short drcurve3[DRCURVE_CNT][CURVE_SIZE]; 319 320 void drcurve_apply(const int ci) { 321 short i,j; 322 unsigned short pixVal0, pixVal1, pixVal2, y, col; 323 unsigned char *src; 324 325 unsigned short *curve0, *curve1, *curve2, *curve3; 326 327 // select dr curve 328 curve0 = drcurve0[ci]; 329 curve1 = drcurve0[ci]; 330 curve2 = drcurve0[ci]; 331 curve3 = drcurve0[ci]; 332 333 // Set pointer to picture raw data in memory 334 src = (unsigned char *) hook_raw_image_addr(); 335 336 // Loop through picture rows 337 col = CAM_RAW_ROWPIX-48; 338 src += 8 * (CAM_RAW_ROWPIX * 10 / 8); // skip 8 first rows 339 for (i=CAM_RAW_ROWS - 8; i;i-=2){ // skip 8 first rows 340 // for (i=CAM_RAW_ROWS; i;i-=2){ // No skip 8 first rows 341 // Loop through picture columns 342 // for (j=CAM_RAW_ROWPIX; j; j-=8, src+=10){ // No skip 8 first and 40 last columns 343 src += 10; // Skip columns 344 for (j=col; j; j-=8, src+=10){ // Skip columns 345 //Skip first 8 columns and 40 last columns 346 pixVal0=((0x3fc&(((unsigned short)(src[1]))<<2)) | (src[0] >> 6)); 347 pixVal1=((0x3f0&(((unsigned short)(src[0]))<<4)) | (src[3] >> 4)); 348 pixVal0 = RBLACK( pixVal0 ); 349 pixVal1 = RBLACK( pixVal1 ); 350 y = LUM(pixVal0,pixVal1); 351 pixVal0 = DRCURVE0( pixVal0, y ) + BLACK; 352 pixVal1 = DRCURVE1( pixVal1, y ) + BLACK; 353 pixVal0 = LIM( pixVal0 ); 354 pixVal1 = LIM( pixVal1 ); 355 *(src+1) = (unsigned char) ((pixVal0>>2)); // 0 356 *src = (unsigned char) ((pixVal0<<6)|(pixVal1>>4)); //0, 1 357 358 pixVal2=((0x3c0&(((unsigned short)(src[3]))<<6)) | (src[2] >> 2)); 359 pixVal0=((0x300&(((unsigned short)(src[2]))<<8)) | (src[5])); 360 pixVal2 = RBLACK( pixVal2 ); 361 pixVal0 = RBLACK( pixVal0 ); 362 y = LUM(pixVal2,pixVal0); 363 pixVal2 = DRCURVE0( pixVal2, y ) + BLACK; 364 pixVal0 = DRCURVE1( pixVal0, y ) + BLACK; 365 pixVal2 = LIM( pixVal2 ); 366 pixVal0 = LIM( pixVal0 ); 367 *(src+3) = (unsigned char) ((pixVal1<<4)|(pixVal2>>6)); //1,2 368 *(src+2) = (unsigned char) ((pixVal2<<2)|(pixVal0>>8)); //2,3 =>(2,0) 369 *(src+5) = (unsigned char) ((pixVal0)); //3 (=>0) 370 371 pixVal0=((0x3fc&(((unsigned short)(src[4]))<<2)) | (src[7] >> 6)); 372 pixVal1=((0x3f0&(((unsigned short)(src[7]))<<4)) | (src[6] >> 4)); 373 pixVal0 = RBLACK( pixVal0 ); 374 pixVal1 = RBLACK( pixVal1 ); 375 y = LUM(pixVal0,pixVal1); 376 pixVal0 = DRCURVE0( pixVal0, y ) + BLACK; 377 pixVal1 = DRCURVE1( pixVal1, y ) + BLACK; 378 pixVal0 = LIM( pixVal0 ); 379 pixVal1 = LIM( pixVal1 ); 380 *(src+4) = (unsigned char) ((pixVal0>>2)); // 4 => 0 381 *(src+7) = (unsigned char) ((pixVal0<<6)|(pixVal1>>4)); // 4,5 => (0,1) 382 383 pixVal2=((0x3c0&(((unsigned short)(src[6]))<<6)) | (src[9] >> 2)); 384 pixVal0=((0x300&(((unsigned short)(src[9]))<<8)) | (src[8])); 385 pixVal2 = RBLACK( pixVal2 ); 386 pixVal0 = RBLACK( pixVal0 ); 387 y = LUM(pixVal2,pixVal0); 388 pixVal2 = DRCURVE0( pixVal2, y ) + BLACK; 389 pixVal0 = DRCURVE1( pixVal0, y ) + BLACK; 390 pixVal2 = LIM( pixVal2 ); 391 pixVal0 = LIM( pixVal0 ); 392 *(src+6) = (unsigned char) ((pixVal1<<4)|(pixVal2>>6)); // 5,6 => (1,2) 393 *(src+9) = (unsigned char) ((pixVal2<<2)|(pixVal0>>8)); // 6,7 =>(2,0) 394 *(src+8) = (unsigned char) ((pixVal0)); //7 (=>0) } 395 } 396 src += 60; // skip columns 40+8 397 // for (j=CAM_RAW_ROWPIX;j; j-=8, src+=10){ // No skip 398 for (j=col; j; j-=8, src+=10){ 399 pixVal0=((0x3fc&(((unsigned short)(src[1]))<<2)) | (src[0] >> 6)); 400 pixVal1=((0x3f0&(((unsigned short)(src[0]))<<4)) | (src[3] >> 4)); 401 pixVal0 = RBLACK( pixVal0 ); 402 pixVal1 = RBLACK( pixVal1 ); 403 y = LUM(pixVal0,pixVal1); 404 pixVal0 = DRCURVE2( pixVal0, y ) + BLACK; 405 pixVal1 = DRCURVE3( pixVal1, y ) + BLACK; 406 pixVal0 = LIM( pixVal0 ); 407 pixVal1 = LIM( pixVal1 ); 408 *(src+1) = (unsigned char) ((pixVal0>>2)); // 0 409 *src = (unsigned char) ((pixVal0<<6)|(pixVal1>>4)); //0, 1 410 411 pixVal2=((0x3c0&(((unsigned short)(src[3]))<<6)) | (src[2] >> 2)); 412 pixVal0=((0x300&(((unsigned short)(src[2]))<<8)) | (src[5])); 413 pixVal2 = RBLACK( pixVal2 ); 414 pixVal0 = RBLACK( pixVal0 ); 415 y = LUM(pixVal2,pixVal0); 416 pixVal2 = DRCURVE2( pixVal2, y ) + BLACK; 417 pixVal0 = DRCURVE3( pixVal0, y ) + BLACK; 418 pixVal2 = LIM( pixVal2 ); 419 pixVal0 = LIM( pixVal0 ); 420 *(src+3) = (unsigned char) ((pixVal1<<4)|(pixVal2>>6)); //1,2 421 *(src+2) = (unsigned char) ((pixVal2<<2)|(pixVal0>>8)); //2,3 =>(2,0) 422 *(src+5) = (unsigned char) ((pixVal0)); //3 (=>0) 423 424 pixVal0=((0x3fc&(((unsigned short)(src[4]))<<2)) | (src[7] >> 6)); 425 pixVal1=((0x3f0&(((unsigned short)(src[7]))<<4)) | (src[6] >> 4)); 426 pixVal0 = RBLACK( pixVal0 ); 427 pixVal1 = RBLACK( pixVal1 ); 428 y = LUM(pixVal0,pixVal1); 429 pixVal0 = DRCURVE2( pixVal0, y ) + BLACK; 430 pixVal1 = DRCURVE3( pixVal1, y ) + BLACK; 431 pixVal0 = LIM( pixVal0 ); 432 pixVal1 = LIM( pixVal1 ); 433 *(src+4) = (unsigned char) ((pixVal0>>2)); // 4 => 0 434 *(src+7) = (unsigned char) ((pixVal0<<6)|(pixVal1>>4)); // 4,5 => (0,1) 435 436 pixVal2=((0x3c0&(((unsigned short)(src[6]))<<6)) | (src[9] >> 2)); 437 pixVal0=((0x300&(((unsigned short)(src[9]))<<8)) | (src[8])); 438 pixVal2 = RBLACK( pixVal2 ); 439 pixVal0 = RBLACK( pixVal0 ); 440 y = LUM(pixVal2,pixVal0); 441 pixVal2 = DRCURVE2( pixVal2, y ) + BLACK; 442 pixVal0 = DRCURVE3( pixVal0, y ) + BLACK; 443 pixVal2 = LIM( pixVal2 ); 444 pixVal0 = LIM( pixVal0 ); 445 *(src+6) = (unsigned char) ((pixVal1<<4)|(pixVal2>>6)); // 5,6 => (1,2) 446 *(src+9) = (unsigned char) ((pixVal2<<2)|(pixVal0>>8)); // 6,7 =>(2,0) 447 *(src+8) = (unsigned char) ((pixVal0)); //7 (=>0) 448 } 449 src += 50; // skip columns 450 } 451 452 } 453 void curve_apply() { 454 short EVbias = shooting_get_ev_correction1(); 455 456 switch(conf.curve_enable) { 457 case 0: 458 break; 459 case 1: // Custom 460 if (curve_loaded){ 461 if(curve0[0] > 1023){ // L curve contains multiplicator factors (0 Luminance has factor 1) 462 curveL_apply(); 463 } else { 464 curveRGB_apply(); 465 } 466 }; 467 break; 468 case 2: 469 case 3: // +1EV, +2EV 470 if (drcurve_loaded) drcurve_apply( conf.curve_enable >> 1 ); 471 break; 472 case 4: // Auto DR 473 474 if (drcurve_loaded) { 475 if (EVbias <-128) { // x4 for Bias from "-1 2/3" and below 476 drcurve_apply(1); 477 } else if(EVbias<-32){ // x2 for Bias from "-1 1/3" to "-2/3" 478 drcurve_apply(0); 479 } 480 } 481 482 break; 483 } 484 485 } 486 -
branches/juciphox/core/curves.h
r432 r447 4 4 #define CURVE_DIR "A/CHDK/CURVES" 5 5 #define CURVE_SIZE 1024 6 #define DRCURVE_CNT 4 7 6 8 7 9 //------------------------------------------------------------------- 10 extern unsigned char curve_loaded; 11 extern unsigned char drcurve_loaded; 8 12 extern void curve_load(); 13 extern void drcurve_load(const char *fn); 9 14 extern void curve_apply(); 15 extern unsigned short drcurve0[][]; 10 16 // extern void default_curve(int n); 11 17 //------------------------------------------------------------------- -
branches/juciphox/core/gui.c
r445 r447 177 177 static const char* gui_script_param_set_enum(int change, int arg); 178 178 static const char* gui_override_disable_enum(int change, int arg); 179 static const char* gui_conf_curve_enum(int change, int arg); 179 180 void rinit(); 180 181 … … 648 649 649 650 static CMenuItem curve_submenu_items[] = { 650 {0x5 c,LANG_MENU_CURVE_ENABLE, MENUITEM_BOOL, &conf.curve_enable},651 {0x35,LANG_MENU_CURVE_LOAD, MENUITEM_PROC, (int*)gui_load_curve },652 {0x51,LANG_MENU_BACK, MENUITEM_UP },651 {0x5f,LANG_MENU_CURVE_ENABLE, MENUITEM_ENUM, (int*)gui_conf_curve_enum }, 652 {0x35,LANG_MENU_CURVE_LOAD, MENUITEM_PROC, (int*)gui_load_curve }, 653 {0x51,LANG_MENU_BACK, MENUITEM_UP }, 653 654 {0} 654 655 }; 655 static CMenu curve_submenu = {0x 21,LANG_MENU_CURVE_PARAM_TITLE, NULL, curve_submenu_items };656 static CMenu curve_submenu = {0x85,LANG_MENU_CURVE_PARAM_TITLE, NULL, curve_submenu_items }; 656 657 657 658 static CMenuItem remote_submenu_items[] = { … … 664 665 {0} 665 666 }; 666 static CMenu remote_submenu = {0x 21,LANG_MENU_REMOTE_PARAM_TITLE, NULL, remote_submenu_items };667 static CMenu remote_submenu = {0x86,LANG_MENU_REMOTE_PARAM_TITLE, NULL, remote_submenu_items }; 667 668 668 669 … … 756 757 if (conf.zebra_restore_osd) 757 758 conf.zebra_restore_screen = 1; 759 } 760 761 //------------------------------------------------------------------- 762 const char* gui_conf_curve_enum(int change, int arg) { 763 static const char* modes[]={ "None", "Custom", "+1EV", "+2EV", "Auto DR" }; 764 765 conf.curve_enable+=change; 766 if (conf.curve_enable<0) 767 conf.curve_enable=(sizeof(modes)/sizeof(modes[0]))-1; 768 else if (conf.curve_enable>=(sizeof(modes)/sizeof(modes[0]))) 769 conf.curve_enable=0; 770 771 return modes[conf.curve_enable]; 758 772 } 759 773 … … 1571 1585 load_bad_pixels_list("A/CHDK/badpixel.txt"); 1572 1586 curve_load(conf.curve_file); // load curve upon init 1587 drcurve_load("A/CHDK/SYSCURVES.CVF"); // load system L curves 1573 1588 } 1574 1589 -
branches/juciphox/include/platform.h
r437 r447 495 495 496 496 void wait_until_remote_button_is_released(void); 497 497 short shooting_get_ev_correction1(); 498 498 499 499 #define started() debug_led(1) -
branches/juciphox/platform/generic/shooting.c
r416 r447 855 855 return v; 856 856 #endif 857 } 858 859 short shooting_get_ev_correction1() 860 { 861 short evc1 = 0; 862 _GetPropertyCase(PROPCASE_EV_CORRECTION_1, &evc1, sizeof(evc1)); 863 return evc1; 857 864 } 858 865
Note: See TracChangeset
for help on using the changeset viewer.