vispy 0.13.0__tar.gz → 0.14.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of vispy might be problematic. Click here for more details.
- vispy-0.14.0/.git_archival.txt +4 -0
- {vispy-0.13.0 → vispy-0.14.0}/.github/workflows/main.yml +2 -2
- {vispy-0.13.0 → vispy-0.14.0}/.github/workflows/wheels.yml +6 -4
- {vispy-0.13.0 → vispy-0.14.0}/CHANGELOG.md +25 -0
- {vispy-0.13.0/vispy.egg-info → vispy-0.14.0}/PKG-INFO +6 -5
- {vispy-0.13.0 → vispy-0.14.0}/examples/demo/scene/picking.py +1 -1
- vispy-0.14.0/examples/scene/face_picking.py +149 -0
- vispy-0.14.0/examples/scene/lasso.py +158 -0
- vispy-0.14.0/examples/scene/marker_picking.py +155 -0
- vispy-0.14.0/pyproject.toml +13 -0
- {vispy-0.13.0 → vispy-0.14.0}/setup.py +12 -13
- {vispy-0.13.0 → vispy-0.14.0}/vispy/app/backends/_glfw.py +1 -1
- {vispy-0.13.0 → vispy-0.14.0}/vispy/color/colormap.py +4 -24
- {vispy-0.13.0 → vispy-0.14.0}/vispy/gloo/texture.py +3 -1
- {vispy-0.13.0 → vispy-0.14.0}/vispy/scene/canvas.py +1 -4
- {vispy-0.13.0 → vispy-0.14.0}/vispy/scene/node.py +16 -0
- vispy-0.14.0/vispy/scene/tests/test_visuals.py +141 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/scene/visuals.py +4 -1
- {vispy-0.13.0 → vispy-0.14.0}/vispy/version.py +2 -2
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/filters/__init__.py +3 -2
- vispy-0.14.0/vispy/visuals/filters/base_filter.py +242 -0
- vispy-0.14.0/vispy/visuals/filters/markers.py +28 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/filters/mesh.py +32 -4
- vispy-0.14.0/vispy/visuals/filters/tests/test_primitive_picking_filters.py +70 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/line/dash_atlas.py +46 -41
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/markers.py +25 -35
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/text/_sdf_cpu.pyx +21 -23
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/visual.py +142 -1
- {vispy-0.13.0 → vispy-0.14.0/vispy.egg-info}/PKG-INFO +6 -5
- {vispy-0.13.0 → vispy-0.14.0}/vispy.egg-info/SOURCES.txt +5 -0
- vispy-0.13.0/.git_archival.txt +0 -1
- vispy-0.13.0/pyproject.toml +0 -16
- vispy-0.13.0/vispy/scene/tests/test_visuals.py +0 -28
- vispy-0.13.0/vispy/visuals/filters/base_filter.py +0 -122
- {vispy-0.13.0 → vispy-0.14.0}/.coveragerc +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/.gitattributes +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/.github/dependabot.yml +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/.github_changelog_generator +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/.gitignore +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/CITATION.rst +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/CODE_OF_CONDUCT.md +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/CONTRIBUTING.md +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/LICENSE.txt +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/MANIFEST.in +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/README.rst +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/ci/build_website.sh +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/ci/requirements/linux_full_deps_apt.txt +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/ci/requirements/linux_full_deps_conda.txt +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/ci/requirements/linux_full_deps_pip.txt +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/ci/requirements/linux_full_newqtdeps_apt.txt +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/ci/requirements/linux_full_newqtdeps_conda.txt +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/ci/requirements/linux_full_newqtdeps_pip.txt +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/ci/requirements/linux_min_deps_conda.txt +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/ci/requirements/linux_osmesa_deps_conda.txt +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/ci/requirements/linux_website_deps_pip.txt +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/ci/requirements/py310.yml +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/ci/requirements/py38.yml +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/.gitignore +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/.nojekyll +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/CNAME +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/Makefile +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/README.rst +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/_static/ViewFrustum.png +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/_static/ViewFrustum.svg +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/_static/carousel/galaxy.png +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/_static/carousel/high-frequency.png +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/_static/carousel/mandelbrot.png +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/_static/carousel/signals.png +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/_static/favicon.ico +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/_static/frustum-matrix.png +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/_static/gl-history.png +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/_static/gl-pipeline.png +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/_static/gl-pipeline.svg +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/_static/ortho-matrix.png +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/_static/perspective-matrix.png +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/_static/style.css +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/_static/vispy-logo-V.png +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/_static/vispy-logo-V.svg +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/_static/vispy-teaser-short.png +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/_static/vispy-teaser-short.svg +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/_static/vispy-teaser.png +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/_static/vispy-teaser.svg +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/_static/vispy-text-white.png +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/_static/vispy-text-white.svg +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/api/.gitkeep +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/community.rst +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/conf.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/dev_guide/contributor_guide.rst +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/dev_guide/index.rst +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/dev_guide/writing_examples.rst +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/faq.rst +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/gallery/index.rst +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/getting_started/_canvas_app.rst +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/getting_started/gloo.rst +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/getting_started/index.rst +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/getting_started/modern-gl.rst +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/getting_started/plot.rst +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/getting_started/scene.rst +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/getting_started/visuals.rst +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/governance/GOVERNANCE.md +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/governance/MAINTAINERS.md +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/index.rst +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/installation.rst +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/news.rst +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/org/ANTITRUST.md +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/org/CHARTER.md +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/org/STEERING-COMMITTEE.md +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/org/TRADEMARKS.md +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/overview.rst +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/raspberry.rst +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/resources.rst +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/roadmap.rst +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/doc/thirdparty.rst +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/README.rst +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/basics/scene/modular_shaders/editor.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/basics/scene/modular_shaders/sandbox.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/basics/scene/shared_context.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/basics/scene/stereo.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/basics/visuals/arcball.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/basics/visuals/arrows.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/basics/visuals/arrows_quiver.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/basics/visuals/axially_symmetric_surfaces.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/basics/visuals/bezier.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/basics/visuals/box.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/basics/visuals/colorbar_visual.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/basics/visuals/colorbar_visual_types.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/basics/visuals/custom_visual.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/basics/visuals/dynamic_polygon.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/basics/visuals/graph.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/basics/visuals/grid_mesh.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/basics/visuals/image_transforms.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/basics/visuals/image_visual.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/basics/visuals/line.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/basics/visuals/line_draw.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/basics/visuals/line_plot.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/basics/visuals/line_plot3d.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/basics/visuals/line_plot_axes.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/basics/visuals/line_prototype.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/basics/visuals/line_transform.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/basics/visuals/markers.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/basics/visuals/mesh.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/basics/visuals/networkx_layout.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/basics/visuals/plane.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/basics/visuals/polygon_visual.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/basics/visuals/rescalingmarkers.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/basics/visuals/rotating_box.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/basics/visuals/text_scatter.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/basics/visuals/text_visual.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/basics/visuals/tube.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/basics/visuals/visual_filters.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/basics/visuals/windbarb_quiver.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/benchmark/scene_test_1.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/benchmark/scene_test_2.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/benchmark/simple_glut.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/benchmark/simple_vispy.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/collections/chloropleth.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/collections/path_collection.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/collections/point_collection.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/collections/polygon_collection.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/collections/segment_collection.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/collections/tiger.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/collections/triangle_collection.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/demo/gloo/atom.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/demo/gloo/boids.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/demo/gloo/brain.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/demo/gloo/camera.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/demo/gloo/cloud.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/demo/gloo/donut.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/demo/gloo/fireworks.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/demo/gloo/galaxy/galaxy.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/demo/gloo/galaxy/galaxy_simulation.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/demo/gloo/galaxy/galaxy_specrend.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/demo/gloo/galaxy.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/demo/gloo/game_of_life.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/demo/gloo/glsl_sandbox_cube.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/demo/gloo/graph.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/demo/gloo/grayscott.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/demo/gloo/high_frequency.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/demo/gloo/imshow.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/demo/gloo/imshow_cuts.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/demo/gloo/jfa/fragment_display.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/demo/gloo/jfa/fragment_flood.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/demo/gloo/jfa/fragment_seed.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/demo/gloo/jfa/jfa_translation.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/demo/gloo/jfa/jfa_vispy.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/demo/gloo/jfa/vertex.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/demo/gloo/jfa/vertex_vispy.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/demo/gloo/mandelbrot.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/demo/gloo/mandelbrot_double.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/demo/gloo/molecular_viewer.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/demo/gloo/ndscatter.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/demo/gloo/offscreen.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/demo/gloo/primitive_mesh_viewer_qt.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/demo/gloo/quiver.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/demo/gloo/rain.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/demo/gloo/raytracing.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/demo/gloo/realtime_signals.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/demo/gloo/signals.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/demo/gloo/skybox.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/demo/gloo/spacy.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/demo/gloo/terrain.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/demo/gloo/two_qt_widgets.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/demo/gloo/unstructured_2d.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/demo/gloo/voronoi.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/demo/plot/plot.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/demo/scene/flow_lines.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/demo/scene/force_directed_graph.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/demo/scene/klein.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/demo/scene/oscilloscope.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/demo/scene/scrolling_plots.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/demo/visuals/wiggly_bar.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/gloo/README.rst +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/gloo/animate_images.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/gloo/animate_images_slice.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/gloo/animate_shape.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/gloo/colored_cube.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/gloo/colored_cube_instanced.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/gloo/colored_quad.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/gloo/display_lines.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/gloo/display_points.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/gloo/display_shape.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/gloo/geometry_shader.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/gloo/gl/README.rst +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/gloo/gl/cube.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/gloo/gl/fireworks.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/gloo/gl/quad.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/gloo/gl/quad_instanced.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/gloo/gpuimage.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/gloo/hello_fbo.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/gloo/lighted_cube.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/gloo/multi_texture.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/gloo/outlined_cube.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/gloo/post_processing.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/gloo/rotate_cube.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/gloo/rotating_quad.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/gloo/spatial_filters.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/gloo/start.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/gloo/start_shaders.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/gloo/texture_precision.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/gloo/textured_cube.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/gloo/textured_quad.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/jupyter/Rotating Cube.ipynb +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/jupyter/colormaps.ipynb +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/jupyter/gloo_display_lines.ipynb +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/jupyter/gloo_molecular_viewer.ipynb +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/offscreen/simple_egl.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/offscreen/simple_osmesa.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/plotting/README.rst +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/plotting/colorbar.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/plotting/export.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/plotting/ipython_fig_playground.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/plotting/plot.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/plotting/plot_colorbars.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/plotting/scatter_histogram.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/plotting/spectrogram.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/plotting/volume_plot.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/README.rst +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/axes_plot.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/background_borders.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/clipping_planes.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/colorbar_widget.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/colored_line.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/complex_image.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/console.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/contour.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/example..gif +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/example.png +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/flipped_axis.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/graph.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/grid_layout/README.rst +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/grid_layout/grid.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/grid_layout/grid_basic.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/grid_layout/grid_holed.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/grid_layout/grid_large.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/grid_layout/grid_uneven_col.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/grid_layout/grid_x_y_viewbox.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/image.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/image_custom_kernel.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/infinite_line.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/instanced_mesh.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/instanced_mesh_visual.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/instanced_quad_visual.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/isocurve.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/isocurve_for_trisurface.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/isocurve_for_trisurface_qt.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/isocurve_updates.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/isosurface.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/line.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/line_update.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/linear_region.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/magnify.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/marker_spheres.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/mesh_normals.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/mesh_shading.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/mesh_texture.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/nested_viewbox.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/one_cam_two_scenes.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/one_scene_four_cams.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/point_cloud.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/polygon.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/realtime_data/README.rst +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/realtime_data/ex01_embedded_vispy.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/realtime_data/ex02_control_vispy_from_qt.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/realtime_data/ex03a_data_sources_timer.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/realtime_data/ex03b_data_sources_threaded_loop.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/realtime_data/ex03c_data_sources_threaded_events.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/save_animation.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/sensitivity.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/shape_draw.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/sphere.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/surface_plot.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/text.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/turntable_box.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/viewbox.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/volume.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/scene/volume_plane.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/tutorial/app/app_events.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/tutorial/app/fps.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/tutorial/app/shared_context.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/tutorial/app/simple.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/tutorial/app/simple_wx.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/tutorial/visuals/T01_basic_visual.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/tutorial/visuals/T02_measurements.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/tutorial/visuals/T03_antialiasing.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/tutorial/visuals/T04_fragment_programs.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/examples/tutorial/visuals/T05_viewer_location.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/pytest.ini +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/setup.cfg +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/__init__.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/app/__init__.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/app/_default_app.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/app/_detect_eventloop.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/app/application.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/app/backends/__init__.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/app/backends/_egl.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/app/backends/_jupyter_rfb.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/app/backends/_offscreen_util.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/app/backends/_osmesa.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/app/backends/_pyglet.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/app/backends/_pyqt4.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/app/backends/_pyqt5.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/app/backends/_pyqt6.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/app/backends/_pyside.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/app/backends/_pyside2.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/app/backends/_pyside6.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/app/backends/_qt.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/app/backends/_sdl2.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/app/backends/_template.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/app/backends/_test.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/app/backends/_tk.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/app/backends/_wx.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/app/backends/tests/__init__.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/app/backends/tests/test_offscreen_util.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/app/backends/tests/test_rfb.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/app/base.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/app/canvas.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/app/qt.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/app/tests/__init__.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/app/tests/qt-designer.ui +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/app/tests/test_app.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/app/tests/test_backends.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/app/tests/test_canvas.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/app/tests/test_context.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/app/tests/test_qt.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/app/tests/test_simultaneous.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/app/timer.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/color/__init__.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/color/_color_dict.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/color/color_array.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/color/color_space.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/color/tests/__init__.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/color/tests/test_color.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/conftest.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/ext/__init__.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/ext/cocoapy.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/ext/cubehelix.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/ext/egl.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/ext/fontconfig.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/ext/gdi32plus.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/ext/osmesa.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/geometry/__init__.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/geometry/_triangulation_debugger.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/geometry/calculations.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/geometry/curves.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/geometry/generation.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/geometry/isocurve.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/geometry/isosurface.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/geometry/meshdata.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/geometry/normals.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/geometry/parametric.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/geometry/polygon.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/geometry/rect.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/geometry/tests/__init__.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/geometry/tests/test_calculations.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/geometry/tests/test_generation.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/geometry/tests/test_meshdata.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/geometry/tests/test_triangulation.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/geometry/torusknot.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/geometry/triangulation.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/gloo/__init__.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/gloo/buffer.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/gloo/context.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/gloo/framebuffer.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/gloo/gl/__init__.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/gloo/gl/_constants.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/gloo/gl/_es2.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/gloo/gl/_gl2.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/gloo/gl/_proxy.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/gloo/gl/_pyopengl2.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/gloo/gl/dummy.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/gloo/gl/es2.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/gloo/gl/gl2.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/gloo/gl/glplus.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/gloo/gl/pyopengl2.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/gloo/gl/tests/__init__.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/gloo/gl/tests/test_basics.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/gloo/gl/tests/test_functionality.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/gloo/gl/tests/test_names.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/gloo/gl/tests/test_use.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/gloo/glir.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/gloo/globject.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/gloo/preprocessor.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/gloo/program.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/gloo/tests/__init__.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/gloo/tests/test_buffer.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/gloo/tests/test_context.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/gloo/tests/test_framebuffer.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/gloo/tests/test_glir.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/gloo/tests/test_globject.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/gloo/tests/test_program.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/gloo/tests/test_texture.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/gloo/tests/test_use_gloo.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/gloo/tests/test_util.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/gloo/tests/test_wrappers.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/gloo/util.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/gloo/wrappers.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/__init__.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/antialias/antialias.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/antialias/cap-butt.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/antialias/cap-round.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/antialias/cap-square.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/antialias/cap-triangle-in.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/antialias/cap-triangle-out.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/antialias/cap.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/antialias/caps.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/antialias/filled.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/antialias/outline.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/antialias/stroke.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/arrowheads/angle.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/arrowheads/arrowheads.frag +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/arrowheads/arrowheads.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/arrowheads/arrowheads.vert +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/arrowheads/curved.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/arrowheads/inhibitor.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/arrowheads/stealth.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/arrowheads/triangle.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/arrowheads/util.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/arrows/angle-30.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/arrows/angle-60.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/arrows/angle-90.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/arrows/arrow.frag +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/arrows/arrow.vert +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/arrows/arrows.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/arrows/common.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/arrows/curved.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/arrows/stealth.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/arrows/triangle-30.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/arrows/triangle-60.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/arrows/triangle-90.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/arrows/util.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/build_spatial_filters.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/collections/agg-fast-path.frag +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/collections/agg-fast-path.vert +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/collections/agg-glyph.frag +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/collections/agg-glyph.vert +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/collections/agg-marker.frag +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/collections/agg-marker.vert +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/collections/agg-path.frag +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/collections/agg-path.vert +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/collections/agg-point.frag +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/collections/agg-point.vert +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/collections/agg-segment.frag +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/collections/agg-segment.vert +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/collections/marker.frag +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/collections/marker.vert +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/collections/raw-path.frag +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/collections/raw-path.vert +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/collections/raw-point.frag +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/collections/raw-point.vert +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/collections/raw-segment.frag +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/collections/raw-segment.vert +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/collections/raw-triangle.frag +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/collections/raw-triangle.vert +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/collections/sdf-glyph-ticks.vert +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/collections/sdf-glyph.frag +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/collections/sdf-glyph.vert +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/collections/tick-labels.vert +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/colormaps/autumn.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/colormaps/blues.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/colormaps/color-space.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/colormaps/colormaps.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/colormaps/cool.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/colormaps/fire.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/colormaps/gray.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/colormaps/greens.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/colormaps/hot.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/colormaps/ice.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/colormaps/icefire.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/colormaps/parse.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/colormaps/reds.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/colormaps/spring.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/colormaps/summer.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/colormaps/user.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/colormaps/util.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/colormaps/wheel.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/colormaps/winter.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/lines/agg.frag +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/lines/agg.vert +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/markers/arrow.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/markers/asterisk.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/markers/chevron.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/markers/clover.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/markers/club.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/markers/cross.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/markers/diamond.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/markers/disc.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/markers/ellipse.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/markers/hbar.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/markers/heart.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/markers/infinity.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/markers/marker-sdf.frag +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/markers/marker-sdf.vert +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/markers/marker.frag +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/markers/marker.vert +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/markers/markers.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/markers/pin.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/markers/ring.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/markers/spade.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/markers/square.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/markers/tag.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/markers/triangle.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/markers/vbar.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/math/circle-through-2-points.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/math/constants.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/math/double.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/math/functions.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/math/point-to-line-distance.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/math/point-to-line-projection.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/math/signed-line-distance.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/math/signed-segment-distance.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/misc/regular-grid.frag +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/misc/spatial-filters.frag +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/misc/viewport-NDC.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/transforms/azimuthal-equal-area.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/transforms/azimuthal-equidistant.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/transforms/hammer.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/transforms/identity.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/transforms/identity_forward.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/transforms/identity_inverse.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/transforms/linear-scale.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/transforms/log-scale.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/transforms/mercator-transverse-forward.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/transforms/mercator-transverse-inverse.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/transforms/panzoom.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/transforms/polar.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/transforms/position.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/transforms/power-scale.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/transforms/projection.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/transforms/pvm.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/transforms/rotate.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/transforms/trackball.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/transforms/translate.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/transforms/transverse_mercator.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/transforms/viewport-clipping.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/transforms/viewport-transform.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/transforms/viewport.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/transforms/x.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/transforms/y.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/glsl/transforms/z.glsl +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/io/__init__.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/io/_data/spatial-filters.npy +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/io/datasets.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/io/image.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/io/mesh.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/io/stl.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/io/tests/__init__.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/io/tests/test_image.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/io/tests/test_io.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/io/wavefront.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/plot/__init__.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/plot/fig.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/plot/plotwidget.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/plot/tests/__init__.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/plot/tests/test_plot.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/scene/__init__.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/scene/cameras/__init__.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/scene/cameras/_base.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/scene/cameras/arcball.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/scene/cameras/base_camera.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/scene/cameras/fly.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/scene/cameras/magnify.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/scene/cameras/panzoom.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/scene/cameras/perspective.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/scene/cameras/tests/__init__.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/scene/cameras/tests/test_cameras.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/scene/cameras/tests/test_link.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/scene/cameras/tests/test_perspective.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/scene/cameras/turntable.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/scene/events.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/scene/subscene.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/scene/tests/__init__.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/scene/tests/test_canvas.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/scene/tests/test_node.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/scene/widgets/__init__.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/scene/widgets/anchor.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/scene/widgets/axis.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/scene/widgets/colorbar.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/scene/widgets/console.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/scene/widgets/grid.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/scene/widgets/label.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/scene/widgets/tests/__init__.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/scene/widgets/tests/test_colorbar.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/scene/widgets/viewbox.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/scene/widgets/widget.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/testing/__init__.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/testing/_runners.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/testing/_testing.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/testing/image_tester.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/testing/rendered_array_tester.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/testing/tests/__init__.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/testing/tests/test_testing.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/__init__.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/bunch.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/check_environment.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/config.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/dpi/__init__.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/dpi/_linux.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/dpi/_quartz.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/dpi/_win32.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/dpi/tests/__init__.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/dpi/tests/test_dpi.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/eq.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/event.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/fetching.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/filter.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/fonts/__init__.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/fonts/_freetype.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/fonts/_quartz.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/fonts/_triage.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/fonts/_vispy_fonts.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/fonts/_win32.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/fonts/data/OpenSans-Bold.ttf +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/fonts/data/OpenSans-BoldItalic.ttf +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/fonts/data/OpenSans-Italic.ttf +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/fonts/data/OpenSans-Regular.ttf +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/fonts/tests/__init__.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/fonts/tests/test_font.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/fourier.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/frozen.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/gallery_scraper.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/keys.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/logs.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/osmesa_gl.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/profiler.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/ptime.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/quaternion.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/svg/__init__.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/svg/base.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/svg/color.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/svg/element.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/svg/geometry.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/svg/group.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/svg/length.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/svg/number.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/svg/path.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/svg/shapes.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/svg/style.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/svg/svg.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/svg/transform.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/svg/transformable.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/svg/viewport.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/tests/__init__.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/tests/test_config.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/tests/test_docstring_parameters.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/tests/test_emitter_group.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/tests/test_event_emitter.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/tests/test_fourier.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/tests/test_gallery_scraper.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/tests/test_import.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/tests/test_key.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/tests/test_logging.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/tests/test_run.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/tests/test_transforms.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/tests/test_vispy.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/transforms.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/util/wrappers.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/__init__.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/_scalable_textures.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/axis.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/border.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/box.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/collections/__init__.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/collections/agg_fast_path_collection.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/collections/agg_path_collection.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/collections/agg_point_collection.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/collections/agg_segment_collection.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/collections/array_list.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/collections/base_collection.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/collections/collection.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/collections/path_collection.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/collections/point_collection.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/collections/polygon_collection.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/collections/raw_path_collection.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/collections/raw_point_collection.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/collections/raw_polygon_collection.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/collections/raw_segment_collection.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/collections/raw_triangle_collection.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/collections/segment_collection.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/collections/triangle_collection.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/collections/util.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/colorbar.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/cube.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/ellipse.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/filters/clipper.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/filters/clipping_planes.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/filters/color.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/filters/picking.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/filters/tests/__init__.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/filters/tests/test_wireframe_filter.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/glsl/__init__.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/glsl/antialiasing.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/glsl/color.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/graphs/__init__.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/graphs/graph.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/graphs/layouts/__init__.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/graphs/layouts/circular.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/graphs/layouts/force_directed.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/graphs/layouts/networkx_layout.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/graphs/layouts/random.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/graphs/tests/__init__.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/graphs/tests/test_layouts.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/graphs/tests/test_networkx_layout.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/graphs/util.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/gridlines.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/gridmesh.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/histogram.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/image.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/image_complex.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/infinite_line.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/instanced_mesh.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/isocurve.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/isoline.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/isosurface.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/line/__init__.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/line/arrow.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/line/line.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/line_plot.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/linear_region.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/mesh.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/mesh_normals.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/plane.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/polygon.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/rectangle.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/regular_polygon.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/scrolling_lines.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/shaders/__init__.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/shaders/compiler.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/shaders/expression.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/shaders/function.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/shaders/multiprogram.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/shaders/parsing.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/shaders/program.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/shaders/shader_object.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/shaders/tests/__init__.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/shaders/tests/test_function.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/shaders/tests/test_multiprogram.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/shaders/tests/test_parsing.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/shaders/variable.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/spectrogram.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/sphere.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/surface_plot.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/tests/__init__.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/tests/test_arrows.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/tests/test_axis.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/tests/test_collections.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/tests/test_colorbar.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/tests/test_colormap.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/tests/test_ellipse.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/tests/test_histogram.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/tests/test_image.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/tests/test_image_complex.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/tests/test_infinite_line.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/tests/test_instanced_mesh.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/tests/test_isosurface.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/tests/test_linear_region.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/tests/test_markers.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/tests/test_mesh.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/tests/test_mesh_normals.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/tests/test_polygon.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/tests/test_rectangle.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/tests/test_regular_polygon.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/tests/test_scalable_textures.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/tests/test_sdf.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/tests/test_spectrogram.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/tests/test_text.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/tests/test_volume.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/tests/test_windbarb.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/text/__init__.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/text/_sdf_gpu.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/text/text.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/transforms/__init__.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/transforms/_util.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/transforms/base_transform.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/transforms/chain.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/transforms/interactive.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/transforms/linear.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/transforms/nonlinear.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/transforms/tests/__init__.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/transforms/tests/test_transforms.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/transforms/transform_system.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/tube.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/volume.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/windbarb.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy/visuals/xyz_axis.py +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy.egg-info/dependency_links.txt +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy.egg-info/not-zip-safe +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy.egg-info/requires.txt +0 -0
- {vispy-0.13.0 → vispy-0.14.0}/vispy.egg-info/top_level.txt +0 -0
|
@@ -111,7 +111,7 @@ jobs:
|
|
|
111
111
|
sleep 5
|
|
112
112
|
# export python_version
|
|
113
113
|
echo "python_version=310" >> $GITHUB_OUTPUT
|
|
114
|
-
- uses: mamba-org/provision-with-micromamba@
|
|
114
|
+
- uses: mamba-org/provision-with-micromamba@v16
|
|
115
115
|
with:
|
|
116
116
|
environment-file: ./ci/requirements/py${{ steps.vars.outputs.python_version }}.yml
|
|
117
117
|
- name: Install conda-dependencies
|
|
@@ -225,7 +225,7 @@ jobs:
|
|
|
225
225
|
# export python_version
|
|
226
226
|
PY_VER=${{ matrix.python_version }}
|
|
227
227
|
echo "python_version=${PY_VER//.}" >> $GITHUB_OUTPUT
|
|
228
|
-
- uses: mamba-org/provision-with-micromamba@
|
|
228
|
+
- uses: mamba-org/provision-with-micromamba@v16
|
|
229
229
|
with:
|
|
230
230
|
environment-file: ./ci/requirements/py${{ steps.vars.outputs.python_version }}.yml
|
|
231
231
|
- name: Install conda-dependencies
|
|
@@ -27,16 +27,18 @@ jobs:
|
|
|
27
27
|
if: ${{ matrix.arch == 'aarch64' }}
|
|
28
28
|
uses: docker/setup-qemu-action@v2
|
|
29
29
|
- name: Build wheels
|
|
30
|
-
uses: pypa/cibuildwheel@v2.
|
|
30
|
+
uses: pypa/cibuildwheel@v2.15.0
|
|
31
31
|
env:
|
|
32
32
|
CIBW_SKIP: "cp36-* pp* *-win32 *-manylinux_i686 *-musllinux*"
|
|
33
33
|
CIBW_ARCHS_LINUX: ${{ matrix.arch }}
|
|
34
34
|
CIBW_TEST_REQUIRES: "pytest pytest-sugar meshio pillow sphinx_gallery imageio"
|
|
35
35
|
CIBW_TEST_COMMAND: "python -c \"import vispy; vispy.test('nobackend')\""
|
|
36
36
|
CIBW_BUILD_VERBOSITY: "2"
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
# Get numpy release candidate to have Python 3.12 compatibility (hopefully)
|
|
38
|
+
CIBW_BEFORE_BUILD: "pip install -U Cython pip setuptools; pip install -U --pre numpy"
|
|
39
|
+
CIBW_BEFORE_TEST: "pip install -U Cython pip setuptools; pip install -U --pre numpy"
|
|
40
|
+
#CIBW_BEFORE_BUILD_MACOS: "pip install -U pip setuptools"
|
|
41
|
+
CIBW_BEFORE_BUILD_LINUX: "yum install -y fontconfig || apk add fontconfig-dev jpeg-dev; pip install freetype-py"
|
|
40
42
|
# If freetype-py is installed from source (no wheel found), include bundled freetype library
|
|
41
43
|
CIBW_ENVIRONMENT_WINDOWS: "FREETYPEPY_BUNDLE_FT=1"
|
|
42
44
|
CIBW_ENVIRONMENT: "GITHUB_ACTIONS=true"
|
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
# Release Notes
|
|
2
2
|
|
|
3
|
+
## [v0.14.0](https://github.com/vispy/vispy/tree/v0.14.0) (2023-09-08)
|
|
4
|
+
|
|
5
|
+
**Enhancements:**
|
|
6
|
+
|
|
7
|
+
- Remove deprecated code from vispy.color.get\_colormap [\#2519](https://github.com/vispy/vispy/pull/2519) ([codypiersall](https://github.com/codypiersall))
|
|
8
|
+
- Cache make\_pattern on DashAtlas [\#2508](https://github.com/vispy/vispy/pull/2508) ([aganders3](https://github.com/aganders3))
|
|
9
|
+
- Add push/pop gl\_state for visuals \(used in picking\) [\#2502](https://github.com/vispy/vispy/pull/2502) ([aganders3](https://github.com/aganders3))
|
|
10
|
+
- Add primitive picking filters for Mesh and Markers visuals [\#2500](https://github.com/vispy/vispy/pull/2500) ([aganders3](https://github.com/aganders3))
|
|
11
|
+
|
|
12
|
+
**Fixed bugs:**
|
|
13
|
+
|
|
14
|
+
- Fix spherical markers depth buffer with scaling='visual' [\#2506](https://github.com/vispy/vispy/pull/2506) ([brisvag](https://github.com/brisvag))
|
|
15
|
+
- Update \_glfw.py [\#2496](https://github.com/vispy/vispy/pull/2496) ([smyeungx](https://github.com/smyeungx))
|
|
16
|
+
- Fix mesh shading with flipped normals [\#2493](https://github.com/vispy/vispy/pull/2493) ([brisvag](https://github.com/brisvag))
|
|
17
|
+
|
|
18
|
+
**Merged pull requests:**
|
|
19
|
+
|
|
20
|
+
- Bump pypa/cibuildwheel from 2.14.1 to 2.15.0 and add Python 3.12 wheels [\#2515](https://github.com/vispy/vispy/pull/2515) ([dependabot[bot]](https://github.com/apps/dependabot))
|
|
21
|
+
- Bump pypa/cibuildwheel from 2.14.0 to 2.14.1 [\#2509](https://github.com/vispy/vispy/pull/2509) ([dependabot[bot]](https://github.com/apps/dependabot))
|
|
22
|
+
- Bump pypa/cibuildwheel from 2.13.1 to 2.14.0 [\#2507](https://github.com/vispy/vispy/pull/2507) ([dependabot[bot]](https://github.com/apps/dependabot))
|
|
23
|
+
- Bump pypa/cibuildwheel from 2.13.0 to 2.13.1 [\#2498](https://github.com/vispy/vispy/pull/2498) ([dependabot[bot]](https://github.com/apps/dependabot))
|
|
24
|
+
- Bump pypa/cibuildwheel from 2.12.3 to 2.13.0 [\#2492](https://github.com/vispy/vispy/pull/2492) ([dependabot[bot]](https://github.com/apps/dependabot))
|
|
25
|
+
- Bump mamba-org/provision-with-micromamba from 15 to 16 [\#2490](https://github.com/vispy/vispy/pull/2490) ([dependabot[bot]](https://github.com/apps/dependabot))
|
|
26
|
+
- Add lasso selection example [\#2485](https://github.com/vispy/vispy/pull/2485) ([DanAurea](https://github.com/DanAurea))
|
|
27
|
+
|
|
3
28
|
## [v0.13.0](https://github.com/vispy/vispy/tree/v0.13.0) (2023-05-12)
|
|
4
29
|
|
|
5
30
|
**Enhancements:**
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: vispy
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.14.0
|
|
4
4
|
Summary: Interactive visualization in Python
|
|
5
5
|
Home-page: http://vispy.org
|
|
6
6
|
Download-URL: https://pypi.python.org/pypi/vispy
|
|
7
7
|
Author: Vispy contributors
|
|
8
8
|
Author-email: vispy@googlegroups.com
|
|
9
|
-
License:
|
|
9
|
+
License: BSD-3-Clause
|
|
10
10
|
Keywords: visualization,OpenGl,ES,medical,imaging,3D,plotting,numpy,bigdata,ipython,jupyter,widgets
|
|
11
11
|
Platform: any
|
|
12
12
|
Classifier: Development Status :: 3 - Alpha
|
|
@@ -19,12 +19,13 @@ Classifier: Operating System :: MacOS :: MacOS X
|
|
|
19
19
|
Classifier: Operating System :: Microsoft :: Windows
|
|
20
20
|
Classifier: Operating System :: POSIX
|
|
21
21
|
Classifier: Programming Language :: Python
|
|
22
|
-
Classifier: Programming Language :: Python :: 3.6
|
|
23
|
-
Classifier: Programming Language :: Python :: 3.7
|
|
24
22
|
Classifier: Programming Language :: Python :: 3.8
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
24
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
25
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
25
26
|
Classifier: Framework :: IPython
|
|
26
27
|
Provides: vispy
|
|
27
|
-
Requires-Python: >=3.
|
|
28
|
+
Requires-Python: >=3.8
|
|
28
29
|
Description-Content-Type: text/x-rst
|
|
29
30
|
Provides-Extra: ipython-static
|
|
30
31
|
Provides-Extra: pyglet
|
|
@@ -18,7 +18,7 @@ plt.xlabel.text = 'Time (ms)'
|
|
|
18
18
|
selected = None
|
|
19
19
|
|
|
20
20
|
# plot data
|
|
21
|
-
cmap = get_colormap('hsl'
|
|
21
|
+
cmap = get_colormap('hsl')
|
|
22
22
|
colors = cmap.map(np.linspace(0.1, 0.9, data.shape[0]))
|
|
23
23
|
t = np.arange(data.shape[1]) * (dt * 1000)
|
|
24
24
|
for i, y in enumerate(data):
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# vispy: gallery 30
|
|
3
|
+
# -----------------------------------------------------------------------------
|
|
4
|
+
# Copyright (c) Vispy Development Team. All Rights Reserved.
|
|
5
|
+
# Distributed under the (new) BSD License. See LICENSE.txt for more info.
|
|
6
|
+
# -----------------------------------------------------------------------------
|
|
7
|
+
"""
|
|
8
|
+
Picking Faces from a Mesh
|
|
9
|
+
=========================
|
|
10
|
+
|
|
11
|
+
Demonstrates how to identify (pick) individual faces on a mesh.
|
|
12
|
+
|
|
13
|
+
Arguments:
|
|
14
|
+
* --mesh - Path to a mesh file (OBJ/OBJ.GZ) [optional]
|
|
15
|
+
|
|
16
|
+
Controls:
|
|
17
|
+
* p - Toggle face picking view - shows the colors encoding face ID
|
|
18
|
+
* r - Clear painted faces
|
|
19
|
+
* s - Cycle shading modes (None, 'flat', 'smooth')
|
|
20
|
+
* w - Toggle wireframe
|
|
21
|
+
"""
|
|
22
|
+
import argparse
|
|
23
|
+
import itertools
|
|
24
|
+
import time
|
|
25
|
+
|
|
26
|
+
import numpy as np
|
|
27
|
+
|
|
28
|
+
from vispy import app, scene
|
|
29
|
+
from vispy.io import read_mesh, load_data_file
|
|
30
|
+
from vispy.scene.visuals import Mesh
|
|
31
|
+
from vispy.scene import transforms
|
|
32
|
+
from vispy.visuals.filters import ShadingFilter, WireframeFilter, FacePickingFilter
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
parser = argparse.ArgumentParser()
|
|
36
|
+
default_mesh = load_data_file('orig/triceratops.obj.gz')
|
|
37
|
+
parser.add_argument('--mesh', default=default_mesh)
|
|
38
|
+
args, _ = parser.parse_known_args()
|
|
39
|
+
|
|
40
|
+
vertices, faces, _normals, _texcoords = read_mesh(args.mesh)
|
|
41
|
+
|
|
42
|
+
canvas = scene.SceneCanvas(keys='interactive', bgcolor='white')
|
|
43
|
+
view = canvas.central_widget.add_view()
|
|
44
|
+
|
|
45
|
+
view.camera = 'arcball'
|
|
46
|
+
view.camera.depth_value = 1e3
|
|
47
|
+
|
|
48
|
+
# Create a colored `MeshVisual`.
|
|
49
|
+
face_colors = np.tile((0.5, 0.0, 0.5, 1.0), (len(faces), 1))
|
|
50
|
+
mesh = Mesh(
|
|
51
|
+
vertices,
|
|
52
|
+
faces,
|
|
53
|
+
face_colors=face_colors.copy()
|
|
54
|
+
)
|
|
55
|
+
mesh.transform = transforms.MatrixTransform()
|
|
56
|
+
mesh.transform.rotate(90, (1, 0, 0))
|
|
57
|
+
mesh.transform.rotate(-45, (0, 0, 1))
|
|
58
|
+
view.add(mesh)
|
|
59
|
+
|
|
60
|
+
# Use filters to affect the rendering of the mesh.
|
|
61
|
+
wireframe_filter = WireframeFilter()
|
|
62
|
+
shading_filter = ShadingFilter()
|
|
63
|
+
face_picking_filter = FacePickingFilter()
|
|
64
|
+
mesh.attach(wireframe_filter)
|
|
65
|
+
mesh.attach(shading_filter)
|
|
66
|
+
mesh.attach(face_picking_filter)
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
def attach_headlight(view):
|
|
70
|
+
light_dir = (0, 1, 0, 0)
|
|
71
|
+
shading_filter.light_dir = light_dir[:3]
|
|
72
|
+
initial_light_dir = view.camera.transform.imap(light_dir)
|
|
73
|
+
|
|
74
|
+
@view.scene.transform.changed.connect
|
|
75
|
+
def on_transform_change(event):
|
|
76
|
+
transform = view.camera.transform
|
|
77
|
+
shading_filter.light_dir = transform.map(initial_light_dir)[:3]
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
attach_headlight(view)
|
|
81
|
+
|
|
82
|
+
shading = itertools.cycle(("flat", "smooth", None))
|
|
83
|
+
shading_filter.shading = next(shading)
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
throttle = time.monotonic()
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
@canvas.events.mouse_move.connect
|
|
90
|
+
def on_mouse_move(event):
|
|
91
|
+
global throttle
|
|
92
|
+
# throttle mouse events to 50ms
|
|
93
|
+
if time.monotonic() - throttle < 0.05:
|
|
94
|
+
return
|
|
95
|
+
throttle = time.monotonic()
|
|
96
|
+
|
|
97
|
+
# adjust the event position for hidpi screens
|
|
98
|
+
render_size = tuple(d * canvas.pixel_scale for d in canvas.size)
|
|
99
|
+
x_pos = event.pos[0] * canvas.pixel_scale
|
|
100
|
+
y_pos = render_size[1] - (event.pos[1] * canvas.pixel_scale)
|
|
101
|
+
|
|
102
|
+
# render a small patch around the mouse cursor
|
|
103
|
+
restore_state = not face_picking_filter.enabled
|
|
104
|
+
face_picking_filter.enabled = True
|
|
105
|
+
mesh.update_gl_state(blend=False)
|
|
106
|
+
picking_render = canvas.render(
|
|
107
|
+
region=(x_pos - 1, y_pos - 1, 3, 3),
|
|
108
|
+
size=(3, 3),
|
|
109
|
+
bgcolor=(0, 0, 0, 0),
|
|
110
|
+
alpha=True,
|
|
111
|
+
)
|
|
112
|
+
if restore_state:
|
|
113
|
+
face_picking_filter.enabled = False
|
|
114
|
+
mesh.update_gl_state(blend=not face_picking_filter.enabled)
|
|
115
|
+
|
|
116
|
+
# unpack the face index from the color in the center pixel
|
|
117
|
+
face_idx = (picking_render.view(np.uint32) - 1)[1, 1, 0]
|
|
118
|
+
|
|
119
|
+
if face_idx > 0 and face_idx < len(face_colors):
|
|
120
|
+
# this may be less safe, but it's faster than set_data
|
|
121
|
+
mesh.mesh_data._face_colors_indexed_by_faces[face_idx] = (0, 1, 0, 1)
|
|
122
|
+
mesh.mesh_data_changed()
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
@canvas.events.key_press.connect
|
|
126
|
+
def on_key_press(event):
|
|
127
|
+
if event.key == 'p':
|
|
128
|
+
face_picking_filter.enabled = not face_picking_filter.enabled
|
|
129
|
+
mesh.update_gl_state(blend=not face_picking_filter.enabled)
|
|
130
|
+
mesh.update()
|
|
131
|
+
|
|
132
|
+
if event.key == 'r':
|
|
133
|
+
mesh.set_data(vertices, faces, face_colors=face_colors)
|
|
134
|
+
|
|
135
|
+
if event.key == 's':
|
|
136
|
+
shading_filter.shading = next(shading)
|
|
137
|
+
mesh.update()
|
|
138
|
+
|
|
139
|
+
if event.key == 'w':
|
|
140
|
+
wireframe_filter.enabled = not wireframe_filter.enabled
|
|
141
|
+
mesh.update()
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
canvas.show()
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
if __name__ == "__main__":
|
|
148
|
+
print(__doc__)
|
|
149
|
+
app.run()
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# vispy: gallery 30
|
|
3
|
+
# -----------------------------------------------------------------------------
|
|
4
|
+
# Copyright (c) Vispy Development Team. All Rights Reserved.
|
|
5
|
+
# Distributed under the (new) BSD License. See LICENSE.txt for more info.
|
|
6
|
+
# -----------------------------------------------------------------------------
|
|
7
|
+
"""
|
|
8
|
+
Vispy Lasso
|
|
9
|
+
===========
|
|
10
|
+
|
|
11
|
+
Demonstrate the use of lasso selection.
|
|
12
|
+
|
|
13
|
+
The lasso selection is done on a 2D scatter but could be extended further by user.
|
|
14
|
+
"""
|
|
15
|
+
import sys
|
|
16
|
+
import warnings
|
|
17
|
+
import numpy as np
|
|
18
|
+
from vispy import app, scene
|
|
19
|
+
from vispy.geometry import curves
|
|
20
|
+
from vispy.scene import visuals
|
|
21
|
+
|
|
22
|
+
try:
|
|
23
|
+
from matplotlib import path
|
|
24
|
+
except ImportError:
|
|
25
|
+
warnings.warn("Lasso example requires matplotlib for more accurate selection. Falling back to numpy based selection.")
|
|
26
|
+
path = None
|
|
27
|
+
|
|
28
|
+
LASSO_COLOR = (1, .1, .1)
|
|
29
|
+
FILTERED_COLOR = (1, 1, 1, 0.3)
|
|
30
|
+
SELECTED_COLOR = (0.3, 0, 1, 1.0)
|
|
31
|
+
PEN_RADIUS = 2
|
|
32
|
+
MIN_MOVE_UPDATE_THRESHOLD = 5
|
|
33
|
+
NUMBER_POINT = 2000000
|
|
34
|
+
SCATTER_SIZE = 5
|
|
35
|
+
|
|
36
|
+
canvas = scene.SceneCanvas(keys='interactive', show=True)
|
|
37
|
+
view = canvas.central_widget.add_view()
|
|
38
|
+
|
|
39
|
+
pointer = scene.visuals.Ellipse(center=(0., 0.), radius=(PEN_RADIUS, PEN_RADIUS,), color=None, border_width=0.2, border_color="white",
|
|
40
|
+
num_segments=10, parent=view.scene)
|
|
41
|
+
|
|
42
|
+
lasso = scene.visuals.Line(pos=np.array([[0, 0], [0, 0]]), color = LASSO_COLOR, parent=view.scene, width = PEN_RADIUS , antialias=True)
|
|
43
|
+
px, py = 0, 0
|
|
44
|
+
|
|
45
|
+
# generate data
|
|
46
|
+
pos = 360 * np.random.normal(size=(NUMBER_POINT, 2), scale=1)
|
|
47
|
+
|
|
48
|
+
# one could stop here for the data generation, the rest is just to make the
|
|
49
|
+
# data look more interesting. Copied over from magnify.py
|
|
50
|
+
centers = np.random.normal(size=(NUMBER_POINT, 2), scale = 1) * 960
|
|
51
|
+
indexes = np.random.normal(size=NUMBER_POINT, loc=centers.shape[0] / 2,
|
|
52
|
+
scale=centers.shape[0] / 3)
|
|
53
|
+
indexes = np.clip(indexes, 0, centers.shape[0] - 1).astype(int)
|
|
54
|
+
pos += centers[indexes]
|
|
55
|
+
|
|
56
|
+
# create scatter object and fill in the data
|
|
57
|
+
scatter = visuals.Markers()
|
|
58
|
+
point_color = np.full((NUMBER_POINT, 4), FILTERED_COLOR)
|
|
59
|
+
selected_mask = np.full(NUMBER_POINT, False)
|
|
60
|
+
scatter.set_data(pos, edge_width=0, face_color=point_color, size=SCATTER_SIZE)
|
|
61
|
+
|
|
62
|
+
view.add(scatter)
|
|
63
|
+
|
|
64
|
+
def points_in_polygon(polygon, pts):
|
|
65
|
+
"""Get boolean mask of points in a polygon reusing matplotlib implementation.
|
|
66
|
+
|
|
67
|
+
The fallback code is based from StackOverflow answer by ``Ta946`` in this question:
|
|
68
|
+
https://stackoverflow.com/questions/36399381/whats-the-fastest-way-of-checking-if-a-point-is-inside-a-polygon-in-python
|
|
69
|
+
|
|
70
|
+
This is a proof of concept and depending on your use case, willingness
|
|
71
|
+
to add other dependencies, and your performance needs one of the other answers
|
|
72
|
+
on the above question would serve you better (ex. shapely, etc).
|
|
73
|
+
"""
|
|
74
|
+
# Filter vertices out of the polygon's bounding box, this serve as an early optimization whenever number of vertices
|
|
75
|
+
# to filter out is huge.
|
|
76
|
+
x1, x2, y1, y2 = min(polygon[:, 0]), max(polygon[:, 0]), min(polygon[:, 1]), max(polygon[:, 1])
|
|
77
|
+
selection_mask = (x1 < pts[:, 0]) & (pts[:, 0] < x2) & (y1 < pts[:, 1]) & (pts[:, 1] < y2)
|
|
78
|
+
pts_in_bbox = pts[selection_mask]
|
|
79
|
+
|
|
80
|
+
# Select vertices inside the polygon.
|
|
81
|
+
if path is not None:
|
|
82
|
+
polygon = path.Path(polygon[:, :2], closed = True)
|
|
83
|
+
polygon_mask = polygon.contains_points(pts_in_bbox[:, :2])
|
|
84
|
+
else:
|
|
85
|
+
contour2 = np.vstack((polygon[1:], polygon[:1]))
|
|
86
|
+
test_diff = contour2-polygon
|
|
87
|
+
m1 = (polygon[:,1] > pts_in_bbox[:,None,1]) != (contour2[:,1] > pts_in_bbox[:,None,1])
|
|
88
|
+
slope = ((pts_in_bbox[:,None,0]-polygon[:,0])*test_diff[:,1])-(test_diff[:,0]*(pts_in_bbox[:,None,1]-polygon[:,1]))
|
|
89
|
+
m2 = slope == 0
|
|
90
|
+
mask2 = (m1 & m2).any(-1)
|
|
91
|
+
m3 = (slope < 0) != (contour2[:,1] < polygon[:,1])
|
|
92
|
+
m4 = m1 & m3
|
|
93
|
+
count = np.count_nonzero(m4, axis=-1)
|
|
94
|
+
mask3 = ~(count%2==0)
|
|
95
|
+
polygon_mask = mask2 | mask3
|
|
96
|
+
|
|
97
|
+
# Return the full selection mask based on bounding box & polygon selection.
|
|
98
|
+
selection_mask[np.where(selection_mask == True)] &= polygon_mask
|
|
99
|
+
|
|
100
|
+
return selection_mask
|
|
101
|
+
|
|
102
|
+
def select(polygon_vertices, points):
|
|
103
|
+
# Set default mask to filter everything since user selection
|
|
104
|
+
# is not yet calculated.
|
|
105
|
+
selected_mask = np.full((NUMBER_POINT, 4), FILTERED_COLOR)
|
|
106
|
+
|
|
107
|
+
if polygon_vertices is not None:
|
|
108
|
+
# Optimization: It's faster to convert lasso selection straight to visual coordinates since there's generally less vertices
|
|
109
|
+
# this would speed up the processing depending on the scene.
|
|
110
|
+
polygon_vertices = scatter.get_transform('canvas', 'visual').map(polygon_vertices)
|
|
111
|
+
selected_mask = points_in_polygon(polygon_vertices, points)
|
|
112
|
+
|
|
113
|
+
return selected_mask
|
|
114
|
+
|
|
115
|
+
@canvas.connect
|
|
116
|
+
def on_mouse_press(event):
|
|
117
|
+
global point_color, selected_mask
|
|
118
|
+
|
|
119
|
+
if event.button == 1:
|
|
120
|
+
# Reset lasso state.
|
|
121
|
+
lasso.set_data(pos=np.empty((1, 2)))
|
|
122
|
+
|
|
123
|
+
# Reset selected vertices to the filtered color, this would earn some time in case
|
|
124
|
+
# scene contains a lot of vertices.
|
|
125
|
+
point_color[selected_mask] = FILTERED_COLOR
|
|
126
|
+
|
|
127
|
+
scatter.set_data(pos, edge_width=0, face_color=point_color, size=SCATTER_SIZE)
|
|
128
|
+
|
|
129
|
+
@canvas.connect
|
|
130
|
+
def on_mouse_move(event):
|
|
131
|
+
global pointer, px, py
|
|
132
|
+
|
|
133
|
+
pp = event.pos
|
|
134
|
+
|
|
135
|
+
# Optimization: to avoid too much recalculation/update we can update scene only if the mouse
|
|
136
|
+
# moved a certain amount of pixel.
|
|
137
|
+
if (abs(px - pp[0]) > MIN_MOVE_UPDATE_THRESHOLD or abs(py - pp[1]) > MIN_MOVE_UPDATE_THRESHOLD):
|
|
138
|
+
pointer.center = pp
|
|
139
|
+
if event.button == 1:
|
|
140
|
+
polygon_vertices = event.trail()
|
|
141
|
+
lasso.set_data(pos = np.insert(polygon_vertices, len(polygon_vertices), polygon_vertices[0], axis=0))
|
|
142
|
+
px, py = pp
|
|
143
|
+
|
|
144
|
+
@canvas.connect
|
|
145
|
+
def on_mouse_release(event):
|
|
146
|
+
global point_color, selected_mask
|
|
147
|
+
|
|
148
|
+
if event.button == 1:
|
|
149
|
+
selected_mask = select(event.trail(), pos)
|
|
150
|
+
|
|
151
|
+
# Set selected points with selection color
|
|
152
|
+
point_color[selected_mask] = SELECTED_COLOR
|
|
153
|
+
scatter.set_data(pos, edge_width=0, face_color=point_color, size=SCATTER_SIZE)
|
|
154
|
+
|
|
155
|
+
if __name__ == '__main__':
|
|
156
|
+
canvas.show()
|
|
157
|
+
if sys.flags.interactive == 0:
|
|
158
|
+
app.run()
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# vispy: gallery 30
|
|
3
|
+
# -----------------------------------------------------------------------------
|
|
4
|
+
# Copyright (c) Vispy Development Team. All Rights Reserved.
|
|
5
|
+
# Distributed under the (new) BSD License. See LICENSE.txt for more info.
|
|
6
|
+
# -----------------------------------------------------------------------------
|
|
7
|
+
"""
|
|
8
|
+
Picking Markers
|
|
9
|
+
===============
|
|
10
|
+
|
|
11
|
+
Demonstrates how to identify (pick) markers. Hover markers to change their
|
|
12
|
+
symbol and color.
|
|
13
|
+
|
|
14
|
+
Controls:
|
|
15
|
+
* p - Toggle picking view - shows the colors encoding marker ID
|
|
16
|
+
* r - Reset marker symbols and colors
|
|
17
|
+
"""
|
|
18
|
+
import random
|
|
19
|
+
import time
|
|
20
|
+
import numpy as np
|
|
21
|
+
from scipy.constants import golden as GOLDEN
|
|
22
|
+
|
|
23
|
+
from vispy import app, scene
|
|
24
|
+
from vispy.scene.visuals import Markers
|
|
25
|
+
from vispy.visuals.filters import MarkerPickingFilter
|
|
26
|
+
|
|
27
|
+
canvas = scene.SceneCanvas(keys='interactive', bgcolor='black')
|
|
28
|
+
view = canvas.central_widget.add_view(camera="panzoom")
|
|
29
|
+
view.camera.rect = (-1, -1, 2, 2)
|
|
30
|
+
|
|
31
|
+
# floret pattern
|
|
32
|
+
n = 10_000
|
|
33
|
+
radius = np.linspace(0, 0.9, n)**0.6 # prevent extreme density at center
|
|
34
|
+
theta = np.arange(n) * GOLDEN
|
|
35
|
+
pos = np.column_stack([radius * np.cos(theta), radius * np.sin(theta)])
|
|
36
|
+
|
|
37
|
+
COLORS = [
|
|
38
|
+
(1, 0, 0, 1), # red
|
|
39
|
+
(1, 0.5, 0, 1), # orange
|
|
40
|
+
(1, 1, 0, 1), # yellow
|
|
41
|
+
(0, 1, 0, 1), # green
|
|
42
|
+
(0, 0, 1, 1), # blue
|
|
43
|
+
(0.29, 0, 0.51, 1), # indigo
|
|
44
|
+
(0.93, 0.51, 0.93, 1), # violet
|
|
45
|
+
]
|
|
46
|
+
|
|
47
|
+
colors = np.zeros((n, 4), dtype=np.float32)
|
|
48
|
+
colors[:, 0] = 1 # red
|
|
49
|
+
colors[:, -1] = 1 # alpha
|
|
50
|
+
_colors = colors.copy()
|
|
51
|
+
|
|
52
|
+
symbols = list(Markers._symbol_shader_values.keys())
|
|
53
|
+
symbols_ring = dict(zip(symbols, symbols[1:]))
|
|
54
|
+
symbols_ring[symbols[-1]] = symbols[0]
|
|
55
|
+
|
|
56
|
+
EDGE_COLOR = "white"
|
|
57
|
+
MARKER_SIZE = 0.0125
|
|
58
|
+
EDGE_WDITH = MARKER_SIZE / 10
|
|
59
|
+
|
|
60
|
+
markers = Markers(
|
|
61
|
+
pos=pos,
|
|
62
|
+
edge_color=EDGE_COLOR,
|
|
63
|
+
face_color=colors,
|
|
64
|
+
size=MARKER_SIZE,
|
|
65
|
+
edge_width=EDGE_WDITH,
|
|
66
|
+
scaling="scene",
|
|
67
|
+
)
|
|
68
|
+
markers.update_gl_state(depth_test=True)
|
|
69
|
+
view.add(markers)
|
|
70
|
+
|
|
71
|
+
# Use filters to affect the rendering of the mesh.
|
|
72
|
+
picking_filter = MarkerPickingFilter()
|
|
73
|
+
markers.attach(picking_filter)
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
@view.events.connect
|
|
77
|
+
def on_viewbox_change(event):
|
|
78
|
+
# workaround for vispy/#2501
|
|
79
|
+
markers.update_gl_state(blend=not picking_filter.enabled)
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
throttle = time.monotonic()
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
@canvas.events.mouse_move.connect
|
|
86
|
+
def on_mouse_move(event):
|
|
87
|
+
global throttle
|
|
88
|
+
# throttle mouse events to 50ms
|
|
89
|
+
if time.monotonic() - throttle < 0.05:
|
|
90
|
+
return
|
|
91
|
+
throttle = time.monotonic()
|
|
92
|
+
|
|
93
|
+
# adjust the event position for hidpi screens
|
|
94
|
+
render_size = tuple(d * canvas.pixel_scale for d in canvas.size)
|
|
95
|
+
x_pos = event.pos[0] * canvas.pixel_scale
|
|
96
|
+
y_pos = render_size[1] - (event.pos[1] * canvas.pixel_scale)
|
|
97
|
+
|
|
98
|
+
# render a small patch around the mouse cursor
|
|
99
|
+
restore_state = not picking_filter.enabled
|
|
100
|
+
picking_filter.enabled = True
|
|
101
|
+
markers.update_gl_state(blend=False)
|
|
102
|
+
picking_render = canvas.render(
|
|
103
|
+
crop=(x_pos - 2, y_pos - 2, 5, 5),
|
|
104
|
+
bgcolor=(0, 0, 0, 0),
|
|
105
|
+
alpha=True,
|
|
106
|
+
)
|
|
107
|
+
if restore_state:
|
|
108
|
+
picking_filter.enabled = False
|
|
109
|
+
markers.update_gl_state(blend=not picking_filter.enabled)
|
|
110
|
+
|
|
111
|
+
# unpack the face index from the color in the center pixel
|
|
112
|
+
marker_idx = (picking_render.view(np.uint32) - 1)[2, 2, 0]
|
|
113
|
+
|
|
114
|
+
if marker_idx >= 0 and marker_idx < len(pos):
|
|
115
|
+
new_symbols = list(markers.symbol)
|
|
116
|
+
new_symbol = symbols_ring[new_symbols[marker_idx]]
|
|
117
|
+
new_symbols[marker_idx] = new_symbol
|
|
118
|
+
|
|
119
|
+
colors[marker_idx] = random.choice(COLORS)
|
|
120
|
+
markers.set_data(
|
|
121
|
+
pos=pos,
|
|
122
|
+
edge_color=EDGE_COLOR,
|
|
123
|
+
face_color=colors,
|
|
124
|
+
size=MARKER_SIZE,
|
|
125
|
+
edge_width=EDGE_WDITH,
|
|
126
|
+
symbol=new_symbols,
|
|
127
|
+
)
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
@canvas.events.key_press.connect
|
|
131
|
+
def on_key_press(event):
|
|
132
|
+
global colors
|
|
133
|
+
if event.key == 'p':
|
|
134
|
+
# toggle face picking view
|
|
135
|
+
picking_filter.enabled = not picking_filter.enabled
|
|
136
|
+
markers.update_gl_state(blend=not picking_filter.enabled)
|
|
137
|
+
markers.update()
|
|
138
|
+
if event.key == 'r':
|
|
139
|
+
# reset marker symbols
|
|
140
|
+
colors = _colors.copy()
|
|
141
|
+
markers.set_data(
|
|
142
|
+
pos=pos,
|
|
143
|
+
edge_color=EDGE_COLOR,
|
|
144
|
+
face_color=colors,
|
|
145
|
+
size=MARKER_SIZE,
|
|
146
|
+
edge_width=EDGE_WDITH,
|
|
147
|
+
)
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
canvas.show()
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
if __name__ == "__main__":
|
|
154
|
+
print(__doc__)
|
|
155
|
+
app.run()
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = [
|
|
3
|
+
"wheel",
|
|
4
|
+
'numpy; python_full_version<"3.12.0rc1"',
|
|
5
|
+
'numpy>=1.26.0rc1; python_full_version>="3.12.0rc1"',
|
|
6
|
+
"setuptools>=42",
|
|
7
|
+
"setuptools_scm[toml]>=7.1",
|
|
8
|
+
"Cython>=3.0.0"
|
|
9
|
+
]
|
|
10
|
+
|
|
11
|
+
[tools.setuptools_scm]
|
|
12
|
+
write_to = "vispy/version.py"
|
|
13
|
+
local_scheme = "dirty-tag"
|
|
@@ -24,15 +24,11 @@ Announcing:
|
|
|
24
24
|
|
|
25
25
|
import os
|
|
26
26
|
from os import path as op
|
|
27
|
-
from
|
|
28
|
-
from setuptools import setup, find_packages, Extension
|
|
27
|
+
from setuptools import setup, find_packages
|
|
29
28
|
|
|
30
29
|
import numpy as np
|
|
31
30
|
from Cython.Build import cythonize
|
|
32
|
-
|
|
33
|
-
log.set_verbosity(log.DEBUG)
|
|
34
|
-
log.info('setup.py entered')
|
|
35
|
-
log.info('$PATH=%s' % os.environ['PATH'])
|
|
31
|
+
from Cython.Distutils import Extension
|
|
36
32
|
|
|
37
33
|
name = 'vispy'
|
|
38
34
|
description = 'Interactive visualization in Python'
|
|
@@ -56,8 +52,11 @@ def set_builtin(name, value):
|
|
|
56
52
|
|
|
57
53
|
|
|
58
54
|
extensions = [Extension('vispy.visuals.text._sdf_cpu',
|
|
59
|
-
[op.join('vispy', 'visuals', 'text', '_sdf_cpu.pyx')],
|
|
60
|
-
include_dirs=[np.get_include()]
|
|
55
|
+
sources=[op.join('vispy', 'visuals', 'text', '_sdf_cpu.pyx')],
|
|
56
|
+
include_dirs=[np.get_include()],
|
|
57
|
+
cython_directives={"language_level": "3"},
|
|
58
|
+
define_macros=[("NPY_NO_DEPRECATED_API", "NPY_1_7_API_VERSION")],
|
|
59
|
+
),
|
|
61
60
|
]
|
|
62
61
|
|
|
63
62
|
readme = open('README.rst', 'r').read()
|
|
@@ -70,7 +69,7 @@ setup(
|
|
|
70
69
|
},
|
|
71
70
|
author='Vispy contributors',
|
|
72
71
|
author_email='vispy@googlegroups.com',
|
|
73
|
-
license='
|
|
72
|
+
license='BSD-3-Clause',
|
|
74
73
|
url='http://vispy.org',
|
|
75
74
|
download_url='https://pypi.python.org/pypi/vispy',
|
|
76
75
|
keywords=[
|
|
@@ -92,9 +91,8 @@ setup(
|
|
|
92
91
|
long_description_content_type='text/x-rst',
|
|
93
92
|
platforms='any',
|
|
94
93
|
provides=['vispy'],
|
|
95
|
-
python_requires='>=3.
|
|
94
|
+
python_requires='>=3.8',
|
|
96
95
|
install_requires=['numpy', 'freetype-py', 'hsluv', 'kiwisolver', 'packaging'],
|
|
97
|
-
setup_requires=['numpy', 'cython', 'setuptools_scm', 'setuptools_scm_git_archive', 'packaging'],
|
|
98
96
|
extras_require={
|
|
99
97
|
'ipython-static': ['ipython'],
|
|
100
98
|
'pyglet': ['pyglet>=1.2'],
|
|
@@ -147,9 +145,10 @@ setup(
|
|
|
147
145
|
'Operating System :: Microsoft :: Windows',
|
|
148
146
|
'Operating System :: POSIX',
|
|
149
147
|
'Programming Language :: Python',
|
|
150
|
-
'Programming Language :: Python :: 3.6',
|
|
151
|
-
'Programming Language :: Python :: 3.7',
|
|
152
148
|
'Programming Language :: Python :: 3.8',
|
|
149
|
+
'Programming Language :: Python :: 3.9',
|
|
150
|
+
'Programming Language :: Python :: 3.10',
|
|
151
|
+
'Programming Language :: Python :: 3.11',
|
|
153
152
|
'Framework :: IPython'
|
|
154
153
|
],
|
|
155
154
|
)
|
|
@@ -250,7 +250,7 @@ class CanvasBackend(BaseCanvasBackend):
|
|
|
250
250
|
raise ValueError('fullscreen must be <= %s'
|
|
251
251
|
% len(monitor))
|
|
252
252
|
monitor = monitor[p.fullscreen]
|
|
253
|
-
use_size = glfw.get_video_mode(monitor)[:2]
|
|
253
|
+
use_size = glfw.get_video_mode(monitor)[0][:2]
|
|
254
254
|
if use_size != tuple(p.size):
|
|
255
255
|
logger.debug('Requested size %s, will be ignored to '
|
|
256
256
|
'use fullscreen mode %s' % (p.size, use_size))
|