X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=equipment.c;h=d2c7891aef4569c334d2a3c210be73aaf51d25cc;hb=1d6903c65a4980ac51a3508db6a388ab07111341;hp=6f09602d83e88ca08b8d5c7f0b1d23fb690b2c03;hpb=50d026230fa7303b33821da1346875b30f5ab00d;p=ext%2Fsubsurface.git diff --git a/equipment.c b/equipment.c index 6f09602..d2c7891 100644 --- a/equipment.c +++ b/equipment.c @@ -64,9 +64,8 @@ static int convert_pressure(int mbar, double *p) return decimals; } -static int convert_volume_pressure(int ml, int mbar, double *v, double *p) +static void convert_volume_pressure(int ml, int mbar, double *v, double *p) { - int decimals = 1; double volume, pressure; volume = ml / 1000.0; @@ -78,13 +77,11 @@ static int convert_volume_pressure(int ml, int mbar, double *v, double *p) if (output_units.pressure == PSI) { pressure = mbar_to_PSI(mbar); - decimals = 0; } else pressure = mbar / 1000.0; } *v = volume; *p = pressure; - return decimals; } static void set_cylinder_type_spinbuttons(struct cylinder_widget *cylinder, int ml, int mbar) @@ -288,7 +285,7 @@ static void show_cylinder(cylinder_t *cyl, struct cylinder_widget *cylinder) o2 = cyl->gasmix.o2.permille / 10.0; he = cyl->gasmix.he.permille / 10.0; if (!o2) - o2 = 21.0; + o2 = AIR_PERMILLE / 10.0; gtk_spin_button_set_value(GTK_SPIN_BUTTON(cylinder->o2), o2); gtk_spin_button_set_value(GTK_SPIN_BUTTON(cylinder->he), he); } @@ -450,35 +447,45 @@ static void record_cylinder_changes(cylinder_t *cyl, struct cylinder_widget *cyl */ static struct tank_info { const char *name; - int size; /* cuft if < 1000, otherwise mliter */ - int psi; /* If zero, size is in mliter */ + int cuft, ml, psi, bar; } tank_info[100] = { /* Need an empty entry for the no-cylinder case */ - { "", 0, 0 }, + { "", }, /* Size-only metric cylinders */ - { "10.0 l", 10000 }, - { "11.1 l", 11100 }, + { "10.0 l", .ml = 10000 }, + { "11.1 l", .ml = 11100 }, /* Most common AL cylinders */ - { "AL50", 50, 3000 }, - { "AL63", 63, 3000 }, - { "AL72", 72, 3000 }, - { "AL80", 80, 3000 }, - { "AL100", 100, 3300 }, + { "AL50", .cuft = 50, .psi = 3000 }, + { "AL63", .cuft = 63, .psi = 3000 }, + { "AL72", .cuft = 72, .psi = 3000 }, + { "AL80", .cuft = 80, .psi = 3000 }, + { "AL100", .cuft = 100, .psi = 3300 }, /* Somewhat common LP steel cylinders */ - { "LP85", 85, 2640 }, - { "LP95", 95, 2640 }, - { "LP108", 108, 2640 }, - { "LP121", 121, 2640 }, + { "LP85", .cuft = 85, 2640 }, + { "LP95", .cuft = 95, 2640 }, + { "LP108", .cuft = 108, 2640 }, + { "LP121", .cuft = 121, 2640 }, /* Somewhat common HP steel cylinders */ - { "HP65", 65, 3442 }, - { "HP80", 80, 3442 }, - { "HP100", 100, 3442 }, - { "HP119", 119, 3442 }, - { "HP130", 130, 3442 }, + { "HP65", .cuft = 65, .psi = 3442 }, + { "HP80", .cuft = 80, .psi = 3442 }, + { "HP100", .cuft = 100, .psi = 3442 }, + { "HP119", .cuft = 119, .psi = 3442 }, + { "HP130", .cuft = 130, .psi = 3442 }, + + /* Common European steel cylinders */ + { "10L 300 bar", .ml = 10000, .bar = 300 }, + { "12L 200 bar", .ml = 12000, .bar = 200 }, + { "12L 232 bar", .ml = 12000, .bar = 232 }, + { "12L 300 bar", .ml = 12000, .bar = 300 }, + { "15L 200 bar", .ml = 15000, .bar = 200 }, + { "15L 232 bar", .ml = 15000, .bar = 232 }, + { "D7 300 bar", .ml = 14000, .bar = 300 }, + { "D8.5 232 bar", .ml = 17000, .bar = 232 }, + { "D12 232 bar", .ml = 24000, .bar = 232 }, /* We'll fill in more from the dive log dynamically */ { NULL, } @@ -490,20 +497,26 @@ static void fill_tank_list(GtkListStore *store) struct tank_info *info = tank_info; while (info->name) { - int size = info->size; + int ml = info->ml; + int cuft = info->cuft; int psi = info->psi; - int mbar = 0, ml = size; + int mbar; + double bar = info->bar; /* Is it in cuft and psi? */ if (psi) { - double bar = psi_to_bar(psi); - double airvolume = cuft_to_l(size) * 1000.0; - double atm = bar_to_atm(bar); + bar = psi_to_bar(psi); - ml = airvolume / atm + 0.5; - mbar = bar*1000 + 0.5; + if (cuft) { + double airvolume = cuft_to_l(cuft) * 1000.0; + double atm = bar_to_atm(bar); + + ml = airvolume / atm + 0.5; + } } + mbar = bar * 1000 + 0.5; + gtk_list_store_append(store, &iter); gtk_list_store_set(store, &iter, 0, info->name, @@ -897,13 +910,13 @@ GtkWidget *cylinder_list_widget(void) "enable-grid-lines", GTK_TREE_VIEW_GRID_LINES_BOTH, NULL); - tree_view_column(tree_view, CYL_DESC, "Type", NULL, PANGO_ALIGN_LEFT, TRUE); - tree_view_column(tree_view, CYL_SIZE, "Size", size_data_func, PANGO_ALIGN_RIGHT, TRUE); - tree_view_column(tree_view, CYL_WORKP, "MaxPress", pressure_data_func, PANGO_ALIGN_RIGHT, TRUE); - tree_view_column(tree_view, CYL_STARTP, "Start", pressure_data_func, PANGO_ALIGN_RIGHT, TRUE); - tree_view_column(tree_view, CYL_ENDP, "End", pressure_data_func, PANGO_ALIGN_RIGHT, TRUE); - tree_view_column(tree_view, CYL_O2, "O" UTF8_SUBSCRIPT_2 "%", percentage_data_func, PANGO_ALIGN_RIGHT, TRUE); - tree_view_column(tree_view, CYL_HE, "He%", percentage_data_func, PANGO_ALIGN_RIGHT, TRUE); + tree_view_column(tree_view, CYL_DESC, "Type", NULL, ALIGN_LEFT | UNSORTABLE); + tree_view_column(tree_view, CYL_SIZE, "Size", size_data_func, ALIGN_RIGHT | UNSORTABLE); + tree_view_column(tree_view, CYL_WORKP, "MaxPress", pressure_data_func, ALIGN_RIGHT | UNSORTABLE); + tree_view_column(tree_view, CYL_STARTP, "Start", pressure_data_func, ALIGN_RIGHT | UNSORTABLE); + tree_view_column(tree_view, CYL_ENDP, "End", pressure_data_func, ALIGN_RIGHT | UNSORTABLE); + tree_view_column(tree_view, CYL_O2, "O" UTF8_SUBSCRIPT_2 "%", percentage_data_func, ALIGN_RIGHT | UNSORTABLE); + tree_view_column(tree_view, CYL_HE, "He%", percentage_data_func, ALIGN_RIGHT | UNSORTABLE); return tree_view; }