mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Plotting cylinder pressure text.
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
This commit is contained in:
parent
d6d1a10195
commit
e62eb58ab5
3 changed files with 51 additions and 50 deletions
49
profile.c
49
profile.c
|
@ -470,55 +470,6 @@ int get_local_sac(struct plot_data *entry1, struct plot_data *entry2, struct div
|
|||
|
||||
#if USE_GTK_UI
|
||||
|
||||
|
||||
static void plot_pressure_value(struct graphics_context *gc, int mbar, int sec,
|
||||
int xalign, int yalign)
|
||||
{
|
||||
int pressure;
|
||||
const char *unit;
|
||||
|
||||
pressure = get_pressure_units(mbar, &unit);
|
||||
text_render_options_t tro = {PRESSURE_TEXT_SIZE, PRESSURE_TEXT, xalign, yalign};
|
||||
plot_text(gc, &tro, sec, mbar, "%d %s", pressure, unit);
|
||||
}
|
||||
|
||||
static void plot_cylinder_pressure_text(struct graphics_context *gc, struct plot_info *pi)
|
||||
{
|
||||
int i;
|
||||
int mbar, cyl;
|
||||
int seen_cyl[MAX_CYLINDERS] = { FALSE, };
|
||||
int last_pressure[MAX_CYLINDERS] = { 0, };
|
||||
int last_time[MAX_CYLINDERS] = { 0, };
|
||||
struct plot_data *entry;
|
||||
|
||||
if (!get_cylinder_pressure_range(gc, pi))
|
||||
return;
|
||||
|
||||
cyl = -1;
|
||||
for (i = 0; i < pi->nr; i++) {
|
||||
entry = pi->entry + i;
|
||||
mbar = GET_PRESSURE(entry);
|
||||
|
||||
if (!mbar)
|
||||
continue;
|
||||
if (cyl != entry->cylinderindex) {
|
||||
cyl = entry->cylinderindex;
|
||||
if (!seen_cyl[cyl]) {
|
||||
plot_pressure_value(gc, mbar, entry->sec, LEFT, BOTTOM);
|
||||
seen_cyl[cyl] = TRUE;
|
||||
}
|
||||
}
|
||||
last_pressure[cyl] = mbar;
|
||||
last_time[cyl] = entry->sec;
|
||||
}
|
||||
|
||||
for (cyl = 0; cyl < MAX_CYLINDERS; cyl++) {
|
||||
if (last_time[cyl]) {
|
||||
plot_pressure_value(gc, last_pressure[cyl], last_time[cyl], CENTER, TOP);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void plot_deco_text(struct graphics_context *gc, struct plot_info *pi)
|
||||
{
|
||||
if (prefs.profile_calc_ceiling) {
|
||||
|
|
|
@ -248,8 +248,8 @@ void ProfileGraphicsView::plot(struct dive *dive)
|
|||
|
||||
plot_depth_text();
|
||||
|
||||
plot_cylinder_pressure_text();
|
||||
#if 0
|
||||
plot_cylinder_pressure_text(gc, pi);
|
||||
plot_deco_text(gc, pi);
|
||||
#endif
|
||||
/* Bounding box */
|
||||
|
@ -292,6 +292,54 @@ void ProfileGraphicsView::plot(struct dive *dive)
|
|||
#endif
|
||||
}
|
||||
|
||||
void ProfileGraphicsView::plot_cylinder_pressure_text()
|
||||
{
|
||||
int i;
|
||||
int mbar, cyl;
|
||||
int seen_cyl[MAX_CYLINDERS] = { FALSE, };
|
||||
int last_pressure[MAX_CYLINDERS] = { 0, };
|
||||
int last_time[MAX_CYLINDERS] = { 0, };
|
||||
struct plot_data *entry;
|
||||
struct plot_info *pi = &gc.pi;
|
||||
|
||||
if (!get_cylinder_pressure_range(&gc))
|
||||
return;
|
||||
|
||||
cyl = -1;
|
||||
for (i = 0; i < pi->nr; i++) {
|
||||
entry = pi->entry + i;
|
||||
mbar = GET_PRESSURE(entry);
|
||||
|
||||
if (!mbar)
|
||||
continue;
|
||||
if (cyl != entry->cylinderindex) {
|
||||
cyl = entry->cylinderindex;
|
||||
if (!seen_cyl[cyl]) {
|
||||
plot_pressure_value(mbar, entry->sec, LEFT, BOTTOM);
|
||||
seen_cyl[cyl] = TRUE;
|
||||
}
|
||||
}
|
||||
last_pressure[cyl] = mbar;
|
||||
last_time[cyl] = entry->sec;
|
||||
}
|
||||
|
||||
for (cyl = 0; cyl < MAX_CYLINDERS; cyl++) {
|
||||
if (last_time[cyl]) {
|
||||
plot_pressure_value(last_pressure[cyl], last_time[cyl], CENTER, TOP);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ProfileGraphicsView::plot_pressure_value(int mbar, int sec, int xalign, int yalign)
|
||||
{
|
||||
int pressure;
|
||||
const char *unit;
|
||||
|
||||
pressure = get_pressure_units(mbar, &unit);
|
||||
static text_render_options_t tro = {PRESSURE_TEXT_SIZE, PRESSURE_TEXT, xalign, yalign};
|
||||
plot_text(&tro, sec, mbar, QString("%1 %2").arg(pressure).arg(unit));
|
||||
}
|
||||
|
||||
void ProfileGraphicsView::plot_depth_text()
|
||||
{
|
||||
int maxtime, maxdepth;
|
||||
|
|
|
@ -102,6 +102,8 @@ private:
|
|||
void plot_depth_text();
|
||||
void plot_text_samples();
|
||||
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, int xalign, int yalign);
|
||||
|
||||
QColor get_sac_color(int sac, int avg_sac);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue