vispy 0.15.0__cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of vispy might be problematic. Click here for more details.
- vispy/__init__.py +33 -0
- vispy/app/__init__.py +15 -0
- vispy/app/_default_app.py +76 -0
- vispy/app/_detect_eventloop.py +148 -0
- vispy/app/application.py +263 -0
- vispy/app/backends/__init__.py +52 -0
- vispy/app/backends/_egl.py +264 -0
- vispy/app/backends/_glfw.py +513 -0
- vispy/app/backends/_jupyter_rfb.py +278 -0
- vispy/app/backends/_offscreen_util.py +121 -0
- vispy/app/backends/_osmesa.py +235 -0
- vispy/app/backends/_pyglet.py +451 -0
- vispy/app/backends/_pyqt4.py +36 -0
- vispy/app/backends/_pyqt5.py +36 -0
- vispy/app/backends/_pyqt6.py +40 -0
- vispy/app/backends/_pyside.py +37 -0
- vispy/app/backends/_pyside2.py +52 -0
- vispy/app/backends/_pyside6.py +53 -0
- vispy/app/backends/_qt.py +1003 -0
- vispy/app/backends/_sdl2.py +444 -0
- vispy/app/backends/_template.py +244 -0
- vispy/app/backends/_test.py +8 -0
- vispy/app/backends/_tk.py +800 -0
- vispy/app/backends/_wx.py +476 -0
- vispy/app/backends/tests/__init__.py +0 -0
- vispy/app/backends/tests/test_offscreen_util.py +52 -0
- vispy/app/backends/tests/test_rfb.py +77 -0
- vispy/app/base.py +294 -0
- vispy/app/canvas.py +828 -0
- vispy/app/qt.py +92 -0
- vispy/app/tests/__init__.py +0 -0
- vispy/app/tests/qt-designer.ui +58 -0
- vispy/app/tests/test_app.py +442 -0
- vispy/app/tests/test_backends.py +164 -0
- vispy/app/tests/test_canvas.py +122 -0
- vispy/app/tests/test_context.py +92 -0
- vispy/app/tests/test_qt.py +47 -0
- vispy/app/tests/test_simultaneous.py +134 -0
- vispy/app/timer.py +174 -0
- vispy/color/__init__.py +17 -0
- vispy/color/_color_dict.py +193 -0
- vispy/color/color_array.py +447 -0
- vispy/color/color_space.py +181 -0
- vispy/color/colormap.py +1213 -0
- vispy/color/tests/__init__.py +0 -0
- vispy/color/tests/test_color.py +378 -0
- vispy/conftest.py +12 -0
- vispy/ext/__init__.py +0 -0
- vispy/ext/cocoapy.py +1522 -0
- vispy/ext/cubehelix.py +138 -0
- vispy/ext/egl.py +375 -0
- vispy/ext/fontconfig.py +118 -0
- vispy/ext/gdi32plus.py +206 -0
- vispy/ext/osmesa.py +105 -0
- vispy/geometry/__init__.py +23 -0
- vispy/geometry/_triangulation_debugger.py +171 -0
- vispy/geometry/calculations.py +162 -0
- vispy/geometry/curves.py +399 -0
- vispy/geometry/generation.py +643 -0
- vispy/geometry/isocurve.py +175 -0
- vispy/geometry/isosurface.py +465 -0
- vispy/geometry/meshdata.py +700 -0
- vispy/geometry/normals.py +78 -0
- vispy/geometry/parametric.py +56 -0
- vispy/geometry/polygon.py +137 -0
- vispy/geometry/rect.py +210 -0
- vispy/geometry/tests/__init__.py +0 -0
- vispy/geometry/tests/test_calculations.py +23 -0
- vispy/geometry/tests/test_generation.py +56 -0
- vispy/geometry/tests/test_meshdata.py +106 -0
- vispy/geometry/tests/test_triangulation.py +594 -0
- vispy/geometry/torusknot.py +142 -0
- vispy/geometry/triangulation.py +876 -0
- vispy/gloo/__init__.py +56 -0
- vispy/gloo/buffer.py +505 -0
- vispy/gloo/context.py +272 -0
- vispy/gloo/framebuffer.py +257 -0
- vispy/gloo/gl/__init__.py +234 -0
- vispy/gloo/gl/_constants.py +332 -0
- vispy/gloo/gl/_es2.py +986 -0
- vispy/gloo/gl/_gl2.py +1365 -0
- vispy/gloo/gl/_proxy.py +499 -0
- vispy/gloo/gl/_pyopengl2.py +362 -0
- vispy/gloo/gl/dummy.py +24 -0
- vispy/gloo/gl/es2.py +62 -0
- vispy/gloo/gl/gl2.py +98 -0
- vispy/gloo/gl/glplus.py +168 -0
- vispy/gloo/gl/pyopengl2.py +97 -0
- vispy/gloo/gl/tests/__init__.py +0 -0
- vispy/gloo/gl/tests/test_basics.py +282 -0
- vispy/gloo/gl/tests/test_functionality.py +568 -0
- vispy/gloo/gl/tests/test_names.py +246 -0
- vispy/gloo/gl/tests/test_use.py +71 -0
- vispy/gloo/glir.py +1824 -0
- vispy/gloo/globject.py +101 -0
- vispy/gloo/preprocessor.py +67 -0
- vispy/gloo/program.py +543 -0
- vispy/gloo/tests/__init__.py +0 -0
- vispy/gloo/tests/test_buffer.py +558 -0
- vispy/gloo/tests/test_context.py +119 -0
- vispy/gloo/tests/test_framebuffer.py +195 -0
- vispy/gloo/tests/test_glir.py +307 -0
- vispy/gloo/tests/test_globject.py +35 -0
- vispy/gloo/tests/test_program.py +302 -0
- vispy/gloo/tests/test_texture.py +732 -0
- vispy/gloo/tests/test_use_gloo.py +187 -0
- vispy/gloo/tests/test_util.py +60 -0
- vispy/gloo/tests/test_wrappers.py +261 -0
- vispy/gloo/texture.py +1046 -0
- vispy/gloo/util.py +129 -0
- vispy/gloo/wrappers.py +762 -0
- vispy/glsl/__init__.py +42 -0
- vispy/glsl/antialias/antialias.glsl +7 -0
- vispy/glsl/antialias/cap-butt.glsl +31 -0
- vispy/glsl/antialias/cap-round.glsl +29 -0
- vispy/glsl/antialias/cap-square.glsl +30 -0
- vispy/glsl/antialias/cap-triangle-in.glsl +30 -0
- vispy/glsl/antialias/cap-triangle-out.glsl +30 -0
- vispy/glsl/antialias/cap.glsl +67 -0
- vispy/glsl/antialias/caps.glsl +67 -0
- vispy/glsl/antialias/filled.glsl +50 -0
- vispy/glsl/antialias/outline.glsl +40 -0
- vispy/glsl/antialias/stroke.glsl +43 -0
- vispy/glsl/arrowheads/angle.glsl +99 -0
- vispy/glsl/arrowheads/arrowheads.frag +60 -0
- vispy/glsl/arrowheads/arrowheads.glsl +12 -0
- vispy/glsl/arrowheads/arrowheads.vert +83 -0
- vispy/glsl/arrowheads/curved.glsl +48 -0
- vispy/glsl/arrowheads/inhibitor.glsl +26 -0
- vispy/glsl/arrowheads/stealth.glsl +46 -0
- vispy/glsl/arrowheads/triangle.glsl +97 -0
- vispy/glsl/arrowheads/util.glsl +13 -0
- vispy/glsl/arrows/angle-30.glsl +12 -0
- vispy/glsl/arrows/angle-60.glsl +12 -0
- vispy/glsl/arrows/angle-90.glsl +12 -0
- vispy/glsl/arrows/arrow.frag +39 -0
- vispy/glsl/arrows/arrow.vert +49 -0
- vispy/glsl/arrows/arrows.glsl +17 -0
- vispy/glsl/arrows/common.glsl +187 -0
- vispy/glsl/arrows/curved.glsl +63 -0
- vispy/glsl/arrows/stealth.glsl +50 -0
- vispy/glsl/arrows/triangle-30.glsl +12 -0
- vispy/glsl/arrows/triangle-60.glsl +12 -0
- vispy/glsl/arrows/triangle-90.glsl +12 -0
- vispy/glsl/arrows/util.glsl +98 -0
- vispy/glsl/build_spatial_filters.py +660 -0
- vispy/glsl/collections/agg-fast-path.frag +20 -0
- vispy/glsl/collections/agg-fast-path.vert +78 -0
- vispy/glsl/collections/agg-glyph.frag +60 -0
- vispy/glsl/collections/agg-glyph.vert +33 -0
- vispy/glsl/collections/agg-marker.frag +35 -0
- vispy/glsl/collections/agg-marker.vert +48 -0
- vispy/glsl/collections/agg-path.frag +55 -0
- vispy/glsl/collections/agg-path.vert +166 -0
- vispy/glsl/collections/agg-point.frag +21 -0
- vispy/glsl/collections/agg-point.vert +35 -0
- vispy/glsl/collections/agg-segment.frag +32 -0
- vispy/glsl/collections/agg-segment.vert +75 -0
- vispy/glsl/collections/marker.frag +38 -0
- vispy/glsl/collections/marker.vert +48 -0
- vispy/glsl/collections/raw-path.frag +15 -0
- vispy/glsl/collections/raw-path.vert +24 -0
- vispy/glsl/collections/raw-point.frag +14 -0
- vispy/glsl/collections/raw-point.vert +31 -0
- vispy/glsl/collections/raw-segment.frag +18 -0
- vispy/glsl/collections/raw-segment.vert +26 -0
- vispy/glsl/collections/raw-triangle.frag +13 -0
- vispy/glsl/collections/raw-triangle.vert +26 -0
- vispy/glsl/collections/sdf-glyph-ticks.vert +69 -0
- vispy/glsl/collections/sdf-glyph.frag +80 -0
- vispy/glsl/collections/sdf-glyph.vert +59 -0
- vispy/glsl/collections/tick-labels.vert +71 -0
- vispy/glsl/colormaps/autumn.glsl +20 -0
- vispy/glsl/colormaps/blues.glsl +20 -0
- vispy/glsl/colormaps/color-space.glsl +17 -0
- vispy/glsl/colormaps/colormaps.glsl +24 -0
- vispy/glsl/colormaps/cool.glsl +20 -0
- vispy/glsl/colormaps/fire.glsl +21 -0
- vispy/glsl/colormaps/gray.glsl +20 -0
- vispy/glsl/colormaps/greens.glsl +20 -0
- vispy/glsl/colormaps/hot.glsl +22 -0
- vispy/glsl/colormaps/ice.glsl +20 -0
- vispy/glsl/colormaps/icefire.glsl +23 -0
- vispy/glsl/colormaps/parse.py +40 -0
- vispy/glsl/colormaps/reds.glsl +20 -0
- vispy/glsl/colormaps/spring.glsl +20 -0
- vispy/glsl/colormaps/summer.glsl +20 -0
- vispy/glsl/colormaps/user.glsl +22 -0
- vispy/glsl/colormaps/util.glsl +41 -0
- vispy/glsl/colormaps/wheel.glsl +21 -0
- vispy/glsl/colormaps/winter.glsl +20 -0
- vispy/glsl/lines/agg.frag +320 -0
- vispy/glsl/lines/agg.vert +241 -0
- vispy/glsl/markers/arrow.glsl +12 -0
- vispy/glsl/markers/asterisk.glsl +16 -0
- vispy/glsl/markers/chevron.glsl +14 -0
- vispy/glsl/markers/clover.glsl +20 -0
- vispy/glsl/markers/club.glsl +31 -0
- vispy/glsl/markers/cross.glsl +17 -0
- vispy/glsl/markers/diamond.glsl +12 -0
- vispy/glsl/markers/disc.glsl +9 -0
- vispy/glsl/markers/ellipse.glsl +67 -0
- vispy/glsl/markers/hbar.glsl +9 -0
- vispy/glsl/markers/heart.glsl +15 -0
- vispy/glsl/markers/infinity.glsl +15 -0
- vispy/glsl/markers/marker-sdf.frag +74 -0
- vispy/glsl/markers/marker-sdf.vert +41 -0
- vispy/glsl/markers/marker.frag +36 -0
- vispy/glsl/markers/marker.vert +46 -0
- vispy/glsl/markers/markers.glsl +24 -0
- vispy/glsl/markers/pin.glsl +18 -0
- vispy/glsl/markers/ring.glsl +11 -0
- vispy/glsl/markers/spade.glsl +28 -0
- vispy/glsl/markers/square.glsl +10 -0
- vispy/glsl/markers/tag.glsl +11 -0
- vispy/glsl/markers/triangle.glsl +14 -0
- vispy/glsl/markers/vbar.glsl +9 -0
- vispy/glsl/math/circle-through-2-points.glsl +30 -0
- vispy/glsl/math/constants.glsl +48 -0
- vispy/glsl/math/double.glsl +114 -0
- vispy/glsl/math/functions.glsl +20 -0
- vispy/glsl/math/point-to-line-distance.glsl +31 -0
- vispy/glsl/math/point-to-line-projection.glsl +29 -0
- vispy/glsl/math/signed-line-distance.glsl +27 -0
- vispy/glsl/math/signed-segment-distance.glsl +30 -0
- vispy/glsl/misc/regular-grid.frag +244 -0
- vispy/glsl/misc/spatial-filters.frag +1407 -0
- vispy/glsl/misc/viewport-NDC.glsl +20 -0
- vispy/glsl/transforms/azimuthal-equal-area.glsl +32 -0
- vispy/glsl/transforms/azimuthal-equidistant.glsl +38 -0
- vispy/glsl/transforms/hammer.glsl +44 -0
- vispy/glsl/transforms/identity.glsl +6 -0
- vispy/glsl/transforms/identity_forward.glsl +23 -0
- vispy/glsl/transforms/identity_inverse.glsl +23 -0
- vispy/glsl/transforms/linear-scale.glsl +127 -0
- vispy/glsl/transforms/log-scale.glsl +126 -0
- vispy/glsl/transforms/mercator-transverse-forward.glsl +40 -0
- vispy/glsl/transforms/mercator-transverse-inverse.glsl +40 -0
- vispy/glsl/transforms/panzoom.glsl +10 -0
- vispy/glsl/transforms/polar.glsl +41 -0
- vispy/glsl/transforms/position.glsl +44 -0
- vispy/glsl/transforms/power-scale.glsl +139 -0
- vispy/glsl/transforms/projection.glsl +7 -0
- vispy/glsl/transforms/pvm.glsl +13 -0
- vispy/glsl/transforms/rotate.glsl +45 -0
- vispy/glsl/transforms/trackball.glsl +15 -0
- vispy/glsl/transforms/translate.glsl +35 -0
- vispy/glsl/transforms/transverse_mercator.glsl +38 -0
- vispy/glsl/transforms/viewport-clipping.glsl +14 -0
- vispy/glsl/transforms/viewport-transform.glsl +16 -0
- vispy/glsl/transforms/viewport.glsl +50 -0
- vispy/glsl/transforms/x.glsl +24 -0
- vispy/glsl/transforms/y.glsl +19 -0
- vispy/glsl/transforms/z.glsl +14 -0
- vispy/io/__init__.py +20 -0
- vispy/io/_data/spatial-filters.npy +0 -0
- vispy/io/datasets.py +94 -0
- vispy/io/image.py +231 -0
- vispy/io/mesh.py +122 -0
- vispy/io/stl.py +167 -0
- vispy/io/tests/__init__.py +0 -0
- vispy/io/tests/test_image.py +47 -0
- vispy/io/tests/test_io.py +121 -0
- vispy/io/wavefront.py +350 -0
- vispy/plot/__init__.py +36 -0
- vispy/plot/fig.py +58 -0
- vispy/plot/plotwidget.py +522 -0
- vispy/plot/tests/__init__.py +0 -0
- vispy/plot/tests/test_plot.py +46 -0
- vispy/scene/__init__.py +43 -0
- vispy/scene/cameras/__init__.py +27 -0
- vispy/scene/cameras/_base.py +38 -0
- vispy/scene/cameras/arcball.py +105 -0
- vispy/scene/cameras/base_camera.py +551 -0
- vispy/scene/cameras/fly.py +474 -0
- vispy/scene/cameras/magnify.py +163 -0
- vispy/scene/cameras/panzoom.py +311 -0
- vispy/scene/cameras/perspective.py +338 -0
- vispy/scene/cameras/tests/__init__.py +0 -0
- vispy/scene/cameras/tests/test_cameras.py +27 -0
- vispy/scene/cameras/tests/test_link.py +53 -0
- vispy/scene/cameras/tests/test_perspective.py +122 -0
- vispy/scene/cameras/turntable.py +183 -0
- vispy/scene/canvas.py +639 -0
- vispy/scene/events.py +85 -0
- vispy/scene/node.py +644 -0
- vispy/scene/subscene.py +20 -0
- vispy/scene/tests/__init__.py +0 -0
- vispy/scene/tests/test_canvas.py +119 -0
- vispy/scene/tests/test_node.py +142 -0
- vispy/scene/tests/test_visuals.py +141 -0
- vispy/scene/visuals.py +276 -0
- vispy/scene/widgets/__init__.py +18 -0
- vispy/scene/widgets/anchor.py +25 -0
- vispy/scene/widgets/axis.py +88 -0
- vispy/scene/widgets/colorbar.py +176 -0
- vispy/scene/widgets/console.py +351 -0
- vispy/scene/widgets/grid.py +509 -0
- vispy/scene/widgets/label.py +50 -0
- vispy/scene/widgets/tests/__init__.py +0 -0
- vispy/scene/widgets/tests/test_colorbar.py +47 -0
- vispy/scene/widgets/viewbox.py +199 -0
- vispy/scene/widgets/widget.py +478 -0
- vispy/testing/__init__.py +51 -0
- vispy/testing/_runners.py +448 -0
- vispy/testing/_testing.py +416 -0
- vispy/testing/image_tester.py +494 -0
- vispy/testing/rendered_array_tester.py +85 -0
- vispy/testing/tests/__init__.py +0 -0
- vispy/testing/tests/test_testing.py +20 -0
- vispy/util/__init__.py +32 -0
- vispy/util/bunch.py +15 -0
- vispy/util/check_environment.py +57 -0
- vispy/util/config.py +490 -0
- vispy/util/dpi/__init__.py +19 -0
- vispy/util/dpi/_linux.py +69 -0
- vispy/util/dpi/_quartz.py +26 -0
- vispy/util/dpi/_win32.py +34 -0
- vispy/util/dpi/tests/__init__.py +0 -0
- vispy/util/dpi/tests/test_dpi.py +16 -0
- vispy/util/eq.py +41 -0
- vispy/util/event.py +774 -0
- vispy/util/fetching.py +276 -0
- vispy/util/filter.py +44 -0
- vispy/util/fonts/__init__.py +14 -0
- vispy/util/fonts/_freetype.py +73 -0
- vispy/util/fonts/_quartz.py +192 -0
- vispy/util/fonts/_triage.py +36 -0
- vispy/util/fonts/_vispy_fonts.py +20 -0
- vispy/util/fonts/_win32.py +105 -0
- vispy/util/fonts/data/OpenSans-Bold.ttf +0 -0
- vispy/util/fonts/data/OpenSans-BoldItalic.ttf +0 -0
- vispy/util/fonts/data/OpenSans-Italic.ttf +0 -0
- vispy/util/fonts/data/OpenSans-Regular.ttf +0 -0
- vispy/util/fonts/tests/__init__.py +0 -0
- vispy/util/fonts/tests/test_font.py +45 -0
- vispy/util/fourier.py +69 -0
- vispy/util/frozen.py +25 -0
- vispy/util/gallery_scraper.py +268 -0
- vispy/util/keys.py +91 -0
- vispy/util/logs.py +358 -0
- vispy/util/osmesa_gl.py +17 -0
- vispy/util/profiler.py +135 -0
- vispy/util/ptime.py +16 -0
- vispy/util/quaternion.py +229 -0
- vispy/util/svg/__init__.py +18 -0
- vispy/util/svg/base.py +20 -0
- vispy/util/svg/color.py +219 -0
- vispy/util/svg/element.py +51 -0
- vispy/util/svg/geometry.py +478 -0
- vispy/util/svg/group.py +66 -0
- vispy/util/svg/length.py +81 -0
- vispy/util/svg/number.py +25 -0
- vispy/util/svg/path.py +332 -0
- vispy/util/svg/shapes.py +57 -0
- vispy/util/svg/style.py +59 -0
- vispy/util/svg/svg.py +40 -0
- vispy/util/svg/transform.py +223 -0
- vispy/util/svg/transformable.py +28 -0
- vispy/util/svg/viewport.py +73 -0
- vispy/util/tests/__init__.py +0 -0
- vispy/util/tests/test_config.py +58 -0
- vispy/util/tests/test_docstring_parameters.py +123 -0
- vispy/util/tests/test_emitter_group.py +262 -0
- vispy/util/tests/test_event_emitter.py +743 -0
- vispy/util/tests/test_fourier.py +35 -0
- vispy/util/tests/test_gallery_scraper.py +112 -0
- vispy/util/tests/test_import.py +127 -0
- vispy/util/tests/test_key.py +22 -0
- vispy/util/tests/test_logging.py +45 -0
- vispy/util/tests/test_run.py +14 -0
- vispy/util/tests/test_transforms.py +42 -0
- vispy/util/tests/test_vispy.py +48 -0
- vispy/util/transforms.py +201 -0
- vispy/util/wrappers.py +155 -0
- vispy/version.py +21 -0
- vispy/visuals/__init__.py +50 -0
- vispy/visuals/_scalable_textures.py +487 -0
- vispy/visuals/axis.py +678 -0
- vispy/visuals/border.py +208 -0
- vispy/visuals/box.py +79 -0
- vispy/visuals/collections/__init__.py +30 -0
- vispy/visuals/collections/agg_fast_path_collection.py +219 -0
- vispy/visuals/collections/agg_path_collection.py +197 -0
- vispy/visuals/collections/agg_point_collection.py +52 -0
- vispy/visuals/collections/agg_segment_collection.py +142 -0
- vispy/visuals/collections/array_list.py +401 -0
- vispy/visuals/collections/base_collection.py +482 -0
- vispy/visuals/collections/collection.py +253 -0
- vispy/visuals/collections/path_collection.py +23 -0
- vispy/visuals/collections/point_collection.py +19 -0
- vispy/visuals/collections/polygon_collection.py +25 -0
- vispy/visuals/collections/raw_path_collection.py +119 -0
- vispy/visuals/collections/raw_point_collection.py +113 -0
- vispy/visuals/collections/raw_polygon_collection.py +77 -0
- vispy/visuals/collections/raw_segment_collection.py +112 -0
- vispy/visuals/collections/raw_triangle_collection.py +78 -0
- vispy/visuals/collections/segment_collection.py +19 -0
- vispy/visuals/collections/triangle_collection.py +16 -0
- vispy/visuals/collections/util.py +168 -0
- vispy/visuals/colorbar.py +699 -0
- vispy/visuals/cube.py +41 -0
- vispy/visuals/ellipse.py +162 -0
- vispy/visuals/filters/__init__.py +10 -0
- vispy/visuals/filters/base_filter.py +242 -0
- vispy/visuals/filters/clipper.py +60 -0
- vispy/visuals/filters/clipping_planes.py +122 -0
- vispy/visuals/filters/color.py +181 -0
- vispy/visuals/filters/markers.py +28 -0
- vispy/visuals/filters/mesh.py +801 -0
- vispy/visuals/filters/picking.py +60 -0
- vispy/visuals/filters/tests/__init__.py +3 -0
- vispy/visuals/filters/tests/test_primitive_picking_filters.py +70 -0
- vispy/visuals/filters/tests/test_wireframe_filter.py +16 -0
- vispy/visuals/glsl/__init__.py +1 -0
- vispy/visuals/glsl/antialiasing.py +133 -0
- vispy/visuals/glsl/color.py +63 -0
- vispy/visuals/graphs/__init__.py +1 -0
- vispy/visuals/graphs/graph.py +240 -0
- vispy/visuals/graphs/layouts/__init__.py +55 -0
- vispy/visuals/graphs/layouts/circular.py +49 -0
- vispy/visuals/graphs/layouts/force_directed.py +211 -0
- vispy/visuals/graphs/layouts/networkx_layout.py +87 -0
- vispy/visuals/graphs/layouts/random.py +52 -0
- vispy/visuals/graphs/tests/__init__.py +1 -0
- vispy/visuals/graphs/tests/test_layouts.py +139 -0
- vispy/visuals/graphs/tests/test_networkx_layout.py +47 -0
- vispy/visuals/graphs/util.py +120 -0
- vispy/visuals/gridlines.py +161 -0
- vispy/visuals/gridmesh.py +98 -0
- vispy/visuals/histogram.py +58 -0
- vispy/visuals/image.py +701 -0
- vispy/visuals/image_complex.py +130 -0
- vispy/visuals/infinite_line.py +199 -0
- vispy/visuals/instanced_mesh.py +152 -0
- vispy/visuals/isocurve.py +213 -0
- vispy/visuals/isoline.py +241 -0
- vispy/visuals/isosurface.py +113 -0
- vispy/visuals/line/__init__.py +6 -0
- vispy/visuals/line/arrow.py +289 -0
- vispy/visuals/line/dash_atlas.py +90 -0
- vispy/visuals/line/line.py +545 -0
- vispy/visuals/line_plot.py +135 -0
- vispy/visuals/linear_region.py +199 -0
- vispy/visuals/markers.py +819 -0
- vispy/visuals/mesh.py +373 -0
- vispy/visuals/mesh_normals.py +159 -0
- vispy/visuals/plane.py +54 -0
- vispy/visuals/polygon.py +145 -0
- vispy/visuals/rectangle.py +196 -0
- vispy/visuals/regular_polygon.py +56 -0
- vispy/visuals/scrolling_lines.py +197 -0
- vispy/visuals/shaders/__init__.py +17 -0
- vispy/visuals/shaders/compiler.py +206 -0
- vispy/visuals/shaders/expression.py +99 -0
- vispy/visuals/shaders/function.py +788 -0
- vispy/visuals/shaders/multiprogram.py +145 -0
- vispy/visuals/shaders/parsing.py +140 -0
- vispy/visuals/shaders/program.py +161 -0
- vispy/visuals/shaders/shader_object.py +162 -0
- vispy/visuals/shaders/tests/__init__.py +0 -0
- vispy/visuals/shaders/tests/test_function.py +486 -0
- vispy/visuals/shaders/tests/test_multiprogram.py +78 -0
- vispy/visuals/shaders/tests/test_parsing.py +57 -0
- vispy/visuals/shaders/variable.py +272 -0
- vispy/visuals/spectrogram.py +169 -0
- vispy/visuals/sphere.py +80 -0
- vispy/visuals/surface_plot.py +192 -0
- vispy/visuals/tests/__init__.py +0 -0
- vispy/visuals/tests/test_arrows.py +109 -0
- vispy/visuals/tests/test_axis.py +120 -0
- vispy/visuals/tests/test_collections.py +15 -0
- vispy/visuals/tests/test_colorbar.py +179 -0
- vispy/visuals/tests/test_colormap.py +97 -0
- vispy/visuals/tests/test_ellipse.py +122 -0
- vispy/visuals/tests/test_gridlines.py +30 -0
- vispy/visuals/tests/test_histogram.py +24 -0
- vispy/visuals/tests/test_image.py +392 -0
- vispy/visuals/tests/test_image_complex.py +36 -0
- vispy/visuals/tests/test_infinite_line.py +53 -0
- vispy/visuals/tests/test_instanced_mesh.py +50 -0
- vispy/visuals/tests/test_isosurface.py +22 -0
- vispy/visuals/tests/test_linear_region.py +152 -0
- vispy/visuals/tests/test_markers.py +54 -0
- vispy/visuals/tests/test_mesh.py +261 -0
- vispy/visuals/tests/test_mesh_normals.py +218 -0
- vispy/visuals/tests/test_polygon.py +112 -0
- vispy/visuals/tests/test_rectangle.py +163 -0
- vispy/visuals/tests/test_regular_polygon.py +111 -0
- vispy/visuals/tests/test_scalable_textures.py +196 -0
- vispy/visuals/tests/test_sdf.py +73 -0
- vispy/visuals/tests/test_spectrogram.py +42 -0
- vispy/visuals/tests/test_surface_plot.py +57 -0
- vispy/visuals/tests/test_text.py +95 -0
- vispy/visuals/tests/test_volume.py +542 -0
- vispy/visuals/tests/test_windbarb.py +33 -0
- vispy/visuals/text/__init__.py +7 -0
- vispy/visuals/text/_sdf_cpu.cpython-313-x86_64-linux-gnu.so +0 -0
- vispy/visuals/text/_sdf_cpu.pyx +112 -0
- vispy/visuals/text/_sdf_gpu.py +316 -0
- vispy/visuals/text/text.py +675 -0
- vispy/visuals/transforms/__init__.py +34 -0
- vispy/visuals/transforms/_util.py +191 -0
- vispy/visuals/transforms/base_transform.py +233 -0
- vispy/visuals/transforms/chain.py +300 -0
- vispy/visuals/transforms/interactive.py +98 -0
- vispy/visuals/transforms/linear.py +564 -0
- vispy/visuals/transforms/nonlinear.py +398 -0
- vispy/visuals/transforms/tests/__init__.py +0 -0
- vispy/visuals/transforms/tests/test_transforms.py +243 -0
- vispy/visuals/transforms/transform_system.py +339 -0
- vispy/visuals/tube.py +173 -0
- vispy/visuals/visual.py +923 -0
- vispy/visuals/volume.py +1366 -0
- vispy/visuals/windbarb.py +291 -0
- vispy/visuals/xyz_axis.py +34 -0
- vispy-0.15.0.dist-info/METADATA +243 -0
- vispy-0.15.0.dist-info/RECORD +521 -0
- vispy-0.15.0.dist-info/WHEEL +6 -0
- vispy-0.15.0.dist-info/licenses/LICENSE.txt +36 -0
- vispy-0.15.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# -----------------------------------------------------------------------------
|
|
3
|
+
# Copyright (c) 2014, Nicolas P. Rougier
|
|
4
|
+
# Distributed under the (new) BSD License. See LICENSE.txt for more info.
|
|
5
|
+
# -----------------------------------------------------------------------------
|
|
6
|
+
"""
|
|
7
|
+
Antigrain Geometry Path Collection
|
|
8
|
+
|
|
9
|
+
This collection provides antialiased and accurate paths with caps and joins. It
|
|
10
|
+
is memory hungry (x8) and slow (x.25) so it is to be used sparingly, mainly for
|
|
11
|
+
thick paths where quality is critical.
|
|
12
|
+
"""
|
|
13
|
+
import numpy as np
|
|
14
|
+
from ... import glsl
|
|
15
|
+
from ... import gloo
|
|
16
|
+
from . collection import Collection
|
|
17
|
+
from ..transforms import NullTransform
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class AggPathCollection(Collection):
|
|
21
|
+
"""
|
|
22
|
+
Antigrain Geometry Path Collection
|
|
23
|
+
|
|
24
|
+
This collection provides antialiased and accurate paths with caps and
|
|
25
|
+
joins. It is memory hungry (x8) and slow (x.25) so it is to be used
|
|
26
|
+
sparingly, mainly for thick paths where quality is critical.
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
def __init__(self, user_dtype=None, transform=None,
|
|
30
|
+
vertex=None, fragment=None, **kwargs):
|
|
31
|
+
"""
|
|
32
|
+
Initialize the collection.
|
|
33
|
+
|
|
34
|
+
Parameters
|
|
35
|
+
----------
|
|
36
|
+
user_dtype: list
|
|
37
|
+
The base dtype can be completed (appended) by the used_dtype. It
|
|
38
|
+
only make sense if user also provide vertex and/or fragment shaders
|
|
39
|
+
|
|
40
|
+
transform : Transform instance
|
|
41
|
+
Used to define the transform(vec4) function
|
|
42
|
+
|
|
43
|
+
vertex: string
|
|
44
|
+
Vertex shader code
|
|
45
|
+
|
|
46
|
+
fragment: string
|
|
47
|
+
Fragment shader code
|
|
48
|
+
|
|
49
|
+
caps : string
|
|
50
|
+
'local', 'shared' or 'global'
|
|
51
|
+
|
|
52
|
+
join : string
|
|
53
|
+
'local', 'shared' or 'global'
|
|
54
|
+
|
|
55
|
+
color : string
|
|
56
|
+
'local', 'shared' or 'global'
|
|
57
|
+
|
|
58
|
+
miter_limit : string
|
|
59
|
+
'local', 'shared' or 'global'
|
|
60
|
+
|
|
61
|
+
linewidth : string
|
|
62
|
+
'local', 'shared' or 'global'
|
|
63
|
+
|
|
64
|
+
antialias : string
|
|
65
|
+
'local', 'shared' or 'global'
|
|
66
|
+
"""
|
|
67
|
+
base_dtype = [('p0', (np.float32, 3), '!local', (0, 0, 0)),
|
|
68
|
+
('p1', (np.float32, 3), '!local', (0, 0, 0)),
|
|
69
|
+
('p2', (np.float32, 3), '!local', (0, 0, 0)),
|
|
70
|
+
('p3', (np.float32, 3), '!local', (0, 0, 0)),
|
|
71
|
+
('uv', (np.float32, 2), '!local', (0, 0)),
|
|
72
|
+
|
|
73
|
+
('caps', (np.float32, 2), 'global', (0, 0)),
|
|
74
|
+
('join', (np.float32, 1), 'global', 0),
|
|
75
|
+
('color', (np.float32, 4), 'global', (0, 0, 0, 1)),
|
|
76
|
+
('miter_limit', (np.float32, 1), 'global', 4),
|
|
77
|
+
('linewidth', (np.float32, 1), 'global', 1),
|
|
78
|
+
('antialias', (np.float32, 1), 'global', 1),
|
|
79
|
+
('viewport', (np.float32, 4), 'global', (0, 0, 512, 512))] # noqa
|
|
80
|
+
|
|
81
|
+
dtype = base_dtype
|
|
82
|
+
if user_dtype:
|
|
83
|
+
dtype.extend(user_dtype)
|
|
84
|
+
|
|
85
|
+
if vertex is None:
|
|
86
|
+
vertex = glsl.get('collections/agg-path.vert')
|
|
87
|
+
if transform is None:
|
|
88
|
+
transform = NullTransform()
|
|
89
|
+
self.transform = transform
|
|
90
|
+
if fragment is None:
|
|
91
|
+
fragment = glsl.get('collections/agg-path.frag')
|
|
92
|
+
|
|
93
|
+
Collection.__init__(self, dtype=dtype, itype=np.uint32, # 16 for WebGL
|
|
94
|
+
mode="triangles",
|
|
95
|
+
vertex=vertex, fragment=fragment, **kwargs)
|
|
96
|
+
self._programs[0].vert['transform'] = self.transform
|
|
97
|
+
|
|
98
|
+
def append(self, P, closed=False, itemsize=None, **kwargs):
|
|
99
|
+
"""
|
|
100
|
+
Append a new set of vertices to the collection.
|
|
101
|
+
|
|
102
|
+
For kwargs argument, n is the number of vertices (local) or the number
|
|
103
|
+
of item (shared)
|
|
104
|
+
|
|
105
|
+
Parameters
|
|
106
|
+
----------
|
|
107
|
+
P : np.array
|
|
108
|
+
Vertices positions of the path(s) to be added
|
|
109
|
+
|
|
110
|
+
closed: bool
|
|
111
|
+
Whether path(s) is/are closed
|
|
112
|
+
|
|
113
|
+
itemsize: int or None
|
|
114
|
+
Size of an individual path
|
|
115
|
+
|
|
116
|
+
caps : list, array or 2-tuple
|
|
117
|
+
Path start /end cap
|
|
118
|
+
|
|
119
|
+
join : list, array or float
|
|
120
|
+
path segment join
|
|
121
|
+
|
|
122
|
+
color : list, array or 4-tuple
|
|
123
|
+
Path color
|
|
124
|
+
|
|
125
|
+
miter_limit : list, array or float
|
|
126
|
+
Miter limit for join
|
|
127
|
+
|
|
128
|
+
linewidth : list, array or float
|
|
129
|
+
Path linewidth
|
|
130
|
+
|
|
131
|
+
antialias : list, array or float
|
|
132
|
+
Path antialias area
|
|
133
|
+
"""
|
|
134
|
+
itemsize = int(itemsize or len(P))
|
|
135
|
+
itemcount = len(P) // itemsize
|
|
136
|
+
|
|
137
|
+
# Computes the adjacency information
|
|
138
|
+
n, p = len(P), P.shape[-1]
|
|
139
|
+
Z = np.tile(P, 2).reshape(2 * len(P), p)
|
|
140
|
+
V = np.empty(n, dtype=self.vtype)
|
|
141
|
+
|
|
142
|
+
V['p0'][1:-1] = Z[0::2][:-2]
|
|
143
|
+
V['p1'][:-1] = Z[1::2][:-1]
|
|
144
|
+
V['p2'][:-1] = Z[1::2][+1:]
|
|
145
|
+
V['p3'][:-2] = Z[0::2][+2:]
|
|
146
|
+
|
|
147
|
+
# Apply default values on vertices
|
|
148
|
+
for name in self.vtype.names:
|
|
149
|
+
if name not in ['collection_index', 'p0', 'p1', 'p2', 'p3']:
|
|
150
|
+
V[name] = kwargs.get(name, self._defaults[name])
|
|
151
|
+
|
|
152
|
+
# Extract relevant segments only
|
|
153
|
+
V = (V.reshape(n // itemsize, itemsize)[:, :-1])
|
|
154
|
+
if closed:
|
|
155
|
+
V['p0'][:, 0] = V['p2'][:, -1]
|
|
156
|
+
V['p3'][:, -1] = V['p1'][:, 0]
|
|
157
|
+
else:
|
|
158
|
+
V['p0'][:, 0] = V['p1'][:, 0]
|
|
159
|
+
V['p3'][:, -1] = V['p2'][:, -1]
|
|
160
|
+
V = V.ravel()
|
|
161
|
+
|
|
162
|
+
# Quadruple each point (we're using 2 triangles / segment)
|
|
163
|
+
# No shared vertices between segment because of joins
|
|
164
|
+
V = np.repeat(V, 4, axis=0).reshape((len(V), 4))
|
|
165
|
+
V['uv'] = (-1, -1), (-1, +1), (+1, -1), (+1, +1)
|
|
166
|
+
V = V.ravel()
|
|
167
|
+
|
|
168
|
+
n = itemsize
|
|
169
|
+
if closed:
|
|
170
|
+
# uint16 for WebGL
|
|
171
|
+
idxs = np.resize(
|
|
172
|
+
np.array([0, 1, 2, 1, 2, 3], dtype=np.uint32), n * 2 * 3)
|
|
173
|
+
idxs += np.repeat(4 * np.arange(n, dtype=np.uint32), 6)
|
|
174
|
+
idxs[-6:] = 4 * n - 6, 4 * n - 5, 0, 4 * n - 5, 0, 1
|
|
175
|
+
else:
|
|
176
|
+
idxs = np.resize(
|
|
177
|
+
np.array([0, 1, 2, 1, 2, 3], dtype=np.uint32), (n - 1) * 2 * 3)
|
|
178
|
+
idxs += np.repeat(4 * np.arange(n - 1, dtype=np.uint32), 6)
|
|
179
|
+
idxs = idxs.ravel()
|
|
180
|
+
|
|
181
|
+
# Uniforms
|
|
182
|
+
if self.utype:
|
|
183
|
+
U = np.zeros(itemcount, dtype=self.utype)
|
|
184
|
+
for name in self.utype.names:
|
|
185
|
+
if name not in ["__unused__"]:
|
|
186
|
+
U[name] = kwargs.get(name, self._defaults[name])
|
|
187
|
+
else:
|
|
188
|
+
U = None
|
|
189
|
+
|
|
190
|
+
Collection.append(self, vertices=V, uniforms=U,
|
|
191
|
+
indices=idxs, itemsize=itemsize * 4 - 4)
|
|
192
|
+
|
|
193
|
+
def draw(self, mode="triangles"):
|
|
194
|
+
"""Draw collection"""
|
|
195
|
+
gloo.set_depth_mask(0)
|
|
196
|
+
Collection.draw(self, mode)
|
|
197
|
+
gloo.set_depth_mask(1)
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# -----------------------------------------------------------------------------
|
|
3
|
+
# Copyright (c) 2014, Nicolas P. Rougier
|
|
4
|
+
# Distributed under the (new) BSD License. See LICENSE.txt for more info.
|
|
5
|
+
# -----------------------------------------------------------------------------
|
|
6
|
+
"""
|
|
7
|
+
Antigrain Geometry Point Collection
|
|
8
|
+
|
|
9
|
+
This collection provides fast points. Output quality is perfect.
|
|
10
|
+
"""
|
|
11
|
+
from ... import glsl
|
|
12
|
+
from . raw_point_collection import RawPointCollection
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class AggPointCollection(RawPointCollection):
|
|
16
|
+
"""
|
|
17
|
+
Antigrain Geometry Point Collection
|
|
18
|
+
|
|
19
|
+
This collection provides fast points. Output quality is perfect.
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
def __init__(self, user_dtype=None, transform=None,
|
|
23
|
+
vertex=None, fragment=None, **kwargs):
|
|
24
|
+
"""
|
|
25
|
+
Initialize the collection.
|
|
26
|
+
|
|
27
|
+
Parameters
|
|
28
|
+
----------
|
|
29
|
+
user_dtype: list
|
|
30
|
+
The base dtype can be completed (appended) by the used_dtype. It
|
|
31
|
+
only make sense if user also provide vertex and/or fragment shaders
|
|
32
|
+
|
|
33
|
+
vertex: string
|
|
34
|
+
Vertex shader code
|
|
35
|
+
|
|
36
|
+
fragment: string
|
|
37
|
+
Fragment shader code
|
|
38
|
+
|
|
39
|
+
transform : Transform instance
|
|
40
|
+
Used to define the GLSL transform(vec4) function
|
|
41
|
+
|
|
42
|
+
color : string
|
|
43
|
+
'local', 'shared' or 'global'
|
|
44
|
+
"""
|
|
45
|
+
if vertex is None:
|
|
46
|
+
vertex = glsl.get("collections/agg-point.vert")
|
|
47
|
+
if fragment is None:
|
|
48
|
+
fragment = glsl.get("collections/agg-point.frag")
|
|
49
|
+
|
|
50
|
+
RawPointCollection.__init__(self, user_dtype=user_dtype,
|
|
51
|
+
transform=transform,
|
|
52
|
+
vertex=vertex, fragment=fragment, **kwargs)
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# -----------------------------------------------------------------------------
|
|
3
|
+
# Copyright (c) 2014, Nicolas P. Rougier
|
|
4
|
+
# Distributed under the (new) BSD License. See LICENSE.txt for more info.
|
|
5
|
+
# -----------------------------------------------------------------------------
|
|
6
|
+
"""
|
|
7
|
+
Antigrain Geometry Segment Collection
|
|
8
|
+
|
|
9
|
+
This collection provides antialiased and accurate segments with caps. It
|
|
10
|
+
consume x2 more memory than regular lines and is a bit slower, but the quality
|
|
11
|
+
of the output is worth the cost.
|
|
12
|
+
"""
|
|
13
|
+
import numpy as np
|
|
14
|
+
from ... import glsl
|
|
15
|
+
from . collection import Collection
|
|
16
|
+
from ..transforms import NullTransform
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class AggSegmentCollection(Collection):
|
|
20
|
+
"""
|
|
21
|
+
Antigrain Geometry Segment Collection
|
|
22
|
+
|
|
23
|
+
This collection provides antialiased and accurate segments with caps. It
|
|
24
|
+
consume x2 more memory than regular lines and is a bit slower, but the
|
|
25
|
+
quality of the output is worth the cost.
|
|
26
|
+
"""
|
|
27
|
+
|
|
28
|
+
def __init__(self, user_dtype=None, transform=None,
|
|
29
|
+
vertex=None, fragment=None, **kwargs):
|
|
30
|
+
"""
|
|
31
|
+
Initialize the collection.
|
|
32
|
+
|
|
33
|
+
Parameters
|
|
34
|
+
----------
|
|
35
|
+
user_dtype: list
|
|
36
|
+
The base dtype can be completed (appended) by the used_dtype. It
|
|
37
|
+
only make sense if user also provide vertex and/or fragment shaders
|
|
38
|
+
|
|
39
|
+
transform : string
|
|
40
|
+
GLSL Transform code defining the vec4 transform(vec3) function
|
|
41
|
+
|
|
42
|
+
vertex: string
|
|
43
|
+
Vertex shader code
|
|
44
|
+
|
|
45
|
+
fragment: string
|
|
46
|
+
Fragment shader code
|
|
47
|
+
|
|
48
|
+
caps : string
|
|
49
|
+
'local', 'shared' or 'global'
|
|
50
|
+
|
|
51
|
+
color : string
|
|
52
|
+
'local', 'shared' or 'global'
|
|
53
|
+
|
|
54
|
+
linewidth : string
|
|
55
|
+
'local', 'shared' or 'global'
|
|
56
|
+
|
|
57
|
+
antialias : string
|
|
58
|
+
'local', 'shared' or 'global'
|
|
59
|
+
"""
|
|
60
|
+
base_dtype = [('P0', (np.float32, 3), '!local', (0, 0, 0)),
|
|
61
|
+
('P1', (np.float32, 3), '!local', (0, 0, 0)),
|
|
62
|
+
('index', (np.float32, 1), '!local', 0),
|
|
63
|
+
('color', (np.float32, 4), 'shared', (0, 0, 0, 1)),
|
|
64
|
+
('linewidth', (np.float32, 1), 'shared', 1),
|
|
65
|
+
('antialias', (np.float32, 1), 'shared', 1),
|
|
66
|
+
('viewport', (np.float32, 4), 'global', (0, 0, 512, 512))] # noqa
|
|
67
|
+
|
|
68
|
+
dtype = base_dtype
|
|
69
|
+
if user_dtype:
|
|
70
|
+
dtype.extend(user_dtype)
|
|
71
|
+
|
|
72
|
+
if vertex is None:
|
|
73
|
+
vertex = glsl.get('collections/agg-segment.vert')
|
|
74
|
+
if transform is None:
|
|
75
|
+
transform = NullTransform()
|
|
76
|
+
self.transform = transform
|
|
77
|
+
if fragment is None:
|
|
78
|
+
fragment = glsl.get('collections/agg-segment.frag')
|
|
79
|
+
|
|
80
|
+
Collection.__init__(self, dtype=dtype, itype=np.uint32,
|
|
81
|
+
mode="triangles",
|
|
82
|
+
vertex=vertex, fragment=fragment, **kwargs)
|
|
83
|
+
self._programs[0].vert['transform'] = self.transform
|
|
84
|
+
|
|
85
|
+
def append(self, P0, P1, itemsize=None, **kwargs):
|
|
86
|
+
"""
|
|
87
|
+
Append a new set of segments to the collection.
|
|
88
|
+
|
|
89
|
+
For kwargs argument, n is the number of vertices (local) or the number
|
|
90
|
+
of item (shared)
|
|
91
|
+
|
|
92
|
+
Parameters
|
|
93
|
+
----------
|
|
94
|
+
P : np.array
|
|
95
|
+
Vertices positions of the path(s) to be added
|
|
96
|
+
|
|
97
|
+
itemsize: int or None
|
|
98
|
+
Size of an individual path
|
|
99
|
+
|
|
100
|
+
caps : list, array or 2-tuple
|
|
101
|
+
Path start /end cap
|
|
102
|
+
|
|
103
|
+
color : list, array or 4-tuple
|
|
104
|
+
Path color
|
|
105
|
+
|
|
106
|
+
linewidth : list, array or float
|
|
107
|
+
Path linewidth
|
|
108
|
+
|
|
109
|
+
antialias : list, array or float
|
|
110
|
+
Path antialias area
|
|
111
|
+
"""
|
|
112
|
+
itemsize = itemsize or 1
|
|
113
|
+
itemcount = len(P0) // itemsize
|
|
114
|
+
|
|
115
|
+
V = np.empty(itemcount, dtype=self.vtype)
|
|
116
|
+
|
|
117
|
+
# Apply default values on vertices
|
|
118
|
+
for name in self.vtype.names:
|
|
119
|
+
if name not in ['collection_index', 'P0', 'P1', 'index']:
|
|
120
|
+
V[name] = kwargs.get(name, self._defaults[name])
|
|
121
|
+
|
|
122
|
+
V['P0'] = P0
|
|
123
|
+
V['P1'] = P1
|
|
124
|
+
V = V.repeat(4, axis=0)
|
|
125
|
+
V['index'] = np.resize([0, 1, 2, 3], 4 * itemcount * itemsize)
|
|
126
|
+
|
|
127
|
+
idxs = np.ones((itemcount, 6), dtype=int)
|
|
128
|
+
idxs[:] = 0, 1, 2, 0, 2, 3
|
|
129
|
+
idxs[:] += 4 * np.arange(itemcount)[:, np.newaxis]
|
|
130
|
+
idxs = idxs.ravel()
|
|
131
|
+
|
|
132
|
+
# Uniforms
|
|
133
|
+
if self.utype:
|
|
134
|
+
U = np.zeros(itemcount, dtype=self.utype)
|
|
135
|
+
for name in self.utype.names:
|
|
136
|
+
if name not in ["__unused__"]:
|
|
137
|
+
U[name] = kwargs.get(name, self._defaults[name])
|
|
138
|
+
else:
|
|
139
|
+
U = None
|
|
140
|
+
|
|
141
|
+
Collection.append(
|
|
142
|
+
self, vertices=V, uniforms=U, indices=idxs, itemsize=4 * itemcount)
|