vispy 0.15.0__cp313-cp313-macosx_11_0_arm64.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-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
vispy/glsl/__init__.py
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# -----------------------------------------------------------------------------
|
|
3
|
+
# Copyright (c) 2014, Nicolas P. Rougier
|
|
4
|
+
# Distributed under the (new) BSD License. See LICENSE.txt for more info.
|
|
5
|
+
# -----------------------------------------------------------------------------
|
|
6
|
+
import os
|
|
7
|
+
import os.path as op
|
|
8
|
+
|
|
9
|
+
from .. import config
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def find(name):
|
|
13
|
+
"""Locate a filename into the shader library."""
|
|
14
|
+
if op.exists(name):
|
|
15
|
+
return name
|
|
16
|
+
|
|
17
|
+
path = op.dirname(__file__) or '.'
|
|
18
|
+
|
|
19
|
+
paths = [path] + config['include_path']
|
|
20
|
+
|
|
21
|
+
for path in paths:
|
|
22
|
+
filename = op.abspath(op.join(path, name))
|
|
23
|
+
if op.exists(filename):
|
|
24
|
+
return filename
|
|
25
|
+
|
|
26
|
+
for d in os.listdir(path):
|
|
27
|
+
fullpath = op.abspath(op.join(path, d))
|
|
28
|
+
if op.isdir(fullpath):
|
|
29
|
+
filename = op.abspath(op.join(fullpath, name))
|
|
30
|
+
if op.exists(filename):
|
|
31
|
+
return filename
|
|
32
|
+
|
|
33
|
+
return None
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def get(name):
|
|
37
|
+
"""Retrieve code from the given filename."""
|
|
38
|
+
filename = find(name)
|
|
39
|
+
if filename is None:
|
|
40
|
+
raise RuntimeError('Could not find %s' % name)
|
|
41
|
+
with open(filename) as fid:
|
|
42
|
+
return fid.read()
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// ----------------------------------------------------------------------------
|
|
2
|
+
// Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
|
|
3
|
+
// Distributed under the (new) BSD License.
|
|
4
|
+
// ----------------------------------------------------------------------------
|
|
5
|
+
#include "antialias/stroke.glsl"
|
|
6
|
+
#include "antialias/filled.glsl"
|
|
7
|
+
#include "antialias/outline.glsl"
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
// ----------------------------------------------------------------------------
|
|
2
|
+
// Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
|
|
3
|
+
// Distributed under the (new) BSD License.
|
|
4
|
+
// ----------------------------------------------------------------------------
|
|
5
|
+
#include "antialias/stroke.glsl"
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
/* ---------------------------------------------------------
|
|
9
|
+
Compute antialiased fragment color for a line cap.
|
|
10
|
+
Type: butt
|
|
11
|
+
|
|
12
|
+
Parameters:
|
|
13
|
+
-----------
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
dx,dy : signed distances to cap point (in pixels)
|
|
17
|
+
linewidth: Stroke line width (in pixels)
|
|
18
|
+
antialias: Stroke antialiased area (in pixels)
|
|
19
|
+
stroke: Stroke color
|
|
20
|
+
|
|
21
|
+
Return:
|
|
22
|
+
-------
|
|
23
|
+
Fragment color (vec4)
|
|
24
|
+
|
|
25
|
+
--------------------------------------------------------- */
|
|
26
|
+
vec4 cap_butt(float dx, float dy, float linewidth, float antialias, vec4 color)
|
|
27
|
+
{
|
|
28
|
+
float t = linewidth/2.0 - antialias;
|
|
29
|
+
float d = max(abs(dx)+t, abs(dy));
|
|
30
|
+
return stroke(d, linewidth, antialias, color);
|
|
31
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// ----------------------------------------------------------------------------
|
|
2
|
+
// Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
|
|
3
|
+
// Distributed under the (new) BSD License.
|
|
4
|
+
// ----------------------------------------------------------------------------
|
|
5
|
+
#include "antialias/stroke.glsl"
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
/* ---------------------------------------------------------
|
|
9
|
+
Compute antialiased fragment color for a line cap.
|
|
10
|
+
Type: round
|
|
11
|
+
|
|
12
|
+
Parameters:
|
|
13
|
+
-----------
|
|
14
|
+
|
|
15
|
+
dx,dy : signed distances to cap point (in pixels)
|
|
16
|
+
linewidth: Stroke line width (in pixels)
|
|
17
|
+
antialias: Stroke antialiased area (in pixels)
|
|
18
|
+
stroke: Stroke color
|
|
19
|
+
|
|
20
|
+
Return:
|
|
21
|
+
-------
|
|
22
|
+
Fragment color (vec4)
|
|
23
|
+
|
|
24
|
+
--------------------------------------------------------- */
|
|
25
|
+
vec4 cap_round(float dx, float dy, float linewidth, float antialias, vec4 color)
|
|
26
|
+
{
|
|
27
|
+
float d = lenght(vec2(dx,dy));
|
|
28
|
+
return stroke(d, linewidth, antialias, color);
|
|
29
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// ----------------------------------------------------------------------------
|
|
2
|
+
// Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
|
|
3
|
+
// Distributed under the (new) BSD License.
|
|
4
|
+
// ----------------------------------------------------------------------------
|
|
5
|
+
#include "antialias/stroke.glsl"
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
/* ---------------------------------------------------------
|
|
9
|
+
Compute antialiased fragment color for a line cap.
|
|
10
|
+
Type: square
|
|
11
|
+
|
|
12
|
+
Parameters:
|
|
13
|
+
-----------
|
|
14
|
+
|
|
15
|
+
dx,dy : signed distances to cap point (in pixels)
|
|
16
|
+
linewidth: Stroke line width (in pixels)
|
|
17
|
+
antialias: Stroke antialiased area (in pixels)
|
|
18
|
+
stroke: Stroke color
|
|
19
|
+
|
|
20
|
+
Return:
|
|
21
|
+
-------
|
|
22
|
+
Fragment color (vec4)
|
|
23
|
+
|
|
24
|
+
--------------------------------------------------------- */
|
|
25
|
+
vec4 cap_square(float dx, float dy, float linewidth, float antialias, vec4 color)
|
|
26
|
+
{
|
|
27
|
+
float t = linewidth/2.0 - antialias;
|
|
28
|
+
float d = max(abs(dx),abs(dy));
|
|
29
|
+
return stroke(d, linewidth, antialias, color);
|
|
30
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// ----------------------------------------------------------------------------
|
|
2
|
+
// Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
|
|
3
|
+
// Distributed under the (new) BSD License.
|
|
4
|
+
// ----------------------------------------------------------------------------
|
|
5
|
+
#include "antialias/stroke.glsl"
|
|
6
|
+
|
|
7
|
+
/* ---------------------------------------------------------
|
|
8
|
+
Compute antialiased fragment color for a line cap.
|
|
9
|
+
Type: triangle in
|
|
10
|
+
|
|
11
|
+
Parameters:
|
|
12
|
+
-----------
|
|
13
|
+
|
|
14
|
+
type : Type of cap
|
|
15
|
+
dx,dy : signed distances to cap point (in pixels)
|
|
16
|
+
linewidth: Stroke line width (in pixels)
|
|
17
|
+
antialias: Stroke antialiased area (in pixels)
|
|
18
|
+
stroke: Stroke color
|
|
19
|
+
|
|
20
|
+
Return:
|
|
21
|
+
-------
|
|
22
|
+
Fragment color (vec4)
|
|
23
|
+
|
|
24
|
+
--------------------------------------------------------- */
|
|
25
|
+
vec4 cap_triangle_in(float dx, float dy, float linewidth, float antialias, vec4 color)
|
|
26
|
+
{
|
|
27
|
+
float t = linewidth/2.0 - antialias;
|
|
28
|
+
float d = (abs(dx)+abs(dy));
|
|
29
|
+
return stroke(d, linewidth, antialias, color);
|
|
30
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// ----------------------------------------------------------------------------
|
|
2
|
+
// Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
|
|
3
|
+
// Distributed under the (new) BSD License.
|
|
4
|
+
// ----------------------------------------------------------------------------
|
|
5
|
+
#include "antialias/stroke.glsl"
|
|
6
|
+
|
|
7
|
+
/* ---------------------------------------------------------
|
|
8
|
+
Compute antialiased fragment color for a line cap.
|
|
9
|
+
Type: triangle out
|
|
10
|
+
|
|
11
|
+
Parameters:
|
|
12
|
+
-----------
|
|
13
|
+
|
|
14
|
+
dx,dy : signed distances to cap point (in pixels)
|
|
15
|
+
linewidth: Stroke line width (in pixels)
|
|
16
|
+
antialias: Stroke antialiased area (in pixels)
|
|
17
|
+
stroke: Stroke color
|
|
18
|
+
|
|
19
|
+
Return:
|
|
20
|
+
-------
|
|
21
|
+
Fragment color (vec4)
|
|
22
|
+
|
|
23
|
+
--------------------------------------------------------- */
|
|
24
|
+
vec4 cap_triangle_out(float dx, float dy, float linewidth, float antialias, vec4 color)
|
|
25
|
+
{
|
|
26
|
+
float t = linewidth/2.0 - antialias;
|
|
27
|
+
float d = max(abs(dy),(t+abs(dx)-abs(dy)));
|
|
28
|
+
|
|
29
|
+
return stroke(d, linewidth, antialias, color);
|
|
30
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
// ----------------------------------------------------------------------------
|
|
2
|
+
// Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
|
|
3
|
+
// Distributed under the (new) BSD License.
|
|
4
|
+
// ----------------------------------------------------------------------------
|
|
5
|
+
#include "antialias/stroke.glsl"
|
|
6
|
+
|
|
7
|
+
// Cap types
|
|
8
|
+
// ----------------------------
|
|
9
|
+
const int CAP_NONE = 0;
|
|
10
|
+
const int CAP_ROUND = 1;
|
|
11
|
+
const int CAP_TRIANGLE_IN = 2;
|
|
12
|
+
const int CAP_TRIANGLE_OUT = 3;
|
|
13
|
+
const int CAP_SQUARE = 4;
|
|
14
|
+
const int CAP_BUTT = 5;
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
/* ---------------------------------------------------------
|
|
18
|
+
Compute antialiased fragment color for a line cap.
|
|
19
|
+
Require the stroke function.
|
|
20
|
+
|
|
21
|
+
Parameters:
|
|
22
|
+
-----------
|
|
23
|
+
|
|
24
|
+
type : Type of cap
|
|
25
|
+
dx,dy : signed distances to cap point (in pixels)
|
|
26
|
+
linewidth: Stroke line width (in pixels)
|
|
27
|
+
antialias: Stroke antialiased area (in pixels)
|
|
28
|
+
stroke: Stroke color
|
|
29
|
+
|
|
30
|
+
Return:
|
|
31
|
+
-------
|
|
32
|
+
Fragment color (vec4)
|
|
33
|
+
|
|
34
|
+
--------------------------------------------------------- */
|
|
35
|
+
vec4 cap(int type, float dx, float dy, float linewidth, float antialias, vec4 color)
|
|
36
|
+
{
|
|
37
|
+
float d = 0.0;
|
|
38
|
+
dx = abs(dx);
|
|
39
|
+
dy = abs(dy);
|
|
40
|
+
float t = linewidth/2.0 - antialias;
|
|
41
|
+
|
|
42
|
+
// Round
|
|
43
|
+
if (type == CAP_ROUND)
|
|
44
|
+
d = sqrt(dx*dx+dy*dy);
|
|
45
|
+
|
|
46
|
+
// Square
|
|
47
|
+
else if (type == CAP_SQUARE)
|
|
48
|
+
d = max(dx,dy);
|
|
49
|
+
|
|
50
|
+
// Butt
|
|
51
|
+
else if (type == CAP_BUTT)
|
|
52
|
+
d = max(dx+t,dy);
|
|
53
|
+
|
|
54
|
+
// Triangle in
|
|
55
|
+
else if (type == CAP_TRIANGLE_IN)
|
|
56
|
+
d = (dx+abs(dy));
|
|
57
|
+
|
|
58
|
+
// Triangle out
|
|
59
|
+
else if (type == CAP_TRIANGLE_OUT)
|
|
60
|
+
d = max(abs(dy),(t+dx-abs(dy)));
|
|
61
|
+
|
|
62
|
+
// None
|
|
63
|
+
else
|
|
64
|
+
discard;
|
|
65
|
+
|
|
66
|
+
return stroke(d, linewidth, antialias, color);
|
|
67
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
// ----------------------------------------------------------------------------
|
|
2
|
+
// Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
|
|
3
|
+
// Distributed under the (new) BSD License.
|
|
4
|
+
// ----------------------------------------------------------------------------
|
|
5
|
+
#include "antialias/stroke.glsl"
|
|
6
|
+
|
|
7
|
+
// Cap types
|
|
8
|
+
// ----------------------------
|
|
9
|
+
const int CAP_NONE = 0;
|
|
10
|
+
const int CAP_ROUND = 1;
|
|
11
|
+
const int CAP_TRIANGLE_IN = 2;
|
|
12
|
+
const int CAP_TRIANGLE_OUT = 3;
|
|
13
|
+
const int CAP_SQUARE = 4;
|
|
14
|
+
const int CAP_BUTT = 5;
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
/* ---------------------------------------------------------
|
|
18
|
+
Compute antialiased fragment color for a line cap.
|
|
19
|
+
Require the stroke function.
|
|
20
|
+
|
|
21
|
+
Parameters:
|
|
22
|
+
-----------
|
|
23
|
+
|
|
24
|
+
type : Type of cap
|
|
25
|
+
dx,dy : signed distances to cap point (in pixels)
|
|
26
|
+
linewidth: Stroke line width (in pixels)
|
|
27
|
+
antialias: Stroke antialiased area (in pixels)
|
|
28
|
+
stroke: Stroke color
|
|
29
|
+
|
|
30
|
+
Return:
|
|
31
|
+
-------
|
|
32
|
+
Fragment color (vec4)
|
|
33
|
+
|
|
34
|
+
--------------------------------------------------------- */
|
|
35
|
+
vec4 cap(int type, float dx, float dy, float linewidth, float antialias, vec4 color)
|
|
36
|
+
{
|
|
37
|
+
float d = 0.0;
|
|
38
|
+
dx = abs(dx);
|
|
39
|
+
dy = abs(dy);
|
|
40
|
+
float t = linewidth/2.0 - antialias;
|
|
41
|
+
|
|
42
|
+
// Round
|
|
43
|
+
if (type == CAP_ROUND)
|
|
44
|
+
d = sqrt(dx*dx+dy*dy);
|
|
45
|
+
|
|
46
|
+
// Square
|
|
47
|
+
else if (type == CAP_SQUARE)
|
|
48
|
+
d = max(dx,dy);
|
|
49
|
+
|
|
50
|
+
// Butt
|
|
51
|
+
else if (type == CAP_BUTT)
|
|
52
|
+
d = max(dx+t,dy);
|
|
53
|
+
|
|
54
|
+
// Triangle in
|
|
55
|
+
else if (type == CAP_TRIANGLE_IN)
|
|
56
|
+
d = (dx+abs(dy));
|
|
57
|
+
|
|
58
|
+
// Triangle out
|
|
59
|
+
else if (type == CAP_TRIANGLE_OUT)
|
|
60
|
+
d = max(abs(dy),(t+dx-abs(dy)));
|
|
61
|
+
|
|
62
|
+
// None
|
|
63
|
+
else
|
|
64
|
+
discard;
|
|
65
|
+
|
|
66
|
+
return stroke(d, linewidth, antialias, color);
|
|
67
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Vispy Development Team
|
|
3
|
+
* Distributed under the (new) BSD License. See LICENSE.txt for more info.
|
|
4
|
+
*
|
|
5
|
+
* This file contains code for filling a shape with anti-alias.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Compute antialiased fragment color for a filled shape.
|
|
10
|
+
*
|
|
11
|
+
* Parameters:
|
|
12
|
+
* -----------
|
|
13
|
+
*
|
|
14
|
+
* distance
|
|
15
|
+
* Signed distance to border (in pixels)
|
|
16
|
+
* linewidth
|
|
17
|
+
* Stroke line width (in pixels)
|
|
18
|
+
* antialias
|
|
19
|
+
* Stroke antialiased area (in pixels)
|
|
20
|
+
* bg_color
|
|
21
|
+
* Fill color
|
|
22
|
+
*
|
|
23
|
+
* Return:
|
|
24
|
+
* -------
|
|
25
|
+
* Fragment color (vec4)
|
|
26
|
+
*/
|
|
27
|
+
vec4 filled(float distance, float linewidth, float antialias, vec4 bg_color)
|
|
28
|
+
{
|
|
29
|
+
vec4 frag_color;
|
|
30
|
+
float t = linewidth/2.0 - antialias;
|
|
31
|
+
float signed_distance = distance;
|
|
32
|
+
float border_distance = abs(signed_distance) - t;
|
|
33
|
+
float alpha = border_distance/antialias;
|
|
34
|
+
alpha = exp(-alpha*alpha);
|
|
35
|
+
|
|
36
|
+
if( border_distance < 0.0 ) {
|
|
37
|
+
frag_color = bg_color;
|
|
38
|
+
} else if( signed_distance < 0.0 ) {
|
|
39
|
+
frag_color = bg_color;
|
|
40
|
+
} else {
|
|
41
|
+
frag_color = vec4(bg_color.rgb, alpha * bg_color.a);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
return frag_color;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
vec4 filled(float distance, float linewidth, float antialias, vec4 fg_color, vec4 bg_color)
|
|
48
|
+
{
|
|
49
|
+
return filled(distance, linewidth, antialias, fg_color);
|
|
50
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
// ----------------------------------------------------------------------------
|
|
2
|
+
// Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
|
|
3
|
+
// Distributed under the (new) BSD License.
|
|
4
|
+
// ----------------------------------------------------------------------------
|
|
5
|
+
|
|
6
|
+
/* ---------------------------------------------------------
|
|
7
|
+
Compute antialiased fragment color for an outlined shape.
|
|
8
|
+
|
|
9
|
+
Parameters:
|
|
10
|
+
-----------
|
|
11
|
+
|
|
12
|
+
distance : signed distance to border (in pixels)
|
|
13
|
+
linewidth: Stroke line width (in pixels)
|
|
14
|
+
antialias: Stroke antialiased area (in pixels)
|
|
15
|
+
stroke: Stroke color
|
|
16
|
+
fill: Fill color
|
|
17
|
+
|
|
18
|
+
Return:
|
|
19
|
+
-------
|
|
20
|
+
Fragment color (vec4)
|
|
21
|
+
|
|
22
|
+
--------------------------------------------------------- */
|
|
23
|
+
|
|
24
|
+
vec4 outline(float distance, float linewidth, float antialias, vec4 fg_color, vec4 bg_color)
|
|
25
|
+
{
|
|
26
|
+
vec4 frag_color;
|
|
27
|
+
float t = linewidth/2.0 - antialias;
|
|
28
|
+
float signed_distance = distance;
|
|
29
|
+
float border_distance = abs(signed_distance) - t;
|
|
30
|
+
float alpha = border_distance/antialias;
|
|
31
|
+
alpha = exp(-alpha*alpha);
|
|
32
|
+
|
|
33
|
+
if( border_distance < 0.0 )
|
|
34
|
+
frag_color = fg_color;
|
|
35
|
+
else if( signed_distance < 0.0 )
|
|
36
|
+
frag_color = mix(bg_color, fg_color, sqrt(alpha));
|
|
37
|
+
else
|
|
38
|
+
frag_color = vec4(fg_color.rgb, fg_color.a * alpha);
|
|
39
|
+
return frag_color;
|
|
40
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// ----------------------------------------------------------------------------
|
|
2
|
+
// Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
|
|
3
|
+
// Distributed under the (new) BSD License.
|
|
4
|
+
// ----------------------------------------------------------------------------
|
|
5
|
+
|
|
6
|
+
/* ---------------------------------------------------------
|
|
7
|
+
Compute antialiased fragment color for a stroke line.
|
|
8
|
+
|
|
9
|
+
Parameters:
|
|
10
|
+
-----------
|
|
11
|
+
|
|
12
|
+
distance : signed distance to border (in pixels)
|
|
13
|
+
linewidth: Stroke line width (in pixels)
|
|
14
|
+
antialias: Stroke antialiased area (in pixels)
|
|
15
|
+
stroke: Stroke color
|
|
16
|
+
|
|
17
|
+
Return:
|
|
18
|
+
-------
|
|
19
|
+
Fragment color (vec4)
|
|
20
|
+
|
|
21
|
+
--------------------------------------------------------- */
|
|
22
|
+
|
|
23
|
+
vec4 stroke(float distance, float linewidth, float antialias, vec4 fg_color)
|
|
24
|
+
{
|
|
25
|
+
vec4 frag_color;
|
|
26
|
+
float t = linewidth/2.0 - antialias;
|
|
27
|
+
float signed_distance = distance;
|
|
28
|
+
float border_distance = abs(signed_distance) - t;
|
|
29
|
+
float alpha = border_distance/antialias;
|
|
30
|
+
alpha = exp(-alpha*alpha);
|
|
31
|
+
|
|
32
|
+
if( border_distance < 0.0 )
|
|
33
|
+
frag_color = fg_color;
|
|
34
|
+
else
|
|
35
|
+
frag_color = vec4(fg_color.rgb, fg_color.a * alpha);
|
|
36
|
+
|
|
37
|
+
return frag_color;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
vec4 stroke(float distance, float linewidth, float antialias, vec4 fg_color, vec4 bg_color)
|
|
41
|
+
{
|
|
42
|
+
return stroke(distance, linewidth, antialias, fg_color);
|
|
43
|
+
}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Vispy Development Team
|
|
3
|
+
* Distributed under the (new) BSD License. See LICENSE.txt for more info.
|
|
4
|
+
*
|
|
5
|
+
* This file contains the shader code for drawing "angle" arrow heads, which
|
|
6
|
+
* are drawn as two lines moving away from the arrow tip under a certain
|
|
7
|
+
* angle.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
#include "arrowheads/util.glsl"
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Computes the signed distance to an angle arrow. This is a helper function,
|
|
14
|
+
* and in general you'll use arrow_angle_30, arrow_angle_60 or arrow_angle_90.
|
|
15
|
+
*
|
|
16
|
+
* Parameters:
|
|
17
|
+
* -----------
|
|
18
|
+
* texcoord
|
|
19
|
+
* Point to compute distance to
|
|
20
|
+
* size
|
|
21
|
+
* Size of the arrow head in pixels
|
|
22
|
+
* height
|
|
23
|
+
* Height of the head (pixel)
|
|
24
|
+
*
|
|
25
|
+
* See also
|
|
26
|
+
* --------
|
|
27
|
+
* arrow_angle_30, arrow_angle_60, arrow_angle_90
|
|
28
|
+
*
|
|
29
|
+
* Return:
|
|
30
|
+
* -------
|
|
31
|
+
* Signed distance to the arrow
|
|
32
|
+
*/
|
|
33
|
+
float arrow_angle(vec2 texcoord, float size,
|
|
34
|
+
float linewidth, float antialias, float height)
|
|
35
|
+
{
|
|
36
|
+
float d;
|
|
37
|
+
vec2 start = -vec2(size/2.0, 0.0);
|
|
38
|
+
vec2 end = +vec2(size/2.0, 0.0);
|
|
39
|
+
|
|
40
|
+
vec2 p1 = start + size*vec2(0.0, +height);
|
|
41
|
+
vec2 p2 = start + size*vec2(0.0, -height);
|
|
42
|
+
|
|
43
|
+
// Arrow tip (beyond segment end)
|
|
44
|
+
if( texcoord.x > size/2.0) {
|
|
45
|
+
// Head : 2 segments
|
|
46
|
+
float d1 = line_distance(texcoord, end, p1);
|
|
47
|
+
float d2 = line_distance(texcoord, p2, end);
|
|
48
|
+
// Body : 1 segment
|
|
49
|
+
float d3 = end.x - texcoord.x;
|
|
50
|
+
d = max(max(d1,d2), d3);
|
|
51
|
+
} else {
|
|
52
|
+
// Head : 2 segments
|
|
53
|
+
float d1 = segment_distance(texcoord, p1, end);
|
|
54
|
+
float d2 = segment_distance(texcoord, p2, end);
|
|
55
|
+
// Body : 1 segment
|
|
56
|
+
float d3 = segment_distance(texcoord, vec2(0.0, 0.0), end);
|
|
57
|
+
d = min(min(d1,d2), d3);
|
|
58
|
+
}
|
|
59
|
+
return d;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Returns the distance to an arrow with tip corner of 30 degrees
|
|
64
|
+
*
|
|
65
|
+
* See also
|
|
66
|
+
* --------
|
|
67
|
+
* arro_angle, arrow_angle_60, arrow_angle_90
|
|
68
|
+
*/
|
|
69
|
+
float arrow_angle_30(vec2 texcoord, float size,
|
|
70
|
+
float linewidth, float antialias)
|
|
71
|
+
{
|
|
72
|
+
return arrow_angle(texcoord, size, linewidth, antialias, 0.25);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Returns the distance to an arrow with tip corner of 60 degrees
|
|
77
|
+
*
|
|
78
|
+
* See also
|
|
79
|
+
* --------
|
|
80
|
+
* arro_angle, arrow_angle_30, arrow_angle_90
|
|
81
|
+
*/
|
|
82
|
+
float arrow_angle_60(vec2 texcoord, float size,
|
|
83
|
+
float linewidth, float antialias)
|
|
84
|
+
{
|
|
85
|
+
return arrow_angle(texcoord, size, linewidth, antialias, 0.5);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Returns the distance to an arrow with tip corner of 90 degrees
|
|
90
|
+
*
|
|
91
|
+
* See also
|
|
92
|
+
* --------
|
|
93
|
+
* arro_angle, arrow_angle_30, arrow_angle_60
|
|
94
|
+
*/
|
|
95
|
+
float arrow_angle_90(vec2 texcoord, float size,
|
|
96
|
+
float linewidth, float antialias)
|
|
97
|
+
{
|
|
98
|
+
return arrow_angle(texcoord, size, linewidth, antialias, 1.0);
|
|
99
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Vispy Development Team
|
|
3
|
+
* Distributed under the (new) BSD License. See LICENSE.txt for more info.
|
|
4
|
+
*
|
|
5
|
+
* This file contains the fragment shader template for arrow heads.
|
|
6
|
+
*
|
|
7
|
+
* Variables
|
|
8
|
+
* ---------
|
|
9
|
+
*
|
|
10
|
+
* $arrow_type
|
|
11
|
+
* The type of arrow head. Examples incude: curved, stealth, triangle_30
|
|
12
|
+
* and more.
|
|
13
|
+
* $fill_type
|
|
14
|
+
* How to fill the arrow head. Possible values: "filled", "outline" or
|
|
15
|
+
* "stroke".
|
|
16
|
+
*
|
|
17
|
+
* Varyings
|
|
18
|
+
* --------
|
|
19
|
+
* v_size
|
|
20
|
+
* The arrow head size in pixels
|
|
21
|
+
* v_point_size
|
|
22
|
+
* The actual size of the point used for drawing. This is larger than the
|
|
23
|
+
* given arrow head size to make sure rotating goes well, and allows some
|
|
24
|
+
* space for anti-aliasing.
|
|
25
|
+
* v_color
|
|
26
|
+
* The color for the arrow head
|
|
27
|
+
* v_orientation
|
|
28
|
+
* A direction vector for the orientation of the arrow head
|
|
29
|
+
* v_antialias
|
|
30
|
+
* Anti-alias width
|
|
31
|
+
* v_linewidth
|
|
32
|
+
* Width for the stroke or outline of the shape.
|
|
33
|
+
*/
|
|
34
|
+
#version 120
|
|
35
|
+
#include "math/constants.glsl"
|
|
36
|
+
#include "arrowheads/arrowheads.glsl"
|
|
37
|
+
#include "antialias/antialias.glsl"
|
|
38
|
+
|
|
39
|
+
// Varyings
|
|
40
|
+
// ------------------------------------
|
|
41
|
+
varying float v_size;
|
|
42
|
+
varying float v_point_size;
|
|
43
|
+
varying vec4 v_color;
|
|
44
|
+
varying vec3 v_orientation;
|
|
45
|
+
varying float v_antialias;
|
|
46
|
+
varying float v_linewidth;
|
|
47
|
+
|
|
48
|
+
void main()
|
|
49
|
+
{
|
|
50
|
+
// 1. Move the origin to the center of the point
|
|
51
|
+
// 2. Rotate the canvas for drawing the arrow
|
|
52
|
+
// 3. Scale the coordinates with v_point_size
|
|
53
|
+
vec2 P = gl_PointCoord.xy - vec2(0.5, 0.5);
|
|
54
|
+
P = vec2(v_orientation.x*P.x - v_orientation.y*P.y,
|
|
55
|
+
v_orientation.y*P.x + v_orientation.x*P.y) * v_point_size;
|
|
56
|
+
|
|
57
|
+
float distance = arrow_$arrow_type(P, v_size, v_linewidth, v_antialias);
|
|
58
|
+
gl_FragColor = $fill_type(distance, v_linewidth, v_antialias, v_color,
|
|
59
|
+
v_color);
|
|
60
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// ----------------------------------------------------------------------------
|
|
2
|
+
// Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
|
|
3
|
+
// Distributed under the (new) BSD License.
|
|
4
|
+
// ----------------------------------------------------------------------------
|
|
5
|
+
|
|
6
|
+
#include "arrowheads/util.glsl"
|
|
7
|
+
|
|
8
|
+
#include "arrowheads/curved.glsl"
|
|
9
|
+
#include "arrowheads/stealth.glsl"
|
|
10
|
+
#include "arrowheads/triangle.glsl"
|
|
11
|
+
#include "arrowheads/angle.glsl"
|
|
12
|
+
#include "arrowheads/inhibitor.glsl"
|