]> git.tdb.fi Git - ext/subsurface.git/blobdiff - profile.c
Clean up plot_text_samples() further
[ext/subsurface.git] / profile.c
index 280a7fa1a214436d743ef4dc44606aa295c59f9e..1d5b21cbd9c5f250b51f2f04dfbb60460cd7018b 100644 (file)
--- a/profile.c
+++ b/profile.c
@@ -146,8 +146,28 @@ static struct sample *next_minmax(struct sample *sample, struct sample *end, int
        return result;
 }
 
-void plot_text_samples(struct dive *dive, struct graphics_context *gc,
-                       struct sample *a, struct sample *b)
+static void render_depth_sample(struct graphics_context *gc, struct sample *sample)
+{
+       text_render_options_t tro = {1.0, 0.2, 0.2, CENTER};
+       int sec = sample->time.seconds;
+       depth_t depth = sample->depth;
+       const char *fmt;
+       double d;
+
+       switch (output_units.length) {
+       case METERS:
+               d = depth.mm / 1000.0;
+               fmt = "%.1f";
+               break;
+       case FEET:
+               d = to_feet(depth);
+               fmt = "%.0f";
+               break;
+       }
+       plot_text(gc, &tro, sec, depth.mm, fmt, d);
+}
+
+static void plot_text_samples(struct graphics_context *gc, struct sample *a, struct sample *b)
 {
        struct sample *max, *min;
 
@@ -158,33 +178,12 @@ void plot_text_samples(struct dive *dive, struct graphics_context *gc,
 
        max = next_minmax(a, b, 1);
        if (max) {
-               text_render_options_t tro = {1.0, 0.2, 0.2, CENTER};
-               int sec = max->time.seconds;
-               depth_t depth = max->depth;
-               const char *fmt;
-               double d;
-
+               render_depth_sample(gc, max);
                min = next_minmax(max, b, 0);
-               plot_text_samples(dive, gc, a, max);
                if (min) {
-                       plot_text_samples(dive, gc, max, min);
-                       plot_text_samples(dive, gc, min, b);
-               } else
-                       plot_text_samples(dive, gc, max, b);
-
-               switch (output_units.length) {
-               case METERS:
-                       d = depth.mm / 1000.0;
-                       fmt = "%.1f";
-                       break;
-               case FEET:
-                       d = to_feet(depth);
-                       fmt = "%.0f";
-                       break;
+                       plot_text_samples(gc, min, b);
+                       return;
                }
-
-               plot_text(gc, &tro, sec, depth.mm, fmt, d);
-               return;
        }
 }
 
@@ -210,7 +209,7 @@ static void plot_depth_text(struct dive *dive, struct graphics_context *gc)
        sample = dive->sample;
        end = dive->sample + dive->samples - 1;
 
-       plot_text_samples(dive, gc, sample, end);
+       plot_text_samples(gc, sample, end);
 }
 
 static void plot_depth_profile(struct dive *dive, struct graphics_context *gc)