mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Use temperature_t for temperatures in struct stats_t
Use struct temperature_t for temperatures in struct stats_t and use get_temperature_string() when printing these temperatures for statistics and HTML export. Signed-off-by: Stefan Fuchs <sfuchs@gmx.de>
This commit is contained in:
parent
928e7ed869
commit
95a23cf470
8 changed files with 48 additions and 49 deletions
|
|
@ -99,12 +99,15 @@ static void exportHTMLstatistics(const QString filename, struct htmlExportSettin
|
|||
out << "\"AVG_SAC\":\"" << get_volume_string(stats_yearly[i].avg_sac) << "\",";
|
||||
out << "\"MIN_SAC\":\"" << get_volume_string(stats_yearly[i].min_sac) << "\",";
|
||||
out << "\"MAX_SAC\":\"" << get_volume_string(stats_yearly[i].max_sac) << "\",";
|
||||
if ( stats_yearly[i].combined_count )
|
||||
out << "\"AVG_TEMP\":\"" << QString::number(stats_yearly[i].combined_temp / stats_yearly[i].combined_count, 'f', 1) << "\",";
|
||||
else
|
||||
if ( stats_yearly[i].combined_count ) {
|
||||
temperature_t avg_temp;
|
||||
avg_temp.mkelvin = stats_yearly[i].combined_temp.mkelvin / stats_yearly[i].combined_count;
|
||||
out << "\"AVG_TEMP\":\"" << get_temperature_string(avg_temp) << "\",";
|
||||
} else {
|
||||
out << "\"AVG_TEMP\":\"0.0\",";
|
||||
out << "\"MIN_TEMP\":\"" << ( stats_yearly[i].min_temp == 0 ? 0 : get_temp_units(stats_yearly[i].min_temp, NULL)) << "\",";
|
||||
out << "\"MAX_TEMP\":\"" << ( stats_yearly[i].max_temp == 0 ? 0 : get_temp_units(stats_yearly[i].max_temp, NULL)) << "\",";
|
||||
}
|
||||
out << "\"MIN_TEMP\":\"" << ( stats_yearly[i].min_temp.mkelvin == 0 ? 0 : get_temperature_string(stats_yearly[i].min_temp)) << "\",";
|
||||
out << "\"MAX_TEMP\":\"" << ( stats_yearly[i].max_temp.mkelvin == 0 ? 0 : get_temperature_string(stats_yearly[i].max_temp)) << "\",";
|
||||
out << "},";
|
||||
total_stats.selection_size += stats_yearly[i].selection_size;
|
||||
total_stats.total_time.seconds += stats_yearly[i].total_time.seconds;
|
||||
|
|
|
|||
|
|
@ -24,23 +24,23 @@ stats_t *stats_by_type = NULL;
|
|||
|
||||
static void process_temperatures(struct dive *dp, stats_t *stats)
|
||||
{
|
||||
int min_temp, mean_temp, max_temp = 0;
|
||||
temperature_t min_temp, mean_temp, max_temp = {.mkelvin = 0};
|
||||
|
||||
max_temp = dp->maxtemp.mkelvin;
|
||||
if (max_temp && (!stats->max_temp || max_temp > stats->max_temp))
|
||||
stats->max_temp = max_temp;
|
||||
max_temp.mkelvin = dp->maxtemp.mkelvin;
|
||||
if (max_temp.mkelvin && (!stats->max_temp.mkelvin || max_temp.mkelvin > stats->max_temp.mkelvin))
|
||||
stats->max_temp.mkelvin = max_temp.mkelvin;
|
||||
|
||||
min_temp = dp->mintemp.mkelvin;
|
||||
if (min_temp && (!stats->min_temp || min_temp < stats->min_temp))
|
||||
stats->min_temp = min_temp;
|
||||
min_temp.mkelvin = dp->mintemp.mkelvin;
|
||||
if (min_temp.mkelvin && (!stats->min_temp.mkelvin || min_temp.mkelvin < stats->min_temp.mkelvin))
|
||||
stats->min_temp.mkelvin = min_temp.mkelvin;
|
||||
|
||||
if (min_temp || max_temp) {
|
||||
mean_temp = min_temp;
|
||||
if (mean_temp)
|
||||
mean_temp = (mean_temp + max_temp) / 2;
|
||||
if (min_temp.mkelvin || max_temp.mkelvin) {
|
||||
mean_temp.mkelvin = min_temp.mkelvin;
|
||||
if (mean_temp.mkelvin)
|
||||
mean_temp.mkelvin = (mean_temp.mkelvin + max_temp.mkelvin) / 2;
|
||||
else
|
||||
mean_temp = max_temp;
|
||||
stats->combined_temp += get_temp_units(mean_temp, NULL);
|
||||
mean_temp.mkelvin = max_temp.mkelvin;
|
||||
stats->combined_temp.mkelvin += mean_temp.mkelvin;
|
||||
stats->combined_count++;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,9 +28,9 @@ typedef struct
|
|||
volume_t max_sac;
|
||||
volume_t min_sac;
|
||||
volume_t avg_sac;
|
||||
int max_temp;
|
||||
int min_temp;
|
||||
double combined_temp;
|
||||
temperature_t max_temp;
|
||||
temperature_t min_temp;
|
||||
temperature_sum_t combined_temp;
|
||||
unsigned int combined_count;
|
||||
unsigned int selection_size;
|
||||
unsigned int total_sac_time;
|
||||
|
|
|
|||
|
|
@ -108,6 +108,11 @@ typedef struct
|
|||
uint32_t mkelvin; // up to 1750 degrees K (temperatures in K are always positive)
|
||||
} temperature_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint64_t mkelvin; // up to 18446744073 MdegK (temperatures in K are always positive)
|
||||
} temperature_sum_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int mliter;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue