mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Show the gas with the pressure diagram
This is a feature that had been requested a few times in the past and when debugging my "show only used gases" commit I realized that this would have been extremely useful to have... Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
abb43f0f1d
commit
6f7467de7a
4 changed files with 32 additions and 6 deletions
|
@ -832,6 +832,8 @@ static struct plot_data *populate_plot_entries(struct dive *dive, struct divecom
|
|||
entry->po2 = sample->po2 / 1000.0;
|
||||
/* FIXME! sensor index -> cylinder index translation! */
|
||||
entry->cylinderindex = sample->sensor;
|
||||
entry->o2 = dive->cylinder[entry->cylinderindex].gasmix.o2.permille;
|
||||
entry->he = dive->cylinder[entry->cylinderindex].gasmix.he.permille;
|
||||
SENSOR_PRESSURE(entry) = sample->cylinderpressure.mbar;
|
||||
entry->temperature = sample->temperature.mkelvin;
|
||||
|
||||
|
@ -845,6 +847,12 @@ static struct plot_data *populate_plot_entries(struct dive *dive, struct divecom
|
|||
plot_data[idx++].sec = lasttime+20;
|
||||
pi->nr = idx;
|
||||
|
||||
/* make sure the first two entries have the correct gas */
|
||||
plot_data[0].o2 = plot_data[2].o2;
|
||||
plot_data[0].he = plot_data[2].he;
|
||||
plot_data[1].o2 = plot_data[2].o2;
|
||||
plot_data[1].he = plot_data[2].he;
|
||||
|
||||
return plot_data;
|
||||
}
|
||||
|
||||
|
|
|
@ -15,6 +15,7 @@ struct plot_info;
|
|||
struct plot_data {
|
||||
unsigned int in_deco:1;
|
||||
int cylinderindex;
|
||||
int o2, he;
|
||||
int sec;
|
||||
/* pressure[0] is sensor pressure
|
||||
* pressure[1] is interpolated pressure */
|
||||
|
|
|
@ -577,6 +577,8 @@ void ProfileGraphicsView::plot_cylinder_pressure_text()
|
|||
cyl = entry->cylinderindex;
|
||||
if (!seen_cyl[cyl]) {
|
||||
plot_pressure_value(mbar, entry->sec, LEFT, BOTTOM);
|
||||
plot_gas_value(mbar, entry->sec, LEFT, TOP,
|
||||
entry->o2, entry->he);
|
||||
seen_cyl[cyl] = TRUE;
|
||||
}
|
||||
}
|
||||
|
@ -601,6 +603,20 @@ void ProfileGraphicsView::plot_pressure_value(int mbar, int sec, double xalign,
|
|||
plot_text(&tro, QPointF(sec, mbar), QString("%1 %2").arg(pressure).arg(unit));
|
||||
}
|
||||
|
||||
void ProfileGraphicsView::plot_gas_value(int mbar, int sec, double xalign, double yalign, int o2, int he)
|
||||
{
|
||||
QString gas;
|
||||
if (is_air(o2, he))
|
||||
gas = tr("air");
|
||||
else if (he == 0)
|
||||
gas = QString(tr("EAN%1")).arg((o2 + 5) / 10);
|
||||
else
|
||||
gas = QString("%1/%2").arg((o2 + 5) / 10).arg((he + 5) / 10);
|
||||
static text_render_options_t tro = {PRESSURE_TEXT_SIZE, PRESSURE_TEXT, xalign, yalign};
|
||||
plot_text(&tro, QPointF(sec, mbar), gas);
|
||||
|
||||
}
|
||||
|
||||
void ProfileGraphicsView::plot_depth_text()
|
||||
{
|
||||
int maxtime, maxdepth;
|
||||
|
|
|
@ -89,6 +89,7 @@ private:
|
|||
void plot_depth_sample(struct plot_data *entry, text_render_options_t *tro);
|
||||
void plot_cylinder_pressure_text();
|
||||
void plot_pressure_value(int mbar, int sec, double xalign, double yalign);
|
||||
void plot_gas_value(int mbar, int sec, double xalign, double yalign, int o2, int he);
|
||||
void plot_deco_text();
|
||||
void plot_pp_gas_profile();
|
||||
void plot_pp_text();
|
||||
|
|
Loading…
Add table
Reference in a new issue