vispy 0.14.0__cp311-cp311-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 +968 -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 +1134 -0
- vispy/color/tests/__init__.py +0 -0
- vispy/color/tests/test_color.py +352 -0
- vispy/conftest.py +12 -0
- vispy/ext/__init__.py +0 -0
- vispy/ext/cocoapy.py +1542 -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 +134 -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 +698 -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 +506 -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 +566 -0
- vispy/gloo/gl/tests/test_names.py +246 -0
- vispy/gloo/gl/tests/test_use.py +71 -0
- vispy/gloo/glir.py +1816 -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 +1045 -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 +106 -0
- vispy/scene/cameras/base_camera.py +538 -0
- vispy/scene/cameras/fly.py +474 -0
- vispy/scene/cameras/magnify.py +163 -0
- vispy/scene/cameras/panzoom.py +308 -0
- vispy/scene/cameras/perspective.py +333 -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 +173 -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 +446 -0
- vispy/testing/_testing.py +416 -0
- vispy/testing/image_tester.py +473 -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 +17 -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 +4 -0
- vispy/visuals/__init__.py +50 -0
- vispy/visuals/_scalable_textures.py +485 -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 +163 -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 +796 -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 +105 -0
- vispy/visuals/gridmesh.py +98 -0
- vispy/visuals/histogram.py +58 -0
- vispy/visuals/image.py +688 -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 +810 -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_histogram.py +24 -0
- vispy/visuals/tests/test_image.py +390 -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 +180 -0
- vispy/visuals/tests/test_sdf.py +73 -0
- vispy/visuals/tests/test_spectrogram.py +42 -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-311-darwin.so +0 -0
- vispy/visuals/text/_sdf_cpu.pyx +110 -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 +1335 -0
- vispy/visuals/windbarb.py +291 -0
- vispy/visuals/xyz_axis.py +34 -0
- vispy-0.14.0.dist-info/LICENSE.txt +36 -0
- vispy-0.14.0.dist-info/METADATA +218 -0
- vispy-0.14.0.dist-info/RECORD +519 -0
- vispy-0.14.0.dist-info/WHEEL +5 -0
- vispy-0.14.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,83 @@
|
|
|
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 vertex shader template for arrow heads.
|
|
6
|
+
*
|
|
7
|
+
* Variables
|
|
8
|
+
* ---------
|
|
9
|
+
* $transform
|
|
10
|
+
* Projection matrix of vertex to the screen
|
|
11
|
+
*
|
|
12
|
+
* Attributes
|
|
13
|
+
* ----------
|
|
14
|
+
* v1
|
|
15
|
+
* The first vertex of the arrow body
|
|
16
|
+
* v2
|
|
17
|
+
* The second vertex of the arrow body. This will also be the center
|
|
18
|
+
* location of the arrow head. Using v1, we determine a direction vector
|
|
19
|
+
* to automatically determine the orientation.
|
|
20
|
+
* size
|
|
21
|
+
* Size of the arrow head in pixels
|
|
22
|
+
* color
|
|
23
|
+
* The color of the arrow head
|
|
24
|
+
* v_linewidth
|
|
25
|
+
* The width for the stroke or outline of the shape.
|
|
26
|
+
*
|
|
27
|
+
* Varyings
|
|
28
|
+
* --------
|
|
29
|
+
* v_size
|
|
30
|
+
* The arrow head size in pixels
|
|
31
|
+
* v_point_size
|
|
32
|
+
* The actual size of the point used for drawing. This is larger than the
|
|
33
|
+
* given arrow head size to make sure rotating goes well, and allows some
|
|
34
|
+
* space for anti-aliasing.
|
|
35
|
+
* v_color
|
|
36
|
+
* The color for the arrow head
|
|
37
|
+
* v_orientation
|
|
38
|
+
* A direction vector for the orientation of the arrow head
|
|
39
|
+
* v_antialias
|
|
40
|
+
* Anti-alias width
|
|
41
|
+
* v_linewidth
|
|
42
|
+
* Width for the stroke or outline of the shape.
|
|
43
|
+
*/
|
|
44
|
+
|
|
45
|
+
#include "math/constants.glsl"
|
|
46
|
+
|
|
47
|
+
// Uniforms
|
|
48
|
+
// ------------------------------------
|
|
49
|
+
uniform float antialias;
|
|
50
|
+
|
|
51
|
+
// Attributes
|
|
52
|
+
// ------------------------------------
|
|
53
|
+
attribute vec4 v1;
|
|
54
|
+
attribute vec4 v2;
|
|
55
|
+
attribute float size;
|
|
56
|
+
attribute vec4 color;
|
|
57
|
+
attribute float linewidth;
|
|
58
|
+
|
|
59
|
+
// Varyings
|
|
60
|
+
// ------------------------------------
|
|
61
|
+
varying float v_size;
|
|
62
|
+
varying float v_point_size;
|
|
63
|
+
varying vec4 v_color;
|
|
64
|
+
varying vec3 v_orientation;
|
|
65
|
+
varying float v_antialias;
|
|
66
|
+
varying float v_linewidth;
|
|
67
|
+
|
|
68
|
+
// Main (hooked)
|
|
69
|
+
// ------------------------------------
|
|
70
|
+
void main (void)
|
|
71
|
+
{
|
|
72
|
+
v_size = size;
|
|
73
|
+
v_point_size = M_SQRT2 * size + 2.0 * (linewidth + 2.0*antialias);
|
|
74
|
+
v_antialias = antialias;
|
|
75
|
+
v_color = color;
|
|
76
|
+
v_linewidth = linewidth;
|
|
77
|
+
|
|
78
|
+
vec3 body = $transform(v2).xyz - $transform(v1).xyz;
|
|
79
|
+
v_orientation = (body / length(body));
|
|
80
|
+
|
|
81
|
+
gl_Position = $transform(v2);
|
|
82
|
+
gl_PointSize = v_point_size;
|
|
83
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Vispy Development Team
|
|
3
|
+
* Distributed under the (new) BSD License. See LICENSE.txt for more info.
|
|
4
|
+
*
|
|
5
|
+
* This files contains the code for drawing curved arrow heads.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#include "arrowheads/util.glsl"
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Computes the signed distance to an curved arrow
|
|
12
|
+
*
|
|
13
|
+
* Parameters:
|
|
14
|
+
* -----------
|
|
15
|
+
* texcoord
|
|
16
|
+
* Point to compute distance to
|
|
17
|
+
* size
|
|
18
|
+
* size of the arrow head in pixels
|
|
19
|
+
* linewidth
|
|
20
|
+
* Width of the line
|
|
21
|
+
* antialias
|
|
22
|
+
* Anti alias width
|
|
23
|
+
*
|
|
24
|
+
* Return:
|
|
25
|
+
* -------
|
|
26
|
+
* Signed distance to the arrow
|
|
27
|
+
*
|
|
28
|
+
*/
|
|
29
|
+
float arrow_curved(vec2 texcoord, float size, float linewidth, float antialias)
|
|
30
|
+
{
|
|
31
|
+
vec2 start = -vec2(size/2.0, 0.0);
|
|
32
|
+
vec2 end = +vec2(size/2.0, 0.0);
|
|
33
|
+
float height = 0.5;
|
|
34
|
+
|
|
35
|
+
vec2 p1 = start + size*vec2(0.0, -height);
|
|
36
|
+
vec2 p2 = start + size*vec2(0.0, +height);
|
|
37
|
+
vec2 p3 = end;
|
|
38
|
+
|
|
39
|
+
// Head : 3 circles
|
|
40
|
+
vec2 c1 = circle_from_2_points(p1, p3, 6.0*size).zw;
|
|
41
|
+
float d1 = length(texcoord - c1) - 6.0*size;
|
|
42
|
+
vec2 c2 = circle_from_2_points(p2, p3, 6.0*size).xy;
|
|
43
|
+
float d2 = length(texcoord - c2) - 6.0*size;
|
|
44
|
+
vec2 c3 = circle_from_2_points(p1, p2, 3.0*size).xy;
|
|
45
|
+
float d3 = length(texcoord - c3) - 3.0*size;
|
|
46
|
+
|
|
47
|
+
return -min(d3, min(d1,d2));
|
|
48
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Vispy Development Team
|
|
3
|
+
* Distributed under the (new) BSD License. See LICENSE.txt for more info.
|
|
4
|
+
*
|
|
5
|
+
* This files contains the code for drawing curved arrow heads.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#include "arrowheads/util.glsl"
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
float arrow_inhibitor_round(vec2 texcoord, float size,
|
|
12
|
+
float linewidth, float antialias)
|
|
13
|
+
{
|
|
14
|
+
vec2 c = vec2(size/2.0, 0.0);
|
|
15
|
+
float radius = size/2.0;
|
|
16
|
+
float radius_inner = radius - linewidth/6.0;
|
|
17
|
+
|
|
18
|
+
float d1 = length(texcoord - c) - radius;
|
|
19
|
+
float d2 = length(texcoord - c) - radius_inner;
|
|
20
|
+
float d3 = texcoord.x - (size/2.5);
|
|
21
|
+
|
|
22
|
+
return max(d3, max(d1, -d2));
|
|
23
|
+
//return max(d1, -d2);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
|
|
@@ -0,0 +1,46 @@
|
|
|
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 code for drawing "stealth" type arrow heads.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#include "arrowheads/util.glsl"
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Computes the signed distance to an stealth arrow
|
|
13
|
+
*
|
|
14
|
+
* Parameters:
|
|
15
|
+
* -----------
|
|
16
|
+
*
|
|
17
|
+
* texcoord
|
|
18
|
+
* Point to compute distance to
|
|
19
|
+
* size
|
|
20
|
+
* Size of the arrow head in pixels
|
|
21
|
+
* linewidth
|
|
22
|
+
* Width of the line
|
|
23
|
+
* antialias
|
|
24
|
+
* Anti alias width
|
|
25
|
+
*
|
|
26
|
+
* Return:
|
|
27
|
+
* -------
|
|
28
|
+
* Signed distance to the arrow
|
|
29
|
+
*/
|
|
30
|
+
float arrow_stealth(vec2 texcoord, float size,
|
|
31
|
+
float linewidth, float antialias)
|
|
32
|
+
{
|
|
33
|
+
vec2 start = -vec2(size/2.0, 0.0);
|
|
34
|
+
vec2 end = +vec2(size/2.0, 0.0);
|
|
35
|
+
float height = 0.5;
|
|
36
|
+
|
|
37
|
+
// Head : 4 lines
|
|
38
|
+
float d1 = line_distance(texcoord, start + size*vec2(0.0, +height), end);
|
|
39
|
+
float d2 = line_distance(texcoord, start + size*vec2(0.0, +height),
|
|
40
|
+
start + size*vec2(0.3, 0.0));
|
|
41
|
+
float d3 = line_distance(texcoord, start + size*vec2(0.0, -height), end);
|
|
42
|
+
float d4 = line_distance(texcoord, start + size*vec2(0.0, -height),
|
|
43
|
+
start + size*vec2(0.25, 0.0));
|
|
44
|
+
|
|
45
|
+
return max( max(-d1, d3), - max(-d2,d4));
|
|
46
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
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 code for drawing complete triangles as arrow heads.
|
|
6
|
+
* this includes triangles with a top corner of 30, 60 and 90 degrees.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
#include "arrowheads/util.glsl"
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Computes the signed distance to a triangle arrow. This is a helper function,
|
|
13
|
+
* and in general you'll use arrow_triangle_30, arrow_triangle_60, or
|
|
14
|
+
* arrow_triangle_90.
|
|
15
|
+
*
|
|
16
|
+
* Parameters:
|
|
17
|
+
* -----------
|
|
18
|
+
*
|
|
19
|
+
* texcoord
|
|
20
|
+
* Point to compute distance to
|
|
21
|
+
* size
|
|
22
|
+
* Size of the arrow head in pixels
|
|
23
|
+
* linewidth
|
|
24
|
+
* Width of the line
|
|
25
|
+
* antialias
|
|
26
|
+
* Anti alias width
|
|
27
|
+
* height
|
|
28
|
+
* Height of the head (pixel)
|
|
29
|
+
*
|
|
30
|
+
* See also
|
|
31
|
+
* --------
|
|
32
|
+
* arrow_triangle_30, arrow_triangle_60, arrow_triangle_90
|
|
33
|
+
*
|
|
34
|
+
* Return:
|
|
35
|
+
* -------
|
|
36
|
+
* Signed distance to the arrow
|
|
37
|
+
*
|
|
38
|
+
*/
|
|
39
|
+
float arrow_triangle(vec2 texcoord, float size,
|
|
40
|
+
float linewidth, float antialias, float height)
|
|
41
|
+
{
|
|
42
|
+
vec2 start = -vec2(size/2.0, 0.0);
|
|
43
|
+
vec2 end = +vec2(size/2.0, 0.0);
|
|
44
|
+
|
|
45
|
+
// Head : 3 lines
|
|
46
|
+
vec2 p1 = start + size*vec2(0.0, +height);
|
|
47
|
+
vec2 p2 = start + size*vec2(0.0, -height);
|
|
48
|
+
|
|
49
|
+
float d1 = line_distance(texcoord, end, p1);
|
|
50
|
+
float d2 = line_distance(texcoord, p2, end);
|
|
51
|
+
float d3 = start.x - texcoord.x;
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
return max(max(d1, d2), d3);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Returns the signed distance to an triangle arrow head with a tip corner
|
|
59
|
+
* of 30 degrees.
|
|
60
|
+
*
|
|
61
|
+
* See also
|
|
62
|
+
* --------
|
|
63
|
+
* arrow_triangle, arrow_triangle_60, arrow_triangle_90
|
|
64
|
+
*/
|
|
65
|
+
float arrow_triangle_30(vec2 texcoord, float size,
|
|
66
|
+
float linewidth, float antialias)
|
|
67
|
+
{
|
|
68
|
+
return arrow_triangle(texcoord, size, linewidth, antialias, 0.25);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Returns the signed distance to an triangle arrow head with a tip corner
|
|
73
|
+
* of 60 degrees.
|
|
74
|
+
*
|
|
75
|
+
* See also
|
|
76
|
+
* --------
|
|
77
|
+
* arrow_triangle, arrow_triangle_30, arrow_triangle_90
|
|
78
|
+
*/
|
|
79
|
+
float arrow_triangle_60(vec2 texcoord, float size,
|
|
80
|
+
float linewidth, float antialias)
|
|
81
|
+
{
|
|
82
|
+
return arrow_triangle(texcoord, size, linewidth, antialias, 0.5);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Returns the signed distance to an triangle arrow head with a tip corner
|
|
87
|
+
* of 90 degrees.
|
|
88
|
+
*
|
|
89
|
+
* See also
|
|
90
|
+
* --------
|
|
91
|
+
* arrow_triangle, arrow_triangle_30, arrow_triangle_60
|
|
92
|
+
*/
|
|
93
|
+
float arrow_triangle_90(vec2 texcoord, float size,
|
|
94
|
+
float linewidth, float antialias)
|
|
95
|
+
{
|
|
96
|
+
return arrow_triangle(texcoord, size, linewidth, antialias, 1.0);
|
|
97
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Vispy Development Team
|
|
3
|
+
* Distributed under the (new) BSD License. See LICENSE.txt for more info.
|
|
4
|
+
*
|
|
5
|
+
* This is a convencience include file with includes some math helper
|
|
6
|
+
* functions.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
#include "math/signed-line-distance.glsl"
|
|
10
|
+
#include "math/point-to-line-distance.glsl"
|
|
11
|
+
#include "math/signed-segment-distance.glsl"
|
|
12
|
+
#include "math/circle-through-2-points.glsl"
|
|
13
|
+
#include "math/point-to-line-projection.glsl"
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// ----------------------------------------------------------------------------
|
|
2
|
+
// Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
|
|
3
|
+
// Distributed under the (new) BSD License.
|
|
4
|
+
// ----------------------------------------------------------------------------
|
|
5
|
+
#include "arrows/util.glsl"
|
|
6
|
+
|
|
7
|
+
float arrow_angle_30(vec2 texcoord,
|
|
8
|
+
float body, float head,
|
|
9
|
+
float linewidth, float antialias)
|
|
10
|
+
{
|
|
11
|
+
return arrow_angle(texcoord, body, head, 0.25, linewidth, antialias);
|
|
12
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// ----------------------------------------------------------------------------
|
|
2
|
+
// Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
|
|
3
|
+
// Distributed under the (new) BSD License.
|
|
4
|
+
// ----------------------------------------------------------------------------
|
|
5
|
+
#include "arrows/util.glsl"
|
|
6
|
+
|
|
7
|
+
float arrow_angle_60(vec2 texcoord,
|
|
8
|
+
float body, float head,
|
|
9
|
+
float linewidth, float antialias)
|
|
10
|
+
{
|
|
11
|
+
return arrow_angle(texcoord, body, head, 0.5, linewidth, antialias);
|
|
12
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// ----------------------------------------------------------------------------
|
|
2
|
+
// Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
|
|
3
|
+
// Distributed under the (new) BSD License.
|
|
4
|
+
// ----------------------------------------------------------------------------
|
|
5
|
+
#include "arrows/util.glsl"
|
|
6
|
+
|
|
7
|
+
float arrow_angle_90(vec2 texcoord,
|
|
8
|
+
float body, float head,
|
|
9
|
+
float linewidth, float antialias)
|
|
10
|
+
{
|
|
11
|
+
return arrow_angle(texcoord, body, head, 1.0, linewidth, antialias);
|
|
12
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// ----------------------------------------------------------------------------
|
|
2
|
+
// Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
|
|
3
|
+
// Distributed under the (new) BSD License.
|
|
4
|
+
// ----------------------------------------------------------------------------
|
|
5
|
+
// Hooks:
|
|
6
|
+
// <paint> : "stroke", "filled" or "outline"
|
|
7
|
+
// <marker> : "steath", "curved",
|
|
8
|
+
// "angle_30", "angle_60", "angle_90",
|
|
9
|
+
// "triangle_30", "triangle_60", "triangle_90",
|
|
10
|
+
// ----------------------------------------------------------------------------
|
|
11
|
+
#version 120
|
|
12
|
+
#include "math/constants.glsl"
|
|
13
|
+
#include "arrows/arrows.glsl"
|
|
14
|
+
#include "antialias/antialias.glsl"
|
|
15
|
+
|
|
16
|
+
// Varyings
|
|
17
|
+
// ------------------------------------
|
|
18
|
+
varying float v_antialias;
|
|
19
|
+
varying float v_linewidth;
|
|
20
|
+
varying float v_size;
|
|
21
|
+
varying float v_head;
|
|
22
|
+
varying float v_texcoord;
|
|
23
|
+
varying vec4 v_fg_color;
|
|
24
|
+
varying vec4 v_bg_color;
|
|
25
|
+
varying vec2 v_orientation;
|
|
26
|
+
|
|
27
|
+
// Main (hooked)
|
|
28
|
+
// ------------------------------------
|
|
29
|
+
void main()
|
|
30
|
+
{
|
|
31
|
+
vec2 P = gl_PointCoord.xy - vec2(0.5,0.5);
|
|
32
|
+
P = vec2(v_orientation.x*P.x - v_orientation.y*P.y,
|
|
33
|
+
v_orientation.y*P.x + v_orientation.x*P.y) * v_size;
|
|
34
|
+
float point_size = M_SQRT2*v_size + 2.0 * (v_linewidth + 1.5*v_antialias);
|
|
35
|
+
float body = v_size/M_SQRT2;
|
|
36
|
+
|
|
37
|
+
float distance = arrow_<arrow>(P, body, v_head*body, v_linewidth, v_antialias);
|
|
38
|
+
gl_FragColor = <paint>(distance, v_linewidth, v_antialias, v_fg_color, v_bg_color);
|
|
39
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// ----------------------------------------------------------------------------
|
|
2
|
+
// Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
|
|
3
|
+
// Distributed under the (new) BSD License.
|
|
4
|
+
// ----------------------------------------------------------------------------
|
|
5
|
+
// Hooks:
|
|
6
|
+
// <transform> : vec4 function(position, ...)
|
|
7
|
+
//
|
|
8
|
+
// ----------------------------------------------------------------------------
|
|
9
|
+
#include "math/constants.glsl"
|
|
10
|
+
|
|
11
|
+
// Uniforms
|
|
12
|
+
// ------------------------------------
|
|
13
|
+
uniform float antialias;
|
|
14
|
+
|
|
15
|
+
// Attributes
|
|
16
|
+
// ------------------------------------
|
|
17
|
+
attribute vec2 position;
|
|
18
|
+
attribute float size;
|
|
19
|
+
attribute float head;
|
|
20
|
+
attribute vec4 fg_color;
|
|
21
|
+
attribute vec4 bg_color;
|
|
22
|
+
attribute float orientation;
|
|
23
|
+
attribute float linewidth;
|
|
24
|
+
|
|
25
|
+
// Varyings
|
|
26
|
+
// ------------------------------------
|
|
27
|
+
varying float v_size;
|
|
28
|
+
varying float v_head;
|
|
29
|
+
varying vec4 v_fg_color;
|
|
30
|
+
varying vec4 v_bg_color;
|
|
31
|
+
varying vec2 v_orientation;
|
|
32
|
+
varying float v_antialias;
|
|
33
|
+
varying float v_linewidth;
|
|
34
|
+
|
|
35
|
+
// Main (hooked)
|
|
36
|
+
// ------------------------------------
|
|
37
|
+
void main (void)
|
|
38
|
+
{
|
|
39
|
+
v_size = size;
|
|
40
|
+
v_head = head;
|
|
41
|
+
v_linewidth = linewidth;
|
|
42
|
+
v_antialias = antialias;
|
|
43
|
+
v_fg_color = fg_color;
|
|
44
|
+
v_bg_color = bg_color;
|
|
45
|
+
v_orientation = vec2(cos(orientation), sin(orientation));
|
|
46
|
+
|
|
47
|
+
gl_Position = <transform>;
|
|
48
|
+
gl_PointSize = M_SQRT2 * size + 2.0 * (linewidth + 1.5*antialias);
|
|
49
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// ----------------------------------------------------------------------------
|
|
2
|
+
// Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
|
|
3
|
+
// Distributed under the (new) BSD License.
|
|
4
|
+
// ----------------------------------------------------------------------------
|
|
5
|
+
|
|
6
|
+
#include "arrows/util.glsl"
|
|
7
|
+
|
|
8
|
+
#include "arrows/curved.glsl"
|
|
9
|
+
#include "arrows/stealth.glsl"
|
|
10
|
+
|
|
11
|
+
#include "arrows/angle-30.glsl"
|
|
12
|
+
#include "arrows/angle-60.glsl"
|
|
13
|
+
#include "arrows/angle-90.glsl"
|
|
14
|
+
|
|
15
|
+
#include "arrows/triangle-30.glsl"
|
|
16
|
+
#include "arrows/triangle-60.glsl"
|
|
17
|
+
#include "arrows/triangle-90.glsl"
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
/* -------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
|
|
3
|
+
* Distributed under the (new) BSD License.
|
|
4
|
+
* -------------------------------------------------------------------------
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
// Computes the signed distance from a line
|
|
8
|
+
float line_distance(vec2 p, vec2 p1, vec2 p2) {
|
|
9
|
+
vec2 center = (p1 + p2) * 0.5;
|
|
10
|
+
float len = length(p2 - p1);
|
|
11
|
+
vec2 dir = (p2 - p1) / len;
|
|
12
|
+
vec2 rel_p = p - center;
|
|
13
|
+
return dot(rel_p, vec2(dir.y, -dir.x));
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
// Computes the signed distance from a line segment
|
|
17
|
+
float segment_distance(vec2 p, vec2 p1, vec2 p2) {
|
|
18
|
+
vec2 center = (p1 + p2) * 0.5;
|
|
19
|
+
float len = length(p2 - p1);
|
|
20
|
+
vec2 dir = (p2 - p1) / len;
|
|
21
|
+
vec2 rel_p = p - center;
|
|
22
|
+
float dist1 = abs(dot(rel_p, vec2(dir.y, -dir.x)));
|
|
23
|
+
float dist2 = abs(dot(rel_p, dir)) - 0.5*len;
|
|
24
|
+
return max(dist1, dist2);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// Computes the center with given radius passing through p1 & p2
|
|
28
|
+
vec4 circle_from_2_points(vec2 p1, vec2 p2, float radius)
|
|
29
|
+
{
|
|
30
|
+
float q = length(p2-p1);
|
|
31
|
+
vec2 m = (p1+p2)/2.0;
|
|
32
|
+
vec2 d = vec2( sqrt(radius*radius - (q*q/4.0)) * (p1.y-p2.y)/q,
|
|
33
|
+
sqrt(radius*radius - (q*q/4.0)) * (p2.x-p1.x)/q);
|
|
34
|
+
return vec4(m+d, m-d);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
float arrow_curved(vec2 texcoord,
|
|
38
|
+
float body, float head,
|
|
39
|
+
float linewidth, float antialias)
|
|
40
|
+
{
|
|
41
|
+
float w = linewidth/2.0 + antialias;
|
|
42
|
+
vec2 start = -vec2(body/2.0, 0.0);
|
|
43
|
+
vec2 end = +vec2(body/2.0, 0.0);
|
|
44
|
+
float height = 0.5;
|
|
45
|
+
|
|
46
|
+
vec2 p1 = end - head*vec2(+1.0,+height);
|
|
47
|
+
vec2 p2 = end - head*vec2(+1.0,-height);
|
|
48
|
+
vec2 p3 = end;
|
|
49
|
+
|
|
50
|
+
// Head : 3 circles
|
|
51
|
+
vec2 c1 = circle_from_2_points(p1, p3, 1.25*body).zw;
|
|
52
|
+
float d1 = length(texcoord - c1) - 1.25*body;
|
|
53
|
+
vec2 c2 = circle_from_2_points(p2, p3, 1.25*body).xy;
|
|
54
|
+
float d2 = length(texcoord - c2) - 1.25*body;
|
|
55
|
+
vec2 c3 = circle_from_2_points(p1, p2, max(body-head, 1.0*body)).xy;
|
|
56
|
+
float d3 = length(texcoord - c3) - max(body-head, 1.0*body);
|
|
57
|
+
|
|
58
|
+
// Body : 1 segment
|
|
59
|
+
float d4 = segment_distance(texcoord, start, end - vec2(linewidth,0.0));
|
|
60
|
+
|
|
61
|
+
// Outside (because of circles)
|
|
62
|
+
if( texcoord.y > +(2.0*head + antialias) )
|
|
63
|
+
return 1000.0;
|
|
64
|
+
if( texcoord.y < -(2.0*head + antialias) )
|
|
65
|
+
return 1000.0;
|
|
66
|
+
if( texcoord.x < -(body/2.0 + antialias) )
|
|
67
|
+
return 1000.0;
|
|
68
|
+
if( texcoord.x > c1.x ) //(body + antialias) )
|
|
69
|
+
return 1000.0;
|
|
70
|
+
|
|
71
|
+
return min( d4, -min(d3,min(d1,d2)));
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
float arrow_triangle(vec2 texcoord,
|
|
75
|
+
float body, float head, float height,
|
|
76
|
+
float linewidth, float antialias)
|
|
77
|
+
{
|
|
78
|
+
float w = linewidth/2.0 + antialias;
|
|
79
|
+
vec2 start = -vec2(body/2.0, 0.0);
|
|
80
|
+
vec2 end = +vec2(body/2.0, 0.0);
|
|
81
|
+
|
|
82
|
+
// Head : 3 lines
|
|
83
|
+
float d1 = line_distance(texcoord, end, end - head*vec2(+1.0,-height));
|
|
84
|
+
float d2 = line_distance(texcoord, end - head*vec2(+1.0,+height), end);
|
|
85
|
+
float d3 = texcoord.x - end.x + head;
|
|
86
|
+
|
|
87
|
+
// Body : 1 segment
|
|
88
|
+
float d4 = segment_distance(texcoord, start, end - vec2(linewidth,0.0));
|
|
89
|
+
|
|
90
|
+
float d = min(max(max(d1, d2), -d3), d4);
|
|
91
|
+
return d;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
float arrow_triangle_90(vec2 texcoord,
|
|
95
|
+
float body, float head,
|
|
96
|
+
float linewidth, float antialias)
|
|
97
|
+
{
|
|
98
|
+
return arrow_triangle(texcoord, body, head, 1.0, linewidth, antialias);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
float arrow_triangle_60(vec2 texcoord,
|
|
102
|
+
float body, float head,
|
|
103
|
+
float linewidth, float antialias)
|
|
104
|
+
{
|
|
105
|
+
return arrow_triangle(texcoord, body, head, 0.5, linewidth, antialias);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
float arrow_triangle_30(vec2 texcoord,
|
|
109
|
+
float body, float head,
|
|
110
|
+
float linewidth, float antialias)
|
|
111
|
+
{
|
|
112
|
+
return arrow_triangle(texcoord, body, head, 0.25, linewidth, antialias);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
float arrow_angle(vec2 texcoord,
|
|
116
|
+
float body, float head, float height,
|
|
117
|
+
float linewidth, float antialias)
|
|
118
|
+
{
|
|
119
|
+
float d;
|
|
120
|
+
float w = linewidth/2.0 + antialias;
|
|
121
|
+
vec2 start = -vec2(body/2.0, 0.0);
|
|
122
|
+
vec2 end = +vec2(body/2.0, 0.0);
|
|
123
|
+
|
|
124
|
+
// Arrow tip (beyond segment end)
|
|
125
|
+
if( texcoord.x > body/2.0) {
|
|
126
|
+
// Head : 2 segments
|
|
127
|
+
float d1 = line_distance(texcoord, end, end - head*vec2(+1.0,-height));
|
|
128
|
+
float d2 = line_distance(texcoord, end - head*vec2(+1.0,+height), end);
|
|
129
|
+
// Body : 1 segment
|
|
130
|
+
float d3 = end.x - texcoord.x;
|
|
131
|
+
d = max(max(d1,d2), d3);
|
|
132
|
+
} else {
|
|
133
|
+
// Head : 2 segments
|
|
134
|
+
float d1 = segment_distance(texcoord, end - head*vec2(+1.0,-height), end);
|
|
135
|
+
float d2 = segment_distance(texcoord, end - head*vec2(+1.0,+height), end);
|
|
136
|
+
// Body : 1 segment
|
|
137
|
+
float d3 = segment_distance(texcoord, start, end - vec2(linewidth,0.0));
|
|
138
|
+
d = min(min(d1,d2), d3);
|
|
139
|
+
}
|
|
140
|
+
return d;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
float arrow_angle_90(vec2 texcoord,
|
|
144
|
+
float body, float head,
|
|
145
|
+
float linewidth, float antialias)
|
|
146
|
+
{
|
|
147
|
+
return arrow_angle(texcoord, body, head, 1.0, linewidth, antialias);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
float arrow_angle_60(vec2 texcoord,
|
|
151
|
+
float body, float head,
|
|
152
|
+
float linewidth, float antialias)
|
|
153
|
+
{
|
|
154
|
+
return arrow_angle(texcoord, body, head, 0.5, linewidth, antialias);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
float arrow_angle_30(vec2 texcoord,
|
|
158
|
+
float body, float head,
|
|
159
|
+
float linewidth, float antialias)
|
|
160
|
+
{
|
|
161
|
+
return arrow_angle(texcoord, body, head, 0.25, linewidth, antialias);
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
float arrow_stealth(vec2 texcoord,
|
|
166
|
+
float body, float head,
|
|
167
|
+
float linewidth, float antialias)
|
|
168
|
+
{
|
|
169
|
+
float w = linewidth/2.0 + antialias;
|
|
170
|
+
vec2 start = -vec2(body/2.0, 0.0);
|
|
171
|
+
vec2 end = +vec2(body/2.0, 0.0);
|
|
172
|
+
float height = 0.5;
|
|
173
|
+
|
|
174
|
+
// Head : 4 lines
|
|
175
|
+
float d1 = line_distance(texcoord, end-head*vec2(+1.0,-height),
|
|
176
|
+
end);
|
|
177
|
+
float d2 = line_distance(texcoord, end-head*vec2(+1.0,-height),
|
|
178
|
+
end-vec2(3.0*head/4.0,0.0));
|
|
179
|
+
float d3 = line_distance(texcoord, end-head*vec2(+1.0,+height), end);
|
|
180
|
+
float d4 = line_distance(texcoord, end-head*vec2(+1.0,+0.5),
|
|
181
|
+
end-vec2(3.0*head/4.0,0.0));
|
|
182
|
+
|
|
183
|
+
// Body : 1 segment
|
|
184
|
+
float d5 = segment_distance(texcoord, start, end - vec2(linewidth,0.0));
|
|
185
|
+
|
|
186
|
+
return min(d5, max( max(-d1, d3), - max(-d2,d4)));
|
|
187
|
+
}
|