vispy 0.15.0__cp312-cp312-macosx_10_13_x86_64.whl
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/__init__.py +33 -0
- vispy/app/__init__.py +15 -0
- vispy/app/_default_app.py +76 -0
- vispy/app/_detect_eventloop.py +148 -0
- vispy/app/application.py +263 -0
- vispy/app/backends/__init__.py +52 -0
- vispy/app/backends/_egl.py +264 -0
- vispy/app/backends/_glfw.py +513 -0
- vispy/app/backends/_jupyter_rfb.py +278 -0
- vispy/app/backends/_offscreen_util.py +121 -0
- vispy/app/backends/_osmesa.py +235 -0
- vispy/app/backends/_pyglet.py +451 -0
- vispy/app/backends/_pyqt4.py +36 -0
- vispy/app/backends/_pyqt5.py +36 -0
- vispy/app/backends/_pyqt6.py +40 -0
- vispy/app/backends/_pyside.py +37 -0
- vispy/app/backends/_pyside2.py +52 -0
- vispy/app/backends/_pyside6.py +53 -0
- vispy/app/backends/_qt.py +1003 -0
- vispy/app/backends/_sdl2.py +444 -0
- vispy/app/backends/_template.py +244 -0
- vispy/app/backends/_test.py +8 -0
- vispy/app/backends/_tk.py +800 -0
- vispy/app/backends/_wx.py +476 -0
- vispy/app/backends/tests/__init__.py +0 -0
- vispy/app/backends/tests/test_offscreen_util.py +52 -0
- vispy/app/backends/tests/test_rfb.py +77 -0
- vispy/app/base.py +294 -0
- vispy/app/canvas.py +828 -0
- vispy/app/qt.py +92 -0
- vispy/app/tests/__init__.py +0 -0
- vispy/app/tests/qt-designer.ui +58 -0
- vispy/app/tests/test_app.py +442 -0
- vispy/app/tests/test_backends.py +164 -0
- vispy/app/tests/test_canvas.py +122 -0
- vispy/app/tests/test_context.py +92 -0
- vispy/app/tests/test_qt.py +47 -0
- vispy/app/tests/test_simultaneous.py +134 -0
- vispy/app/timer.py +174 -0
- vispy/color/__init__.py +17 -0
- vispy/color/_color_dict.py +193 -0
- vispy/color/color_array.py +447 -0
- vispy/color/color_space.py +181 -0
- vispy/color/colormap.py +1213 -0
- vispy/color/tests/__init__.py +0 -0
- vispy/color/tests/test_color.py +378 -0
- vispy/conftest.py +12 -0
- vispy/ext/__init__.py +0 -0
- vispy/ext/cocoapy.py +1522 -0
- vispy/ext/cubehelix.py +138 -0
- vispy/ext/egl.py +375 -0
- vispy/ext/fontconfig.py +118 -0
- vispy/ext/gdi32plus.py +206 -0
- vispy/ext/osmesa.py +105 -0
- vispy/geometry/__init__.py +23 -0
- vispy/geometry/_triangulation_debugger.py +171 -0
- vispy/geometry/calculations.py +162 -0
- vispy/geometry/curves.py +399 -0
- vispy/geometry/generation.py +643 -0
- vispy/geometry/isocurve.py +175 -0
- vispy/geometry/isosurface.py +465 -0
- vispy/geometry/meshdata.py +700 -0
- vispy/geometry/normals.py +78 -0
- vispy/geometry/parametric.py +56 -0
- vispy/geometry/polygon.py +137 -0
- vispy/geometry/rect.py +210 -0
- vispy/geometry/tests/__init__.py +0 -0
- vispy/geometry/tests/test_calculations.py +23 -0
- vispy/geometry/tests/test_generation.py +56 -0
- vispy/geometry/tests/test_meshdata.py +106 -0
- vispy/geometry/tests/test_triangulation.py +594 -0
- vispy/geometry/torusknot.py +142 -0
- vispy/geometry/triangulation.py +876 -0
- vispy/gloo/__init__.py +56 -0
- vispy/gloo/buffer.py +505 -0
- vispy/gloo/context.py +272 -0
- vispy/gloo/framebuffer.py +257 -0
- vispy/gloo/gl/__init__.py +234 -0
- vispy/gloo/gl/_constants.py +332 -0
- vispy/gloo/gl/_es2.py +986 -0
- vispy/gloo/gl/_gl2.py +1365 -0
- vispy/gloo/gl/_proxy.py +499 -0
- vispy/gloo/gl/_pyopengl2.py +362 -0
- vispy/gloo/gl/dummy.py +24 -0
- vispy/gloo/gl/es2.py +62 -0
- vispy/gloo/gl/gl2.py +98 -0
- vispy/gloo/gl/glplus.py +168 -0
- vispy/gloo/gl/pyopengl2.py +97 -0
- vispy/gloo/gl/tests/__init__.py +0 -0
- vispy/gloo/gl/tests/test_basics.py +282 -0
- vispy/gloo/gl/tests/test_functionality.py +568 -0
- vispy/gloo/gl/tests/test_names.py +246 -0
- vispy/gloo/gl/tests/test_use.py +71 -0
- vispy/gloo/glir.py +1824 -0
- vispy/gloo/globject.py +101 -0
- vispy/gloo/preprocessor.py +67 -0
- vispy/gloo/program.py +543 -0
- vispy/gloo/tests/__init__.py +0 -0
- vispy/gloo/tests/test_buffer.py +558 -0
- vispy/gloo/tests/test_context.py +119 -0
- vispy/gloo/tests/test_framebuffer.py +195 -0
- vispy/gloo/tests/test_glir.py +307 -0
- vispy/gloo/tests/test_globject.py +35 -0
- vispy/gloo/tests/test_program.py +302 -0
- vispy/gloo/tests/test_texture.py +732 -0
- vispy/gloo/tests/test_use_gloo.py +187 -0
- vispy/gloo/tests/test_util.py +60 -0
- vispy/gloo/tests/test_wrappers.py +261 -0
- vispy/gloo/texture.py +1046 -0
- vispy/gloo/util.py +129 -0
- vispy/gloo/wrappers.py +762 -0
- vispy/glsl/__init__.py +42 -0
- vispy/glsl/antialias/antialias.glsl +7 -0
- vispy/glsl/antialias/cap-butt.glsl +31 -0
- vispy/glsl/antialias/cap-round.glsl +29 -0
- vispy/glsl/antialias/cap-square.glsl +30 -0
- vispy/glsl/antialias/cap-triangle-in.glsl +30 -0
- vispy/glsl/antialias/cap-triangle-out.glsl +30 -0
- vispy/glsl/antialias/cap.glsl +67 -0
- vispy/glsl/antialias/caps.glsl +67 -0
- vispy/glsl/antialias/filled.glsl +50 -0
- vispy/glsl/antialias/outline.glsl +40 -0
- vispy/glsl/antialias/stroke.glsl +43 -0
- vispy/glsl/arrowheads/angle.glsl +99 -0
- vispy/glsl/arrowheads/arrowheads.frag +60 -0
- vispy/glsl/arrowheads/arrowheads.glsl +12 -0
- vispy/glsl/arrowheads/arrowheads.vert +83 -0
- vispy/glsl/arrowheads/curved.glsl +48 -0
- vispy/glsl/arrowheads/inhibitor.glsl +26 -0
- vispy/glsl/arrowheads/stealth.glsl +46 -0
- vispy/glsl/arrowheads/triangle.glsl +97 -0
- vispy/glsl/arrowheads/util.glsl +13 -0
- vispy/glsl/arrows/angle-30.glsl +12 -0
- vispy/glsl/arrows/angle-60.glsl +12 -0
- vispy/glsl/arrows/angle-90.glsl +12 -0
- vispy/glsl/arrows/arrow.frag +39 -0
- vispy/glsl/arrows/arrow.vert +49 -0
- vispy/glsl/arrows/arrows.glsl +17 -0
- vispy/glsl/arrows/common.glsl +187 -0
- vispy/glsl/arrows/curved.glsl +63 -0
- vispy/glsl/arrows/stealth.glsl +50 -0
- vispy/glsl/arrows/triangle-30.glsl +12 -0
- vispy/glsl/arrows/triangle-60.glsl +12 -0
- vispy/glsl/arrows/triangle-90.glsl +12 -0
- vispy/glsl/arrows/util.glsl +98 -0
- vispy/glsl/build_spatial_filters.py +660 -0
- vispy/glsl/collections/agg-fast-path.frag +20 -0
- vispy/glsl/collections/agg-fast-path.vert +78 -0
- vispy/glsl/collections/agg-glyph.frag +60 -0
- vispy/glsl/collections/agg-glyph.vert +33 -0
- vispy/glsl/collections/agg-marker.frag +35 -0
- vispy/glsl/collections/agg-marker.vert +48 -0
- vispy/glsl/collections/agg-path.frag +55 -0
- vispy/glsl/collections/agg-path.vert +166 -0
- vispy/glsl/collections/agg-point.frag +21 -0
- vispy/glsl/collections/agg-point.vert +35 -0
- vispy/glsl/collections/agg-segment.frag +32 -0
- vispy/glsl/collections/agg-segment.vert +75 -0
- vispy/glsl/collections/marker.frag +38 -0
- vispy/glsl/collections/marker.vert +48 -0
- vispy/glsl/collections/raw-path.frag +15 -0
- vispy/glsl/collections/raw-path.vert +24 -0
- vispy/glsl/collections/raw-point.frag +14 -0
- vispy/glsl/collections/raw-point.vert +31 -0
- vispy/glsl/collections/raw-segment.frag +18 -0
- vispy/glsl/collections/raw-segment.vert +26 -0
- vispy/glsl/collections/raw-triangle.frag +13 -0
- vispy/glsl/collections/raw-triangle.vert +26 -0
- vispy/glsl/collections/sdf-glyph-ticks.vert +69 -0
- vispy/glsl/collections/sdf-glyph.frag +80 -0
- vispy/glsl/collections/sdf-glyph.vert +59 -0
- vispy/glsl/collections/tick-labels.vert +71 -0
- vispy/glsl/colormaps/autumn.glsl +20 -0
- vispy/glsl/colormaps/blues.glsl +20 -0
- vispy/glsl/colormaps/color-space.glsl +17 -0
- vispy/glsl/colormaps/colormaps.glsl +24 -0
- vispy/glsl/colormaps/cool.glsl +20 -0
- vispy/glsl/colormaps/fire.glsl +21 -0
- vispy/glsl/colormaps/gray.glsl +20 -0
- vispy/glsl/colormaps/greens.glsl +20 -0
- vispy/glsl/colormaps/hot.glsl +22 -0
- vispy/glsl/colormaps/ice.glsl +20 -0
- vispy/glsl/colormaps/icefire.glsl +23 -0
- vispy/glsl/colormaps/parse.py +40 -0
- vispy/glsl/colormaps/reds.glsl +20 -0
- vispy/glsl/colormaps/spring.glsl +20 -0
- vispy/glsl/colormaps/summer.glsl +20 -0
- vispy/glsl/colormaps/user.glsl +22 -0
- vispy/glsl/colormaps/util.glsl +41 -0
- vispy/glsl/colormaps/wheel.glsl +21 -0
- vispy/glsl/colormaps/winter.glsl +20 -0
- vispy/glsl/lines/agg.frag +320 -0
- vispy/glsl/lines/agg.vert +241 -0
- vispy/glsl/markers/arrow.glsl +12 -0
- vispy/glsl/markers/asterisk.glsl +16 -0
- vispy/glsl/markers/chevron.glsl +14 -0
- vispy/glsl/markers/clover.glsl +20 -0
- vispy/glsl/markers/club.glsl +31 -0
- vispy/glsl/markers/cross.glsl +17 -0
- vispy/glsl/markers/diamond.glsl +12 -0
- vispy/glsl/markers/disc.glsl +9 -0
- vispy/glsl/markers/ellipse.glsl +67 -0
- vispy/glsl/markers/hbar.glsl +9 -0
- vispy/glsl/markers/heart.glsl +15 -0
- vispy/glsl/markers/infinity.glsl +15 -0
- vispy/glsl/markers/marker-sdf.frag +74 -0
- vispy/glsl/markers/marker-sdf.vert +41 -0
- vispy/glsl/markers/marker.frag +36 -0
- vispy/glsl/markers/marker.vert +46 -0
- vispy/glsl/markers/markers.glsl +24 -0
- vispy/glsl/markers/pin.glsl +18 -0
- vispy/glsl/markers/ring.glsl +11 -0
- vispy/glsl/markers/spade.glsl +28 -0
- vispy/glsl/markers/square.glsl +10 -0
- vispy/glsl/markers/tag.glsl +11 -0
- vispy/glsl/markers/triangle.glsl +14 -0
- vispy/glsl/markers/vbar.glsl +9 -0
- vispy/glsl/math/circle-through-2-points.glsl +30 -0
- vispy/glsl/math/constants.glsl +48 -0
- vispy/glsl/math/double.glsl +114 -0
- vispy/glsl/math/functions.glsl +20 -0
- vispy/glsl/math/point-to-line-distance.glsl +31 -0
- vispy/glsl/math/point-to-line-projection.glsl +29 -0
- vispy/glsl/math/signed-line-distance.glsl +27 -0
- vispy/glsl/math/signed-segment-distance.glsl +30 -0
- vispy/glsl/misc/regular-grid.frag +244 -0
- vispy/glsl/misc/spatial-filters.frag +1407 -0
- vispy/glsl/misc/viewport-NDC.glsl +20 -0
- vispy/glsl/transforms/azimuthal-equal-area.glsl +32 -0
- vispy/glsl/transforms/azimuthal-equidistant.glsl +38 -0
- vispy/glsl/transforms/hammer.glsl +44 -0
- vispy/glsl/transforms/identity.glsl +6 -0
- vispy/glsl/transforms/identity_forward.glsl +23 -0
- vispy/glsl/transforms/identity_inverse.glsl +23 -0
- vispy/glsl/transforms/linear-scale.glsl +127 -0
- vispy/glsl/transforms/log-scale.glsl +126 -0
- vispy/glsl/transforms/mercator-transverse-forward.glsl +40 -0
- vispy/glsl/transforms/mercator-transverse-inverse.glsl +40 -0
- vispy/glsl/transforms/panzoom.glsl +10 -0
- vispy/glsl/transforms/polar.glsl +41 -0
- vispy/glsl/transforms/position.glsl +44 -0
- vispy/glsl/transforms/power-scale.glsl +139 -0
- vispy/glsl/transforms/projection.glsl +7 -0
- vispy/glsl/transforms/pvm.glsl +13 -0
- vispy/glsl/transforms/rotate.glsl +45 -0
- vispy/glsl/transforms/trackball.glsl +15 -0
- vispy/glsl/transforms/translate.glsl +35 -0
- vispy/glsl/transforms/transverse_mercator.glsl +38 -0
- vispy/glsl/transforms/viewport-clipping.glsl +14 -0
- vispy/glsl/transforms/viewport-transform.glsl +16 -0
- vispy/glsl/transforms/viewport.glsl +50 -0
- vispy/glsl/transforms/x.glsl +24 -0
- vispy/glsl/transforms/y.glsl +19 -0
- vispy/glsl/transforms/z.glsl +14 -0
- vispy/io/__init__.py +20 -0
- vispy/io/_data/spatial-filters.npy +0 -0
- vispy/io/datasets.py +94 -0
- vispy/io/image.py +231 -0
- vispy/io/mesh.py +122 -0
- vispy/io/stl.py +167 -0
- vispy/io/tests/__init__.py +0 -0
- vispy/io/tests/test_image.py +47 -0
- vispy/io/tests/test_io.py +121 -0
- vispy/io/wavefront.py +350 -0
- vispy/plot/__init__.py +36 -0
- vispy/plot/fig.py +58 -0
- vispy/plot/plotwidget.py +522 -0
- vispy/plot/tests/__init__.py +0 -0
- vispy/plot/tests/test_plot.py +46 -0
- vispy/scene/__init__.py +43 -0
- vispy/scene/cameras/__init__.py +27 -0
- vispy/scene/cameras/_base.py +38 -0
- vispy/scene/cameras/arcball.py +105 -0
- vispy/scene/cameras/base_camera.py +551 -0
- vispy/scene/cameras/fly.py +474 -0
- vispy/scene/cameras/magnify.py +163 -0
- vispy/scene/cameras/panzoom.py +311 -0
- vispy/scene/cameras/perspective.py +338 -0
- vispy/scene/cameras/tests/__init__.py +0 -0
- vispy/scene/cameras/tests/test_cameras.py +27 -0
- vispy/scene/cameras/tests/test_link.py +53 -0
- vispy/scene/cameras/tests/test_perspective.py +122 -0
- vispy/scene/cameras/turntable.py +183 -0
- vispy/scene/canvas.py +639 -0
- vispy/scene/events.py +85 -0
- vispy/scene/node.py +644 -0
- vispy/scene/subscene.py +20 -0
- vispy/scene/tests/__init__.py +0 -0
- vispy/scene/tests/test_canvas.py +119 -0
- vispy/scene/tests/test_node.py +142 -0
- vispy/scene/tests/test_visuals.py +141 -0
- vispy/scene/visuals.py +276 -0
- vispy/scene/widgets/__init__.py +18 -0
- vispy/scene/widgets/anchor.py +25 -0
- vispy/scene/widgets/axis.py +88 -0
- vispy/scene/widgets/colorbar.py +176 -0
- vispy/scene/widgets/console.py +351 -0
- vispy/scene/widgets/grid.py +509 -0
- vispy/scene/widgets/label.py +50 -0
- vispy/scene/widgets/tests/__init__.py +0 -0
- vispy/scene/widgets/tests/test_colorbar.py +47 -0
- vispy/scene/widgets/viewbox.py +199 -0
- vispy/scene/widgets/widget.py +478 -0
- vispy/testing/__init__.py +51 -0
- vispy/testing/_runners.py +448 -0
- vispy/testing/_testing.py +416 -0
- vispy/testing/image_tester.py +494 -0
- vispy/testing/rendered_array_tester.py +85 -0
- vispy/testing/tests/__init__.py +0 -0
- vispy/testing/tests/test_testing.py +20 -0
- vispy/util/__init__.py +32 -0
- vispy/util/bunch.py +15 -0
- vispy/util/check_environment.py +57 -0
- vispy/util/config.py +490 -0
- vispy/util/dpi/__init__.py +19 -0
- vispy/util/dpi/_linux.py +69 -0
- vispy/util/dpi/_quartz.py +26 -0
- vispy/util/dpi/_win32.py +34 -0
- vispy/util/dpi/tests/__init__.py +0 -0
- vispy/util/dpi/tests/test_dpi.py +16 -0
- vispy/util/eq.py +41 -0
- vispy/util/event.py +774 -0
- vispy/util/fetching.py +276 -0
- vispy/util/filter.py +44 -0
- vispy/util/fonts/__init__.py +14 -0
- vispy/util/fonts/_freetype.py +73 -0
- vispy/util/fonts/_quartz.py +192 -0
- vispy/util/fonts/_triage.py +36 -0
- vispy/util/fonts/_vispy_fonts.py +20 -0
- vispy/util/fonts/_win32.py +105 -0
- vispy/util/fonts/data/OpenSans-Bold.ttf +0 -0
- vispy/util/fonts/data/OpenSans-BoldItalic.ttf +0 -0
- vispy/util/fonts/data/OpenSans-Italic.ttf +0 -0
- vispy/util/fonts/data/OpenSans-Regular.ttf +0 -0
- vispy/util/fonts/tests/__init__.py +0 -0
- vispy/util/fonts/tests/test_font.py +45 -0
- vispy/util/fourier.py +69 -0
- vispy/util/frozen.py +25 -0
- vispy/util/gallery_scraper.py +268 -0
- vispy/util/keys.py +91 -0
- vispy/util/logs.py +358 -0
- vispy/util/osmesa_gl.py +17 -0
- vispy/util/profiler.py +135 -0
- vispy/util/ptime.py +16 -0
- vispy/util/quaternion.py +229 -0
- vispy/util/svg/__init__.py +18 -0
- vispy/util/svg/base.py +20 -0
- vispy/util/svg/color.py +219 -0
- vispy/util/svg/element.py +51 -0
- vispy/util/svg/geometry.py +478 -0
- vispy/util/svg/group.py +66 -0
- vispy/util/svg/length.py +81 -0
- vispy/util/svg/number.py +25 -0
- vispy/util/svg/path.py +332 -0
- vispy/util/svg/shapes.py +57 -0
- vispy/util/svg/style.py +59 -0
- vispy/util/svg/svg.py +40 -0
- vispy/util/svg/transform.py +223 -0
- vispy/util/svg/transformable.py +28 -0
- vispy/util/svg/viewport.py +73 -0
- vispy/util/tests/__init__.py +0 -0
- vispy/util/tests/test_config.py +58 -0
- vispy/util/tests/test_docstring_parameters.py +123 -0
- vispy/util/tests/test_emitter_group.py +262 -0
- vispy/util/tests/test_event_emitter.py +743 -0
- vispy/util/tests/test_fourier.py +35 -0
- vispy/util/tests/test_gallery_scraper.py +112 -0
- vispy/util/tests/test_import.py +127 -0
- vispy/util/tests/test_key.py +22 -0
- vispy/util/tests/test_logging.py +45 -0
- vispy/util/tests/test_run.py +14 -0
- vispy/util/tests/test_transforms.py +42 -0
- vispy/util/tests/test_vispy.py +48 -0
- vispy/util/transforms.py +201 -0
- vispy/util/wrappers.py +155 -0
- vispy/version.py +21 -0
- vispy/visuals/__init__.py +50 -0
- vispy/visuals/_scalable_textures.py +487 -0
- vispy/visuals/axis.py +678 -0
- vispy/visuals/border.py +208 -0
- vispy/visuals/box.py +79 -0
- vispy/visuals/collections/__init__.py +30 -0
- vispy/visuals/collections/agg_fast_path_collection.py +219 -0
- vispy/visuals/collections/agg_path_collection.py +197 -0
- vispy/visuals/collections/agg_point_collection.py +52 -0
- vispy/visuals/collections/agg_segment_collection.py +142 -0
- vispy/visuals/collections/array_list.py +401 -0
- vispy/visuals/collections/base_collection.py +482 -0
- vispy/visuals/collections/collection.py +253 -0
- vispy/visuals/collections/path_collection.py +23 -0
- vispy/visuals/collections/point_collection.py +19 -0
- vispy/visuals/collections/polygon_collection.py +25 -0
- vispy/visuals/collections/raw_path_collection.py +119 -0
- vispy/visuals/collections/raw_point_collection.py +113 -0
- vispy/visuals/collections/raw_polygon_collection.py +77 -0
- vispy/visuals/collections/raw_segment_collection.py +112 -0
- vispy/visuals/collections/raw_triangle_collection.py +78 -0
- vispy/visuals/collections/segment_collection.py +19 -0
- vispy/visuals/collections/triangle_collection.py +16 -0
- vispy/visuals/collections/util.py +168 -0
- vispy/visuals/colorbar.py +699 -0
- vispy/visuals/cube.py +41 -0
- vispy/visuals/ellipse.py +162 -0
- vispy/visuals/filters/__init__.py +10 -0
- vispy/visuals/filters/base_filter.py +242 -0
- vispy/visuals/filters/clipper.py +60 -0
- vispy/visuals/filters/clipping_planes.py +122 -0
- vispy/visuals/filters/color.py +181 -0
- vispy/visuals/filters/markers.py +28 -0
- vispy/visuals/filters/mesh.py +801 -0
- vispy/visuals/filters/picking.py +60 -0
- vispy/visuals/filters/tests/__init__.py +3 -0
- vispy/visuals/filters/tests/test_primitive_picking_filters.py +70 -0
- vispy/visuals/filters/tests/test_wireframe_filter.py +16 -0
- vispy/visuals/glsl/__init__.py +1 -0
- vispy/visuals/glsl/antialiasing.py +133 -0
- vispy/visuals/glsl/color.py +63 -0
- vispy/visuals/graphs/__init__.py +1 -0
- vispy/visuals/graphs/graph.py +240 -0
- vispy/visuals/graphs/layouts/__init__.py +55 -0
- vispy/visuals/graphs/layouts/circular.py +49 -0
- vispy/visuals/graphs/layouts/force_directed.py +211 -0
- vispy/visuals/graphs/layouts/networkx_layout.py +87 -0
- vispy/visuals/graphs/layouts/random.py +52 -0
- vispy/visuals/graphs/tests/__init__.py +1 -0
- vispy/visuals/graphs/tests/test_layouts.py +139 -0
- vispy/visuals/graphs/tests/test_networkx_layout.py +47 -0
- vispy/visuals/graphs/util.py +120 -0
- vispy/visuals/gridlines.py +161 -0
- vispy/visuals/gridmesh.py +98 -0
- vispy/visuals/histogram.py +58 -0
- vispy/visuals/image.py +701 -0
- vispy/visuals/image_complex.py +130 -0
- vispy/visuals/infinite_line.py +199 -0
- vispy/visuals/instanced_mesh.py +152 -0
- vispy/visuals/isocurve.py +213 -0
- vispy/visuals/isoline.py +241 -0
- vispy/visuals/isosurface.py +113 -0
- vispy/visuals/line/__init__.py +6 -0
- vispy/visuals/line/arrow.py +289 -0
- vispy/visuals/line/dash_atlas.py +90 -0
- vispy/visuals/line/line.py +545 -0
- vispy/visuals/line_plot.py +135 -0
- vispy/visuals/linear_region.py +199 -0
- vispy/visuals/markers.py +819 -0
- vispy/visuals/mesh.py +373 -0
- vispy/visuals/mesh_normals.py +159 -0
- vispy/visuals/plane.py +54 -0
- vispy/visuals/polygon.py +145 -0
- vispy/visuals/rectangle.py +196 -0
- vispy/visuals/regular_polygon.py +56 -0
- vispy/visuals/scrolling_lines.py +197 -0
- vispy/visuals/shaders/__init__.py +17 -0
- vispy/visuals/shaders/compiler.py +206 -0
- vispy/visuals/shaders/expression.py +99 -0
- vispy/visuals/shaders/function.py +788 -0
- vispy/visuals/shaders/multiprogram.py +145 -0
- vispy/visuals/shaders/parsing.py +140 -0
- vispy/visuals/shaders/program.py +161 -0
- vispy/visuals/shaders/shader_object.py +162 -0
- vispy/visuals/shaders/tests/__init__.py +0 -0
- vispy/visuals/shaders/tests/test_function.py +486 -0
- vispy/visuals/shaders/tests/test_multiprogram.py +78 -0
- vispy/visuals/shaders/tests/test_parsing.py +57 -0
- vispy/visuals/shaders/variable.py +272 -0
- vispy/visuals/spectrogram.py +169 -0
- vispy/visuals/sphere.py +80 -0
- vispy/visuals/surface_plot.py +192 -0
- vispy/visuals/tests/__init__.py +0 -0
- vispy/visuals/tests/test_arrows.py +109 -0
- vispy/visuals/tests/test_axis.py +120 -0
- vispy/visuals/tests/test_collections.py +15 -0
- vispy/visuals/tests/test_colorbar.py +179 -0
- vispy/visuals/tests/test_colormap.py +97 -0
- vispy/visuals/tests/test_ellipse.py +122 -0
- vispy/visuals/tests/test_gridlines.py +30 -0
- vispy/visuals/tests/test_histogram.py +24 -0
- vispy/visuals/tests/test_image.py +392 -0
- vispy/visuals/tests/test_image_complex.py +36 -0
- vispy/visuals/tests/test_infinite_line.py +53 -0
- vispy/visuals/tests/test_instanced_mesh.py +50 -0
- vispy/visuals/tests/test_isosurface.py +22 -0
- vispy/visuals/tests/test_linear_region.py +152 -0
- vispy/visuals/tests/test_markers.py +54 -0
- vispy/visuals/tests/test_mesh.py +261 -0
- vispy/visuals/tests/test_mesh_normals.py +218 -0
- vispy/visuals/tests/test_polygon.py +112 -0
- vispy/visuals/tests/test_rectangle.py +163 -0
- vispy/visuals/tests/test_regular_polygon.py +111 -0
- vispy/visuals/tests/test_scalable_textures.py +196 -0
- vispy/visuals/tests/test_sdf.py +73 -0
- vispy/visuals/tests/test_spectrogram.py +42 -0
- vispy/visuals/tests/test_surface_plot.py +57 -0
- vispy/visuals/tests/test_text.py +95 -0
- vispy/visuals/tests/test_volume.py +542 -0
- vispy/visuals/tests/test_windbarb.py +33 -0
- vispy/visuals/text/__init__.py +7 -0
- vispy/visuals/text/_sdf_cpu.cpython-312-darwin.so +0 -0
- vispy/visuals/text/_sdf_cpu.pyx +112 -0
- vispy/visuals/text/_sdf_gpu.py +316 -0
- vispy/visuals/text/text.py +675 -0
- vispy/visuals/transforms/__init__.py +34 -0
- vispy/visuals/transforms/_util.py +191 -0
- vispy/visuals/transforms/base_transform.py +233 -0
- vispy/visuals/transforms/chain.py +300 -0
- vispy/visuals/transforms/interactive.py +98 -0
- vispy/visuals/transforms/linear.py +564 -0
- vispy/visuals/transforms/nonlinear.py +398 -0
- vispy/visuals/transforms/tests/__init__.py +0 -0
- vispy/visuals/transforms/tests/test_transforms.py +243 -0
- vispy/visuals/transforms/transform_system.py +339 -0
- vispy/visuals/tube.py +173 -0
- vispy/visuals/visual.py +923 -0
- vispy/visuals/volume.py +1366 -0
- vispy/visuals/windbarb.py +291 -0
- vispy/visuals/xyz_axis.py +34 -0
- vispy-0.15.0.dist-info/METADATA +243 -0
- vispy-0.15.0.dist-info/RECORD +521 -0
- vispy-0.15.0.dist-info/WHEEL +6 -0
- vispy-0.15.0.dist-info/licenses/LICENSE.txt +36 -0
- vispy-0.15.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# Copyright (c) Vispy Development Team. All Rights Reserved.
|
|
3
|
+
# Distributed under the (new) BSD License. See LICENSE.txt for more info.
|
|
4
|
+
|
|
5
|
+
from __future__ import division
|
|
6
|
+
|
|
7
|
+
import numpy as np
|
|
8
|
+
|
|
9
|
+
from .image import ImageVisual
|
|
10
|
+
from ..color import Color
|
|
11
|
+
from .shaders import Function
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
_GRID_COLOR = """
|
|
15
|
+
uniform vec4 u_gridlines_bounds;
|
|
16
|
+
uniform float u_border_width;
|
|
17
|
+
|
|
18
|
+
vec4 grid_color(vec2 pos) {
|
|
19
|
+
vec4 px_pos = $map_to_doc(vec4(pos, 0, 1));
|
|
20
|
+
px_pos /= px_pos.w;
|
|
21
|
+
|
|
22
|
+
// Compute vectors representing width, height of pixel in local coords
|
|
23
|
+
vec4 local_pos = $map_doc_to_local(px_pos);
|
|
24
|
+
vec4 dx = $map_doc_to_local(px_pos + vec4(1.0, 0, 0, 0));
|
|
25
|
+
vec4 dy = $map_doc_to_local(px_pos + vec4(0, 1.0, 0, 0));
|
|
26
|
+
local_pos /= local_pos.w;
|
|
27
|
+
dx = dx / dx.w - local_pos;
|
|
28
|
+
dy = dy / dy.w - local_pos;
|
|
29
|
+
|
|
30
|
+
// Pixel length along each axis, rounded to the nearest power of 10
|
|
31
|
+
vec2 px = vec2(abs(dx.x) + abs(dy.x), abs(dx.y) + abs(dy.y));
|
|
32
|
+
float log10 = log(10.0);
|
|
33
|
+
float sx = pow(10.0, floor(log(px.x) / log10) + 1.) * $scale.x;
|
|
34
|
+
float sy = pow(10.0, floor(log(px.y) / log10) + 1.) * $scale.y;
|
|
35
|
+
|
|
36
|
+
float max_alpha = 0.6;
|
|
37
|
+
float x_alpha = 0.0;
|
|
38
|
+
|
|
39
|
+
if (mod(local_pos.x, 1000. * sx) < px.x) {
|
|
40
|
+
x_alpha = clamp(1. * sx/px.x, 0., max_alpha);
|
|
41
|
+
}
|
|
42
|
+
else if (mod(local_pos.x, 100. * sx) < px.x) {
|
|
43
|
+
x_alpha = clamp(.1 * sx/px.x, 0., max_alpha);
|
|
44
|
+
}
|
|
45
|
+
else if (mod(local_pos.x, 10. * sx) < px.x) {
|
|
46
|
+
x_alpha = clamp(0.01 * sx/px.x, 0., max_alpha);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
float y_alpha = 0.0;
|
|
50
|
+
if (mod(local_pos.y, 1000. * sy) < px.y) {
|
|
51
|
+
y_alpha = clamp(1. * sy/px.y, 0., max_alpha);
|
|
52
|
+
}
|
|
53
|
+
else if (mod(local_pos.y, 100. * sy) < px.y) {
|
|
54
|
+
y_alpha = clamp(.1 * sy/px.y, 0., max_alpha);
|
|
55
|
+
}
|
|
56
|
+
else if (mod(local_pos.y, 10. * sy) < px.y) {
|
|
57
|
+
y_alpha = clamp(0.01 * sy/px.y, 0., max_alpha);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
float alpha = (((log(max(x_alpha, y_alpha))/log(10.)) + 2.) / 3.);
|
|
61
|
+
if (alpha == 0.) {
|
|
62
|
+
discard;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
if (any(lessThan(local_pos.xy + u_border_width / 2, u_gridlines_bounds.xz)) ||
|
|
66
|
+
any(greaterThan(local_pos.xy - u_border_width / 2, u_gridlines_bounds.yw))) {
|
|
67
|
+
discard;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
if (any(lessThan(local_pos.xy - u_gridlines_bounds.xz, vec2(u_border_width / 2))) ||
|
|
71
|
+
any(lessThan(u_gridlines_bounds.yw - local_pos.xy, vec2(u_border_width / 2)))) {
|
|
72
|
+
alpha = 1;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
return vec4($color.rgb, $color.a * alpha);
|
|
76
|
+
}
|
|
77
|
+
"""
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
class GridLinesVisual(ImageVisual):
|
|
81
|
+
"""Displays regularly spaced grid lines in any coordinate system and at
|
|
82
|
+
any scale.
|
|
83
|
+
|
|
84
|
+
Parameters
|
|
85
|
+
----------
|
|
86
|
+
scale : tuple
|
|
87
|
+
The scale factors to apply when determining the spacing of grid lines.
|
|
88
|
+
color : Color
|
|
89
|
+
The base color for grid lines. The final color may have its alpha
|
|
90
|
+
channel modified.
|
|
91
|
+
grid_bounds : tuple or None
|
|
92
|
+
The lower and upper bound for each axis beyond which no grid is rendered.
|
|
93
|
+
In the form of (minx, maxx, miny, maxy).
|
|
94
|
+
border_width : float
|
|
95
|
+
Tickness of the border rendered at the bounds of the grid.
|
|
96
|
+
"""
|
|
97
|
+
|
|
98
|
+
def __init__(self, scale=(1, 1), color='w',
|
|
99
|
+
grid_bounds=None,
|
|
100
|
+
border_width=2):
|
|
101
|
+
# todo: PlaneVisual should support subdivide/impostor methods from
|
|
102
|
+
# image and gridlines should inherit from plane instead.
|
|
103
|
+
self._grid_color_fn = Function(_GRID_COLOR)
|
|
104
|
+
self._grid_color_fn['color'] = Color(color).rgba
|
|
105
|
+
self._grid_color_fn['scale'] = scale
|
|
106
|
+
ImageVisual.__init__(self, method='impostor')
|
|
107
|
+
self.set_gl_state('additive', cull_face=False)
|
|
108
|
+
self.shared_program.frag['get_data'] = self._grid_color_fn
|
|
109
|
+
cfun = Function('vec4 null(vec4 x) { return x; }')
|
|
110
|
+
self.shared_program.frag['color_transform'] = cfun
|
|
111
|
+
self.unfreeze()
|
|
112
|
+
self.grid_bounds = grid_bounds
|
|
113
|
+
self.border_width = border_width
|
|
114
|
+
self.freeze()
|
|
115
|
+
|
|
116
|
+
@property
|
|
117
|
+
def grid_bounds(self):
|
|
118
|
+
return self._grid_bounds
|
|
119
|
+
|
|
120
|
+
@grid_bounds.setter
|
|
121
|
+
def grid_bounds(self, value):
|
|
122
|
+
if value is None:
|
|
123
|
+
value = (None,) * 4
|
|
124
|
+
grid_bounds = []
|
|
125
|
+
for i, v in enumerate(value):
|
|
126
|
+
if v is None:
|
|
127
|
+
if i % 2:
|
|
128
|
+
v = -np.inf
|
|
129
|
+
else:
|
|
130
|
+
v = np.inf
|
|
131
|
+
grid_bounds.append(v)
|
|
132
|
+
self.shared_program['u_gridlines_bounds'] = value
|
|
133
|
+
self._grid_bounds = grid_bounds
|
|
134
|
+
self.update()
|
|
135
|
+
|
|
136
|
+
@property
|
|
137
|
+
def border_width(self):
|
|
138
|
+
return self._border_width
|
|
139
|
+
|
|
140
|
+
@border_width.setter
|
|
141
|
+
def border_width(self, value):
|
|
142
|
+
self.shared_program['u_border_width'] = value
|
|
143
|
+
self._border_width = value
|
|
144
|
+
self.update()
|
|
145
|
+
|
|
146
|
+
@property
|
|
147
|
+
def size(self):
|
|
148
|
+
return (1, 1)
|
|
149
|
+
|
|
150
|
+
def _prepare_transforms(self, view):
|
|
151
|
+
fn = self._grid_color_fn
|
|
152
|
+
fn['map_to_doc'] = self.get_transform('visual', 'document')
|
|
153
|
+
fn['map_doc_to_local'] = self.get_transform('document', 'visual')
|
|
154
|
+
ImageVisual._prepare_transforms(self, view)
|
|
155
|
+
|
|
156
|
+
def _prepare_draw(self, view):
|
|
157
|
+
if self._need_vertex_update:
|
|
158
|
+
self._build_vertex_data()
|
|
159
|
+
|
|
160
|
+
if view._need_method_update:
|
|
161
|
+
self._update_method(view)
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
|
|
2
|
+
from .mesh import MeshVisual
|
|
3
|
+
from ..geometry import create_grid_mesh, MeshData
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class GridMeshVisual(MeshVisual):
|
|
7
|
+
"""Displays a mesh in a Cartesian grid about x,y,z coordinates.
|
|
8
|
+
|
|
9
|
+
This makes it simple to generate a mesh from e.g. the output
|
|
10
|
+
of numpy.meshgrid.
|
|
11
|
+
|
|
12
|
+
All arguments are optional, though they can be changed
|
|
13
|
+
individually later with the set_data method.
|
|
14
|
+
|
|
15
|
+
Parameters
|
|
16
|
+
----------
|
|
17
|
+
xs : ndarray
|
|
18
|
+
A 2d array of x coordinates for the vertices of the mesh. Must
|
|
19
|
+
have the same dimensions as ys and zs.
|
|
20
|
+
ys : ndarray
|
|
21
|
+
A 2d array of y coordinates for the vertices of the mesh. Must
|
|
22
|
+
have the same dimensions as xs and zs.
|
|
23
|
+
zs : ndarray
|
|
24
|
+
A 2d array of z coordinates for the vertices of the mesh. Must
|
|
25
|
+
have the same dimensions as xs and ys.
|
|
26
|
+
colors : ndarray | None
|
|
27
|
+
The colors of the points of the mesh. Should be either a
|
|
28
|
+
(width, height, 4) array of rgba colors at each grid point or
|
|
29
|
+
a (width, height, 3) array of rgb colors at each grid point.
|
|
30
|
+
Defaults to None, in which case the default color of a
|
|
31
|
+
MeshVisual is used.
|
|
32
|
+
shading : str | None
|
|
33
|
+
Same as for the `MeshVisual` class. Defaults to 'smooth'.
|
|
34
|
+
**kwargs :
|
|
35
|
+
Other arguments are passed directly to MeshVisual.
|
|
36
|
+
"""
|
|
37
|
+
|
|
38
|
+
def __init__(self, xs, ys, zs, colors=None, shading='smooth',
|
|
39
|
+
**kwargs):
|
|
40
|
+
|
|
41
|
+
if xs is None or ys is None or zs is None:
|
|
42
|
+
raise ValueError('All of xs, ys and zs must be initialised '
|
|
43
|
+
'with arrays.')
|
|
44
|
+
|
|
45
|
+
self._xs = None
|
|
46
|
+
self._ys = None
|
|
47
|
+
self._zs = None
|
|
48
|
+
|
|
49
|
+
self.__vertices = None
|
|
50
|
+
self.__meshdata = MeshData()
|
|
51
|
+
|
|
52
|
+
MeshVisual.__init__(self, shading=shading, **kwargs)
|
|
53
|
+
self.set_data(xs, ys, zs, colors)
|
|
54
|
+
|
|
55
|
+
def set_data(self, xs=None, ys=None, zs=None, colors=None):
|
|
56
|
+
"""Update the mesh data.
|
|
57
|
+
|
|
58
|
+
Parameters
|
|
59
|
+
----------
|
|
60
|
+
xs : ndarray | None
|
|
61
|
+
A 2d array of x coordinates for the vertices of the mesh.
|
|
62
|
+
ys : ndarray | None
|
|
63
|
+
A 2d array of y coordinates for the vertices of the mesh.
|
|
64
|
+
zs : ndarray | None
|
|
65
|
+
A 2d array of z coordinates for the vertices of the mesh.
|
|
66
|
+
colors : ndarray | None
|
|
67
|
+
The color at each point of the mesh. Must have shape
|
|
68
|
+
(width, height, 4) or (width, height, 3) for rgba or rgb
|
|
69
|
+
color definitions respectively.
|
|
70
|
+
"""
|
|
71
|
+
if xs is None:
|
|
72
|
+
xs = self._xs
|
|
73
|
+
self.__vertices = None
|
|
74
|
+
|
|
75
|
+
if ys is None:
|
|
76
|
+
ys = self._ys
|
|
77
|
+
self.__vertices = None
|
|
78
|
+
|
|
79
|
+
if zs is None:
|
|
80
|
+
zs = self._zs
|
|
81
|
+
self.__vertices = None
|
|
82
|
+
|
|
83
|
+
if self.__vertices is None:
|
|
84
|
+
vertices, indices = create_grid_mesh(xs, ys, zs)
|
|
85
|
+
self._xs = xs
|
|
86
|
+
self._ys = ys
|
|
87
|
+
self._zs = zs
|
|
88
|
+
|
|
89
|
+
if self.__vertices is None:
|
|
90
|
+
vertices, indices = create_grid_mesh(self._xs, self._ys, self._zs)
|
|
91
|
+
self.__meshdata.set_vertices(vertices)
|
|
92
|
+
self.__meshdata.set_faces(indices)
|
|
93
|
+
|
|
94
|
+
if colors is not None:
|
|
95
|
+
self.__meshdata.set_vertex_colors(colors.reshape(
|
|
96
|
+
colors.shape[0] * colors.shape[1], colors.shape[2]))
|
|
97
|
+
|
|
98
|
+
MeshVisual.set_data(self, meshdata=self.__meshdata)
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# -----------------------------------------------------------------------------
|
|
3
|
+
# Copyright (c) Vispy Development Team. All Rights Reserved.
|
|
4
|
+
# Distributed under the (new) BSD License. See LICENSE.txt for more info.
|
|
5
|
+
# -----------------------------------------------------------------------------
|
|
6
|
+
|
|
7
|
+
import numpy as np
|
|
8
|
+
|
|
9
|
+
from .mesh import MeshVisual
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class HistogramVisual(MeshVisual):
|
|
13
|
+
"""Visual that calculates and displays a histogram of data
|
|
14
|
+
|
|
15
|
+
Parameters
|
|
16
|
+
----------
|
|
17
|
+
data : array-like
|
|
18
|
+
Data to histogram. Currently only 1D data is supported.
|
|
19
|
+
bins : int | array-like
|
|
20
|
+
Number of bins, or bin edges.
|
|
21
|
+
color : instance of Color
|
|
22
|
+
Color of the histogram.
|
|
23
|
+
orientation : {'h', 'v'}
|
|
24
|
+
Orientation of the histogram.
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
def __init__(self, data, bins=10, color='w', orientation='h'):
|
|
28
|
+
# 4-5
|
|
29
|
+
# | |
|
|
30
|
+
# 1-2/7-8
|
|
31
|
+
# |/| | |
|
|
32
|
+
# 0-3-6-9
|
|
33
|
+
data = np.asarray(data)
|
|
34
|
+
if data.ndim != 1:
|
|
35
|
+
raise ValueError('Only 1D data currently supported')
|
|
36
|
+
if not isinstance(orientation, str) or \
|
|
37
|
+
orientation not in ('h', 'v'):
|
|
38
|
+
raise ValueError('orientation must be "h" or "v", not %s'
|
|
39
|
+
% (orientation,))
|
|
40
|
+
X, Y = (0, 1) if orientation == 'h' else (1, 0)
|
|
41
|
+
|
|
42
|
+
# do the histogramming
|
|
43
|
+
data, bin_edges = np.histogram(data, bins)
|
|
44
|
+
# construct our vertices
|
|
45
|
+
rr = np.zeros((3 * len(bin_edges) - 2, 3), np.float32)
|
|
46
|
+
rr[:, X] = np.repeat(bin_edges, 3)[1:-1]
|
|
47
|
+
rr[1::3, Y] = data
|
|
48
|
+
rr[2::3, Y] = data
|
|
49
|
+
bin_edges.astype(np.float32)
|
|
50
|
+
# and now our tris
|
|
51
|
+
tris = np.zeros((2 * len(bin_edges) - 2, 3), np.uint32)
|
|
52
|
+
offsets = 3 * np.arange(len(bin_edges) - 1,
|
|
53
|
+
dtype=np.uint32)[:, np.newaxis]
|
|
54
|
+
tri_1 = np.array([0, 2, 1])
|
|
55
|
+
tri_2 = np.array([2, 0, 3])
|
|
56
|
+
tris[::2] = tri_1 + offsets
|
|
57
|
+
tris[1::2] = tri_2 + offsets
|
|
58
|
+
MeshVisual.__init__(self, rr, tris, color=color)
|