source: trunk/core/conf.c @ 551

Revision 551, 26.9 KB checked in by phyrephox, 5 years ago (diff)

+ added feature: in bracketing mode you now have the option to add a suffix to the raw filename, so that later you can easily identifiy the raws that were created during bracketing. it is disabled at default, and can be enabled in the bracketing submenu (or should it be moved to the raw submenu?). idea & patch by rr807 in the german forum, see http://www.wirklemms.de/chdk/forum/viewtopic.php?p=4482#4482 & http://chdk.kernreaktor.org/mantis/view.php?id=86. btw if you enable this, it is likely that your raw files cant be seen by the PC anymore when you connect your cam via usb cable to it, so use your cardreader (also note that dng4-ps will not find the corresponding jpgs!)
+ added compiler info to buildinfo (changed all lang files accordingly). shows the compiler version - found in PlasmaHHs diff @ http://plasmahh.projectiwear.org/chdk.html (rest will follow soon, need PlasmaHHs help though)
+ added option to show temperature in fahrenheit (up to now it was coupled with time format) http://chdk.kernreaktor.org/mantis/view.php?id=34

  • Property svn:eol-style set to native
Line 
1#include "platform.h"
2#include "keyboard.h"
3#include "conf.h"
4#include "histogram.h"
5#include "font.h"
6#include "camera.h"
7#include "raw.h"
8#include "gui_draw.h"
9#include "gui_osd.h"
10#include "gui_grid.h"
11#include "core.h"
12#include "stdlib.h"
13#include "script.h"
14
15//-------------------------------------------------------------------
16#define CONF_FILE  "A/CHDK/CCHDK.CFG"
17#define CONF_MAGICK_VALUE (0x33204741)
18
19#define CONF_INFO(id, param, type, def, func) { id, sizeof( param ), &param , type, {def}, func }
20#define CONF_DEF_PTR    1
21#define CONF_DEF_VALUE  2
22
23//-------------------------------------------------------------------
24typedef struct {
25    unsigned short      id;
26    unsigned short      size;
27    void                *var;
28    int                 type;
29    union {
30        void            *ptr;
31        int             i;
32        color           cl;
33    };
34    void                (*func)();
35} ConfInfo;
36
37//-------------------------------------------------------------------
38Conf conf;
39
40int state_shooting_progress = SHOOTING_PROGRESS_NONE;
41int state_save_raw_nth_only;
42int state_expos_recalculated;
43int state_expos_under;
44int state_expos_over;
45int auto_started;
46int shot_histogram_enabled;
47
48int state_debug1;
49int debug_propcase_show;
50int debug_propcase_page;
51int debug_vals_show;
52int debug_pardata_show;
53
54// reyalp: putting these in conf, since the conf values are lookups for them
55// prefixes and extentions available for raw images (index with conf.raw_prefix etc)
56const char* img_prefixes[NUM_IMG_PREFIXES]={ "IMG_", "CRW_", "SND_" /*, "AUT_", "ETC_","SDR_", "MVI_", "MRK_"*/};
57const char* img_exts[NUM_IMG_EXTS]={ ".JPG", ".CRW", ".CR2", ".THM", ".WAV"/*, ".AVI", ".MRK"*/};
58// ugh
59const char *video_bitrate_strings[VIDEO_BITRATE_STEPS]={ "0.25x", "0.5x","0.75x", "1x", "1.25x", "1.5x", "1.75x", "2x", "2.5x", "3x"};
60
61//-------------------------------------------------------------------
62static int def_ubasic_vars[SCRIPT_NUM_PARAMS] = {0};
63static int def_batt_volts_max, def_batt_volts_min;
64static OSD_pos def_histo_pos, def_dof_pos, def_batt_icon_pos, def_space_icon_pos, def_space_hor_pos, def_space_ver_pos, def_batt_txt_pos, def_space_txt_pos,
65               def_mode_state_pos, def_mode_raw_pos, def_mode_video_pos, def_mode_ev_pos, def_values_pos, def_clock_pos, def_ev_video_pos, def_temp_pos;
66static int def_user_menu_vars[USER_MENU_ITEMS] = {0};
67
68static void conf_change_script_file();
69static void conf_change_histo_mode();
70static void conf_change_histo_layout();
71static void conf_change_font_cp();
72static void conf_change_menu_rbf_file();
73static void conf_change_menu_symbol_rbf_file();
74static void conf_change_alt_mode_button();
75static void conf_change_grid_file();
76static void conf_change_video_bitrate();
77
78void ubasic_camera_set_raw(int mode)
79{
80    conf.save_raw = mode;
81}
82
83void ubasic_camera_set_nr(int mode)
84{
85        // "Auto", "Off", "On"
86    conf.raw_nr = mode;
87}
88int ubasic_camera_script_autostart()
89{       
90        // 1 = Autostarted
91        return auto_started;
92}
93
94void ubasic_camera_set_script_autostart(int state)
95{       
96        // 1 = Autostarted
97        auto_started = state;
98}
99
100int ubasic_camera_get_nr()
101{
102        // "Auto", "Off", "On"
103    return conf.raw_nr;
104}
105
106
107void clear_values()
108{       
109        if (conf.clear_override)
110        {
111         conf.av_override_value=0;
112         conf.tv_override_koef=0;
113         conf.subj_dist_override_koef=0;
114         conf.iso_override_koef=0;
115         conf.nd_filter_state=0;
116        }
117        if (conf.clear_zoom_override)
118        {
119        conf.zoom_override = 0;
120        }
121        if (conf.clear_bracket)
122        {
123         conf.av_bracket_value=0;
124         conf.tv_bracket_value=0;
125         conf.iso_bracket_koef=0;
126         conf.subj_dist_bracket_koef=0;
127        }
128     if (conf.clear_video)
129        {
130         conf.video_mode = 0;
131         conf.video_quality = VIDEO_DEFAULT_QUALITY;
132         conf.video_bitrate = VIDEO_DEFAULT_BITRATE;
133         shooting_video_bitrate_change(conf.video_bitrate);
134        }
135}
136
137static const ConfInfo conf_info[] = {
138/* !!! Do NOT change ID for items defined already! Append a new one at the end! !!! */
139    CONF_INFO(  1, conf.show_osd,               CONF_DEF_VALUE, i:1, NULL),
140    CONF_INFO(  2, conf.save_raw,               CONF_DEF_VALUE, i:0, NULL),
141    CONF_INFO(  3, conf.script_shoot_delay,     CONF_DEF_VALUE, i:0, NULL),
142    CONF_INFO(  4, conf.show_histo,             CONF_DEF_VALUE, i:0, NULL),
143    CONF_INFO(  5, conf.ubasic_vars,            CONF_DEF_PTR,   ptr:&def_ubasic_vars, NULL),
144    CONF_INFO(  6, conf.script_param_set,       CONF_DEF_VALUE, i:0, NULL),
145    CONF_INFO(  7, conf.show_dof,               CONF_DEF_VALUE, i:DOF_DONT_SHOW, NULL),
146    CONF_INFO(  8, conf.batt_volts_max,         CONF_DEF_PTR,   ptr:&def_batt_volts_max, NULL),
147    CONF_INFO(  9, conf.batt_volts_min,         CONF_DEF_PTR,   ptr:&def_batt_volts_min, NULL),
148    CONF_INFO( 10, conf.batt_step_25,           CONF_DEF_VALUE, i:1, NULL),
149    CONF_INFO( 11, conf.batt_perc_show,         CONF_DEF_VALUE, i:1, NULL),
150    CONF_INFO( 12, conf.batt_volts_show,        CONF_DEF_VALUE, i:0, NULL),
151    CONF_INFO( 13, conf.batt_icon_show,         CONF_DEF_VALUE, i:1, NULL),
152    CONF_INFO( 14, conf.show_state,             CONF_DEF_VALUE, i:1, NULL),
153    CONF_INFO( 15, conf.show_values,            CONF_DEF_VALUE, i:0, NULL),
154    CONF_INFO( 16, conf.show_overexp,           CONF_DEF_VALUE, i:1, NULL),
155    CONF_INFO( 17, conf.histo_mode,             CONF_DEF_VALUE, i:HISTO_MODE_LINEAR, conf_change_histo_mode),
156    CONF_INFO( 18, conf.histo_auto_ajust,       CONF_DEF_VALUE, i:1, NULL),
157    CONF_INFO( 19, conf.histo_ignore_boundary,  CONF_DEF_VALUE, i:4, NULL),
158    CONF_INFO( 20, conf.histo_layout,           CONF_DEF_VALUE, i:OSD_HISTO_LAYOUT_A, conf_change_histo_layout),
159    CONF_INFO( 21, conf.histo_pos,              CONF_DEF_PTR,   ptr:&def_histo_pos, NULL),
160    CONF_INFO( 22, conf.dof_pos,                CONF_DEF_PTR,   ptr:&def_dof_pos, NULL),
161    CONF_INFO( 23, conf.batt_icon_pos,          CONF_DEF_PTR,   ptr:&def_batt_icon_pos, NULL),
162    CONF_INFO( 24, conf.batt_txt_pos,           CONF_DEF_PTR,   ptr:&def_batt_txt_pos , NULL),
163    CONF_INFO( 25, conf.mode_state_pos,         CONF_DEF_PTR,   ptr:&def_mode_state_pos , NULL),
164    CONF_INFO( 26, conf.values_pos,             CONF_DEF_PTR,   ptr:&def_values_pos , NULL),
165    CONF_INFO( 27, conf.histo_color,            CONF_DEF_VALUE, cl:MAKE_COLOR(COLOR_BG, COLOR_WHITE), NULL),
166    CONF_INFO( 28, conf.osd_color,              CONF_DEF_VALUE, cl:MAKE_COLOR(COLOR_BG, COLOR_FG), NULL),
167    CONF_INFO( 29, conf.batt_icon_color,        CONF_DEF_VALUE, cl:COLOR_WHITE, NULL),
168    CONF_INFO( 30, conf.menu_color,             CONF_DEF_VALUE, cl:MAKE_COLOR(COLOR_BG, COLOR_FG), NULL),
169    CONF_INFO( 31, conf.reader_color,           CONF_DEF_VALUE, cl:MAKE_COLOR(COLOR_GREY, COLOR_WHITE), NULL),
170    CONF_INFO( 32, conf.ricoh_ca1_mode,         CONF_DEF_VALUE, i:0, NULL),
171    CONF_INFO( 33, conf.flashlight,             CONF_DEF_VALUE, i:0, NULL),
172//    CONF_INFO( 34, conf.ns_enable_memdump,      CONF_DEF_VALUE, i:0, NULL),
173    CONF_INFO( 34, conf.debug_shortcut_action,  CONF_DEF_VALUE, i:0, NULL), // backwards compatible
174    CONF_INFO( 35, conf.raw_in_dir,             CONF_DEF_VALUE, i:0, NULL),
175    CONF_INFO( 36, conf.raw_prefix,             CONF_DEF_VALUE, i:RAW_PREFIX_CRW, NULL),
176    CONF_INFO( 37, conf.raw_ext,                CONF_DEF_VALUE, i:RAW_EXT_CRW, NULL),
177    CONF_INFO( 38, conf.reader_file,            CONF_DEF_PTR,   ptr:"A/README.TXT", conf_change_script_file),
178    CONF_INFO( 39, conf.reader_pos,             CONF_DEF_VALUE, i:0, NULL),
179    CONF_INFO( 40, conf.sokoban_level,          CONF_DEF_VALUE, i:0, NULL),
180    CONF_INFO( 41, conf.show_clock,             CONF_DEF_VALUE, i:2, NULL),
181    CONF_INFO( 42, conf.clock_pos,              CONF_DEF_PTR,   ptr:&def_clock_pos , NULL),
182    CONF_INFO( 43, conf.reader_autoscroll,      CONF_DEF_VALUE, i:0, NULL),
183    CONF_INFO( 44, conf.reader_autoscroll_delay,CONF_DEF_VALUE, i:5, NULL),
184    CONF_INFO( 45, conf.reader_rbf_file,        CONF_DEF_PTR,   ptr:"", NULL),
185    CONF_INFO( 46, conf.reader_codepage,        CONF_DEF_VALUE, i:FONT_CP_WIN, NULL),
186    CONF_INFO( 47, conf.splash_show,            CONF_DEF_VALUE, i:1, NULL),
187    CONF_INFO( 48, conf.histo_color2,           CONF_DEF_VALUE, cl:MAKE_COLOR(COLOR_RED, COLOR_WHITE), NULL),
188    CONF_INFO( 49, conf.zebra_draw,             CONF_DEF_VALUE, i:0, NULL),
189    CONF_INFO( 50, conf.zebra_mode,             CONF_DEF_VALUE, i:ZEBRA_MODE_BLINKED_2, NULL),
190    CONF_INFO( 51, conf.zebra_restore_screen,   CONF_DEF_VALUE, i:1, NULL),
191    CONF_INFO( 52, conf.zebra_restore_osd,      CONF_DEF_VALUE, i:1, NULL),
192    CONF_INFO( 53, conf.zebra_over,             CONF_DEF_VALUE, i:1, NULL),
193    CONF_INFO( 54, conf.zebra_under,            CONF_DEF_VALUE, i:0, NULL),
194    CONF_INFO( 55, conf.zebra_color,            CONF_DEF_VALUE, cl:MAKE_COLOR(COLOR_RED, COLOR_RED), NULL),
195    CONF_INFO( 56, conf.zebra_draw_osd,         CONF_DEF_VALUE, i:ZEBRA_DRAW_HISTO, NULL),
196    CONF_INFO( 57, conf.user_menu_as_root,      CONF_DEF_VALUE, i:0, NULL),
197    CONF_INFO( 58, conf.zoom_value,             CONF_DEF_VALUE, i:ZOOM_SHOW_X, NULL),
198    CONF_INFO( 59, conf.use_zoom_mf,            CONF_DEF_VALUE, i:0, NULL),
199    CONF_INFO( 60, conf.raw_save_first_only,    CONF_DEF_VALUE, i:0, NULL),
200    CONF_INFO( 61, conf.reader_wrap_by_words,   CONF_DEF_VALUE, i:1, NULL),
201    CONF_INFO( 62, conf.menu_symbol_rbf_file,   CONF_DEF_PTR,   ptr:"A/CHDK/SYMBOLS/icon_10.rbf", conf_change_menu_symbol_rbf_file),
202    CONF_INFO( 63, conf.alt_mode_button,        CONF_DEF_VALUE, i:KEY_PRINT, conf_change_alt_mode_button),
203    CONF_INFO( 64, conf.lang_file,              CONF_DEF_PTR,   ptr:"", NULL),
204    CONF_INFO( 65, conf.font_cp,                CONF_DEF_VALUE, i:FONT_CP_WIN_1251, conf_change_font_cp),
205    CONF_INFO( 66, conf.menu_rbf_file,          CONF_DEF_PTR,   ptr:"", conf_change_menu_rbf_file),
206    CONF_INFO( 67, conf.alt_prevent_shutdown,   CONF_DEF_VALUE, i:ALT_PREVENT_SHUTDOWN_ALT, NULL),
207    CONF_INFO( 68, conf.show_grid_lines,        CONF_DEF_VALUE, i:0, NULL),
208    CONF_INFO( 69, conf.grid_lines_file,        CONF_DEF_PTR,   ptr:"", conf_change_grid_file),
209    CONF_INFO( 70, conf.raw_nr,                 CONF_DEF_VALUE, i:NOISE_REDUCTION_AUTO_CANON, NULL),
210    CONF_INFO( 71, conf.grid_force_color,       CONF_DEF_VALUE, i:0, NULL),
211    CONF_INFO( 72, conf.grid_color,             CONF_DEF_VALUE, cl:MAKE_COLOR(COLOR_BG, COLOR_FG), NULL),
212
213    CONF_INFO( 80, conf.dof_subj_dist_as_near_limit,CONF_DEF_VALUE, i:0, NULL),
214    CONF_INFO( 81, conf.dof_use_exif_subj_dist,     CONF_DEF_VALUE, i:0, NULL),
215    CONF_INFO( 82, conf.dof_subj_dist_in_misc,      CONF_DEF_VALUE, i:1, NULL),
216    CONF_INFO( 83, conf.dof_near_limit_in_misc,     CONF_DEF_VALUE, i:1, NULL),
217    CONF_INFO( 84, conf.dof_far_limit_in_misc,      CONF_DEF_VALUE, i:1, NULL),
218    CONF_INFO( 85, conf.dof_hyperfocal_in_misc,     CONF_DEF_VALUE, i:1, NULL),
219    CONF_INFO( 86, conf.dof_depth_in_misc,          CONF_DEF_VALUE, i:0, NULL),
220
221        CONF_INFO( 87, conf.values_show_in_review,    CONF_DEF_VALUE, i:0, NULL),
222    CONF_INFO( 88, conf.values_show_zoom,         CONF_DEF_VALUE, i:1, NULL),
223    CONF_INFO( 89, conf.values_show_real_aperture,CONF_DEF_VALUE, i:0, NULL),
224    CONF_INFO( 90, conf.values_show_real_iso,     CONF_DEF_VALUE, i:1, NULL),
225    CONF_INFO( 91, conf.values_show_market_iso,   CONF_DEF_VALUE, i:0, NULL),
226    CONF_INFO( 92, conf.values_show_iso_only_in_autoiso_mode, CONF_DEF_VALUE, i:0, NULL),
227    CONF_INFO( 93, conf.values_show_ev_seted,     CONF_DEF_VALUE, i:0, NULL),
228    CONF_INFO( 94, conf.values_show_ev_measured,  CONF_DEF_VALUE, i:0, NULL),
229    CONF_INFO( 95, conf.values_show_bv_measured,  CONF_DEF_VALUE, i:0, NULL),
230    CONF_INFO( 96, conf.values_show_bv_seted,     CONF_DEF_VALUE, i:0, NULL),
231    CONF_INFO( 97, conf.values_show_overexposure, CONF_DEF_VALUE, i:0, NULL),
232    CONF_INFO( 98, conf.values_show_luminance,    CONF_DEF_VALUE, i:0, NULL),
233
234    CONF_INFO( 99, conf.video_mode,             CONF_DEF_VALUE, i:0, NULL),
235    CONF_INFO(100, conf.video_quality,          CONF_DEF_VALUE, i:VIDEO_DEFAULT_QUALITY,NULL),
236    CONF_INFO(101, conf.video_bitrate,          CONF_DEF_VALUE, i:VIDEO_DEFAULT_BITRATE, conf_change_video_bitrate),
237   
238    CONF_INFO(102, conf.tv_override_value,      CONF_DEF_VALUE, i:0, NULL),     
239    CONF_INFO(103, conf.tv_override_koef,       CONF_DEF_VALUE, i:0, NULL),     
240
241    CONF_INFO(104, conf.av_override_value,      CONF_DEF_VALUE, i:0, NULL),
242    CONF_INFO(105, conf.iso_override_value,     CONF_DEF_VALUE, i:0, NULL),
243    CONF_INFO(106, conf.iso_override_koef,      CONF_DEF_VALUE, i:0, NULL),
244   
245    CONF_INFO(107, conf.subj_dist_override_value,CONF_DEF_VALUE, i:0, NULL),
246    CONF_INFO(108, conf.subj_dist_override_koef, CONF_DEF_VALUE, i:0, NULL),
247   
248    CONF_INFO(109, conf.tv_bracket_value,       CONF_DEF_VALUE, i:0, NULL),
249    CONF_INFO(110, conf.av_bracket_value,       CONF_DEF_VALUE, i:0, NULL),
250    CONF_INFO(111, conf.iso_bracket_value,      CONF_DEF_VALUE, i:0, NULL),
251    CONF_INFO(112, conf.iso_bracket_koef,       CONF_DEF_VALUE, i:0, NULL),
252    CONF_INFO(113, conf.subj_dist_bracket_value,CONF_DEF_VALUE, i:0, NULL),
253    CONF_INFO(114, conf.subj_dist_bracket_koef, CONF_DEF_VALUE, i:0, NULL),
254    CONF_INFO(115, conf.bracket_type,           CONF_DEF_VALUE, i:0, NULL),
255   
256    CONF_INFO(116, conf.recalc_exposure,        CONF_DEF_VALUE, i:0, NULL),
257    CONF_INFO(117, conf.tv_exposure_order,      CONF_DEF_VALUE, i:2, NULL),
258    CONF_INFO(118, conf.av_exposure_order,      CONF_DEF_VALUE, i:1, NULL),
259    CONF_INFO(119, conf.iso_exposure_order,     CONF_DEF_VALUE, i:3, NULL),
260   
261    CONF_INFO(120, conf.script_startup,         CONF_DEF_VALUE, i:0, NULL),
262    CONF_INFO(121, conf.remote_enable,          CONF_DEF_VALUE, i:0, NULL),
263   
264    CONF_INFO(122, conf.values_show_canon_overexposure, CONF_DEF_VALUE, i:0, NULL),
265    CONF_INFO(123, conf.clear_override,         CONF_DEF_VALUE, i:1, NULL),
266   
267    CONF_INFO(124, conf.show_osd_in_review,     CONF_DEF_VALUE, i:0, NULL),
268   
269    CONF_INFO(125, conf.dof_dist_from_lens,     CONF_DEF_VALUE, i:0, NULL),
270   
271    CONF_INFO(126, conf.clear_bracket,          CONF_DEF_VALUE, i:1, NULL),
272    CONF_INFO(127, conf.zebra_multichannel,     CONF_DEF_VALUE, i:0, NULL),
273
274    CONF_INFO(128, conf.nd_filter_state,        CONF_DEF_VALUE, i:0, NULL),
275    CONF_INFO(129, conf.histo_show_ev_grid,     CONF_DEF_VALUE, i:0, NULL),
276   
277    CONF_INFO(130, conf.osd_color_warn,         CONF_DEF_VALUE, cl:MAKE_COLOR(COLOR_BG, COLOR_RED), NULL),
278    CONF_INFO(131, conf.space_color,            CONF_DEF_VALUE, cl:MAKE_COLOR(COLOR_BG, COLOR_FG), NULL),
279    CONF_INFO(132, conf.space_icon_show,        CONF_DEF_VALUE, i:0, NULL),
280    CONF_INFO(133, conf.space_icon_pos,         CONF_DEF_PTR, ptr:&def_space_icon_pos, NULL),
281    CONF_INFO(134, conf.space_perc_show,        CONF_DEF_VALUE, i:0, NULL),
282    CONF_INFO(135, conf.space_mb_show,          CONF_DEF_VALUE, i:1, NULL),
283    CONF_INFO(136, conf.space_txt_pos,          CONF_DEF_PTR,   ptr:&def_space_txt_pos , NULL),
284    CONF_INFO(137, conf.show_remaining_raw,     CONF_DEF_VALUE, i:1, NULL),
285    CONF_INFO(138, conf.mode_raw_pos,           CONF_DEF_PTR,   ptr:&def_mode_raw_pos , NULL),
286    CONF_INFO(139, conf.show_raw_state,         CONF_DEF_VALUE, i:1, NULL),
287   
288    CONF_INFO(140, conf.show_values_in_video,   CONF_DEF_VALUE, i:0, NULL),
289    CONF_INFO(141, conf.tv_enum_type,           CONF_DEF_VALUE, i:1, NULL),
290
291    CONF_INFO(142, conf.user_menu_enable,       CONF_DEF_VALUE, i:0, NULL),
292    CONF_INFO(143, conf.user_menu_vars,         CONF_DEF_PTR,   ptr:&def_user_menu_vars, NULL),
293    CONF_INFO(144, conf.zoom_scale,             CONF_DEF_VALUE, i:100, NULL),
294    CONF_INFO(145, conf.space_bar_show,         CONF_DEF_VALUE, i:1, NULL),
295    CONF_INFO(146, conf.space_bar_size,         CONF_DEF_VALUE, i:1, NULL),
296    CONF_INFO(147, conf.space_ver_pos,          CONF_DEF_PTR, ptr:&def_space_ver_pos, NULL),
297    CONF_INFO(148, conf.space_hor_pos,          CONF_DEF_PTR, ptr:&def_space_hor_pos, NULL),   
298    CONF_INFO(149, conf.space_bar_width,        CONF_DEF_VALUE, i:2, NULL),
299    CONF_INFO(150, conf.space_perc_warn,        CONF_DEF_VALUE, i:10, NULL),
300    CONF_INFO(151, conf.space_mb_warn,          CONF_DEF_VALUE, i:20, NULL),
301    CONF_INFO(152, conf.space_warn_type,        CONF_DEF_VALUE, i:0, NULL),
302    CONF_INFO(153, conf.remaining_raw_treshold, CONF_DEF_VALUE, i:0, NULL),
303    CONF_INFO(154, conf.unlock_optical_zoom_for_video, CONF_DEF_VALUE, i:1, NULL),
304    CONF_INFO(155, conf.clock_format,           CONF_DEF_VALUE, i:0, NULL),
305    CONF_INFO(156, conf.clock_indicator,        CONF_DEF_VALUE, i:0, NULL),
306    CONF_INFO(157, conf.clock_halfpress,        CONF_DEF_VALUE, i:1, NULL),
307   
308    CONF_INFO(158, conf.autoiso_enable,         CONF_DEF_VALUE, i:0, NULL),
309    CONF_INFO(159, conf.autoiso_shutter,        CONF_DEF_VALUE, i:0, NULL),
310    CONF_INFO(160, conf.autoiso_user_factor,    CONF_DEF_VALUE, i:5, NULL),
311    CONF_INFO(161, conf.autoiso_is_factor,      CONF_DEF_VALUE, i:2, NULL),
312    CONF_INFO(162, conf.autoiso_max_iso_hi,     CONF_DEF_VALUE, i:55, NULL),
313    CONF_INFO(163, conf.autoiso_max_iso_auto,   CONF_DEF_VALUE, i:35, NULL),
314    CONF_INFO(164, conf.autoiso_min_iso,        CONF_DEF_VALUE, i:5, NULL),
315
316    CONF_INFO(165, conf.menu_title_color,       CONF_DEF_VALUE, cl:MAKE_COLOR(COLOR_WHITE, COLOR_BLACK), NULL),
317    CONF_INFO(166, conf.menu_cursor_color,      CONF_DEF_VALUE, cl:MAKE_COLOR(COLOR_SELECTED_BG, COLOR_SELECTED_FG), NULL),
318    CONF_INFO(167, conf.menu_center,            CONF_DEF_VALUE, i:1, NULL),
319    CONF_INFO(168, conf.mute_on_zoom,           CONF_DEF_VALUE, i:0, NULL),
320    CONF_INFO(169, conf.bad_pixel_removal,      CONF_DEF_VALUE, i:0, NULL),
321    CONF_INFO(170, conf.video_af_key,           CONF_DEF_VALUE, i:0, NULL),
322    CONF_INFO(171, conf.osd_color_override,     CONF_DEF_VALUE, cl:MAKE_COLOR(COLOR_BG, COLOR_RED), NULL),
323    CONF_INFO(172, conf.override_disable,       CONF_DEF_VALUE, i:2, NULL),
324    CONF_INFO(173, conf.override_disable_all,   CONF_DEF_VALUE, i:1, NULL),
325    CONF_INFO(174, conf.hide_osd,   CONF_DEF_VALUE, i:1, NULL),
326    CONF_INFO(175, conf.save_raw_in_video,      CONF_DEF_VALUE, i:1, NULL),
327    CONF_INFO(176, conf.show_movie_time,        CONF_DEF_VALUE, i:3, NULL),
328    CONF_INFO(177, conf.show_movie_refresh,     CONF_DEF_VALUE, i:1, NULL),
329    CONF_INFO(178, conf.mode_video_pos,         CONF_DEF_PTR,   ptr:&def_mode_video_pos , NULL),
330    CONF_INFO(179, conf.clear_video,            CONF_DEF_VALUE, i:0, NULL),
331    CONF_INFO(180, conf.fast_ev,                CONF_DEF_VALUE, i:0, NULL),
332    CONF_INFO(181, conf.fast_ev_step,           CONF_DEF_VALUE, i:1, NULL),
333    CONF_INFO(182, conf.mode_ev_pos,            CONF_DEF_PTR,   ptr:&def_mode_ev_pos , NULL),
334    CONF_INFO(183, conf.menu_symbol_enable,     CONF_DEF_VALUE, i:1, NULL),
335    CONF_INFO(184, conf.menu_symbol_color,      CONF_DEF_VALUE, cl:MAKE_COLOR(COLOR_BG, COLOR_FG), NULL),
336    CONF_INFO(185, conf.curve_file,             CONF_DEF_PTR, ptr:"", NULL),
337    CONF_INFO(186, conf.curve_enable,           CONF_DEF_VALUE, i:0, NULL),
338    CONF_INFO(187, conf.edge_overlay_enable,    CONF_DEF_VALUE, i:0, NULL),
339    CONF_INFO(188, conf.edge_overlay_thresh,    CONF_DEF_VALUE, i:40, NULL),
340    CONF_INFO(189, conf.edge_overlay_color,     CONF_DEF_VALUE, cl:0x66, NULL),
341    CONF_INFO(190, conf.synch_enable,           CONF_DEF_VALUE, i:0, NULL),
342    CONF_INFO(191, conf.synch_delay_enable,     CONF_DEF_VALUE, i:0, NULL),
343    CONF_INFO(192, conf.synch_delay_value,      CONF_DEF_VALUE, i:100, NULL),
344    CONF_INFO(193, conf.synch_delay_coarse_value, CONF_DEF_VALUE, i:0, NULL),
345    CONF_INFO(194, conf.script_file,            CONF_DEF_PTR,   ptr:"", conf_change_script_file),
346    CONF_INFO(195, conf.mem_view_addr_init,     CONF_DEF_VALUE, i:0x1000, NULL),
347    CONF_INFO(196, conf.save_raw_in_sports,     CONF_DEF_VALUE, i:0, NULL),
348    CONF_INFO(197, conf.save_raw_in_burst,      CONF_DEF_VALUE, i:0, NULL),
349    CONF_INFO(198, conf.save_raw_in_ev_bracketing, CONF_DEF_VALUE, i:0, NULL),
350    CONF_INFO(199, conf.save_raw_in_timer,      CONF_DEF_VALUE, i:0, NULL),
351    CONF_INFO(200, conf.raw_exceptions_warn,    CONF_DEF_VALUE, i:1, NULL),
352    CONF_INFO(201, conf.menu_select_first_entry, CONF_DEF_VALUE, i:1, NULL),
353    CONF_INFO(202, conf.fast_movie_control,     CONF_DEF_VALUE, i:0, NULL),
354    CONF_INFO(203, conf.show_temp,              CONF_DEF_VALUE, i:1, NULL),
355    CONF_INFO(204, conf.temp_pos,               CONF_DEF_PTR,   ptr:&def_temp_pos , NULL),
356    CONF_INFO(205, conf.fast_movie_quality_control, CONF_DEF_VALUE, i:1, NULL),
357    CONF_INFO(206, conf.remote_zoom_enable,     CONF_DEF_VALUE, i:0, NULL),
358    CONF_INFO(207, conf.zoom_timeout,           CONF_DEF_VALUE, i:5, NULL),
359        CONF_INFO(208, conf.start_sound,     CONF_DEF_VALUE, i:0, NULL),
360    CONF_INFO(209, conf.sub_batch_prefix,  CONF_DEF_VALUE, i:2, NULL), // SND_
361    CONF_INFO(210, conf.sub_batch_ext,  CONF_DEF_VALUE, i:1, NULL), // .CRW
362    CONF_INFO(211, conf.sub_in_dark_value,  CONF_DEF_VALUE, i:30, NULL),
363    CONF_INFO(212, conf.sub_out_dark_value,  CONF_DEF_VALUE, i:0, NULL),
364        CONF_INFO(213, conf.debug_display,     CONF_DEF_VALUE, i:0, NULL),
365        CONF_INFO(214, conf.script_param_save,     CONF_DEF_VALUE, i:1, NULL),
366    CONF_INFO(215, conf.ev_video_pos,           CONF_DEF_PTR,   ptr:&def_ev_video_pos, NULL),
367    CONF_INFO(216, conf.zoom_override_value,     CONF_DEF_VALUE, i:0, NULL),
368    CONF_INFO(217, conf.zoom_override,      CONF_DEF_VALUE, i:0, NULL),
369    CONF_INFO(218, conf.clear_zoom_override,         CONF_DEF_VALUE, i:1, NULL),                       
370    CONF_INFO(219, conf.bracketing_add_raw_suffix,         CONF_DEF_VALUE, i:0, NULL),                 
371    CONF_INFO(220, conf.temperature_unit,              CONF_DEF_VALUE, i:0, NULL),
372    };
373#define CONF_NUM (sizeof(conf_info)/sizeof(conf_info[0]))
374
375//-------------------------------------------------------------------
376static void conf_change_histo_mode() {
377    histogram_set_mode(conf.histo_mode);
378}
379
380static void conf_change_histo_layout() {
381    if (conf.histo_layout==OSD_HISTO_LAYOUT_Y || conf.histo_layout==OSD_HISTO_LAYOUT_Y_argb) {
382        histogram_set_main(HISTO_Y);
383    } else {
384        histogram_set_main(HISTO_RGB);
385    }
386}
387
388static void conf_change_font_cp() {
389    font_init();
390    font_set(conf.font_cp);
391}
392
393static void conf_change_script_file() {
394    script_load(conf.script_file, 2);
395}
396
397static void conf_change_menu_rbf_file() {
398    if (!rbf_load(conf.menu_rbf_file))
399        rbf_load_from_8x16(current_font);
400    rbf_set_codepage(FONT_CP_WIN);
401}
402
403static void conf_change_menu_symbol_rbf_file() {
404    rbf_load_symbol(conf.menu_symbol_rbf_file);         //AKA
405}
406
407static void conf_change_alt_mode_button() {
408#if CAM_ADJUSTABLE_ALT_BUTTON
409    kbd_set_alt_mode_key_mask(conf.alt_mode_button);
410#else
411    conf.alt_mode_button = KEY_PRINT;
412#endif
413}
414
415static void conf_change_grid_file() {
416    grid_lines_load(conf.grid_lines_file);
417}
418
419static void conf_change_video_bitrate() {
420    shooting_video_bitrate_change(conf.video_bitrate);
421 }
422
423//-------------------------------------------------------------------
424static void conf_init_defaults() {
425    // init some defaults values
426    def_batt_volts_max = get_vbatt_max();
427    def_batt_volts_min = get_vbatt_min();
428    def_histo_pos.x = 45;
429    def_histo_pos.y = vid_get_bitmap_screen_height()-HISTO_HEIGHT-40;
430    def_dof_pos.x = 90;
431    def_dof_pos.y = 45;
432    def_batt_icon_pos.x = 178;
433    def_batt_icon_pos.y = 0;
434    def_batt_txt_pos.x=178;
435    def_batt_txt_pos.y=1*FONT_HEIGHT;
436    def_space_icon_pos.x = vid_get_bitmap_screen_width()-100;
437    def_space_icon_pos.y = 0;
438    def_space_ver_pos.x = vid_get_bitmap_screen_width()-7;
439    def_space_ver_pos.y = 0;
440    def_space_hor_pos.x = 0;
441    def_space_hor_pos.y = vid_get_bitmap_screen_height()-7;
442    def_space_txt_pos.x=128;
443    def_space_txt_pos.y=0;
444    def_mode_state_pos.x=35;
445    def_mode_state_pos.y=0;
446    def_mode_raw_pos.x=vid_get_bitmap_screen_width()-7*FONT_WIDTH-2;
447    def_mode_raw_pos.y=vid_get_bitmap_screen_height()-3*FONT_HEIGHT-2;
448    def_mode_video_pos.x=vid_get_bitmap_screen_width()-25*FONT_WIDTH-2;
449    def_mode_video_pos.y=vid_get_bitmap_screen_height()-6*FONT_HEIGHT-2;
450    def_mode_ev_pos.x=vid_get_bitmap_screen_width()-40*FONT_WIDTH-2;
451    def_mode_ev_pos.y=vid_get_bitmap_screen_height()-8*FONT_HEIGHT-2;
452    def_values_pos.x=vid_get_bitmap_screen_width()-9*FONT_WIDTH;
453    def_values_pos.y=30;
454    def_clock_pos.x=vid_get_bitmap_screen_width()-5*FONT_WIDTH-2;
455    def_clock_pos.y=0;
456    def_temp_pos.x=vid_get_bitmap_screen_width()-9*FONT_WIDTH-2;
457    def_temp_pos.y=1*FONT_HEIGHT;
458    def_ev_video_pos.x=18;
459    def_ev_video_pos.y=80;
460
461}
462
463//-------------------------------------------------------------------
464void conf_load_defaults() {
465    register int i;
466
467    for (i=0; i<CONF_NUM; ++i) {
468        switch (conf_info[i].type) {
469            case CONF_DEF_VALUE:
470                memcpy(conf_info[i].var, &(conf_info[i].i), conf_info[i].size);
471                break;
472            case CONF_DEF_PTR:
473                memcpy(conf_info[i].var, conf_info[i].ptr, conf_info[i].size);
474                break;
475        }
476        if (conf_info[i].func) {
477            conf_info[i].func();
478        }
479    }
480}
481
482//-------------------------------------------------------------------
483void conf_save() {
484    static const long t=CONF_MAGICK_VALUE;
485    register int i;
486    int fd;
487    char *buf=umalloc(sizeof(t)+CONF_NUM*(sizeof(conf_info[0].id)+sizeof(conf_info[0].size))+sizeof(conf));
488    char *p=buf;
489
490    fd = open(CONF_FILE, O_WRONLY|O_CREAT|O_TRUNC, 0777);
491    if (fd>=0){
492        memcpy(p, &t, sizeof(t));
493        p+=sizeof(t);
494        for (i=0; i<CONF_NUM; ++i) {
495            memcpy(p, &(conf_info[i].id), sizeof(conf_info[i].id));
496            p+=sizeof(conf_info[i].id);
497            memcpy(p, &(conf_info[i].size), sizeof(conf_info[i].size));
498            p+=sizeof(conf_info[i].size);
499            memcpy(p, conf_info[i].var, conf_info[i].size);
500            p+=conf_info[i].size;
501        }
502
503        write(fd, buf, p-buf);
504        close(fd);
505    }
506        ufree(buf);
507}
508
509//-------------------------------------------------------------------
510void conf_restore() {
511    int fd, rcnt, i;
512    unsigned short id, size;
513    char *buf;
514    int offs;
515    struct stat st;
516
517    conf_init_defaults();
518
519    conf_load_defaults();
520
521    if( stat(CONF_FILE,&st) != 0 && st.st_size < sizeof(int))
522        return;
523
524    if(!(buf=umalloc(st.st_size)))
525        return;
526
527    fd = open(CONF_FILE, O_RDONLY, 0777);
528    if( fd < 0 ) {
529        ufree(buf);
530        return;
531    }
532   
533    rcnt = read(fd,buf,st.st_size);
534    close(fd);
535    // read magick value
536    if (*(int *)buf!=CONF_MAGICK_VALUE || rcnt != st.st_size) {
537        ufree(buf);
538        return;
539    }
540    offs=sizeof(int);
541    while (1) {
542        if (offs + sizeof(short) > rcnt)
543            break;
544        id=*((short *)(buf + offs));
545        offs += sizeof(short);
546
547        if (offs + sizeof(short) > rcnt)
548            break;
549        size=*((short *)(buf + offs));
550        offs += sizeof(short);
551
552        for (i=0; i<CONF_NUM; ++i) {
553            if (conf_info[i].id==id && conf_info[i].size==size) {
554                if (offs + size <= rcnt) {
555                   memcpy(conf_info[i].var, buf+offs, size);
556                   if (conf_info[i].func) {
557                       conf_info[i].func();
558                   }
559                }
560                offs += size;
561                break;
562            }
563        }
564        if (i == CONF_NUM) { // unknown id, just skip data
565            offs += size;
566        }
567    }
568    ufree(buf);
569    // clear any "clear on restart" values
570    clear_values();
571}
572
573//-------------------------------------------------------------------
Note: See TracBrowser for help on using the repository browser.