mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Plot the temperature Graph
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
ce8d30b938
commit
ef7ace9926
4 changed files with 70 additions and 60 deletions
79
profile.c
79
profile.c
|
@ -201,6 +201,32 @@ void remember_event(const char *eventname)
|
|||
evn_used++;
|
||||
}
|
||||
|
||||
int setup_temperature_limits(struct graphics_context *gc, struct plot_info *pi)
|
||||
{
|
||||
int maxtime, mintemp, maxtemp, delta;
|
||||
|
||||
/* Get plot scaling limits */
|
||||
maxtime = get_maxtime(pi);
|
||||
mintemp = pi->mintemp;
|
||||
maxtemp = pi->maxtemp;
|
||||
|
||||
gc->leftx = 0; gc->rightx = maxtime;
|
||||
/* Show temperatures in roughly the lower third, but make sure the scale
|
||||
is at least somewhat reasonable */
|
||||
delta = maxtemp - mintemp;
|
||||
if (delta < 3000) /* less than 3K in fluctuation */
|
||||
delta = 3000;
|
||||
gc->topy = maxtemp + delta*2;
|
||||
|
||||
if (PP_GRAPHS_ENABLED)
|
||||
gc->bottomy = mintemp - delta * 2;
|
||||
else
|
||||
gc->bottomy = mintemp - delta / 3;
|
||||
|
||||
pi->endtempcoord = SCALEY(gc, pi->mintemp);
|
||||
return maxtemp && maxtemp >= mintemp;
|
||||
}
|
||||
|
||||
#if 0
|
||||
static void render_depth_sample(struct graphics_context *gc, struct plot_data *entry, const text_render_options_t *tro)
|
||||
{
|
||||
|
@ -441,31 +467,7 @@ static void plot_pp_gas_profile(struct graphics_context *gc, struct plot_info *p
|
|||
}
|
||||
|
||||
|
||||
static int setup_temperature_limits(struct graphics_context *gc, struct plot_info *pi)
|
||||
{
|
||||
int maxtime, mintemp, maxtemp, delta;
|
||||
|
||||
/* Get plot scaling limits */
|
||||
maxtime = get_maxtime(pi);
|
||||
mintemp = pi->mintemp;
|
||||
maxtemp = pi->maxtemp;
|
||||
|
||||
gc->leftx = 0; gc->rightx = maxtime;
|
||||
/* Show temperatures in roughly the lower third, but make sure the scale
|
||||
is at least somewhat reasonable */
|
||||
delta = maxtemp - mintemp;
|
||||
if (delta < 3000) /* less than 3K in fluctuation */
|
||||
delta = 3000;
|
||||
gc->topy = maxtemp + delta*2;
|
||||
|
||||
if (PP_GRAPHS_ENABLED)
|
||||
gc->bottomy = mintemp - delta * 2;
|
||||
else
|
||||
gc->bottomy = mintemp - delta / 3;
|
||||
|
||||
pi->endtempcoord = SCALEY(gc, pi->mintemp);
|
||||
return maxtemp && maxtemp >= mintemp;
|
||||
}
|
||||
|
||||
static void plot_single_temp_text(struct graphics_context *gc, int sec, int mkelvin)
|
||||
{
|
||||
|
@ -515,35 +517,6 @@ static void plot_temperature_text(struct graphics_context *gc, struct plot_info
|
|||
plot_single_temp_text(gc, sec, last_temperature);
|
||||
}
|
||||
|
||||
static void plot_temperature_profile(struct graphics_context *gc, struct plot_info *pi)
|
||||
{
|
||||
int i;
|
||||
cairo_t *cr = gc->cr;
|
||||
int last = 0;
|
||||
|
||||
if (!setup_temperature_limits(gc, pi))
|
||||
return;
|
||||
|
||||
cairo_set_line_width_scaled(gc->cr, 2);
|
||||
set_source_rgba(gc, TEMP_PLOT);
|
||||
for (i = 0; i < pi->nr; i++) {
|
||||
struct plot_data *entry = pi->entry + i;
|
||||
int mkelvin = entry->temperature;
|
||||
int sec = entry->sec;
|
||||
if (!mkelvin) {
|
||||
if (!last)
|
||||
continue;
|
||||
mkelvin = last;
|
||||
}
|
||||
if (last)
|
||||
line_to(gc, sec, mkelvin);
|
||||
else
|
||||
move_to(gc, sec, mkelvin);
|
||||
last = mkelvin;
|
||||
}
|
||||
cairo_stroke(cr);
|
||||
}
|
||||
|
||||
/* gets both the actual start and end pressure as well as the scaling factors */
|
||||
static int get_cylinder_pressure_range(struct graphics_context *gc, struct plot_info *pi)
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue