void update_dive_info(struct dive *dive) { struct tm *tm; char buffer[80]; char *text; flush_dive_info_changes(); buffered_dive = dive; if (!dive) { gtk_label_set_text(GTK_LABEL(divedate), "no dive"); gtk_label_set_text(GTK_LABEL(divetime), ""); gtk_label_set_text(GTK_LABEL(depth), ""); gtk_label_set_text(GTK_LABEL(duration), ""); return; } tm = gmtime(&dive->when); snprintf(buffer, sizeof(buffer), "%s %02d/%02d/%04d", weekday(tm->tm_wday), tm->tm_mon+1, tm->tm_mday, tm->tm_year+1900); gtk_label_set_text(GTK_LABEL(divedate), buffer); snprintf(buffer, sizeof(buffer), "%02d:%02d:%02d", tm->tm_hour, tm->tm_min, tm->tm_sec); gtk_label_set_text(GTK_LABEL(divetime), buffer); snprintf(buffer, sizeof(buffer), "%d ft", to_feet(dive->maxdepth)); gtk_label_set_text(GTK_LABEL(depth), buffer); snprintf(buffer, sizeof(buffer), "%d min", dive->duration.seconds / 60); gtk_label_set_text(GTK_LABEL(duration), buffer); *buffer = 0; if (dive->watertemp.mkelvin) snprintf(buffer, sizeof(buffer), "%d C", to_C(dive->watertemp)); gtk_label_set_text(GTK_LABEL(temperature), buffer); text = dive->location ? : ""; gtk_entry_set_text(location, text); gtk_label_set_text(GTK_LABEL(locationnote), text); text = dive->notes ? : ""; gtk_text_buffer_set_text(notes, text, -1); }
void TestUnitConversion::testUnitConversions() { QCOMPARE(IS_FP_SAME(grams_to_lbs(1000), 2.204586), true); QCOMPARE(lbs_to_grams(1), 454); QCOMPARE(IS_FP_SAME(ml_to_cuft(1000), 0.0353147), true); QCOMPARE(IS_FP_SAME(cuft_to_l(1), 28.316847), true); QCOMPARE(IS_FP_SAME(mm_to_feet(1000), 3.280840), true); QCOMPARE(feet_to_mm(1), (long unsigned int) 305); QCOMPARE(to_feet((depth_t){ 1000 }), 3); QCOMPARE(IS_FP_SAME(mkelvin_to_C(647000), 373.85), true); QCOMPARE(IS_FP_SAME(mkelvin_to_F(647000), 704.93), true); QCOMPARE(F_to_mkelvin(704.93), (unsigned long)647000); QCOMPARE(C_to_mkelvin(373.85), (unsigned long)647000); QCOMPARE(IS_FP_SAME(psi_to_bar(14.6959488), 1.01325), true); QCOMPARE(psi_to_mbar(14.6959488), (long)1013); QCOMPARE(to_PSI((pressure_t){ 1013 }), (int)15); QCOMPARE(IS_FP_SAME(bar_to_atm(1.013), 1.0), true); QCOMPARE(IS_FP_SAME(mbar_to_atm(1013), 1.0), true); QCOMPARE(mbar_to_PSI(1013), (int)15); get_units(); }
static void plot_profile(struct dive *dive, cairo_t *cr, double topx, double topy, double maxx, double maxy) { double scalex, scaley; int begins, sec, depth; int i, samples; struct sample *sample; int maxtime, maxdepth; samples = dive->samples; if (!samples) return; cairo_set_line_width(cr, 2); /* Get plot scaling limits */ maxtime = round_seconds_up(dive->duration.seconds); maxdepth = round_feet_up(to_feet(dive->maxdepth)); /* Time markers: every 5 min */ scalex = maxtime; scaley = 1.0; for (i = 5*60; i < maxtime; i += 5*60) { cairo_move_to(cr, SCALE(i, 0)); cairo_line_to(cr, SCALE(i, 1)); } /* Depth markers: every 15 ft */ scalex = 1.0; scaley = maxdepth; cairo_set_source_rgba(cr, 1, 1, 1, 0.5); for (i = 15; i < maxdepth; i += 15) { cairo_move_to(cr, SCALE(0, i)); cairo_line_to(cr, SCALE(1, i)); } cairo_stroke(cr); /* Show mean depth */ cairo_set_source_rgba(cr, 1, 0.2, 0.2, 0.40); cairo_move_to(cr, SCALE(0, to_feet(dive->meandepth))); cairo_line_to(cr, SCALE(1, to_feet(dive->meandepth))); cairo_stroke(cr); scalex = maxtime; sample = dive->sample; cairo_set_source_rgba(cr, 1, 0.2, 0.2, 0.80); begins = sample->time.seconds; cairo_move_to(cr, SCALE(sample->time.seconds, to_feet(sample->depth))); for (i = 1; i < dive->samples; i++) { sample++; sec = sample->time.seconds; depth = to_feet(sample->depth); cairo_line_to(cr, SCALE(sec, depth)); } scaley = 1.0; cairo_line_to(cr, SCALE(sec, 0)); cairo_line_to(cr, SCALE(begins, 0)); cairo_close_path(cr); cairo_set_source_rgba(cr, 1, 0.2, 0.2, 0.20); cairo_fill_preserve(cr); cairo_set_source_rgba(cr, 1, 0.2, 0.2, 0.80); cairo_stroke(cr); }