vispy 0.15.0__cp313-cp313-manylinux_2_17_x86_64.manylinux2014_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-313-x86_64-linux-gnu.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,139 @@
|
|
|
1
|
+
// ----------------------------------------------------------------------------
|
|
2
|
+
// Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
|
|
3
|
+
// Distributed under the (new) BSD License.
|
|
4
|
+
// ----------------------------------------------------------------------------
|
|
5
|
+
/*
|
|
6
|
+
Power scales are similar to linear scales, except there's an exponential
|
|
7
|
+
transform that is applied to the input domain value before the output range
|
|
8
|
+
value is computed. The mapping to the output range value y can be expressed
|
|
9
|
+
as a function of the input domain value x: y = mx^k + b, where k is the
|
|
10
|
+
exponent value. Power scales also support negative values, in which case the
|
|
11
|
+
input value is multiplied by -1, and the resulting output value is also
|
|
12
|
+
multiplied by -1.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
uniform int power_scale_clamp;
|
|
16
|
+
uniform int power_scale_discard;
|
|
17
|
+
uniform vec2 power_scale_range;
|
|
18
|
+
uniform vec2 power_scale_domain;
|
|
19
|
+
uniform float power_scale_exponent;
|
|
20
|
+
|
|
21
|
+
float forward(float value)
|
|
22
|
+
{
|
|
23
|
+
vec2 domain = power_scale_domain;
|
|
24
|
+
vec2 range = power_scale_range;
|
|
25
|
+
float exponent = power_scale_exponent;
|
|
26
|
+
float v = pow(abs(value), exponent);
|
|
27
|
+
float t = (v - domain.x) /(domain.y - domain.x);
|
|
28
|
+
|
|
29
|
+
#ifdef __FRAGMENT_SHADER__
|
|
30
|
+
if (power_scale_discard > 0)
|
|
31
|
+
if (t != clamp(t, 0.0, 1.0))
|
|
32
|
+
discard;
|
|
33
|
+
#endif
|
|
34
|
+
|
|
35
|
+
if (power_scale_clamp > 0)
|
|
36
|
+
t = clamp(t, 0.0, 1.0);
|
|
37
|
+
|
|
38
|
+
return sign(value) * (range.x + t*(range.y - range.x));
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
vec2 forward(vec2 value)
|
|
42
|
+
{
|
|
43
|
+
vec2 domain = power_scale_domain;
|
|
44
|
+
vec2 range = power_scale_range;
|
|
45
|
+
float exponent = power_scale_exponent;
|
|
46
|
+
vec2 v = pow(abs(value), vec2(exponent));
|
|
47
|
+
vec2 t = (v - domain.x) /(domain.y - domain.x);
|
|
48
|
+
|
|
49
|
+
#ifdef __FRAGMENT_SHADER__
|
|
50
|
+
if (power_scale_discard > 0)
|
|
51
|
+
if (t != clamp(t, 0.0, 1.0))
|
|
52
|
+
discard;
|
|
53
|
+
#endif
|
|
54
|
+
|
|
55
|
+
if (power_scale_clamp > 0)
|
|
56
|
+
t = clamp(t, 0.0, 1.0);
|
|
57
|
+
|
|
58
|
+
return sign(value) * (range.x + t*(range.y - range.x));
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
vec3 forward(vec3 value)
|
|
62
|
+
{
|
|
63
|
+
vec2 domain = power_scale_domain;
|
|
64
|
+
vec2 range = power_scale_range;
|
|
65
|
+
float exponent = power_scale_exponent;
|
|
66
|
+
vec3 v = pow(abs(value), vec3(exponent));
|
|
67
|
+
vec3 t = (v - domain.x) /(domain.y - domain.x);
|
|
68
|
+
|
|
69
|
+
#ifdef __FRAGMENT_SHADER__
|
|
70
|
+
if (power_scale_discard > 0)
|
|
71
|
+
if (t != clamp(t, 0.0, 1.0))
|
|
72
|
+
discard;
|
|
73
|
+
#endif
|
|
74
|
+
|
|
75
|
+
if (power_scale_clamp > 0)
|
|
76
|
+
t = clamp(t, 0.0, 1.0);
|
|
77
|
+
|
|
78
|
+
return sign(value) * (range.x + t*(range.y - range.x));
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
float inverse(float value)
|
|
82
|
+
{
|
|
83
|
+
vec2 domain = power_scale_domain;
|
|
84
|
+
vec2 range = power_scale_range;
|
|
85
|
+
float exponent = power_scale_exponent;
|
|
86
|
+
float t = (abs(value) - range.x) / (range.y - range.x);
|
|
87
|
+
|
|
88
|
+
#ifdef __FRAGMENT_SHADER__
|
|
89
|
+
if (power_scale_discard > 0)
|
|
90
|
+
if (t != clamp(t, 0.0, 1.0))
|
|
91
|
+
discard;
|
|
92
|
+
#endif
|
|
93
|
+
|
|
94
|
+
if (power_scale_clamp > 0)
|
|
95
|
+
t = clamp(t, 0.0, 1.0);
|
|
96
|
+
|
|
97
|
+
float v = domain.x + t*(domain.y - domain.x);
|
|
98
|
+
return sign(value) * pow(abs(v), 1.0/exponent);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
vec2 inverse(vec2 value)
|
|
102
|
+
{
|
|
103
|
+
vec2 domain = power_scale_domain;
|
|
104
|
+
vec2 range = power_scale_range;
|
|
105
|
+
float exponent = power_scale_exponent;
|
|
106
|
+
vec2 t = (abs(value) - range.x) / (range.y - range.x);
|
|
107
|
+
|
|
108
|
+
#ifdef __FRAGMENT_SHADER__
|
|
109
|
+
if (power_scale_discard > 0)
|
|
110
|
+
if (t != clamp(t, 0.0, 1.0))
|
|
111
|
+
discard;
|
|
112
|
+
#endif
|
|
113
|
+
|
|
114
|
+
if (power_scale_clamp > 0)
|
|
115
|
+
t = clamp(t, 0.0, 1.0);
|
|
116
|
+
|
|
117
|
+
vec2 v = domain.x + t*(domain.y - domain.x);
|
|
118
|
+
return sign(value) * pow(abs(v), vec2(1.0/exponent));
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
vec3 inverse(vec3 value)
|
|
122
|
+
{
|
|
123
|
+
vec2 domain = power_scale_domain;
|
|
124
|
+
vec2 range = power_scale_range;
|
|
125
|
+
float exponent = power_scale_exponent;
|
|
126
|
+
vec3 t = (abs(value) - range.x) / (range.y - range.x);
|
|
127
|
+
|
|
128
|
+
#ifdef __FRAGMENT_SHADER__
|
|
129
|
+
if (power_scale_discard > 0)
|
|
130
|
+
if (t != clamp(t, 0.0, 1.0))
|
|
131
|
+
discard;
|
|
132
|
+
#endif
|
|
133
|
+
|
|
134
|
+
if (power_scale_clamp > 0)
|
|
135
|
+
t = clamp(t, 0.0, 1.0);
|
|
136
|
+
|
|
137
|
+
vec3 v = domain.x + t*(domain.y - domain.x);
|
|
138
|
+
return sign(value) * pow(abs(v), vec3(1.0/exponent));
|
|
139
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// ----------------------------------------------------------------------------
|
|
2
|
+
// Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
|
|
3
|
+
// Distributed under the (new) BSD License.
|
|
4
|
+
// ----------------------------------------------------------------------------
|
|
5
|
+
|
|
6
|
+
uniform mat4 view;
|
|
7
|
+
uniform mat4 model;
|
|
8
|
+
uniform mat4 projection;
|
|
9
|
+
|
|
10
|
+
vec4 transform(vec4 position)
|
|
11
|
+
{
|
|
12
|
+
return projection*view*model*position;
|
|
13
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// -----------------------------------------------------------------------------
|
|
2
|
+
// Copyright (c) 2014, Nicolas P. Rougier
|
|
3
|
+
// Distributed under the (new) BSD License. See LICENSE.txt for more info.
|
|
4
|
+
// -----------------------------------------------------------------------------
|
|
5
|
+
uniform vec3 rotate_axis;
|
|
6
|
+
uniform vec3 rotate_origin;
|
|
7
|
+
uniform float rotate_angle;
|
|
8
|
+
uniform mat4 rotate_forward_matrix;
|
|
9
|
+
uniform mat4 rotate_inverse_matrix;
|
|
10
|
+
|
|
11
|
+
vec2 forward(vec2 position)
|
|
12
|
+
{
|
|
13
|
+
vec4 P = vec4(position,0.0,1.0);
|
|
14
|
+
P.xy -= rotate_origin.xy;
|
|
15
|
+
P = rotate_forward_matrix*P;
|
|
16
|
+
P.xy += rotate_origin.xy;
|
|
17
|
+
return P.xy;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
vec3 forward(vec3 position)
|
|
21
|
+
{
|
|
22
|
+
vec4 P = vec4(position,1.0);
|
|
23
|
+
P.xyz -= rotate_origin;
|
|
24
|
+
P = rotate_forward_matrix*P;
|
|
25
|
+
P.xyz += rotate_origin;
|
|
26
|
+
return P.xyz;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
vec2 inverse(vec2 position)
|
|
30
|
+
{
|
|
31
|
+
vec4 P = vec4(position,0.0,1.0);
|
|
32
|
+
P.xy -= rotate_origin.xy;
|
|
33
|
+
P = rotate_inverse_matrix*P;
|
|
34
|
+
P.xy += rotate_origin.xy;
|
|
35
|
+
return P.xy;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
vec3 inverse(vec3 position)
|
|
39
|
+
{
|
|
40
|
+
vec4 P = vec4(position,1.0);
|
|
41
|
+
P.xyz -= rotate_origin;
|
|
42
|
+
P = rotate_inverse_matrix*P;
|
|
43
|
+
P.xyz += rotate_origin;
|
|
44
|
+
return P.xyz;
|
|
45
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// ----------------------------------------------------------------------------
|
|
2
|
+
// Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
|
|
3
|
+
// Distributed under the (new) BSD License.
|
|
4
|
+
// ----------------------------------------------------------------------------
|
|
5
|
+
uniform mat4 trackball_view;
|
|
6
|
+
uniform mat4 trackball_model;
|
|
7
|
+
uniform mat4 trackball_projection;
|
|
8
|
+
|
|
9
|
+
vec4 transform(vec4 position)
|
|
10
|
+
{
|
|
11
|
+
return trackball_projection
|
|
12
|
+
* trackball_view
|
|
13
|
+
* trackball_model
|
|
14
|
+
* position;
|
|
15
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
// ----------------------------------------------------------------------------
|
|
2
|
+
// Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
|
|
3
|
+
// Distributed under the (new) BSD License.
|
|
4
|
+
// ----------------------------------------------------------------------------
|
|
5
|
+
uniform vec3 translate_translate;
|
|
6
|
+
|
|
7
|
+
vec2 forward(float x, float y)
|
|
8
|
+
{ return vec2(x,y) + translate_translate.xy; }
|
|
9
|
+
|
|
10
|
+
vec2 forward(vec2 P)
|
|
11
|
+
{ return P + translate_translate.xy; }
|
|
12
|
+
|
|
13
|
+
vec3 forward(float x, float y, float z)
|
|
14
|
+
{ return vec3(x,y,z) + translate_translate); }
|
|
15
|
+
|
|
16
|
+
vec3 forward(vec3 P)
|
|
17
|
+
{ return P + translate_translate; }
|
|
18
|
+
|
|
19
|
+
vec4 forward(vec4 P)
|
|
20
|
+
{ return vec4(P.xyz + translate_translate, P.w); }
|
|
21
|
+
|
|
22
|
+
vec2 inverse(float x, float y)
|
|
23
|
+
{ return vec2(x,y) - translate_translate.xy; }
|
|
24
|
+
|
|
25
|
+
vec2 inverse(vec2 P)
|
|
26
|
+
{ return P - translate_translate.xy; }
|
|
27
|
+
|
|
28
|
+
vec3 inverse(float x, float y, float z)
|
|
29
|
+
{ return vec3(x,y,z) - translate_translate); }
|
|
30
|
+
|
|
31
|
+
vec3 inverse(vec3 P)
|
|
32
|
+
{ return P - translate_translate; }
|
|
33
|
+
|
|
34
|
+
vec4 inverse(vec4 P)
|
|
35
|
+
{ return vec4(P.xyz - translate_translate, P.w); }
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
// ----------------------------------------------------------------------------
|
|
2
|
+
// Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
|
|
3
|
+
// Distributed under the (new) BSD License.
|
|
4
|
+
// ----------------------------------------------------------------------------
|
|
5
|
+
//
|
|
6
|
+
// Transverse Mercator projection
|
|
7
|
+
// See http://en.wikipedia.org/wiki/Transverse_Mercator_projection
|
|
8
|
+
//
|
|
9
|
+
// ----------------------------------------------------------------------------
|
|
10
|
+
#include "math/constants.glsl"
|
|
11
|
+
|
|
12
|
+
// Constants
|
|
13
|
+
const float k0 = 0.75;
|
|
14
|
+
const float a = 1.00;
|
|
15
|
+
|
|
16
|
+
// Helper functions
|
|
17
|
+
float cosh(float x) { return 0.5 * (exp(x)+exp(-x)); }
|
|
18
|
+
float sinh(float x) { return 0.5 * (exp(x)-exp(-x)); }
|
|
19
|
+
|
|
20
|
+
vec2 forward(float lambda, float phi)
|
|
21
|
+
{
|
|
22
|
+
float x = 0.5*k0*log((1.0+sin(lambda)*cos(phi)) / (1.0 - sin(lambda)*cos(phi)));
|
|
23
|
+
float y = k0*a*atan(tan(phi), cos(lambda));
|
|
24
|
+
return vec2(x,y);
|
|
25
|
+
}
|
|
26
|
+
vec2 forward(vec2 P) { return forward(P.x,P.y); }
|
|
27
|
+
vec3 forward(vec3 P) { return vec3(forward(P.x,P.y), P.z); }
|
|
28
|
+
vec4 forward(vec4 P) { return vec4(forward(P.x,P.y), P.z, P.w); }
|
|
29
|
+
|
|
30
|
+
vec2 inverse(float x, float y)
|
|
31
|
+
{
|
|
32
|
+
float lambda = atan(sinh(x/(k0*a)),cos(y/(k0*a)));
|
|
33
|
+
float phi = asin(sin(y/(k0*a))/cosh(x/(k0*a)));
|
|
34
|
+
return vec2(lambda,phi);
|
|
35
|
+
}
|
|
36
|
+
vec2 inverse(vec2 P) { return inverse(P.x,P.y); }
|
|
37
|
+
vec3 inverse(vec3 P) { return vec3(inverse(P.x,P.y), P.z); }
|
|
38
|
+
vec4 inverse(vec4 P) { return vec4(inverse(P.x,P.y), P.z, P.w); }
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// ----------------------------------------------------------------------------
|
|
2
|
+
// Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
|
|
3
|
+
// Distributed under the (new) BSD License.
|
|
4
|
+
// ----------------------------------------------------------------------------
|
|
5
|
+
uniform vec4 viewport; // in pixels
|
|
6
|
+
uniform vec2 iResolution; // in pixels
|
|
7
|
+
void clipping(void)
|
|
8
|
+
{
|
|
9
|
+
vec2 position = gl_FragCoord.xy;
|
|
10
|
+
if( position.x < (viewport.x)) discard;
|
|
11
|
+
else if( position.x > (viewport.x+viewport.z)) discard;
|
|
12
|
+
else if( position.y < (viewport.y)) discard;
|
|
13
|
+
else if( position.y > (viewport.y+viewport.w)) discard;
|
|
14
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// ----------------------------------------------------------------------------
|
|
2
|
+
// Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
|
|
3
|
+
// Distributed under the (new) BSD License.
|
|
4
|
+
// ----------------------------------------------------------------------------
|
|
5
|
+
uniform vec4 viewport; // in pixels
|
|
6
|
+
uniform vec2 iResolution; // in pixels
|
|
7
|
+
vec4 transform(vec4 position)
|
|
8
|
+
{
|
|
9
|
+
float w = viewport.z / iResolution.x;
|
|
10
|
+
float h = viewport.w / iResolution.y;
|
|
11
|
+
float x = 2.0*(viewport.x / iResolution.x) - 1.0 + w;
|
|
12
|
+
float y = 2.0*(viewport.y / iResolution.y) - 1.0 + h;
|
|
13
|
+
return vec4((x + w*position.x/position.w)*position.w,
|
|
14
|
+
(y + h*position.y/position.w)*position.w,
|
|
15
|
+
position.z, position.w);
|
|
16
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
// ----------------------------------------------------------------------------
|
|
2
|
+
// Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
|
|
3
|
+
// Distributed under the (new) BSD License.
|
|
4
|
+
// ----------------------------------------------------------------------------
|
|
5
|
+
uniform vec4 viewport_local;
|
|
6
|
+
uniform vec4 viewport_global;
|
|
7
|
+
uniform int viewport_transform;
|
|
8
|
+
uniform int viewport_clipping;
|
|
9
|
+
|
|
10
|
+
#ifdef __VERTEX_SHADER__
|
|
11
|
+
void transform(void)
|
|
12
|
+
{
|
|
13
|
+
if (viewport_transform == 0) return;
|
|
14
|
+
|
|
15
|
+
vec4 position = gl_Position;
|
|
16
|
+
|
|
17
|
+
float w = viewport_local.z / viewport_global.z;
|
|
18
|
+
float h = viewport_local.w / viewport_global.w;
|
|
19
|
+
float x = 2.0*(viewport_local.x / viewport_global.z) - 1.0 + w;
|
|
20
|
+
float y = 2.0*(viewport_local.y / viewport_global.w) - 1.0 + h;
|
|
21
|
+
|
|
22
|
+
gl_Position = vec4((x + w*position.x/position.w)*position.w,
|
|
23
|
+
(y + h*position.y/position.w)*position.w,
|
|
24
|
+
position.z, position.w);
|
|
25
|
+
}
|
|
26
|
+
#endif
|
|
27
|
+
|
|
28
|
+
#ifdef __FRAGMENT_SHADER__
|
|
29
|
+
void clipping(void)
|
|
30
|
+
{
|
|
31
|
+
// if (viewport_clipping == 0) return;
|
|
32
|
+
|
|
33
|
+
vec2 position = gl_FragCoord.xy;
|
|
34
|
+
if( position.x < (viewport_local.x)) discard;
|
|
35
|
+
else if( position.x > (viewport_local.x+viewport_local.z)) discard;
|
|
36
|
+
else if( position.y < (viewport_local.y)) discard;
|
|
37
|
+
else if( position.y > (viewport_local.y+viewport_local.w)) discard;
|
|
38
|
+
|
|
39
|
+
/*
|
|
40
|
+
if( length(position.x - viewport_local.x) < 1.0 )
|
|
41
|
+
gl_FragColor = vec4(0,0,0,1);
|
|
42
|
+
else if( length(position.x - viewport_local.x - viewport_local.z) < 1.0 )
|
|
43
|
+
gl_FragColor = vec4(0,0,0,1);
|
|
44
|
+
else if( length(position.y - viewport_local.y) < 1.0 )
|
|
45
|
+
gl_FragColor = vec4(0,0,0,1);
|
|
46
|
+
else if( length(position.y - viewport_local.y - viewport_local.w) < 1.0 )
|
|
47
|
+
gl_FragColor = vec4(0,0,0,1);
|
|
48
|
+
*/
|
|
49
|
+
}
|
|
50
|
+
#endif
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// ----------------------------------------------------------------------------
|
|
2
|
+
// Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
|
|
3
|
+
// Distributed under the (new) BSD License.
|
|
4
|
+
// ----------------------------------------------------------------------------
|
|
5
|
+
|
|
6
|
+
float get_x(float x)
|
|
7
|
+
{
|
|
8
|
+
return x;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
float get_x(vec2 xy)
|
|
12
|
+
{
|
|
13
|
+
return xy.x;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
float get_x(vec3 xyz)
|
|
17
|
+
{
|
|
18
|
+
return xyz.x;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
float get_x(vec4 xyzw)
|
|
22
|
+
{
|
|
23
|
+
return xyzw.x;
|
|
24
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// ----------------------------------------------------------------------------
|
|
2
|
+
// Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
|
|
3
|
+
// Distributed under the (new) BSD License.
|
|
4
|
+
// ----------------------------------------------------------------------------
|
|
5
|
+
|
|
6
|
+
float get_y(vec2 xy)
|
|
7
|
+
{
|
|
8
|
+
return xy.y;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
float get_y(vec3 xyz)
|
|
12
|
+
{
|
|
13
|
+
return xyz.y;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
float get_y(vec4 xyzw)
|
|
17
|
+
{
|
|
18
|
+
return xyzw.y;
|
|
19
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// ----------------------------------------------------------------------------
|
|
2
|
+
// Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
|
|
3
|
+
// Distributed under the (new) BSD License.
|
|
4
|
+
// ----------------------------------------------------------------------------
|
|
5
|
+
|
|
6
|
+
float get_z(vec3 xyz)
|
|
7
|
+
{
|
|
8
|
+
return xyz.z;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
float get_z(vec4 xyzw)
|
|
12
|
+
{
|
|
13
|
+
return xyzw.z;
|
|
14
|
+
}
|
vispy/io/__init__.py
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
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
|
+
"""Utilities related to data reading, writing, fetching, and generation."""
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
from os import path as _op
|
|
8
|
+
|
|
9
|
+
from .datasets import (load_iris, load_crate, load_data_file, # noqa
|
|
10
|
+
load_spatial_filters) # noqa
|
|
11
|
+
from .mesh import read_mesh, write_mesh # noqa
|
|
12
|
+
from .image import (read_png, write_png, imread, imsave, _make_png, # noqa
|
|
13
|
+
_check_img_lib) # noqa
|
|
14
|
+
|
|
15
|
+
_data_dir = _op.join(_op.dirname(__file__), '_data')
|
|
16
|
+
|
|
17
|
+
__all__ = ['imread', 'imsave', 'load_iris', 'load_crate',
|
|
18
|
+
'load_spatial_filters', 'load_data_file',
|
|
19
|
+
'read_mesh', 'read_png', 'write_mesh',
|
|
20
|
+
'write_png']
|
|
Binary file
|
vispy/io/datasets.py
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
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
|
+
import numpy as np
|
|
6
|
+
from os import path as op
|
|
7
|
+
|
|
8
|
+
from ..util import load_data_file
|
|
9
|
+
|
|
10
|
+
# This is the package data dir, not the dir for config, etc.
|
|
11
|
+
DATA_DIR = op.join(op.dirname(__file__), '_data')
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def load_iris():
|
|
15
|
+
"""Load the iris dataset
|
|
16
|
+
|
|
17
|
+
Returns
|
|
18
|
+
-------
|
|
19
|
+
iris : NpzFile
|
|
20
|
+
data['data'] : a (150, 4) NumPy array with the iris' features
|
|
21
|
+
data['group'] : a (150,) NumPy array with the iris' group
|
|
22
|
+
"""
|
|
23
|
+
return np.load(load_data_file('iris/iris.npz',
|
|
24
|
+
force_download='2014-09-04'))
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def load_crate():
|
|
28
|
+
"""Load an image of a crate
|
|
29
|
+
|
|
30
|
+
Returns
|
|
31
|
+
-------
|
|
32
|
+
crate : array
|
|
33
|
+
256x256x3 crate image.
|
|
34
|
+
"""
|
|
35
|
+
return np.load(load_data_file('orig/crate.npz'))['crate']
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def pack_unit(value):
|
|
39
|
+
"""Packs float values between [0,1] into 4 unsigned int8
|
|
40
|
+
|
|
41
|
+
Returns
|
|
42
|
+
-------
|
|
43
|
+
pack: array
|
|
44
|
+
packed interpolation kernel
|
|
45
|
+
"""
|
|
46
|
+
pack = np.zeros(value.shape + (4,), dtype=np.ubyte)
|
|
47
|
+
for i in range(4):
|
|
48
|
+
value, pack[..., i] = np.modf(value * 256.)
|
|
49
|
+
return pack
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def pack_ieee(value):
|
|
53
|
+
"""Packs float ieee binary representation into 4 unsigned int8
|
|
54
|
+
|
|
55
|
+
Returns
|
|
56
|
+
-------
|
|
57
|
+
pack: array
|
|
58
|
+
packed interpolation kernel
|
|
59
|
+
"""
|
|
60
|
+
return np.fromstring(value.tobytes(),
|
|
61
|
+
np.ubyte).reshape((value.shape + (4,)))
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
def load_spatial_filters(packed=True):
|
|
65
|
+
"""Load spatial-filters kernel
|
|
66
|
+
|
|
67
|
+
Parameters
|
|
68
|
+
----------
|
|
69
|
+
packed : bool
|
|
70
|
+
Whether or not the data should be in "packed" representation
|
|
71
|
+
for use in GLSL code.
|
|
72
|
+
|
|
73
|
+
Returns
|
|
74
|
+
-------
|
|
75
|
+
kernel : array
|
|
76
|
+
16x1024x4 (packed float in rgba) or
|
|
77
|
+
16x1024 (unpacked float)
|
|
78
|
+
16 interpolation kernel with length 1024 each.
|
|
79
|
+
|
|
80
|
+
names : tuple of strings
|
|
81
|
+
Respective interpolation names, plus "Nearest" which does
|
|
82
|
+
not require a filter but can still be used
|
|
83
|
+
"""
|
|
84
|
+
names = ("Linear", "Hanning", "Hamming", "Hermite",
|
|
85
|
+
"Kaiser", "Quadric", "Cubic", "CatRom",
|
|
86
|
+
"Mitchell", "Spline16", "Spline36", "Gaussian",
|
|
87
|
+
"Bessel", "Sinc", "Lanczos", "Blackman", "Nearest")
|
|
88
|
+
|
|
89
|
+
kernel = np.load(op.join(DATA_DIR, 'spatial-filters.npy'))
|
|
90
|
+
if packed:
|
|
91
|
+
# convert the kernel to a packed representation
|
|
92
|
+
kernel = pack_unit(kernel)
|
|
93
|
+
|
|
94
|
+
return kernel, names
|