]> Pileus Git - ~andy/csm213a-hw/blobdiff - vis/visual.py
Add initial plotting
[~andy/csm213a-hw] / vis / visual.py
index 62a0bc3fb887a72e5d12049a348ed2c4cc2ebe0a..4f0e0e0019cbc3ef859e9cf0c87a04255b3074a0 100644 (file)
@@ -25,6 +25,7 @@ class Visual:
                self.device   = device
                self.logger   = logger
                self.builder  = Gtk.Builder()
+               self.history  = [0.5]*1000
 
                self.builder.add_from_file('visual.ui')
                self.builder.connect_signals(self)
@@ -91,6 +92,23 @@ class Visual:
                        setattr(self.config, name, value)
                        self.config.save()
 
+       def on_expose(self, obj, _):
+               cairo   = obj.window.cairo_create()
+               count   = len(self.history)
+               extents = cairo.clip_extents()
+               width   = extents[2] - extents[0] 
+               height  = extents[3] - extents[1] 
+
+               cairo.set_line_width(4)
+               for i in range(0,len(self.history)):
+                       x = i*width/(count-1)
+                       y = ((1-self.history[i]) * 0.8 + 0.1) * height
+                       if i==0:
+                               cairo.move_to(x, y)
+                       else:
+                               cairo.line_to(x, y)
+               cairo.stroke()
+
        def on_key(self, win, ev):
                if ev.string == 'q':
                        Gtk.main_quit();
@@ -141,6 +159,9 @@ class Visual:
                setval(self.tchs,  state.tch, ['P', 'D'])
                setval(self.a2ds,  state.a2d, [])
 
+               self.history = self.history[1:] + [state.a2d[0]]
+               self.window.queue_draw()
+
        def debug(self, state):
                print('update: ' + str(state))
                print('\tacc - ' + str(state.acc))