subsurface/core/pref.h
Willem Ferguson 81a812539c Plot OC-pO2 graph for SCR dives
This commit allows plotting the OC-equivalent pO2 graph for PSCR
dives. This happens in both the cases where there is no external
O2-monitoring AND when there is external pO2 monitoring. The
calculations are only done for PSCR dives and is achieved as
follows:

1) Within plot-info create a pressure-t called OC_pO2 in
   profile.h and populate this variable with the open-circuit
   pO2 values in profile.c.
2) Create a new partialPressureGasItem ocpo2GasItem in
   profilewidget2.h and, in profilewidget2.cpp, initialise it
   to read the plot-info OC_pO2 values and enable its
   display by using the setVisible method. The
   diveplotdatamodel was also touched in order to achieve
   this.
3) Create a pref button that controls the display of OC-pO2 for SCR dives
4) Change the colour of the OC-pO2 grpah to orange
5) Change the connection of the crr_OC_pO2 signal to be appropriate
6) rename the OC_pO2 attribute to scr_OC-pO2

Signed-off-by: Willem Ferguson <willemferguson@zoology.up.ac.za>
2018-04-28 20:11:22 +03:00

198 lines
4.2 KiB
C

// SPDX-License-Identifier: GPL-2.0
#ifndef PREF_H
#define PREF_H
#ifdef __cplusplus
extern "C" {
#else
#include <stdbool.h>
#endif
#include "units.h"
#include "taxonomy.h"
typedef struct
{
bool po2;
bool pn2;
bool phe;
double po2_threshold_min;
double po2_threshold_max;
double pn2_threshold;
double phe_threshold;
} partial_pressure_graphs_t;
typedef struct {
const char *access_token;
const char *user_id;
const char *album_id;
} facebook_prefs_t;
typedef struct {
enum taxonomy_category category[3];
} geocoding_prefs_t;
typedef struct {
const char *language;
const char *lang_locale;
bool use_system_language;
} locale_prefs_t;
enum deco_mode {
BUEHLMANN,
RECREATIONAL,
VPMB
};
typedef struct {
bool dont_check_for_updates;
bool dont_check_exists;
const char *last_version_used;
const char *next_check;
} update_manager_prefs_t;
typedef struct {
const char *vendor;
const char *product;
const char *device;
const char *device_name;
int download_mode;
} dive_computer_prefs_t;
struct preferences {
const char *divelist_font;
const char *default_filename;
const char *default_cylinder;
const char *cloud_base_url;
const char *cloud_git_url;
const char *time_format;
const char *date_format;
const char *date_format_short;
bool time_format_override;
bool date_format_override;
double font_size;
partial_pressure_graphs_t pp_graphs;
bool mod;
double modpO2;
bool ead;
bool dcceiling;
bool redceiling;
bool calcceiling;
bool calcceiling3m;
bool calcalltissues;
bool calcndltts;
short gflow;
short gfhigh;
int animation_speed;
bool gf_low_at_maxdepth;
bool show_ccr_setpoint;
bool show_ccr_sensors;
bool show_scr_ocpo2;
bool display_invalid_dives;
short unit_system;
struct units units;
bool coordinates_traditional;
bool show_sac;
bool display_unused_tanks;
bool show_average_depth;
bool show_icd;
bool zoomed_plot;
bool hrgraph;
bool percentagegraph;
bool rulergraph;
bool tankbar;
bool save_userid_local;
const char *userid;
int ascrate75; // All rates in mm / sec
int ascrate50;
int ascratestops;
int ascratelast6m;
int descrate;
int sacfactor;
int problemsolvingtime;
int bottompo2;
int decopo2;
enum deco_mode display_deco_mode;
depth_t bestmixend;
int proxy_type;
const char *proxy_host;
int proxy_port;
bool proxy_auth;
const char *proxy_user;
const char *proxy_pass;
bool doo2breaks;
bool drop_stone_mode;
bool last_stop; // At 6m?
bool verbatim_plan;
bool display_runtime;
bool display_duration;
bool display_transitions;
bool display_variations;
bool safetystop;
bool switch_at_req_stop;
int reserve_gas;
int min_switch_duration; // seconds
int bottomsac;
int decosac;
int o2consumption; // ml per min
int pscr_ratio; // dump ratio times 1000
int defaultsetpoint; // default setpoint in mbar
bool show_pictures_in_profile;
bool use_default_file;
short default_file_behavior;
facebook_prefs_t facebook;
const char *cloud_storage_password;
const char *cloud_storage_newpassword;
const char *cloud_storage_email;
const char *cloud_storage_email_encoded;
bool save_password_local;
short cloud_verification_status;
geocoding_prefs_t geocoding;
enum deco_mode planner_deco_mode;
short vpmb_conservatism;
int time_threshold;
int distance_threshold;
bool git_local_only;
short cloud_timeout;
locale_prefs_t locale; //: TODO: move the rest of locale based info here.
update_manager_prefs_t update_manager;
dive_computer_prefs_t dive_computer;
};
enum unit_system_values {
METRIC,
IMPERIAL,
PERSONALIZE
};
enum def_file_behavior {
UNDEFINED_DEFAULT_FILE,
LOCAL_DEFAULT_FILE,
NO_DEFAULT_FILE,
CLOUD_DEFAULT_FILE
};
enum cloud_status {
CS_UNKNOWN,
CS_INCORRECT_USER_PASSWD,
CS_NEED_TO_VERIFY,
CS_VERIFIED,
CS_NOCLOUD
};
extern struct preferences prefs, default_prefs, git_prefs;
#define PP_GRAPHS_ENABLED (prefs.pp_graphs.po2 || prefs.pp_graphs.pn2 || prefs.pp_graphs.phe)
extern const char *system_divelist_default_font;
extern double system_divelist_default_font_size;
extern const char *system_default_directory(void);
extern const char *system_default_filename();
extern bool subsurface_ignore_font(const char *font);
extern void copy_prefs(struct preferences *src, struct preferences *dest);
#ifdef __cplusplus
}
#endif
#endif // PREF_H