summaryrefslogtreecommitdiffstats
path: root/core/pref.c
diff options
context:
space:
mode:
Diffstat (limited to 'core/pref.c')
-rw-r--r--core/pref.c128
1 files changed, 128 insertions, 0 deletions
diff --git a/core/pref.c b/core/pref.c
new file mode 100644
index 000000000..bc1f7f3ea
--- /dev/null
+++ b/core/pref.c
@@ -0,0 +1,128 @@
+// SPDX-License-Identifier: GPL-2.0
+#include "pref.h"
+#include "subsurface-string.h"
+
+struct preferences prefs, git_prefs;
+struct preferences default_prefs = {
+ .cloud_base_url = "https://cloud.subsurface-divelog.org/",
+ .units = SI_UNITS,
+ .unit_system = METRIC,
+ .coordinates_traditional = true,
+ .pp_graphs = {
+ .po2 = false,
+ .pn2 = false,
+ .phe = false,
+ .po2_threshold_min = 0.16,
+ .po2_threshold_max = 1.6,
+ .pn2_threshold = 4.0,
+ .phe_threshold = 13.0,
+ },
+ .mod = false,
+ .modpO2 = 1.6,
+ .ead = false,
+ .hrgraph = false,
+ .percentagegraph = false,
+ .dcceiling = true,
+ .redceiling = false,
+ .calcceiling = false,
+ .calcceiling3m = false,
+ .calcndltts = false,
+ .decoinfo = true,
+ .gflow = 30,
+ .gfhigh = 75,
+ .animation_speed = 500,
+ .gf_low_at_maxdepth = false,
+ .show_ccr_setpoint = false,
+ .show_ccr_sensors = false,
+ .show_scr_ocpo2 = false,
+ .font_size = -1,
+ .mobile_scale = 1.0,
+ .display_invalid_dives = false,
+ .show_sac = false,
+ .display_unused_tanks = false,
+ .display_default_tank_infos = true,
+ .show_average_depth = true,
+ .show_icd = false,
+ .ascrate75 = 9000 / 60,
+ .ascrate50 = 9000 / 60,
+ .ascratestops = 9000 / 60,
+ .ascratelast6m = 9000 / 60,
+ .descrate = 18000 / 60,
+ .sacfactor = 400,
+ .problemsolvingtime = 4,
+ .bottompo2 = 1400,
+ .decopo2 = 1600,
+ .bestmixend.mm = 30000,
+ .doo2breaks = false,
+ .dobailout = false,
+ .drop_stone_mode = false,
+ .switch_at_req_stop = false,
+ .min_switch_duration = 60,
+ .surface_segment = 0,
+ .last_stop = false,
+ .verbatim_plan = false,
+ .display_runtime = true,
+ .display_duration = true,
+ .display_transitions = true,
+ .display_variations = false,
+ .o2narcotic = true,
+ .safetystop = true,
+ .bottomsac = 20000,
+ .decosac = 17000,
+ .reserve_gas=40000,
+ .o2consumption = 720,
+ .pscr_ratio = 100,
+ .show_pictures_in_profile = true,
+ .tankbar = false,
+ .defaultsetpoint = 1100,
+ .geocoding = {
+ .category = { 0 }
+ },
+ .locale = {
+ .use_system_language = true,
+ },
+ .planner_deco_mode = BUEHLMANN,
+ .vpmb_conservatism = 3,
+ .distance_threshold = 100,
+ .time_threshold = 300,
+#if defined(SUBSURFACE_MOBILE)
+ .cloud_timeout = 10,
+#else
+ .cloud_timeout = 5,
+#endif
+ .auto_recalculate_thumbnails = true,
+ .extract_video_thumbnails = true,
+ .extract_video_thumbnails_position = 20, // The first fifth seems like a reasonable place
+};
+
+/* copy a preferences block, including making copies of all included strings */
+void copy_prefs(struct preferences *src, struct preferences *dest)
+{
+ *dest = *src;
+ dest->divelist_font = copy_string(src->divelist_font);
+ dest->default_filename = copy_string(src->default_filename);
+ dest->default_cylinder = copy_string(src->default_cylinder);
+ dest->cloud_base_url = copy_string(src->cloud_base_url);
+ dest->cloud_git_url = copy_string(src->cloud_git_url);
+ dest->proxy_host = copy_string(src->proxy_host);
+ dest->proxy_user = copy_string(src->proxy_user);
+ dest->proxy_pass = copy_string(src->proxy_pass);
+ dest->time_format = copy_string(src->time_format);
+ dest->date_format = copy_string(src->date_format);
+ dest->date_format_short = copy_string(src->date_format_short);
+ dest->cloud_storage_password = copy_string(src->cloud_storage_password);
+ dest->cloud_storage_email = copy_string(src->cloud_storage_email);
+ dest->cloud_storage_email_encoded = copy_string(src->cloud_storage_email_encoded);
+ dest->ffmpeg_executable = copy_string(src->ffmpeg_executable);
+}
+
+/*
+ * Free strduped prefs before exit.
+ *
+ * These are not real leaks but they plug the holes found by eg.
+ * valgrind so you can find the real leaks.
+ */
+void free_prefs(void)
+{
+ // nop
+}