Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def __init__(self, x, y, w, h):
# Initialize the visual with a vertex shader and fragment shader
visuals.Visual.__init__(self, vertex_shader, fragment_shader)
# vertices for two triangles forming a rectangle
self.vbo = gloo.VertexBuffer(np.array([
[x, y], [x+w, y], [x+w, y+h],
[x, y], [x+w, y+h], [x, y+h]
], dtype=np.float32))
# Assign values to the $position and $color template variables in
# the shaders. ModularProgram automatically handles generating the
# necessary attribute and uniform declarations with unique variable
# names.
self.shared_program.vert['position'] = self.vbo
self.shared_program.frag['color'] = (1, 0, 0, 1)
self._draw_mode = 'triangles'
self.colors.append(color)
line = vispy.scene.Line(parent=self.view.scene, color=color, connect='strip', method='agg', width=path_width)
line.transform = vispy.visuals.transforms.MatrixTransform()
self.lines.append(line)
self.timer_toggle = True
self.player_position = numpy.asarray([0,0])
if not os.path.exists('dota2.csv'):
print("ERROR: Please download and extract this file...\nhttps://github.com/aigamedev/nuclai16/releases/download/0.0/dota2.csv.bz2\n")
sys.exit(-1)
self.data = data.Data('dota2.csv', self.params)
# init the searched point with some random value - after first mouse move it's a
self.data.mouse_xy = ( ( numpy.random.rand(2) * 10 - 5 ) - numpy.asarray(self.canvas.size) / 2 ) * self.params.SCALE_FACTOR
self.grid = vispy.scene.visuals.GridLines(parent=self.view.scene, color=(1, 1, 1, 1))
self.grid.transform = vispy.visuals.transforms.MatrixTransform()
self.grid.transform.translate(numpy.asarray(self.canvas.size) / 2)
self.canvas.show(visible=True)
# HACK: Bug in VisPy 0.5.0-dev requires a click for layout to occur.
self.canvas.events.mouse_press()
@self.canvas.events.key_press.connect
def on_key_press(event):
if event.key.name == ' ':
if self.timer_toggle: self.timer.stop()
else: self.timer.start()
self.timer_toggle = not self.timer_toggle
@self.canvas.events.resize.connect
def on_resize(event):
def create_visual_node(subclass):
# Create a new subclass of Node.
# Decide on new class name
clsname = subclass.__name__
if not (clsname.endswith('Visual') and
issubclass(subclass, visuals.BaseVisual)):
raise RuntimeError('Class "%s" must end with Visual, and must '
'subclass BaseVisual' % clsname)
clsname = clsname[:-6]
# Generate new docstring based on visual docstring
try:
doc = generate_docstring(subclass, clsname)
except Exception:
# If parsing fails, just return the original Visual docstring
doc = subclass.__doc__
# New __init__ method
def __init__(self, *args, **kwargs):
parent = kwargs.pop('parent', None)
name = kwargs.pop('name', None)
self.name = name # to allow __str__ before Node.__init__
GridMesh = create_visual_node(visuals.GridMeshVisual)
Histogram = create_visual_node(visuals.HistogramVisual)
Image = create_visual_node(visuals.ImageVisual)
InfiniteLine = create_visual_node(visuals.InfiniteLineVisual)
Isocurve = create_visual_node(visuals.IsocurveVisual)
Isoline = create_visual_node(visuals.IsolineVisual)
Isosurface = create_visual_node(visuals.IsosurfaceVisual)
Line = create_visual_node(visuals.LineVisual)
LinearRegion = create_visual_node(visuals.LinearRegionVisual)
LinePlot = create_visual_node(visuals.LinePlotVisual)
Markers = create_visual_node(visuals.MarkersVisual)
Mesh = create_visual_node(visuals.MeshVisual)
Plane = create_visual_node(visuals.PlaneVisual)
Polygon = create_visual_node(visuals.PolygonVisual)
Rectangle = create_visual_node(visuals.RectangleVisual)
RegularPolygon = create_visual_node(visuals.RegularPolygonVisual)
ScrollingLines = create_visual_node(visuals.ScrollingLinesVisual)
Spectrogram = create_visual_node(visuals.SpectrogramVisual)
Sphere = create_visual_node(visuals.SphereVisual)
SurfacePlot = create_visual_node(visuals.SurfacePlotVisual)
Text = create_visual_node(visuals.TextVisual)
Tube = create_visual_node(visuals.TubeVisual)
# Visual = create_visual_node(visuals.Visual) # Should not be created
Volume = create_visual_node(visuals.VolumeVisual)
XYZAxis = create_visual_node(visuals.XYZAxisVisual)
__all__ = [name for (name, obj) in globals().items()
if isinstance(obj, type) and issubclass(obj, VisualNode)]
self._need_upload = False
class PointVisual(LineVisual):
"""Another simple visual class.
Due to the simplicity of these example classes, it was only necessary to
subclass from LineVisual and set the draw mode to 'points'. A more
fully-featured PointVisual class might not follow this approach.
"""
def __init__(self, pos=None, color=(1, 1, 1, 1)):
LineVisual.__init__(self, pos, color)
self._draw_mode = 'points'
class PlotLineVisual(visuals.CompoundVisual):
"""An example compound visual that draws lines and points.
To the user, the compound visual behaves exactly like a normal visual--it
has a transform system, draw() and bounds() methods, etc. Internally, the
compound visual automatically manages proxying these transforms and methods
to its sub-visuals.
"""
def __init__(self, pos=None, line_color=(1, 1, 1, 1),
point_color=(1, 1, 1, 1)):
self._line = LineVisual(pos, color=line_color)
self._point = PointVisual(pos, color=point_color)
visuals.CompoundVisual.__init__(self, [self._line, self._point])
class PointCollectionVisual(visuals.Visual):
"""Thin wrapper around a point collection.
def __init__(self, x, y, w, h):
# Initialize the visual with a vertex shader and fragment shader
visuals.Visual.__init__(self, vertex_shader, fragment_shader)
# vertices for two triangles forming a rectangle
self.vbo = gloo.VertexBuffer(np.array([
[x, y], [x+w, y], [x+w, y+h],
[x, y], [x+w, y+h], [x, y+h]
], dtype=np.float32))
# Assign values to the $position and $color template variables in
# the shaders. ModularProgram automatically handles generating the
# necessary attribute and uniform declarations with unique variable
# names.
self.shared_program.vert['position'] = self.vbo
self.shared_program.frag['color'] = (1, 0, 0, 1)
self._draw_mode = 'triangles'
void main()
{
v_color = $a_color;
gl_Position = $transform(vec4($a_position, 1));
}
"""
fragment_shader = """
varying vec4 v_color;
void main() {
gl_FragColor = v_color;
}
"""
class ConnectVisual(visuals.Visual):
"""Template
"""
def __init__(self, pos, connect, select=None, colorby='strength',
dynamic=None, cmap='viridis', vmin=None, vmax=None,
under=None, over=None, clim=None):
visuals.Visual.__init__(self, vertex_shader, fragment_shader)
# Save variables :
self.pos = pos
self.connect = connect
self.select = select
self.colorby = colorby
self.dynamic = dynamic
self._cmap = cmap
def __init__(self):
visuals.Visual.__init__(self, vertex_shader, fragment_shader)
# Create an interesting mesh shape for demonstration.
fname = io.load_data_file('orig/triceratops.obj.gz')
vertices, faces, normals, tex = io.read_mesh(fname)
self._ibo = gloo.IndexBuffer(faces)
self.shared_program.vert['position'] = gloo.VertexBuffer(vertices)
# self.program.vert['normal'] = gloo.VertexBuffer(normals)
self.set_gl_state('additive', cull_face=False)
self._draw_mode = 'triangles'
self._index_buffer = self._ibo
# Docstrings are _not_ looked up correctly by IDEs, since they
# are attached programatically in the create_visual_node call.
# However, help(vispy.scene.FooVisual) still works
Arrow = create_visual_node(visuals.ArrowVisual)
Axis = create_visual_node(visuals.AxisVisual)
Box = create_visual_node(visuals.BoxVisual)
ColorBar = create_visual_node(visuals.ColorBarVisual)
Compound = create_visual_node(visuals.CompoundVisual)
Cube = create_visual_node(visuals.CubeVisual)
Ellipse = create_visual_node(visuals.EllipseVisual)
Graph = create_visual_node(visuals.GraphVisual)
GridLines = create_visual_node(visuals.GridLinesVisual)
GridMesh = create_visual_node(visuals.GridMeshVisual)
Histogram = create_visual_node(visuals.HistogramVisual)
Image = create_visual_node(visuals.ImageVisual)
InfiniteLine = create_visual_node(visuals.InfiniteLineVisual)
Isocurve = create_visual_node(visuals.IsocurveVisual)
Isoline = create_visual_node(visuals.IsolineVisual)
Isosurface = create_visual_node(visuals.IsosurfaceVisual)
Line = create_visual_node(visuals.LineVisual)
LinearRegion = create_visual_node(visuals.LinearRegionVisual)
LinePlot = create_visual_node(visuals.LinePlotVisual)
Markers = create_visual_node(visuals.MarkersVisual)
Mesh = create_visual_node(visuals.MeshVisual)
Plane = create_visual_node(visuals.PlaneVisual)
Polygon = create_visual_node(visuals.PolygonVisual)
Rectangle = create_visual_node(visuals.RectangleVisual)
RegularPolygon = create_visual_node(visuals.RegularPolygonVisual)
ScrollingLines = create_visual_node(visuals.ScrollingLinesVisual)
Spectrogram = create_visual_node(visuals.SpectrogramVisual)
Sphere = create_visual_node(visuals.SphereVisual)
def __init__(self):
app.Canvas.__init__(self, keys='interactive', size=(800, 550))
self.meshes = []
self.rotation = MatrixTransform()
# Generate some data to work with
global mdata
mdata = create_sphere(20, 40, 1.0)
# Mesh with pre-indexed vertices, uniform color
self.meshes.append(visuals.MeshVisual(meshdata=mdata, color='b'))
# Mesh with pre-indexed vertices, per-face color
# Because vertices are pre-indexed, we get a different color
# every time a vertex is visited, resulting in sharp color
# differences between edges.
verts = mdata.get_vertices(indexed='faces')
nf = verts.size//9
fcolor = np.ones((nf, 3, 4), dtype=np.float32)
fcolor[..., 0] = np.linspace(1, 0, nf)[:, np.newaxis]
fcolor[..., 1] = np.random.normal(size=nf)[:, np.newaxis]
fcolor[..., 2] = np.linspace(0, 1, nf)[:, np.newaxis]
mesh = visuals.MeshVisual(vertices=verts, face_colors=fcolor)
self.meshes.append(mesh)
# Mesh with unindexed vertices, per-vertex color
# Because vertices are unindexed, we get the same color