summaryrefslogtreecommitdiffstats
path: root/dive.h
AgeCommit message (Collapse)Author
2011-09-22Add OTU to divelistGravatar Dirk Hohndel
and change OTUs to be tracked as int, not double Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2011-09-22Calculate OTUs for every diveGravatar Dirk Hohndel
The calculation assumes that the cylinderindex in each sample tells us which PO2 the dive was breathing at that time. This needs to be verified with dives where there is an actual gas switch. No idea where to display them, yet. Far fewer people will care about this than care about SAC - does this still rate a spot in the dive_list? I guess I could make it part of the dive_info - but it's not editable. It doesn't seem to fit with the equipment page (even though this is the one editable field that is related - nitrox %) Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2011-09-21Merge branch 'quit-handling' of git://github.com/dirkhh/subsurfaceGravatar Linus Torvalds
* 'quit-handling' of git://github.com/dirkhh/subsurface: Use the last (or only) filename on command line as default for saving Show the "save changes" dialog before the main window is destroyed Check for changes at regular 'quit' events as well Catch changes to the info of the current dive when quitting Tracking changes to tanks is trivial Simplistic first attempt to get changes saved when quitting subsurface
2011-09-21Add helper function for doing depth unit calculationsGravatar Linus Torvalds
.. and use it for printing too. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2011-09-21Use the last (or only) filename on command line as default for savingGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2011-09-20Fix up printing some moreGravatar Linus Torvalds
Use the actual degree sign for temperatures (°F and °C), and make sure everything uses the proper "set_source_rgb[a]()" wrappers to set the colors. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2011-09-20Separate out the UI from the program logicGravatar Dirk Hohndel
The following are UI toolkit specific: gtk-gui.c - overall layout, main window of the UI divelist.c - list of dives subsurface maintains equipment.c - equipment / tank information for each dive info.c - detailed dive info print.c - printing The rest is independent of the UI: main.c i - program frame dive.c i - creates and maintaines the internal dive list structure libdivecomputer.c uemis.c parse-xml.c save-xml.c - interface with dive computers and the XML files profile.c - creates the data for the profile and draws it using cairo This commit should contain NO functional changes, just moving code around and a couple of minor abstractions. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2011-09-19Reinstate the main window titleGravatar Linus Torvalds
It got removed by some of my overly aggressive cleanup in commit fefcbf125e89 ("Remove dive info frame") because the dive info frame initialization also initialized the main window title.. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2011-09-19Use renderer function for divelist depth field tooGravatar Linus Torvalds
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2011-09-19Start filling in temperature and nitrox data in dive listGravatar Linus Torvalds
Still more to go, but it's slowly fleshing out.. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2011-09-16Show tank / nitrox / air consumption information in the info_frameGravatar Dirk Hohndel
Even though we go down to an 8pt font the info_frame changes size when the air info is added. I don't like this but want to see how Linus would like this resolved before going overboard. Minor tweaks to the formating (we don't need two decimals when printing the liters of air consumed). This patch does NOT remove the plot of the air information in the profile graph. I think we want to remove that once we like the text where it is, but I wanted to do one thing at a time. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2011-09-15Support gps coordinates for the location infoGravatar Linus Torvalds
Sadly, no way to show them yet. But it would be nice to let people enter them (and it would be doubly nice to have a dive computer that does it at the surface), and then perhaps just do the "point browser at google maps" thing. Saving/parsing tested by hand-feeding the location of Enenui (Molokini Crater) from google maps by hand into my divelog. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2011-09-13Add divemaster/buddy field and text entryGravatar Linus Torvalds
I have it in some of my notes, and Dirk seems to fill that in too, so let's just show it, save it, and allow editing of it.. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2011-09-12Libdivecomputer: start actually importing the dive dataGravatar Linus Torvalds
So this actually reports the dive data that libdivecomputer generates. It doesn't import special events etc, but neither do we for the xml importer. It is also slow as heck, since it doesn't try to do the "hey, I already have this dive" logic and always imports everything, but the basics are definitely there. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2011-09-12Abstract out dive/sample allocation a bitGravatar Linus Torvalds
We're going to start to want to allocate dives and samples for the libdivecomputer import too, so let's clean things up a bit for that. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2011-09-12Avoid using type 'gasmix_t': use 'struct gasmix' insteadGravatar Linus Torvalds
libdivecomputer already uses 'gasmix_t' for its own gasmix thing. I don't like th eway we step on each others name spaces, but hey, might as well just use 'struct gasmix' and avoid the typedef. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2011-09-11Be more careful about unit changesGravatar Linus Torvalds
When we change units, we need to flush any currently active dive information in the old units, and then carefully reload it in the new units. Otherwise crazy stuff happens - like having current cylinder working pressure values that are in PSI because that *used* to be the output unit, but then interpreting those values as BAR, because we changed the units. Also, since we now properly import working pressure from Diving Log, stop importing the (useless) cylinder description. The Diving Log cylinder descriptions are things like "Alu" or "Steel". We're better off just making up our own. Finally, since Diving Log has cylinder size in metric, make sure that we do the "match standard cylinder sizes" *after* we've done all the cylinder size conversions to proper units. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2011-09-11Fix up dive number namingGravatar Linus Torvalds
Use "dive->number" instead of "dive->nr". And make the XML match too. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2011-09-11Save and restore a "dive number"Gravatar Linus Torvalds
Some people want to know how many dives they have under their belt, so let's save and restore the dive number if it exists. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2011-09-10Declare 'update_dive()' properlyGravatar Linus Torvalds
Avoid a compiler warning.. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2011-09-09Rename 'cylinder.c' as 'equipment.c'Gravatar Linus Torvalds
Make it about general equipment management, and start hooking up functions to show new equipment information when changing dives (and to flush changes to equipment information for the previously active dive). Nothing is hooked up yet, and it's now showing just one (really big) cylinder choice, so this is all broken. But it should make it possible to at least get somewhere some day. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2011-09-07Do output unit conversion in the dive info window tooGravatar Linus Torvalds
This should take care of it all, unless I missed some case. Now we should just save the default units somewhere, and I should do the divelist update much cleaner (instead of re-doing the divelist entirely, it should just repaint it - now we lose the highlited dive etc). Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2011-09-06Start "output unit management" supportGravatar Linus Torvalds
This doesn't actually *do* anything yet, but it introduces the notion of output units, and allows you to pick metric or imperial. Of course, since the output doesn't currently care, the units you pick are irrelevant. But just wait.. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2011-09-05Report errors when opening filesGravatar Nathan Samson
Signed-off-by: Nathan Samson <nathansamson@gmail.com>
2011-09-05Sanitize and fix cylinder pressure overviewGravatar Linus Torvalds
Doing per-dive cylinder start/end pressures is insane, when we can have up to eight cylinders. The cylinder start/end pressure cannot be per dive, it needs to be per cylinder. This makes the save format cleaner too, we have all the cylinder data in just one place. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2011-09-04Parse uemis cylinder dataGravatar Linus Torvalds
This is some seriously crazy stuff. Instead of making sense as a divelog, the uemis xml makes more sense as a "dive computer settings dump". And I guess I can see why they'd do that. But it makes parsing it just incredibly annoying. The thing is more of a "these are the configurations I support as a dive computer thing" than a "this was the tank you were diving with". Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2011-09-04Generate date string for the dive list dynamicallyGravatar Linus Torvalds
.. and sort based on the 'time_t' value itself. This allows us to use a more compact date format that doesn't need to sort alphabetically, because sorting by date is always based on the date value. So we can use just a two-digit year, and skip the seconds, to keep the column narrow, while still sorting correctly. Also, "Depth" is a nice header string, but it is wider than the column itself, which makes the whole column wider than necessary. So put the units in the header instead of in the string, keeping things narrow. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2011-09-04Add placeholder for cylinder type descriptionGravatar Linus Torvalds
So we don't want to save working pressure, but cylinder type knowledge would be lovely and useful. And we can probably make a good initial guess, or at least let people fill it in later. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2011-09-03Do better cylinder information managementGravatar Linus Torvalds
Instead of just tracking gasmix, track the size and workng pressure of the cylinder too. And use "cylinder" instead of "tank" throughout. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2011-09-03Add various dive fixups, and show pressure (if any) in the plotGravatar Linus Torvalds
Now the dive profile plot *really* needs some units. The pressure is just a random line otherwise. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2011-09-02Do a dive de-dup passGravatar Linus Torvalds
If given multiple dives at the same time, just de-dup the dives. This happens when you've dumped the whole dive-computer several times, and some dives show up in multiple dumps. When de-duping, try to avoid dropping data. So if one dive has notes attached to it, and the other one does not, pick the notes from the dive that does have them. Obvious stuff like that. The sample merge is also written so that it should be possible to merge two dives. Which we don't actually do yet. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2011-09-01Save and parse notes and locationsGravatar Linus Torvalds
It's pretty rough, but it seems to work. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2011-09-01Add ability to 'save' divesGravatar Linus Torvalds
This just generates another xml file. Don't get me wrong: I still don't like xml, but this way we can save in the same format we load things from. Except the save-format is a *lot* cleaner than the abortion that is Suunto or libdivecomputer xml. Don't bother with some crazy xml library crap for saving. Just do it! Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2011-09-01gasmix: stop tracking nitrogen percentagesGravatar Linus Torvalds
The only thing you can do with that thing is screw things up (like libdivecomputer did). There's no value in tracking the "filler" gas, since you can always just calculate it from the gases that actually matter. So just track Oxygen and Helium - and make sure they have sane values. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2011-09-01Start parsing gas mixesGravatar Linus Torvalds
The suunto xml is just completely crazy. What's the helium percentage companion to "o2pct"? Would it be "hepct"? No. It's "hepct_0". Ok, so they didn't number the first o2pct, which could be seen as sane: that's the only mix value that should always exist. And they clearly started their indexing with 0. So with multiple mixes, you'd then expect "o2pct_1" and "hepct_1", right? Wrong! Because XML people are crazy, the second O2 mix percentage is obviously "o2pct_2". So the O2 percentages are one-based, with an implicit one. But the He percentages are zero-based with an explicit zero. So the second mix is "o2pct_2" and "hepct_1". I'd like to ask what drugs Suunto people are on, but hey, it's a Finnish company. No need to ask. Vodka explains everything. LOTS AND LOTS OF VODKA. In comparison, the libdivecomputer output is nice and sane, and uses a 'gasmix' node. Of course, now we have so many different XML nesting nodes to check that I just made it an array of different noces. That also allows me to mark the suunto case, so that we only do the "check for crazy alcoholic xml entries" when it's a suunto file. The "type of file" thing is probably a good idea for deciding on default units too. Some day. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2011-08-31Start cleaning up dive accessorsGravatar Linus Torvalds
I'm going to add a menu to import (and eventually export) dives, and so we'd like to be able to start out with no dives at all. Right now we croak if that happens - it's not like the code has been written with actual end users in mind. So start cleaning things up. First make the 'current_dive' macro work right even for invalid dives. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2011-08-31Split up profile frame generation into its own file.Gravatar Linus Torvalds
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2011-08-30Generate a default name for a dive, if it doesn't have one alreadyGravatar Linus Torvalds
The name is a string containint date, time, depth and length. So it's useful even with nothing else going on. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2011-08-30Start moving some of the non-parsing stuff out of 'parse.c'Gravatar Linus Torvalds
Create a 'main.c' with the main routine and argument "parsing" etc. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2011-08-30Split up dive data structure declarations into 'dive.h'Gravatar Linus Torvalds
The dive parser should eventually be just a part of the program, not the whole thing. So start preparing for that. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>