Remove a Lot of Dead Code.

This is just removal of dead code from the old profile, probably there's
still a bit more to remove, but this is a very good cleanup already.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Tomaz Canabrava 2014-03-07 13:31:47 -03:00 committed by Dirk Hohndel
parent 8f43ad8100
commit 00c97e710f
7 changed files with 1 additions and 326 deletions

View file

@ -27,25 +27,12 @@ struct plot_info {
struct plot_data *entry; struct plot_data *entry;
}; };
/*
* handy datastructure to keep all of our scaling data in one place
*/
struct graphics_context {
int printer;
double maxx, maxy;
double leftx, rightx;
double topy, bottomy;
unsigned int maxtime;
struct plot_info pi;
};
typedef enum { typedef enum {
SC_SCREEN, SC_SCREEN,
SC_PRINT SC_PRINT
} scale_mode_t; } scale_mode_t;
extern struct divecomputer *select_dc(struct divecomputer *main); extern struct divecomputer *select_dc(struct divecomputer *main);
extern void get_plot_details(struct graphics_context *gc, int time, struct membuffer *mb);
struct options { struct options {
enum { enum {

252
profile.c
View file

@ -19,7 +19,7 @@ int selected_dive = -1; /* careful: 0 is a valid value */
char dc_number = 0; char dc_number = 0;
static struct plot_data *last_pi_entry = NULL, *last_pi_entry_new = NULL; static struct plot_data *last_pi_entry_new = NULL;
#ifdef DEBUG_PI #ifdef DEBUG_PI
/* debugging tool - not normally used */ /* debugging tool - not normally used */
@ -141,69 +141,6 @@ void remember_event(const char *eventname)
evn_used++; evn_used++;
} }
int setup_temperature_limits(struct graphics_context *gc)
{
int maxtime, mintemp, maxtemp, delta;
struct plot_info *pi = &gc->pi;
/* 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;
}
void setup_pp_limits(struct graphics_context *gc)
{
int maxdepth;
gc->leftx = 0;
gc->rightx = get_maxtime(&gc->pi);
/* the maxdepth already includes extra vertical space - and if
* we use 1.5 times the corresponding pressure as maximum partial
* pressure the graph seems to look fine*/
maxdepth = get_maxdepth(&gc->pi);
gc->topy = 1.5 * (maxdepth + 10000) / 10000.0 * SURFACE_PRESSURE / 1000;
gc->bottomy = -gc->topy / 20;
}
int get_cylinder_pressure_range(struct graphics_context *gc)
{
gc->leftx = 0;
gc->rightx = get_maxtime(&gc->pi);
if (PP_GRAPHS_ENABLED)
gc->bottomy = -gc->pi.maxpressure * 0.75;
else
gc->bottomy = 0;
gc->topy = gc->pi.maxpressure * 1.5;
if (!gc->pi.maxpressure)
return false;
while (gc->pi.endtempcoord <= SCALEY(gc, gc->pi.minpressure - (gc->topy) * 0.1))
gc->bottomy -= gc->topy * 0.1 * gc->maxy / abs(gc->maxy);
return true;
}
/* Get local sac-rate (in ml/min) between entry1 and entry2 */ /* Get local sac-rate (in ml/min) between entry1 and entry2 */
static int get_local_sac(struct plot_data *entry1, struct plot_data *entry2, struct dive *dive) static int get_local_sac(struct plot_data *entry1, struct plot_data *entry2, struct dive *dive)
{ {
@ -804,72 +741,6 @@ struct plot_info calculate_max_limits_new(struct dive *dive, struct divecomputer
return pi; return pi;
} }
void calculate_max_limits(struct dive *dive, struct divecomputer *dc, struct graphics_context *gc)
{
struct plot_info *pi;
int maxdepth;
int maxtime = 0;
int maxpressure = 0, minpressure = INT_MAX;
int mintemp, maxtemp;
int cyl;
/* The plot-info is embedded in the graphics context */
pi = &gc->pi;
memset(pi, 0, sizeof(*pi));
maxdepth = dive->maxdepth.mm;
mintemp = dive->mintemp.mkelvin;
maxtemp = dive->maxtemp.mkelvin;
/* Get the per-cylinder maximum pressure if they are manual */
for (cyl = 0; cyl < MAX_CYLINDERS; cyl++) {
unsigned int mbar = dive->cylinder[cyl].start.mbar;
if (mbar > maxpressure)
maxpressure = mbar;
}
/* Then do all the samples from all the dive computers */
do {
int i = dc->samples;
int lastdepth = 0;
struct sample *s = dc->sample;
while (--i >= 0) {
int depth = s->depth.mm;
int pressure = s->cylinderpressure.mbar;
int temperature = s->temperature.mkelvin;
if (!mintemp && temperature < mintemp)
mintemp = temperature;
if (temperature > maxtemp)
maxtemp = temperature;
if (pressure && pressure < minpressure)
minpressure = pressure;
if (pressure > maxpressure)
maxpressure = pressure;
if (depth > maxdepth)
maxdepth = s->depth.mm;
if ((depth > SURFACE_THRESHOLD || lastdepth > SURFACE_THRESHOLD) &&
s->time.seconds > maxtime)
maxtime = s->time.seconds;
lastdepth = depth;
s++;
}
} while ((dc = dc->next) != NULL);
if (minpressure > maxpressure)
minpressure = 0;
pi->maxdepth = maxdepth;
pi->maxtime = maxtime;
pi->maxpressure = maxpressure;
pi->minpressure = minpressure;
pi->mintemp = mintemp;
pi->maxtemp = maxtemp;
}
/* copy the previous entry (we know this exists), update time and depth /* copy the previous entry (we know this exists), update time and depth
* and zero out the sensor pressure (since this is a synthetic entry) * and zero out the sensor pressure (since this is a synthetic entry)
* increment the entry pointer and the count of synthetic entries. */ * increment the entry pointer and the count of synthetic entries. */
@ -1246,68 +1117,6 @@ void calculate_deco_information(struct dive *dive, struct divecomputer *dc, stru
#endif #endif
} }
static void calculate_gas_information(struct dive *dive, struct plot_info *pi)
{
int i;
double amb_pressure;
for (i = 1; i < pi->nr; i++) {
int fo2, fhe;
struct plot_data *entry = pi->entry + i;
int cylinderindex = entry->cylinderindex;
amb_pressure = depth_to_mbar(entry->depth, dive) / 1000.0;
fo2 = get_o2(&dive->cylinder[cylinderindex].gasmix);
fhe = get_he(&dive->cylinder[cylinderindex].gasmix);
double ratio = (double)fhe / (1000.0 - fo2);
if (entry->po2) {
/* we have an O2 partial pressure in the sample - so this
* is likely a CC dive... use that instead of the value
* from the cylinder info */
double po2 = entry->po2 > amb_pressure ? amb_pressure : entry->po2;
entry->po2 = po2;
entry->phe = (amb_pressure - po2) * ratio;
entry->pn2 = amb_pressure - po2 - entry->phe;
} else {
entry->po2 = fo2 / 1000.0 * amb_pressure;
entry->phe = fhe / 1000.0 * amb_pressure;
entry->pn2 = (1000 - fo2 - fhe) / 1000.0 * amb_pressure;
}
/* Calculate MOD, EAD, END and EADD based on partial pressures calculated before
* so there is no difference in calculating between OC and CC
* EAD takes O2 + N2 (air) into account
* END just uses N2 */
entry->mod = (prefs.mod_ppO2 / fo2 * 1000 - 1) * 10000;
entry->ead = (entry->depth + 10000) *
(entry->po2 + (amb_pressure - entry->po2) * (1 - ratio)) / amb_pressure - 10000;
entry->end = (entry->depth + 10000) *
(amb_pressure - entry->po2) * (1 - ratio) / amb_pressure / N2_IN_AIR * 1000 - 10000;
entry->eadd = (entry->depth + 10000) *
(entry->po2 / amb_pressure * O2_DENSITY + entry->pn2 / amb_pressure *
N2_DENSITY +
entry->phe / amb_pressure * HE_DENSITY) /
(O2_IN_AIR * O2_DENSITY + N2_IN_AIR * N2_DENSITY) * 1000 - 10000;
if (entry->mod < 0)
entry->mod = 0;
if (entry->ead < 0)
entry->ead = 0;
if (entry->end < 0)
entry->end = 0;
if (entry->eadd < 0)
entry->eadd = 0;
if (entry->po2 > pi->maxpp && prefs.pp_graphs.po2)
pi->maxpp = entry->po2;
if (entry->phe > pi->maxpp && prefs.pp_graphs.phe)
pi->maxpp = entry->phe;
if (entry->pn2 > pi->maxpp && prefs.pp_graphs.pn2)
pi->maxpp = entry->pn2;
}
}
static void calculate_gas_information_new(struct dive *dive, struct plot_info *pi) static void calculate_gas_information_new(struct dive *dive, struct plot_info *pi)
{ {
int i; int i;
@ -1368,50 +1177,6 @@ static void calculate_gas_information_new(struct dive *dive, struct plot_info *p
* sides, so that you can do end-points without having to worry * sides, so that you can do end-points without having to worry
* about it. * about it.
*/ */
struct plot_info *create_plot_info(struct dive *dive, struct divecomputer *dc, struct graphics_context *gc, bool print_mode)
{
struct plot_info *pi;
/* The plot-info is embedded in the graphics context */
pi = &gc->pi;
/* reset deco information to start the calculation */
if (prefs.profile_calc_ceiling)
init_decompression(dive);
/* Create the new plot data */
if (last_pi_entry)
free((void *)last_pi_entry);
last_pi_entry = populate_plot_entries(dive, dc, pi);
/* Populate the gas index from the gas change events */
check_gas_change_events(dive, dc, pi);
/* Try to populate our gas pressure knowledge */
setup_gas_sensor_pressure(dive, dc, pi);
/* .. calculate missing pressure entries */
populate_pressure_information(dive, dc, pi);
/* Calculate sac */
calculate_sac(dive, pi);
/* Then, calculate deco information */
if (prefs.profile_calc_ceiling)
calculate_deco_information(dive, dc, pi, print_mode);
/* And finaly calculate gas partial pressures */
calculate_gas_information(dive, pi);
pi->meandepth = dive->dc.meandepth.mm;
#ifdef DEBUG_PI
/* awesome for debugging - not useful otherwise */
dump_pi(pi);
#endif
return analyze_plot_info(pi);
}
void create_plot_info_new(struct dive *dive, struct divecomputer *dc, struct plot_info *pi) void create_plot_info_new(struct dive *dive, struct divecomputer *dc, struct plot_info *pi)
{ {
init_decompression(dive); init_decompression(dive);
@ -1558,21 +1323,6 @@ static void plot_string(struct plot_data *entry, struct membuffer *b, bool has_n
strip_mb(b); strip_mb(b);
} }
void get_plot_details(struct graphics_context *gc, int time, struct membuffer *mb)
{
struct plot_info *pi = &gc->pi;
struct plot_data *entry = NULL;
int i;
for (i = 0; i < pi->nr; i++) {
entry = pi->entry + i;
if (entry->sec >= time)
break;
}
if (entry)
plot_string(entry, mb, pi->has_ndl);
}
void get_plot_details_new(struct plot_info *pi, int time, struct membuffer *mb) void get_plot_details_new(struct plot_info *pi, int time, struct membuffer *mb)
{ {
struct plot_data *entry = NULL; struct plot_data *entry = NULL;

View file

@ -15,7 +15,6 @@ typedef enum {
struct membuffer; struct membuffer;
struct divecomputer; struct divecomputer;
struct graphics_context;
struct plot_info; struct plot_info;
struct plot_data { struct plot_data {
unsigned int in_deco : 1; unsigned int in_deco : 1;
@ -52,12 +51,7 @@ struct plot_data {
int heartbeat; int heartbeat;
int bearing; int bearing;
}; };
//TODO: remove the calculatE_max_limits as soon as the new profile is done.
void calculate_max_limits(struct dive *dive, struct divecomputer *dc, struct graphics_context *gc);
struct plot_info calculate_max_limits_new(struct dive *dive, struct divecomputer *dc); struct plot_info calculate_max_limits_new(struct dive *dive, struct divecomputer *dc);
struct plot_info *create_plot_info(struct dive *dive, struct divecomputer *dc, struct graphics_context *gc, bool print_mode);
int setup_temperature_limits(struct graphics_context *gc);
int get_cylinder_pressure_range(struct graphics_context *gc);
void compare_samples(struct plot_data *e1, struct plot_data *e2, char *buf, int bufsize, int sum); void compare_samples(struct plot_data *e1, struct plot_data *e2, char *buf, int bufsize, int sum);
struct plot_data *populate_plot_entries(struct dive *dive, struct divecomputer *dc, struct plot_info *pi); struct plot_data *populate_plot_entries(struct dive *dive, struct divecomputer *dc, struct plot_info *pi);
struct plot_info *analyze_plot_info(struct plot_info *pi); struct plot_info *analyze_plot_info(struct plot_info *pi);
@ -85,44 +79,8 @@ int get_maxtime(struct plot_info *pi);
* partial pressure graphs */ * partial pressure graphs */
int get_maxdepth(struct plot_info *pi); int get_maxdepth(struct plot_info *pi);
void setup_pp_limits(struct graphics_context *gc);
#define ALIGN_LEFT 1
#define ALIGN_RIGHT 2
#define INVISIBLE 4
#define UNSORTABLE 8
#define EDITABLE 16
#ifndef TEXT_SCALE
#define TEXT_SCALE 1.0
#endif
#define DEPTH_TEXT_SIZE (12 * TEXT_SCALE)
#define PRESSURE_TEXT_SIZE (12 * TEXT_SCALE)
#define DC_TEXT_SIZE (12 * TEXT_SCALE)
#define PP_TEXT_SIZE (12 * TEXT_SCALE)
#define TEMP_TEXT_SIZE (12 * TEXT_SCALE)
#define TEMP_TEXT_SCALE 0.8
#define HR_TEXT_CALE 0.7
#define RIGHT (-1.0)
#define CENTER (-0.5)
#define LEFT (0.0)
#define LINE_DOWN (1)
#define TOP (0)
#define MIDDLE (-0.5)
#define BOTTOM (-1)
#define SCALEXGC(x) (((x) - gc.leftx) / (gc.rightx - gc.leftx) * gc.maxx)
#define SCALEYGC(y) (((y) - gc.topy) / (gc.bottomy - gc.topy) * gc.maxy)
#define SCALEGC(x, y) SCALEXGC(x), SCALEYGC(y)
#define SCALEX(gc, x) (((x) - gc->leftx) / (gc->rightx - gc->leftx) * gc->maxx)
#define SCALEY(gc, y) (((y) - gc->topy) / (gc->bottomy - gc->topy) * gc->maxy)
#define SCALE(gc, x, y) SCALEX(gc, x), SCALEY(gc, y)
#define SENSOR_PR 0 #define SENSOR_PR 0
#define INTERPOLATED_PR 1 #define INTERPOLATED_PR 1
#define SENSOR_PRESSURE(_entry) (_entry)->pressure[SENSOR_PR] #define SENSOR_PRESSURE(_entry) (_entry)->pressure[SENSOR_PR]

View file

@ -6,7 +6,6 @@
#include <QTableView> #include <QTableView>
#include <QHeaderView> #include <QHeaderView>
#include "mainwindow.h" #include "mainwindow.h"
#include "profilegraphics.h"
#include "../dive.h" #include "../dive.h"
#include "../display.h" #include "../display.h"
#include "printdialog.h" #include "printdialog.h"

View file

@ -5,7 +5,6 @@
#include "divetextitem.h" #include "divetextitem.h"
#include "profile.h" #include "profile.h"
#include "dive.h" #include "dive.h"
#include "profilegraphics.h"
#include "preferences.h" #include "preferences.h"
#include "helpers.h" #include "helpers.h"

View file

@ -37,23 +37,6 @@ void ToolTipItem::addToolTip(const QString &toolTip, const QIcon &icon)
expand(); expand();
} }
void ToolTipItem::refresh(struct graphics_context *gc, QPointF pos)
{
clear();
int time = (pos.x() * gc->maxtime) / gc->maxx;
struct membuffer mb = { 0 };
get_plot_details(gc, time, &mb);
addToolTip(QString::fromUtf8(mb.buffer, mb.len));
free_buffer(&mb);
QList<QGraphicsItem *> items = scene()->items(pos, Qt::IntersectsItemShape, Qt::DescendingOrder, transform());
Q_FOREACH(QGraphicsItem * item, items) {
if (!item->toolTip().isEmpty())
addToolTip(item->toolTip());
}
}
void ToolTipItem::clear() void ToolTipItem::clear()
{ {
Q_FOREACH(ToolTip t, toolTips) { Q_FOREACH(ToolTip t, toolTips) {

View file

@ -41,7 +41,6 @@ public:
void expand(); void expand();
void clear(); void clear();
void addToolTip(const QString &toolTip, const QIcon &icon = QIcon()); void addToolTip(const QString &toolTip, const QIcon &icon = QIcon());
void refresh(struct graphics_context *gc, QPointF pos);
void refresh(const QPointF &pos); void refresh(const QPointF &pos);
bool isExpanded() const; bool isExpanded() const;
void persistPos(); void persistPos();