GHelm is a cross-platform S57 vector nautical chart viewer which uses GTK and OpenGL for chart display. The goal of the project is to create a [free software] solution to nautical navigation.


The cvs is finally updated. I'm going to write a list of things that work and things that need to be done in a few days, so check back.


I'm going to try to get ghelm fairly polished in the next 2 months. I'm not going to have any time to work on it after that for some time. If anyone would like to take over the project let me know.


I took a month break from ghelm as I took a road trip. I'm back to working on it now so expect some updates soon.

Optimizations revisited1-7-05 

The render-to-texture solution only proved worthwhile with OpenGL 2.0, as it does not require powers-of-two textures (and I don't want to use any extensions for the sake of compatibility). So instead I used some code which I had laying around from some early experiments in drawing. The preview window now uses a level of detail optimization for the line drawing. In order to determine which lines should be drawn the preview window now only draws lines when the end vertex meets a certain angle from current vertex : distance ratio. This causes the 'important' vertices to be drawn and the ones with less detail to be thrown out. All this calculation is done at load time so there is no hit on performance.

It seems to work quite well; only around 1/2 of the vertices actually need to be drawn. Point features and waypoints are another issue; they really clutter up the preview view for some charts. I think this problem will solve itself, however, once it becomes clear what a sane set of point features to draw by default is.


Tonight I've converted much of the code to use libsigc++ signals to manage communication between widgets. This cuts down on most of the coupling from pointer passing.


Adding the preview pane cut the performance quite a bit; after all it now renders the chart twice. In the next couple of days I'm going to work on a render-to-texture scheme so that the preview pane is just a quad textured with a render of the chart. I'm also going to look into the possibility of using render-to-texture in the main frame. It may be faster to have the current zoomed view of the chart render to a texture whenever the map is being scrolled; then display a quad with the texture rather than drawing all the individual features as the map is scrolled. In this approach an actual render would only need to be done when the zoom level is changed.

Work continues...1-4-05 

I've been working on adding some pretty big features tonight; waypoint adding and saving and a 1:1 zoomed preview frame in the interface. Check out screenshots for the updates.

List Sharing1-3-05 

Display list sharing has been implemented in CVS; so now the user may open the same chart in different tabs (and a few little bugs were fixed in the process). Once the source is clean I'll release .4


Check out the new screenshots for some screen captures of area drawing and feature-type selecting.

New Release12-30-04 

GHelm 0.02 has been released it has some bug fixes, a feature for selecting what types of features are drawn, plus preliminary area drawing.

Initial Release12-29-04 

GHelm 0.01 has been released -- check the downloads link. Its capabilities are limited to displaying the line and point features of s57 charts.


Welcome to the web site of GHelm, a S57 vector nautical chart viewer. There currently isn't much here other than a couple screenshots, but downloads should be here by the end of the week.