vispy 0.15.0__cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.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-aarch64-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,362 @@
|
|
|
1
|
+
"""GL definitions converted to Python by codegen/createglapi.py.
|
|
2
|
+
|
|
3
|
+
THIS CODE IS AUTO-GENERATED. DO NOT EDIT.
|
|
4
|
+
|
|
5
|
+
Proxy API for GL ES 2.0 subset, via the PyOpenGL library.
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
import ctypes
|
|
10
|
+
from OpenGL import GL
|
|
11
|
+
import OpenGL.GL.framebufferobjects as FBO
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def glBindAttribLocation(program, index, name):
|
|
18
|
+
name = name.encode('utf-8')
|
|
19
|
+
return GL.glBindAttribLocation(program, index, name)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def glBufferData(target, data, usage):
|
|
23
|
+
"""Data can be numpy array or the size of data to allocate."""
|
|
24
|
+
if isinstance(data, int):
|
|
25
|
+
size = data
|
|
26
|
+
data = None
|
|
27
|
+
else:
|
|
28
|
+
size = data.nbytes
|
|
29
|
+
GL.glBufferData(target, size, data, usage)
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def glBufferSubData(target, offset, data):
|
|
33
|
+
size = data.nbytes
|
|
34
|
+
GL.glBufferSubData(target, offset, size, data)
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def glCompressedTexImage2D(target, level, internalformat, width, height, border, data):
|
|
38
|
+
# border = 0 # set in args
|
|
39
|
+
size = data.size
|
|
40
|
+
GL.glCompressedTexImage2D(target, level, internalformat, width, height, border, size, data)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def glCompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, data):
|
|
44
|
+
size = data.size
|
|
45
|
+
GL.glCompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, size, data)
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
def glDeleteBuffer(buffer):
|
|
49
|
+
GL.glDeleteBuffers(1, [buffer])
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def glDeleteFramebuffer(framebuffer):
|
|
53
|
+
FBO.glDeleteFramebuffers(1, [framebuffer])
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def glDeleteRenderbuffer(renderbuffer):
|
|
57
|
+
FBO.glDeleteRenderbuffers(1, [renderbuffer])
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
def glDeleteTexture(texture):
|
|
61
|
+
GL.glDeleteTextures([texture])
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
def glDrawElements(mode, count, type, offset):
|
|
65
|
+
if offset is None:
|
|
66
|
+
offset = ctypes.c_void_p(0)
|
|
67
|
+
elif isinstance(offset, (int, ctypes.c_int)):
|
|
68
|
+
offset = ctypes.c_void_p(int(offset))
|
|
69
|
+
return GL.glDrawElements(mode, count, type, offset)
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
def glCreateBuffer():
|
|
73
|
+
return GL.glGenBuffers(1)
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
def glCreateFramebuffer():
|
|
77
|
+
return FBO.glGenFramebuffers(1)
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
def glCreateRenderbuffer():
|
|
81
|
+
return FBO.glGenRenderbuffers(1)
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
def glCreateTexture():
|
|
85
|
+
return GL.glGenTextures(1)
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
def glGetActiveAttrib(program, index):
|
|
89
|
+
bufsize = 256
|
|
90
|
+
name, size, type = GL.glGetActiveAttrib(program, index, bufSize=bufsize)
|
|
91
|
+
return name.decode('utf-8'), size, type
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
def glGetActiveUniform(program, index):
|
|
95
|
+
name, size, type = GL.glGetActiveUniform(program, index)
|
|
96
|
+
return name.decode('utf-8'), size, type
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
def glGetAttribLocation(program, name):
|
|
100
|
+
name = name.encode('utf-8')
|
|
101
|
+
return GL.glGetAttribLocation(program, name)
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
def glGetFramebufferAttachmentParameter(target, attachment, pname):
|
|
105
|
+
d = -2**31 # smallest 32bit integer
|
|
106
|
+
params = (ctypes.c_int*1)(d)
|
|
107
|
+
FBO.glGetFramebufferAttachmentParameteriv(target, attachment, pname, params)
|
|
108
|
+
return params[0]
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
def glGetProgramInfoLog(program):
|
|
112
|
+
res = GL.glGetProgramInfoLog(program)
|
|
113
|
+
return res.decode('utf-8') if isinstance(res, bytes) else res
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
def glGetRenderbufferParameter(target, pname):
|
|
117
|
+
d = -2**31 # smallest 32bit integer
|
|
118
|
+
params = (ctypes.c_int*1)(d)
|
|
119
|
+
FBO.glGetRenderbufferParameteriv(target, pname, params)
|
|
120
|
+
return params[0]
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
def glGetShaderInfoLog(shader):
|
|
124
|
+
res = GL.glGetShaderInfoLog(shader)
|
|
125
|
+
return res.decode('utf-8') if isinstance(res, bytes) else res
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
def glGetShaderSource(shader):
|
|
129
|
+
res = GL.glGetShaderSource(shader)
|
|
130
|
+
return res.decode('utf-8')
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
def glGetParameter(pname):
|
|
134
|
+
if pname in [33902, 33901, 32773, 3106, 2931, 2928,
|
|
135
|
+
2849, 32824, 10752, 32938]:
|
|
136
|
+
# GL_ALIASED_LINE_WIDTH_RANGE GL_ALIASED_POINT_SIZE_RANGE
|
|
137
|
+
# GL_BLEND_COLOR GL_COLOR_CLEAR_VALUE GL_DEPTH_CLEAR_VALUE
|
|
138
|
+
# GL_DEPTH_RANGE GL_LINE_WIDTH GL_POLYGON_OFFSET_FACTOR
|
|
139
|
+
# GL_POLYGON_OFFSET_UNITS GL_SAMPLE_COVERAGE_VALUE
|
|
140
|
+
return GL.glGetFloatv(pname)
|
|
141
|
+
elif pname in [7936, 7937, 7938, 35724, 7939]:
|
|
142
|
+
# GL_VENDOR, GL_RENDERER, GL_VERSION, GL_SHADING_LANGUAGE_VERSION,
|
|
143
|
+
# GL_EXTENSIONS are strings
|
|
144
|
+
pass # string handled below
|
|
145
|
+
else:
|
|
146
|
+
return GL.glGetIntegerv(pname)
|
|
147
|
+
res = GL.glGetString(pname)
|
|
148
|
+
return res.decode('utf-8')
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
def glGetUniform(program, location):
|
|
152
|
+
n = 16
|
|
153
|
+
d = float('Inf')
|
|
154
|
+
params = (ctypes.c_float*n)(*[d for i in range(n)])
|
|
155
|
+
GL.glGetUniformfv(program, location, params)
|
|
156
|
+
params = [p for p in params if p!=d]
|
|
157
|
+
if len(params) == 1:
|
|
158
|
+
return params[0]
|
|
159
|
+
else:
|
|
160
|
+
return tuple(params)
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
def glGetUniformLocation(program, name):
|
|
164
|
+
name = name.encode('utf-8')
|
|
165
|
+
return GL.glGetUniformLocation(program, name)
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
def glGetVertexAttrib(index, pname):
|
|
169
|
+
# From PyOpenGL v3.1.0 the glGetVertexAttribfv(index, pname) does
|
|
170
|
+
# work, but it always returns 4 values, with zeros in the empty
|
|
171
|
+
# spaces. We have no way to tell whether they are empty or genuine
|
|
172
|
+
# zeros. Fortunately, pyopengl also supports the old syntax.
|
|
173
|
+
n = 4
|
|
174
|
+
d = float('Inf')
|
|
175
|
+
params = (ctypes.c_float*n)(*[d for i in range(n)])
|
|
176
|
+
GL.glGetVertexAttribfv(index, pname, params)
|
|
177
|
+
params = [p for p in params if p!=d]
|
|
178
|
+
if len(params) == 1:
|
|
179
|
+
return params[0]
|
|
180
|
+
else:
|
|
181
|
+
return tuple(params)
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
def glGetVertexAttribOffset(index, pname):
|
|
185
|
+
try: # maybe the fixed it
|
|
186
|
+
return GL.glGetVertexAttribPointerv(index, pname)
|
|
187
|
+
except TypeError:
|
|
188
|
+
pointer = (ctypes.c_void_p*1)()
|
|
189
|
+
GL.glGetVertexAttribPointerv(index, pname, pointer)
|
|
190
|
+
return pointer[0] or 0
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
def glShaderSource(shader, source):
|
|
194
|
+
# Some implementation do not like getting a list of single chars
|
|
195
|
+
if isinstance(source, (tuple, list)):
|
|
196
|
+
strings = [s for s in source]
|
|
197
|
+
else:
|
|
198
|
+
strings = [source]
|
|
199
|
+
GL.glShaderSource(shader, strings)
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
def glTexImage2D(target, level, internalformat, format, type, pixels):
|
|
203
|
+
border = 0
|
|
204
|
+
if isinstance(pixels, (tuple, list)):
|
|
205
|
+
height, width = pixels
|
|
206
|
+
pixels = None
|
|
207
|
+
else:
|
|
208
|
+
height, width = pixels.shape[:2]
|
|
209
|
+
GL.glTexImage2D(target, level, internalformat, width, height, border, format, type, pixels)
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
def glTexSubImage2D(target, level, xoffset, yoffset, format, type, pixels):
|
|
213
|
+
height, width = pixels.shape[:2]
|
|
214
|
+
GL.glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels)
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
def glVertexAttribPointer(indx, size, type, normalized, stride, offset):
|
|
218
|
+
if offset is None:
|
|
219
|
+
offset = ctypes.c_void_p(0)
|
|
220
|
+
elif isinstance(offset, (int, ctypes.c_int)):
|
|
221
|
+
offset = ctypes.c_void_p(int(offset))
|
|
222
|
+
return GL.glVertexAttribPointer(indx, size, type, normalized, stride, offset)
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
# List of functions that we should import from OpenGL.GL
|
|
226
|
+
_functions_to_import = [
|
|
227
|
+
("glActiveTexture", "glActiveTexture"),
|
|
228
|
+
("glAttachShader", "glAttachShader"),
|
|
229
|
+
("glBindBuffer", "glBindBuffer"),
|
|
230
|
+
("glBindFramebuffer", "glBindFramebuffer"),
|
|
231
|
+
("glBindRenderbuffer", "glBindRenderbuffer"),
|
|
232
|
+
("glBindTexture", "glBindTexture"),
|
|
233
|
+
("glBlendColor", "glBlendColor"),
|
|
234
|
+
("glBlendEquation", "glBlendEquation"),
|
|
235
|
+
("glBlendEquationSeparate", "glBlendEquationSeparate"),
|
|
236
|
+
("glBlendFunc", "glBlendFunc"),
|
|
237
|
+
("glBlendFuncSeparate", "glBlendFuncSeparate"),
|
|
238
|
+
("glCheckFramebufferStatus", "glCheckFramebufferStatus"),
|
|
239
|
+
("glClear", "glClear"),
|
|
240
|
+
("glClearColor", "glClearColor"),
|
|
241
|
+
("glClearDepthf", "glClearDepth"),
|
|
242
|
+
("glClearStencil", "glClearStencil"),
|
|
243
|
+
("glColorMask", "glColorMask"),
|
|
244
|
+
("glCompileShader", "glCompileShader"),
|
|
245
|
+
("glCopyTexImage2D", "glCopyTexImage2D"),
|
|
246
|
+
("glCopyTexSubImage2D", "glCopyTexSubImage2D"),
|
|
247
|
+
("glCreateProgram", "glCreateProgram"),
|
|
248
|
+
("glCreateShader", "glCreateShader"),
|
|
249
|
+
("glCullFace", "glCullFace"),
|
|
250
|
+
("glDeleteProgram", "glDeleteProgram"),
|
|
251
|
+
("glDeleteShader", "glDeleteShader"),
|
|
252
|
+
("glDepthFunc", "glDepthFunc"),
|
|
253
|
+
("glDepthMask", "glDepthMask"),
|
|
254
|
+
("glDepthRangef", "glDepthRange"),
|
|
255
|
+
("glDetachShader", "glDetachShader"),
|
|
256
|
+
("glDisable", "glDisable"),
|
|
257
|
+
("glDisableVertexAttribArray", "glDisableVertexAttribArray"),
|
|
258
|
+
("glDrawArrays", "glDrawArrays"),
|
|
259
|
+
("glEnable", "glEnable"),
|
|
260
|
+
("glEnableVertexAttribArray", "glEnableVertexAttribArray"),
|
|
261
|
+
("glFinish", "glFinish"),
|
|
262
|
+
("glFlush", "glFlush"),
|
|
263
|
+
("glFramebufferRenderbuffer", "glFramebufferRenderbuffer"),
|
|
264
|
+
("glFramebufferTexture2D", "glFramebufferTexture2D"),
|
|
265
|
+
("glFrontFace", "glFrontFace"),
|
|
266
|
+
("glGenerateMipmap", "glGenerateMipmap"),
|
|
267
|
+
("glGetAttachedShaders", "glGetAttachedShaders"),
|
|
268
|
+
("glGetBooleanv", "_glGetBooleanv"),
|
|
269
|
+
("glGetBufferParameteriv", "glGetBufferParameter"),
|
|
270
|
+
("glGetError", "glGetError"),
|
|
271
|
+
("glGetFloatv", "_glGetFloatv"),
|
|
272
|
+
("glGetIntegerv", "_glGetIntegerv"),
|
|
273
|
+
("glGetProgramiv", "glGetProgramParameter"),
|
|
274
|
+
("glGetShaderPrecisionFormat", "glGetShaderPrecisionFormat"),
|
|
275
|
+
("glGetShaderiv", "glGetShaderParameter"),
|
|
276
|
+
("glGetTexParameterfv", "glGetTexParameter"),
|
|
277
|
+
("glHint", "glHint"),
|
|
278
|
+
("glIsBuffer", "glIsBuffer"),
|
|
279
|
+
("glIsEnabled", "glIsEnabled"),
|
|
280
|
+
("glIsFramebuffer", "glIsFramebuffer"),
|
|
281
|
+
("glIsProgram", "glIsProgram"),
|
|
282
|
+
("glIsRenderbuffer", "glIsRenderbuffer"),
|
|
283
|
+
("glIsShader", "glIsShader"),
|
|
284
|
+
("glIsTexture", "glIsTexture"),
|
|
285
|
+
("glLineWidth", "glLineWidth"),
|
|
286
|
+
("glLinkProgram", "glLinkProgram"),
|
|
287
|
+
("glPixelStorei", "glPixelStorei"),
|
|
288
|
+
("glPolygonOffset", "glPolygonOffset"),
|
|
289
|
+
("glReadPixels", "glReadPixels"),
|
|
290
|
+
("glRenderbufferStorage", "glRenderbufferStorage"),
|
|
291
|
+
("glSampleCoverage", "glSampleCoverage"),
|
|
292
|
+
("glScissor", "glScissor"),
|
|
293
|
+
("glStencilFunc", "glStencilFunc"),
|
|
294
|
+
("glStencilFuncSeparate", "glStencilFuncSeparate"),
|
|
295
|
+
("glStencilMask", "glStencilMask"),
|
|
296
|
+
("glStencilMaskSeparate", "glStencilMaskSeparate"),
|
|
297
|
+
("glStencilOp", "glStencilOp"),
|
|
298
|
+
("glStencilOpSeparate", "glStencilOpSeparate"),
|
|
299
|
+
("glTexParameterf", "glTexParameterf"),
|
|
300
|
+
("glTexParameteri", "glTexParameteri"),
|
|
301
|
+
("glUniform1f", "glUniform1f"),
|
|
302
|
+
("glUniform2f", "glUniform2f"),
|
|
303
|
+
("glUniform3f", "glUniform3f"),
|
|
304
|
+
("glUniform4f", "glUniform4f"),
|
|
305
|
+
("glUniform1i", "glUniform1i"),
|
|
306
|
+
("glUniform2i", "glUniform2i"),
|
|
307
|
+
("glUniform3i", "glUniform3i"),
|
|
308
|
+
("glUniform4i", "glUniform4i"),
|
|
309
|
+
("glUniform1fv", "glUniform1fv"),
|
|
310
|
+
("glUniform2fv", "glUniform2fv"),
|
|
311
|
+
("glUniform3fv", "glUniform3fv"),
|
|
312
|
+
("glUniform4fv", "glUniform4fv"),
|
|
313
|
+
("glUniform1iv", "glUniform1iv"),
|
|
314
|
+
("glUniform2iv", "glUniform2iv"),
|
|
315
|
+
("glUniform3iv", "glUniform3iv"),
|
|
316
|
+
("glUniform4iv", "glUniform4iv"),
|
|
317
|
+
("glUniformMatrix2fv", "glUniformMatrix2fv"),
|
|
318
|
+
("glUniformMatrix3fv", "glUniformMatrix3fv"),
|
|
319
|
+
("glUniformMatrix4fv", "glUniformMatrix4fv"),
|
|
320
|
+
("glUseProgram", "glUseProgram"),
|
|
321
|
+
("glValidateProgram", "glValidateProgram"),
|
|
322
|
+
("glVertexAttrib1f", "glVertexAttrib1f"),
|
|
323
|
+
("glVertexAttrib2f", "glVertexAttrib2f"),
|
|
324
|
+
("glVertexAttrib3f", "glVertexAttrib3f"),
|
|
325
|
+
("glVertexAttrib4f", "glVertexAttrib4f"),
|
|
326
|
+
("glViewport", "glViewport"),
|
|
327
|
+
]
|
|
328
|
+
|
|
329
|
+
# List of functions in OpenGL.GL that we use
|
|
330
|
+
_used_functions = [
|
|
331
|
+
"glBindAttribLocation",
|
|
332
|
+
"glBufferData",
|
|
333
|
+
"glBufferSubData",
|
|
334
|
+
"glCompressedTexImage2D",
|
|
335
|
+
"glCompressedTexSubImage2D",
|
|
336
|
+
"glDeleteBuffers",
|
|
337
|
+
"glDeleteFramebuffers",
|
|
338
|
+
"glDeleteRenderbuffers",
|
|
339
|
+
"glDeleteTextures",
|
|
340
|
+
"glDrawElements",
|
|
341
|
+
"glGenBuffers",
|
|
342
|
+
"glGenFramebuffers",
|
|
343
|
+
"glGenRenderbuffers",
|
|
344
|
+
"glGenTextures",
|
|
345
|
+
"glGetActiveAttrib",
|
|
346
|
+
"glGetActiveUniform",
|
|
347
|
+
"glGetAttribLocation",
|
|
348
|
+
"glGetFramebufferAttachmentParameteriv",
|
|
349
|
+
"glGetProgramInfoLog",
|
|
350
|
+
"glGetRenderbufferParameteriv",
|
|
351
|
+
"glGetShaderInfoLog",
|
|
352
|
+
"glGetShaderSource",
|
|
353
|
+
"glGetString",
|
|
354
|
+
"glGetUniformfv",
|
|
355
|
+
"glGetUniformLocation",
|
|
356
|
+
"glGetVertexAttribfv",
|
|
357
|
+
"glGetVertexAttribPointerv",
|
|
358
|
+
"glShaderSource",
|
|
359
|
+
"glTexImage2D",
|
|
360
|
+
"glTexSubImage2D",
|
|
361
|
+
"glVertexAttribPointer",
|
|
362
|
+
]
|
vispy/gloo/gl/dummy.py
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# Copyright (c) Vispy Development Team. All Rights Reserved.
|
|
3
|
+
# Distributed under the (new) BSD License. See LICENSE.txt for more info.
|
|
4
|
+
|
|
5
|
+
"""A dummy backend."""
|
|
6
|
+
|
|
7
|
+
from . import BaseGLProxy, _copy_gl_functions
|
|
8
|
+
from ._constants import * # noqa
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class DummyProxy(BaseGLProxy):
|
|
12
|
+
"""A dummy backend that can be activated when the GL is not
|
|
13
|
+
processed in this process. Each GL function call will raise an
|
|
14
|
+
error.
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
def __call__(self, funcname, returns, *args):
|
|
18
|
+
raise RuntimeError('Cannot call %r (or any other GL function), '
|
|
19
|
+
'since GL is disabled.' % funcname)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
# Instantiate proxy and inject functions
|
|
23
|
+
_proxy = DummyProxy()
|
|
24
|
+
_copy_gl_functions(_proxy, globals())
|
vispy/gloo/gl/es2.py
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# Copyright (c) Vispy Development Team. All Rights Reserved.
|
|
3
|
+
# Distributed under the (new) BSD License. See LICENSE.txt for more info.
|
|
4
|
+
|
|
5
|
+
"""GL ES 2.0 API.
|
|
6
|
+
On Windows implemented via Angle (i.e translated to DirectX).
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
import sys
|
|
10
|
+
import os
|
|
11
|
+
import ctypes
|
|
12
|
+
|
|
13
|
+
from . import _copy_gl_functions
|
|
14
|
+
from ._constants import * # noqa
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
# Ctypes stuff
|
|
18
|
+
|
|
19
|
+
if hasattr(ctypes, 'TEST_DLL'):
|
|
20
|
+
# Load dummy lib
|
|
21
|
+
_lib = ctypes.TEST_DLL.LoadLibrary('')
|
|
22
|
+
|
|
23
|
+
elif sys.platform.startswith('win'):
|
|
24
|
+
raise RuntimeError('ES 2.0 is not available on Windows yet')
|
|
25
|
+
|
|
26
|
+
# todo: were are we going to put our libs?
|
|
27
|
+
dirname = r'C:\Users\Almar\AppData\Local\Chromium\Application\34.0.1790.0'
|
|
28
|
+
|
|
29
|
+
# Load dependency (so that libGLESv2 can find it
|
|
30
|
+
fname = dirname + r'\d3dcompiler_46.dll'
|
|
31
|
+
_libdum = ctypes.windll.LoadLibrary(fname)
|
|
32
|
+
|
|
33
|
+
# Load GL ES 2.0 lib (Angle)
|
|
34
|
+
fname = dirname + r'\libGLESv2.dll'
|
|
35
|
+
_lib = ctypes.windll.LoadLibrary(fname)
|
|
36
|
+
|
|
37
|
+
elif sys.platform.startswith('linux'):
|
|
38
|
+
es2_file = None
|
|
39
|
+
# Load from env
|
|
40
|
+
if 'ES2_LIBRARY' in os.environ: # todo: is this the correct name?
|
|
41
|
+
if os.path.exists(os.environ['ES2_LIBRARY']):
|
|
42
|
+
es2_file = os.path.realpath(os.environ['ES2_LIBRARY'])
|
|
43
|
+
# Else, try to find it
|
|
44
|
+
if es2_file is None:
|
|
45
|
+
es2_file = ctypes.util.find_library('GLESv2')
|
|
46
|
+
# Else, we failed and exit
|
|
47
|
+
if es2_file is None:
|
|
48
|
+
raise OSError('GL ES 2.0 library not found')
|
|
49
|
+
# Load it
|
|
50
|
+
_lib = ctypes.CDLL(es2_file)
|
|
51
|
+
|
|
52
|
+
elif sys.platform.startswith('darwin'):
|
|
53
|
+
raise RuntimeError('ES 2.0 is not available on OSX yet')
|
|
54
|
+
|
|
55
|
+
else:
|
|
56
|
+
raise RuntimeError('Unknown platform: %s' % sys.platform)
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
# Inject
|
|
60
|
+
|
|
61
|
+
from . import _es2 # noqa
|
|
62
|
+
_copy_gl_functions(_es2, globals())
|
vispy/gloo/gl/gl2.py
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# Copyright (c) Vispy Development Team. All Rights Reserved.
|
|
3
|
+
# Distributed under the (new) BSD License. See LICENSE.txt for more info.
|
|
4
|
+
|
|
5
|
+
"""GL ES 2.0 API implemented via desktop GL (i.e subset of normal OpenGL)."""
|
|
6
|
+
|
|
7
|
+
import os
|
|
8
|
+
import sys
|
|
9
|
+
import ctypes.util
|
|
10
|
+
|
|
11
|
+
from . import _copy_gl_functions
|
|
12
|
+
from ._constants import * # noqa
|
|
13
|
+
from ...util import logger
|
|
14
|
+
|
|
15
|
+
# Ctypes stuff
|
|
16
|
+
|
|
17
|
+
# Load the OpenGL library. We more or less follow the same approach
|
|
18
|
+
# as PyOpenGL does internally
|
|
19
|
+
|
|
20
|
+
_have_get_proc_address = False
|
|
21
|
+
_lib = os.getenv('VISPY_GL_LIB', '')
|
|
22
|
+
if _lib != '':
|
|
23
|
+
if sys.platform.startswith('win'):
|
|
24
|
+
_lib = ctypes.windll.LoadLibrary(_lib)
|
|
25
|
+
else:
|
|
26
|
+
_lib = ctypes.cdll.LoadLibrary(_lib)
|
|
27
|
+
elif sys.platform.startswith('win'):
|
|
28
|
+
# Windows
|
|
29
|
+
_lib = ctypes.windll.opengl32
|
|
30
|
+
try:
|
|
31
|
+
wglGetProcAddress = _lib.wglGetProcAddress
|
|
32
|
+
wglGetProcAddress.restype = ctypes.CFUNCTYPE(
|
|
33
|
+
ctypes.POINTER(ctypes.c_int))
|
|
34
|
+
wglGetProcAddress.argtypes = [ctypes.c_char_p]
|
|
35
|
+
_have_get_proc_address = True
|
|
36
|
+
except AttributeError:
|
|
37
|
+
pass
|
|
38
|
+
else:
|
|
39
|
+
# Unix-ish
|
|
40
|
+
if sys.platform.startswith('darwin'):
|
|
41
|
+
_fname = ctypes.util.find_library('OpenGL')
|
|
42
|
+
else:
|
|
43
|
+
_fname = ctypes.util.find_library('GL')
|
|
44
|
+
if not _fname:
|
|
45
|
+
logger.warning('Could not load OpenGL library.')
|
|
46
|
+
_lib = None
|
|
47
|
+
else:
|
|
48
|
+
# Load lib
|
|
49
|
+
_lib = ctypes.cdll.LoadLibrary(_fname)
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def _have_context():
|
|
53
|
+
return _lib.glGetError() != 1282 # GL_INVALID_OPERATION
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def _get_gl_version(_lib):
|
|
57
|
+
"""Helper to get the GL version string"""
|
|
58
|
+
try:
|
|
59
|
+
return _lib.glGetString(7938).decode('utf-8')
|
|
60
|
+
except Exception:
|
|
61
|
+
return 'unknown'
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
def _get_gl_func(name, restype, argtypes):
|
|
65
|
+
# Based on a function in Pyglet
|
|
66
|
+
if _lib is None:
|
|
67
|
+
raise RuntimeError('Could not load OpenGL library, gl cannot be used')
|
|
68
|
+
try:
|
|
69
|
+
# Try using normal ctypes stuff
|
|
70
|
+
func = getattr(_lib, name)
|
|
71
|
+
func.restype = restype
|
|
72
|
+
func.argtypes = argtypes
|
|
73
|
+
return func
|
|
74
|
+
except AttributeError:
|
|
75
|
+
if sys.platform.startswith('win'):
|
|
76
|
+
# Ask for a pointer to the function, this is the approach
|
|
77
|
+
# for OpenGL extensions on Windows
|
|
78
|
+
fargs = (restype,) + argtypes
|
|
79
|
+
ftype = ctypes.WINFUNCTYPE(*fargs)
|
|
80
|
+
if not _have_get_proc_address:
|
|
81
|
+
raise RuntimeError('Function %s not available '
|
|
82
|
+
'(OpenGL version is %s).'
|
|
83
|
+
% (name, _get_gl_version(_lib)))
|
|
84
|
+
if not _have_context():
|
|
85
|
+
raise RuntimeError('Using %s with no OpenGL context.' % name)
|
|
86
|
+
address = wglGetProcAddress(name.encode('utf-8'))
|
|
87
|
+
if address:
|
|
88
|
+
return ctypes.cast(address, ftype)
|
|
89
|
+
# If not Windows or if we did not return function object on Windows:
|
|
90
|
+
raise RuntimeError('Function %s not present in context '
|
|
91
|
+
'(OpenGL version is %s).'
|
|
92
|
+
% (name, _get_gl_version(_lib)))
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
# Inject
|
|
96
|
+
|
|
97
|
+
from . import _gl2 # noqa
|
|
98
|
+
_copy_gl_functions(_gl2, globals())
|