class Canvas(app.Canvas): def __init__(self): app.Canvas.__init__(self, keys='interactive', size=(512, 512 + 2*32), title="Marker demo [press space to change marker]") self.index = 0 self.scale = 1. self.markers = Markers() self.markers.set_data(pos) self.markers.set_style(marker_types[self.index]) def on_initialize(self, event): # We need to give a transform to our visual self.transform = STTransform() self.markers._program.vert['transform'] = self.transform.shader_map() self.apply_zoom() def on_draw(self, event): gloo.clear(color='white') self.markers.draw() def on_mouse_wheel(self, event): """Use the mouse wheel to zoom.""" self.scale *= 1.25 if event.delta[1] > 0 else 0.8 self.scale = max(min(self.scale, 1e2), 1e-2) self.apply_zoom() def on_resize(self, event): self.apply_zoom() def apply_zoom(self): gloo.set_viewport(0, 0, *self.size) self.transform.scale = (2 * self.scale / self.size[0], 2 * self.scale / self.size[1], 1.) self.transform.translate = [-1, -1] self.update() def on_key_press(self, event): if event.text == ' ': self.index = (self.index + 1) % (len(marker_types)) self.markers.set_style(marker_types[self.index]) self.update()