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,78 @@
|
|
|
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 "misc/viewport-NDC.glsl"
|
|
10
|
+
|
|
11
|
+
// Externs
|
|
12
|
+
// ------------------------------------
|
|
13
|
+
// extern vec3 prev;
|
|
14
|
+
// extern vec3 curr;
|
|
15
|
+
// extern vec3 next;
|
|
16
|
+
// extern float id;
|
|
17
|
+
// extern vec4 color;
|
|
18
|
+
// extern float antialias;
|
|
19
|
+
// extern float linewidth;
|
|
20
|
+
// extern vec4 viewport;
|
|
21
|
+
// vec4 transform(vec3 position);
|
|
22
|
+
|
|
23
|
+
// Varyings
|
|
24
|
+
// ------------------------------------
|
|
25
|
+
varying float v_antialias;
|
|
26
|
+
varying float v_linewidth;
|
|
27
|
+
varying float v_distance;
|
|
28
|
+
varying vec4 v_color;
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
// Main
|
|
32
|
+
// ------------------------------------
|
|
33
|
+
void main (void)
|
|
34
|
+
{
|
|
35
|
+
// This function is externally generated
|
|
36
|
+
fetch_uniforms();
|
|
37
|
+
v_linewidth = linewidth;
|
|
38
|
+
v_antialias = antialias;
|
|
39
|
+
v_color = color;
|
|
40
|
+
|
|
41
|
+
// transform prev/curr/next
|
|
42
|
+
vec4 prev_ = $transform(vec4(prev, 1));
|
|
43
|
+
vec4 curr_ = $transform(vec4(curr, 1));
|
|
44
|
+
vec4 next_ = $transform(vec4(next, 1));
|
|
45
|
+
|
|
46
|
+
// prev/curr/next in viewport coordinates
|
|
47
|
+
vec2 _prev = NDC_to_viewport(prev_, viewport.zw);
|
|
48
|
+
vec2 _curr = NDC_to_viewport(curr_, viewport.zw);
|
|
49
|
+
vec2 _next = NDC_to_viewport(next_, viewport.zw);
|
|
50
|
+
|
|
51
|
+
// Compute vertex final position (in viewport coordinates)
|
|
52
|
+
float w = linewidth/2.0 + 1.5*antialias;
|
|
53
|
+
float z;
|
|
54
|
+
vec2 P;
|
|
55
|
+
if( curr == prev) {
|
|
56
|
+
vec2 v = normalize(_next.xy - _curr.xy);
|
|
57
|
+
vec2 normal = normalize(vec2(-v.y,v.x));
|
|
58
|
+
P = _curr.xy + normal*w*id;
|
|
59
|
+
} else if (curr == next) {
|
|
60
|
+
vec2 v = normalize(_curr.xy - _prev.xy);
|
|
61
|
+
vec2 normal = normalize(vec2(-v.y,v.x));
|
|
62
|
+
P = _curr.xy + normal*w*id;
|
|
63
|
+
} else {
|
|
64
|
+
vec2 v0 = normalize(_curr.xy - _prev.xy);
|
|
65
|
+
vec2 v1 = normalize(_next.xy - _curr.xy);
|
|
66
|
+
vec2 normal = normalize(vec2(-v0.y,v0.x));
|
|
67
|
+
vec2 tangent = normalize(v0+v1);
|
|
68
|
+
vec2 miter = vec2(-tangent.y, tangent.x);
|
|
69
|
+
float l = abs(w / dot(miter,normal));
|
|
70
|
+
P = _curr.xy + miter*l*sign(id);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
if( abs(id) > 1.5 ) v_color.a = 0.0;
|
|
74
|
+
|
|
75
|
+
v_distance = w*id;
|
|
76
|
+
gl_Position = viewport_to_NDC(vec3(P, curr_.z/curr_.w), viewport.zw);
|
|
77
|
+
|
|
78
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
// ----------------------------------------------------------------------------
|
|
2
|
+
// Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
|
|
3
|
+
// Distributed under the (new) BSD License.
|
|
4
|
+
// ----------------------------------------------------------------------------
|
|
5
|
+
|
|
6
|
+
// Uniforms
|
|
7
|
+
// ------------------------------------
|
|
8
|
+
uniform sampler2D atlas_data;
|
|
9
|
+
uniform vec2 atlas_shape;
|
|
10
|
+
|
|
11
|
+
// Varyings
|
|
12
|
+
// ------------------------------------
|
|
13
|
+
varying vec4 v_color;
|
|
14
|
+
varying float v_offset;
|
|
15
|
+
varying vec2 v_texcoord;
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
// Main
|
|
19
|
+
// ------------------------------------
|
|
20
|
+
void main(void)
|
|
21
|
+
{
|
|
22
|
+
<viewport.clipping>;
|
|
23
|
+
|
|
24
|
+
vec2 viewport = <viewport.viewport_global>.zw;
|
|
25
|
+
|
|
26
|
+
vec4 current = texture2D(atlas_data, v_texcoord);
|
|
27
|
+
vec4 previous= texture2D(atlas_data, v_texcoord+vec2(-1.0,0.0)/viewport);
|
|
28
|
+
vec4 next = texture2D(atlas_data, v_texcoord+vec2(+1.0,0.0)/viewport);
|
|
29
|
+
|
|
30
|
+
float r = current.r;
|
|
31
|
+
float g = current.g;
|
|
32
|
+
float b = current.b;
|
|
33
|
+
|
|
34
|
+
if( v_offset < 1.0 )
|
|
35
|
+
{
|
|
36
|
+
float z = v_offset;
|
|
37
|
+
r = mix(current.r, previous.b, z);
|
|
38
|
+
g = mix(current.g, current.r, z);
|
|
39
|
+
b = mix(current.b, current.g, z);
|
|
40
|
+
}
|
|
41
|
+
else if( v_offset < 2.0 )
|
|
42
|
+
{
|
|
43
|
+
float z = v_offset - 1.0;
|
|
44
|
+
r = mix(previous.b, previous.g, z);
|
|
45
|
+
g = mix(current.r, previous.b, z);
|
|
46
|
+
b = mix(current.g, current.r, z);
|
|
47
|
+
}
|
|
48
|
+
else //if( v_offset <= 1.0 )
|
|
49
|
+
{
|
|
50
|
+
float z = v_offset - 2.0;
|
|
51
|
+
r = mix(previous.g, previous.r, z);
|
|
52
|
+
g = mix(previous.b, previous.g, z);
|
|
53
|
+
b = mix(current.r, previous.b, z);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
float t = max(max(r,g),b);
|
|
57
|
+
vec4 color = vec4(v_color.rgb, (r+g+b)/3.0);
|
|
58
|
+
color = t*color + (1.0-t)*vec4(r,g,b, min(min(r,g),b));
|
|
59
|
+
gl_FragColor = vec4( color.rgb, v_color.a*color.a);
|
|
60
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// ----------------------------------------------------------------------------
|
|
2
|
+
// Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
|
|
3
|
+
// Distributed under the (new) BSD License.
|
|
4
|
+
// ----------------------------------------------------------------------------
|
|
5
|
+
|
|
6
|
+
// Externs
|
|
7
|
+
// ------------------------------------
|
|
8
|
+
// vec2 origin;
|
|
9
|
+
// vec2 position;
|
|
10
|
+
// vec2 texcoord;
|
|
11
|
+
// vec4 color;
|
|
12
|
+
|
|
13
|
+
// Varyings
|
|
14
|
+
// ------------------------------------
|
|
15
|
+
varying vec4 v_color;
|
|
16
|
+
varying float v_offset;
|
|
17
|
+
varying vec2 v_texcoord;
|
|
18
|
+
|
|
19
|
+
// Main
|
|
20
|
+
// ------------------------------------
|
|
21
|
+
void main()
|
|
22
|
+
{
|
|
23
|
+
fetch_uniforms();
|
|
24
|
+
|
|
25
|
+
gl_Position = <transform(origin)>;
|
|
26
|
+
v_color = color;
|
|
27
|
+
v_texcoord = texcoord;
|
|
28
|
+
<viewport.transform>;
|
|
29
|
+
|
|
30
|
+
// We set actual position after transform
|
|
31
|
+
v_offset = 3.0*(offset + origin.x - int(origin.x));
|
|
32
|
+
gl_Position = gl_Position + vec4(2.0*position/<viewport.viewport_global>.zw,0,0);
|
|
33
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
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> : "arrow", "asterisk", "chevron", "clover", "club",
|
|
8
|
+
// "cross", "diamond", "disc", "ellipse", "hbar",
|
|
9
|
+
// "heart", "infinity", "pin", "ring", "spade",
|
|
10
|
+
// "square", "tag", "triangle", "vbar"
|
|
11
|
+
// ----------------------------------------------------------------------------
|
|
12
|
+
#include "math/constants.h"
|
|
13
|
+
#include "markers/markers.glsl"
|
|
14
|
+
#include "antialias/antialias.h"
|
|
15
|
+
|
|
16
|
+
// Varyings
|
|
17
|
+
// ------------------------------------
|
|
18
|
+
varying float v_antialias;
|
|
19
|
+
varying float v_linewidth;
|
|
20
|
+
varying float v_size;
|
|
21
|
+
varying vec4 v_fg_color;
|
|
22
|
+
varying vec4 v_bg_color;
|
|
23
|
+
varying vec2 v_orientation;
|
|
24
|
+
|
|
25
|
+
// Main (hooked)
|
|
26
|
+
// ------------------------------------
|
|
27
|
+
void main()
|
|
28
|
+
{
|
|
29
|
+
vec2 P = gl_PointCoord.xy - vec2(0.5,0.5);
|
|
30
|
+
P = vec2(v_orientation.x*P.x - v_orientation.y*P.y,
|
|
31
|
+
v_orientation.y*P.x + v_orientation.x*P.y);
|
|
32
|
+
float point_size = SQRT_2*v_size + 2. * (v_linewidth + 1.5*v_antialias);
|
|
33
|
+
float distance = marker_<marker>(P*point_size, v_size);
|
|
34
|
+
gl_FragColor = <paint>(distance, v_linewidth, v_antialias, v_fg_color, v_bg_color);
|
|
35
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
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
|
+
#version 120
|
|
10
|
+
#include "math/constants.glsl"
|
|
11
|
+
|
|
12
|
+
// Collection externs
|
|
13
|
+
// ------------------------------------
|
|
14
|
+
// extern vec2 position;
|
|
15
|
+
// extern float size;
|
|
16
|
+
// extern vec4 fg_color;
|
|
17
|
+
// extern vec4 bg_color;
|
|
18
|
+
// extern float orientation;
|
|
19
|
+
// extern float antialias;
|
|
20
|
+
// extern float linewidth;
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
// Varyings
|
|
24
|
+
// ------------------------------------
|
|
25
|
+
varying float v_size;
|
|
26
|
+
varying vec4 v_fg_color;
|
|
27
|
+
varying vec4 v_bg_color;
|
|
28
|
+
varying vec2 v_orientation;
|
|
29
|
+
varying float v_antialias;
|
|
30
|
+
varying float v_linewidth;
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
// Main (hooked)
|
|
34
|
+
// ------------------------------------
|
|
35
|
+
void main (void)
|
|
36
|
+
{
|
|
37
|
+
fetch_uniforms();
|
|
38
|
+
|
|
39
|
+
v_size = size;
|
|
40
|
+
v_linewidth = linewidth;
|
|
41
|
+
v_antialias = antialias;
|
|
42
|
+
v_fg_color = fg_color;
|
|
43
|
+
v_bg_color = bg_color;
|
|
44
|
+
v_orientation = vec2(cos(orientation), sin(orientation));
|
|
45
|
+
|
|
46
|
+
gl_Position = <transform>;
|
|
47
|
+
gl_PointSize = M_SQRT2 * size + 2.0 * (linewidth + 1.5*antialias);
|
|
48
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
// ----------------------------------------------------------------------------
|
|
2
|
+
// Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
|
|
3
|
+
// Distributed under the (new) BSD License.
|
|
4
|
+
// ----------------------------------------------------------------------------
|
|
5
|
+
#include "antialias/antialias.glsl"
|
|
6
|
+
#include "antialias/caps.glsl"
|
|
7
|
+
|
|
8
|
+
// Varyings
|
|
9
|
+
// ------------------------------------
|
|
10
|
+
varying vec2 v_caps;
|
|
11
|
+
varying vec4 v_color;
|
|
12
|
+
varying float v_length;
|
|
13
|
+
varying vec2 v_texcoord;
|
|
14
|
+
varying float v_linewidth;
|
|
15
|
+
varying float v_antialias;
|
|
16
|
+
varying float v_miter_limit;
|
|
17
|
+
varying vec2 v_bevel_distance;
|
|
18
|
+
|
|
19
|
+
void main()
|
|
20
|
+
{
|
|
21
|
+
float distance = v_texcoord.y;
|
|
22
|
+
|
|
23
|
+
if (v_caps.x < 0.0)
|
|
24
|
+
{
|
|
25
|
+
gl_FragColor = cap(1, v_texcoord.x, v_texcoord.y,
|
|
26
|
+
v_linewidth, v_antialias, v_color);
|
|
27
|
+
// Do not return here or clipping won't be enforced
|
|
28
|
+
// return;
|
|
29
|
+
}
|
|
30
|
+
else if (v_caps.y > v_length)
|
|
31
|
+
{
|
|
32
|
+
gl_FragColor = cap(1, v_texcoord.x-v_length, v_texcoord.y,
|
|
33
|
+
v_linewidth, v_antialias, v_color);
|
|
34
|
+
// Do not return here or clipping won't be enforced
|
|
35
|
+
// return;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// Round join (instead of miter)
|
|
39
|
+
// if (v_texcoord.x < 0.0) { distance = length(v_texcoord); }
|
|
40
|
+
// else if(v_texcoord.x > v_length) { distance = length(v_texcoord - vec2(v_length, 0.0)); }
|
|
41
|
+
|
|
42
|
+
else {
|
|
43
|
+
// Miter limit
|
|
44
|
+
float t = (v_miter_limit-1.0)*(v_linewidth/2.0) + v_antialias;
|
|
45
|
+
if( (v_texcoord.x < 0.0) && (v_bevel_distance.x > (abs(distance) + t)) )
|
|
46
|
+
{
|
|
47
|
+
distance = v_bevel_distance.x - t;
|
|
48
|
+
}
|
|
49
|
+
else if( (v_texcoord.x > v_length) && (v_bevel_distance.y > (abs(distance) + t)) )
|
|
50
|
+
{
|
|
51
|
+
distance = v_bevel_distance.y - t;
|
|
52
|
+
}
|
|
53
|
+
gl_FragColor = stroke(distance, v_linewidth, v_antialias, v_color);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
@@ -0,0 +1,166 @@
|
|
|
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 "misc/viewport-NDC.glsl"
|
|
10
|
+
#include "math/point-to-line-distance.glsl"
|
|
11
|
+
#include "math/point-to-line-projection.glsl"
|
|
12
|
+
|
|
13
|
+
// Externs
|
|
14
|
+
// ------------------------------------
|
|
15
|
+
// extern vec3 p0;
|
|
16
|
+
// extern vec3 p1;
|
|
17
|
+
// extern vec3 p2;
|
|
18
|
+
// extern vec3 p3;
|
|
19
|
+
// extern vec2 uv;
|
|
20
|
+
// extern vec2 caps;
|
|
21
|
+
// extern vec4 color;
|
|
22
|
+
// extern float antialias;
|
|
23
|
+
// extern float linewidth;
|
|
24
|
+
// extern float miter_limit;
|
|
25
|
+
// extern vec4 viewport;
|
|
26
|
+
// vec4 transform(vec3 position);
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
// Varyings
|
|
30
|
+
// ------------------------------------
|
|
31
|
+
varying vec2 v_caps;
|
|
32
|
+
varying vec4 v_color;
|
|
33
|
+
|
|
34
|
+
varying float v_antialias;
|
|
35
|
+
varying float v_linewidth;
|
|
36
|
+
|
|
37
|
+
varying float v_length;
|
|
38
|
+
varying vec2 v_texcoord;
|
|
39
|
+
varying float v_miter_limit;
|
|
40
|
+
varying vec2 v_bevel_distance;
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
// Main
|
|
44
|
+
// ------------------------------------
|
|
45
|
+
void main (void)
|
|
46
|
+
{
|
|
47
|
+
// This function is externally generated
|
|
48
|
+
fetch_uniforms();
|
|
49
|
+
|
|
50
|
+
v_color = color;
|
|
51
|
+
v_caps = caps;
|
|
52
|
+
v_linewidth = linewidth;
|
|
53
|
+
v_antialias = antialias;
|
|
54
|
+
v_miter_limit = miter_limit;
|
|
55
|
+
|
|
56
|
+
// transform prev/curr/next
|
|
57
|
+
vec4 p0_ = $transform(vec4(p0, 1));
|
|
58
|
+
vec4 p1_ = $transform(vec4(p1, 1));
|
|
59
|
+
vec4 p2_ = $transform(vec4(p2, 1));
|
|
60
|
+
vec4 p3_ = $transform(vec4(p3, 1));
|
|
61
|
+
|
|
62
|
+
// prev/curr/next in viewport coordinates
|
|
63
|
+
vec2 _p0 = NDC_to_viewport(p0_, viewport.zw);
|
|
64
|
+
vec2 _p1 = NDC_to_viewport(p1_, viewport.zw);
|
|
65
|
+
vec2 _p2 = NDC_to_viewport(p2_, viewport.zw);
|
|
66
|
+
vec2 _p3 = NDC_to_viewport(p3_, viewport.zw);
|
|
67
|
+
|
|
68
|
+
v_antialias = antialias;
|
|
69
|
+
v_linewidth = linewidth;
|
|
70
|
+
v_miter_limit = miter_limit;
|
|
71
|
+
|
|
72
|
+
// Determine the direction of each of the 3 segments (previous, current, next)
|
|
73
|
+
vec2 v0 = normalize(_p1 - _p0);
|
|
74
|
+
vec2 v1 = normalize(_p2 - _p1);
|
|
75
|
+
vec2 v2 = normalize(_p3 - _p2);
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
// Determine the normal of each of the 3 segments (previous, current, next)
|
|
79
|
+
vec2 n0 = vec2(-v0.y, v0.x);
|
|
80
|
+
vec2 n1 = vec2(-v1.y, v1.x);
|
|
81
|
+
vec2 n2 = vec2(-v2.y, v2.x);
|
|
82
|
+
|
|
83
|
+
// Determine miter lines by averaging the normals of the 2 segments
|
|
84
|
+
vec2 miter_a;
|
|
85
|
+
vec2 miter_b;
|
|
86
|
+
const float epsilon = 0.1;
|
|
87
|
+
|
|
88
|
+
// WARN: Here we test if v0 = -v1 relatively to epsilon
|
|
89
|
+
if( length(v0+v1) < epsilon ) {
|
|
90
|
+
miter_a = n1;
|
|
91
|
+
} else {
|
|
92
|
+
miter_a = normalize(n0 + n1); // miter at start of current segment
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// WARN: Here we test if v1 = -v2 relatively to epsilon
|
|
96
|
+
if( length(v1+v2) < epsilon ) {
|
|
97
|
+
miter_b = n1;
|
|
98
|
+
} else {
|
|
99
|
+
miter_b = normalize(n1 + n2); // miter at end of current segment
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// Determine the length of the miter by projecting it onto normal
|
|
103
|
+
vec2 p,v;
|
|
104
|
+
float d, z;
|
|
105
|
+
float w = linewidth/2.0 + 1.5*antialias;
|
|
106
|
+
v_length = length(_p2-_p1);
|
|
107
|
+
float m = miter_limit*linewidth/2.0;
|
|
108
|
+
float length_a = w / dot(miter_a, n1);
|
|
109
|
+
float length_b = w / dot(miter_b, n1);
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
// Angle between prev and current segment (sign only)
|
|
113
|
+
float d0 = +1.0;
|
|
114
|
+
if( (v0.x*v1.y - v0.y*v1.x) > 0. ) { d0 = -1.0;}
|
|
115
|
+
|
|
116
|
+
// Angle between current and next segment (sign only)
|
|
117
|
+
float d1 = +1.0;
|
|
118
|
+
if( (v1.x*v2.y - v1.y*v2.x) > 0. ) { d1 = -1.0; }
|
|
119
|
+
|
|
120
|
+
// Adjust vertex position
|
|
121
|
+
if (uv.x == -1.) {
|
|
122
|
+
z = p1_.z / p1_.w;
|
|
123
|
+
|
|
124
|
+
// Cap at start
|
|
125
|
+
if( p0 == p1 ) {
|
|
126
|
+
p = _p1 - w*v1 + uv.y* w*n1;
|
|
127
|
+
v_texcoord = vec2(-w, uv.y*w);
|
|
128
|
+
v_caps.x = v_texcoord.x;
|
|
129
|
+
// Regular join
|
|
130
|
+
} else {
|
|
131
|
+
p = _p1 + uv.y * length_a * miter_a;
|
|
132
|
+
v_texcoord = vec2(point_to_line_projection(_p1,_p2,p), uv.y*w);
|
|
133
|
+
v_caps.x = 1.0;
|
|
134
|
+
}
|
|
135
|
+
if( p2 == p3 ) {
|
|
136
|
+
v_caps.y = v_texcoord.x;
|
|
137
|
+
} else {
|
|
138
|
+
v_caps.y = 1.0;
|
|
139
|
+
}
|
|
140
|
+
v_bevel_distance.x = uv.y*d0*point_to_line_distance(_p1+d0*n0*w, _p1+d0*n1*w, p);
|
|
141
|
+
v_bevel_distance.y = -point_to_line_distance(_p2+d1*n1*w, _p2+d1*n2*w, p);
|
|
142
|
+
} else {
|
|
143
|
+
z = p2_.z / p2_.w;
|
|
144
|
+
|
|
145
|
+
// Cap at end
|
|
146
|
+
if( p2 == p3 ) {
|
|
147
|
+
p = _p2 + w*v1 + uv.y*w*n1;
|
|
148
|
+
v_texcoord = vec2(v_length+w, uv.y*w);
|
|
149
|
+
v_caps.y = v_texcoord.x;
|
|
150
|
+
// Regular join
|
|
151
|
+
} else {
|
|
152
|
+
p = _p2 + uv.y*length_b * miter_b;
|
|
153
|
+
v_texcoord = vec2(point_to_line_projection(_p1,_p2,p), uv.y*w);
|
|
154
|
+
v_caps.y = 1.0;
|
|
155
|
+
}
|
|
156
|
+
if( p0 == p1 ) {
|
|
157
|
+
v_caps.x = v_texcoord.x;
|
|
158
|
+
} else {
|
|
159
|
+
v_caps.x = 1.0;
|
|
160
|
+
}
|
|
161
|
+
v_bevel_distance.x = -point_to_line_distance(_p1+d0*n0*w, _p1+d0*n1*w, p);
|
|
162
|
+
v_bevel_distance.y = uv.y*d1*point_to_line_distance(_p2+d1*n1*w, _p2+d1*n2*w, p);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
gl_Position = viewport_to_NDC(vec3(p,z), viewport.zw);
|
|
166
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// ----------------------------------------------------------------------------
|
|
2
|
+
// Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
|
|
3
|
+
// Distributed under the (new) BSD License.
|
|
4
|
+
// ----------------------------------------------------------------------------
|
|
5
|
+
#include "markers/disc.glsl"
|
|
6
|
+
#include "antialias/filled.glsl"
|
|
7
|
+
|
|
8
|
+
// Varyings
|
|
9
|
+
// ------------------------------------
|
|
10
|
+
varying float v_size;
|
|
11
|
+
varying vec4 v_color;
|
|
12
|
+
|
|
13
|
+
// Main
|
|
14
|
+
// ------------------------------------
|
|
15
|
+
void main()
|
|
16
|
+
{
|
|
17
|
+
vec2 P = gl_PointCoord.xy - vec2(0.5,0.5);
|
|
18
|
+
float point_size = v_size + 2. * (1.0 + 1.5*1.0);
|
|
19
|
+
float distance = marker_disc(P*point_size, v_size);
|
|
20
|
+
gl_FragColor = filled(distance, 1.0, 1.0, v_color);
|
|
21
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
// ----------------------------------------------------------------------------
|
|
2
|
+
// Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
|
|
3
|
+
// Distributed under the (new) BSD License.
|
|
4
|
+
// ----------------------------------------------------------------------------
|
|
5
|
+
|
|
6
|
+
// Externs
|
|
7
|
+
// ------------------------------------
|
|
8
|
+
// extern vec3 position;
|
|
9
|
+
// extern float size;
|
|
10
|
+
// extern vec4 fg_color;
|
|
11
|
+
// extern vec4 bg_color;
|
|
12
|
+
// extern float orientation;
|
|
13
|
+
// extern float antialias;
|
|
14
|
+
// extern float linewidth;
|
|
15
|
+
// extern vec4 transform(vec3);
|
|
16
|
+
|
|
17
|
+
// Varyings
|
|
18
|
+
// ------------------------------------
|
|
19
|
+
varying float v_size;
|
|
20
|
+
varying vec4 v_color;
|
|
21
|
+
varying float v_linewidth;
|
|
22
|
+
varying float v_antialias;
|
|
23
|
+
|
|
24
|
+
// Main (hooked)
|
|
25
|
+
// ------------------------------------
|
|
26
|
+
void main (void)
|
|
27
|
+
{
|
|
28
|
+
fetch_uniforms();
|
|
29
|
+
|
|
30
|
+
v_size = size;
|
|
31
|
+
v_color = color;
|
|
32
|
+
|
|
33
|
+
gl_Position = $transform(vec4(position, 1));
|
|
34
|
+
gl_PointSize = size + 2.0 * (1.0 + 1.5*1.0);
|
|
35
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// ----------------------------------------------------------------------------
|
|
2
|
+
// Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
|
|
3
|
+
// Distributed under the (new) BSD License.
|
|
4
|
+
// ----------------------------------------------------------------------------
|
|
5
|
+
#include "antialias/caps.glsl"
|
|
6
|
+
#include "antialias/antialias.glsl"
|
|
7
|
+
|
|
8
|
+
// Varyings
|
|
9
|
+
// ------------------------------------
|
|
10
|
+
varying float v_length;
|
|
11
|
+
varying float v_linewidth;
|
|
12
|
+
varying float v_antialias;
|
|
13
|
+
varying vec2 v_texcoord;
|
|
14
|
+
varying vec4 v_color;
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
// Main
|
|
18
|
+
// ------------------------------------
|
|
19
|
+
void main (void)
|
|
20
|
+
{
|
|
21
|
+
if (v_texcoord.x < 0.0) {
|
|
22
|
+
gl_FragColor = cap( CAP_ROUND,
|
|
23
|
+
v_texcoord.x, v_texcoord.y,
|
|
24
|
+
v_linewidth, v_antialias, v_color);
|
|
25
|
+
} else if(v_texcoord.x > v_length) {
|
|
26
|
+
gl_FragColor = cap( CAP_ROUND,
|
|
27
|
+
v_texcoord.x-v_length, v_texcoord.y,
|
|
28
|
+
v_linewidth, v_antialias, v_color);
|
|
29
|
+
} else {
|
|
30
|
+
gl_FragColor = stroke(v_texcoord.y, v_linewidth, v_antialias, v_color);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
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 "misc/viewport-NDC.glsl"
|
|
10
|
+
|
|
11
|
+
// Externs
|
|
12
|
+
// ------------------------------------
|
|
13
|
+
// extern vec3 P0;
|
|
14
|
+
// extern vec3 P1;
|
|
15
|
+
// extern float index;
|
|
16
|
+
// extern vec4 color;
|
|
17
|
+
// extern float antialias;
|
|
18
|
+
// extern float linewidth;
|
|
19
|
+
// extern vec4 viewport;
|
|
20
|
+
// vec4 transform(vec3 position);
|
|
21
|
+
|
|
22
|
+
// Varyings
|
|
23
|
+
// ------------------------------------
|
|
24
|
+
varying float v_length;
|
|
25
|
+
varying float v_antialias;
|
|
26
|
+
varying float v_linewidth;
|
|
27
|
+
varying vec2 v_texcoord;
|
|
28
|
+
varying vec4 v_color;
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
// Main
|
|
33
|
+
// ------------------------------------
|
|
34
|
+
void main (void)
|
|
35
|
+
{
|
|
36
|
+
// This function is externally generated
|
|
37
|
+
fetch_uniforms();
|
|
38
|
+
v_linewidth = linewidth;
|
|
39
|
+
v_antialias = antialias;
|
|
40
|
+
v_color = color;
|
|
41
|
+
|
|
42
|
+
vec4 P0_ = $transform(vec4(P0, 1));
|
|
43
|
+
vec4 P1_ = $transform(vec4(P1, 1));
|
|
44
|
+
|
|
45
|
+
// p0/p1 in viewport coordinates
|
|
46
|
+
vec2 p0 = NDC_to_viewport(P0_, viewport.zw);
|
|
47
|
+
vec2 p1 = NDC_to_viewport(P1_, viewport.zw);
|
|
48
|
+
|
|
49
|
+
//
|
|
50
|
+
vec2 position;
|
|
51
|
+
vec2 T = p1 - p0;
|
|
52
|
+
v_length = length(T);
|
|
53
|
+
float w = v_linewidth/2.0 + 1.5*v_antialias;
|
|
54
|
+
T = w*normalize(T);
|
|
55
|
+
float z;
|
|
56
|
+
if( index < 0.5 ) {
|
|
57
|
+
position = vec2( p0.x-T.y-T.x, p0.y+T.x-T.y);
|
|
58
|
+
v_texcoord = vec2(-w, +w);
|
|
59
|
+
z = P0.z;
|
|
60
|
+
} else if( index < 1.5 ) {
|
|
61
|
+
position = vec2(p0.x+T.y-T.x, p0.y-T.x-T.y);
|
|
62
|
+
v_texcoord= vec2(-w, -w);
|
|
63
|
+
z = P0.z;
|
|
64
|
+
} else if( index < 2.5 ) {
|
|
65
|
+
position = vec2( p1.x+T.y+T.x, p1.y-T.x+T.y);
|
|
66
|
+
v_texcoord= vec2(v_length+w, -w);
|
|
67
|
+
z = P1.z;
|
|
68
|
+
} else {
|
|
69
|
+
position = vec2( p1.x-T.y+T.x, p1.y+T.x+T.y);
|
|
70
|
+
v_texcoord = vec2(v_length+w, +w);
|
|
71
|
+
z = P1.z;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
gl_Position = viewport_to_NDC(vec3(position,z), viewport.zw);
|
|
75
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
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> : "arrow", "asterisk", "chevron", "clover", "club",
|
|
8
|
+
// "cross", "diamond", "disc", "ellipse", "hbar",
|
|
9
|
+
// "heart", "infinity", "pin", "ring", "spade",
|
|
10
|
+
// "square", "tag", "triangle", "vbar"
|
|
11
|
+
// ----------------------------------------------------------------------------
|
|
12
|
+
#include "math/constants.glsl"
|
|
13
|
+
#include "markers/markers.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_texcoord;
|
|
22
|
+
varying vec4 v_fg_color;
|
|
23
|
+
varying vec4 v_bg_color;
|
|
24
|
+
varying vec2 v_orientation;
|
|
25
|
+
|
|
26
|
+
// Main (hooked)
|
|
27
|
+
// ------------------------------------
|
|
28
|
+
void main()
|
|
29
|
+
{
|
|
30
|
+
<viewport.clipping>;
|
|
31
|
+
|
|
32
|
+
vec2 P = gl_PointCoord.xy - vec2(0.5,0.5);
|
|
33
|
+
P = vec2(v_orientation.x*P.x - v_orientation.y*P.y,
|
|
34
|
+
v_orientation.y*P.x + v_orientation.x*P.y);
|
|
35
|
+
float point_size = M_SQRT2*v_size + 2. * (v_linewidth + 1.5*v_antialias);
|
|
36
|
+
float distance = marker_<marker>(P*point_size, v_size);
|
|
37
|
+
gl_FragColor = <paint>(distance, v_linewidth, v_antialias, v_fg_color, v_bg_color);
|
|
38
|
+
}
|