diff --git a/lib/xmet/hodograph.py b/lib/xmet/hodograph.py index 84af9ca..7b8cbfc 100644 --- a/lib/xmet/hodograph.py +++ b/lib/xmet/hodograph.py @@ -97,15 +97,17 @@ class Hodograph(): cr.restore() + COLORS = { + 500: (1.0, 0.4, 1.0), + 3000: (1.0, 0.4, 0.4), + 7000: (0.4, 1.0, 0.4), + 10000: (0.4, 0.4, 1.0) + } + def color(self, height: float): - if height <= 500: - return (1, 0, 1) - elif height <= 3000: - return (1, 0, 0) - elif height <= 7000: - return (0, 1, 0) - elif height <= 10000: - return (0, 0, 1) + for key in self.COLORS: + if height < key: + return self.COLORS[key] def draw_samples(self, cr: cairo.Context, @@ -152,6 +154,29 @@ class Hodograph(): cr.stroke() cr.restore() + def draw_height_legends(self, cr: cairo.Context, x, y): + width = 0.02380952 * self.width + interval = 0.05952380 * self.width + offset = 0 + + for height in self.COLORS: + color = self.COLORS[height] + + cr.save() + cr.set_source_rgb(*color) + cr.rectangle(offset + x, y, width, width) + cr.fill() + cr.restore() + + cr.rectangle(offset + x, y, width, width) + cr.stroke() + + cr.move_to(offset + x, y + 2*width) + cr.show_text("%dkm" % (height / 1000)) + cr.stroke() + + offset += interval + def draw(self, cr: cairo.Context, x, y, samples: Iterable[SoundingSample]): self.draw_speed_lines(cr, x, y) self.draw_direction_lines(cr, x, y) @@ -160,3 +185,4 @@ class Hodograph(): self.draw_speed_legends(cr, x, y) self.draw_direction_legends(cr, x, y) + self.draw_height_legends(cr, x, y)