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.

Files changed (519) hide show
  1. vispy/__init__.py +33 -0
  2. vispy/app/__init__.py +15 -0
  3. vispy/app/_default_app.py +76 -0
  4. vispy/app/_detect_eventloop.py +148 -0
  5. vispy/app/application.py +263 -0
  6. vispy/app/backends/__init__.py +52 -0
  7. vispy/app/backends/_egl.py +264 -0
  8. vispy/app/backends/_glfw.py +513 -0
  9. vispy/app/backends/_jupyter_rfb.py +278 -0
  10. vispy/app/backends/_offscreen_util.py +121 -0
  11. vispy/app/backends/_osmesa.py +235 -0
  12. vispy/app/backends/_pyglet.py +451 -0
  13. vispy/app/backends/_pyqt4.py +36 -0
  14. vispy/app/backends/_pyqt5.py +36 -0
  15. vispy/app/backends/_pyqt6.py +40 -0
  16. vispy/app/backends/_pyside.py +37 -0
  17. vispy/app/backends/_pyside2.py +52 -0
  18. vispy/app/backends/_pyside6.py +53 -0
  19. vispy/app/backends/_qt.py +968 -0
  20. vispy/app/backends/_sdl2.py +444 -0
  21. vispy/app/backends/_template.py +244 -0
  22. vispy/app/backends/_test.py +8 -0
  23. vispy/app/backends/_tk.py +800 -0
  24. vispy/app/backends/_wx.py +476 -0
  25. vispy/app/backends/tests/__init__.py +0 -0
  26. vispy/app/backends/tests/test_offscreen_util.py +52 -0
  27. vispy/app/backends/tests/test_rfb.py +77 -0
  28. vispy/app/base.py +294 -0
  29. vispy/app/canvas.py +828 -0
  30. vispy/app/qt.py +92 -0
  31. vispy/app/tests/__init__.py +0 -0
  32. vispy/app/tests/qt-designer.ui +58 -0
  33. vispy/app/tests/test_app.py +442 -0
  34. vispy/app/tests/test_backends.py +164 -0
  35. vispy/app/tests/test_canvas.py +122 -0
  36. vispy/app/tests/test_context.py +92 -0
  37. vispy/app/tests/test_qt.py +47 -0
  38. vispy/app/tests/test_simultaneous.py +134 -0
  39. vispy/app/timer.py +174 -0
  40. vispy/color/__init__.py +17 -0
  41. vispy/color/_color_dict.py +193 -0
  42. vispy/color/color_array.py +447 -0
  43. vispy/color/color_space.py +181 -0
  44. vispy/color/colormap.py +1134 -0
  45. vispy/color/tests/__init__.py +0 -0
  46. vispy/color/tests/test_color.py +352 -0
  47. vispy/conftest.py +12 -0
  48. vispy/ext/__init__.py +0 -0
  49. vispy/ext/cocoapy.py +1542 -0
  50. vispy/ext/cubehelix.py +138 -0
  51. vispy/ext/egl.py +375 -0
  52. vispy/ext/fontconfig.py +118 -0
  53. vispy/ext/gdi32plus.py +206 -0
  54. vispy/ext/osmesa.py +105 -0
  55. vispy/geometry/__init__.py +23 -0
  56. vispy/geometry/_triangulation_debugger.py +171 -0
  57. vispy/geometry/calculations.py +134 -0
  58. vispy/geometry/curves.py +399 -0
  59. vispy/geometry/generation.py +643 -0
  60. vispy/geometry/isocurve.py +175 -0
  61. vispy/geometry/isosurface.py +465 -0
  62. vispy/geometry/meshdata.py +698 -0
  63. vispy/geometry/normals.py +78 -0
  64. vispy/geometry/parametric.py +56 -0
  65. vispy/geometry/polygon.py +137 -0
  66. vispy/geometry/rect.py +210 -0
  67. vispy/geometry/tests/__init__.py +0 -0
  68. vispy/geometry/tests/test_calculations.py +23 -0
  69. vispy/geometry/tests/test_generation.py +56 -0
  70. vispy/geometry/tests/test_meshdata.py +106 -0
  71. vispy/geometry/tests/test_triangulation.py +506 -0
  72. vispy/geometry/torusknot.py +142 -0
  73. vispy/geometry/triangulation.py +876 -0
  74. vispy/gloo/__init__.py +56 -0
  75. vispy/gloo/buffer.py +505 -0
  76. vispy/gloo/context.py +272 -0
  77. vispy/gloo/framebuffer.py +257 -0
  78. vispy/gloo/gl/__init__.py +234 -0
  79. vispy/gloo/gl/_constants.py +332 -0
  80. vispy/gloo/gl/_es2.py +986 -0
  81. vispy/gloo/gl/_gl2.py +1365 -0
  82. vispy/gloo/gl/_proxy.py +499 -0
  83. vispy/gloo/gl/_pyopengl2.py +362 -0
  84. vispy/gloo/gl/dummy.py +24 -0
  85. vispy/gloo/gl/es2.py +62 -0
  86. vispy/gloo/gl/gl2.py +98 -0
  87. vispy/gloo/gl/glplus.py +168 -0
  88. vispy/gloo/gl/pyopengl2.py +97 -0
  89. vispy/gloo/gl/tests/__init__.py +0 -0
  90. vispy/gloo/gl/tests/test_basics.py +282 -0
  91. vispy/gloo/gl/tests/test_functionality.py +566 -0
  92. vispy/gloo/gl/tests/test_names.py +246 -0
  93. vispy/gloo/gl/tests/test_use.py +71 -0
  94. vispy/gloo/glir.py +1816 -0
  95. vispy/gloo/globject.py +101 -0
  96. vispy/gloo/preprocessor.py +67 -0
  97. vispy/gloo/program.py +543 -0
  98. vispy/gloo/tests/__init__.py +0 -0
  99. vispy/gloo/tests/test_buffer.py +558 -0
  100. vispy/gloo/tests/test_context.py +119 -0
  101. vispy/gloo/tests/test_framebuffer.py +195 -0
  102. vispy/gloo/tests/test_glir.py +307 -0
  103. vispy/gloo/tests/test_globject.py +35 -0
  104. vispy/gloo/tests/test_program.py +302 -0
  105. vispy/gloo/tests/test_texture.py +732 -0
  106. vispy/gloo/tests/test_use_gloo.py +187 -0
  107. vispy/gloo/tests/test_util.py +60 -0
  108. vispy/gloo/tests/test_wrappers.py +261 -0
  109. vispy/gloo/texture.py +1045 -0
  110. vispy/gloo/util.py +129 -0
  111. vispy/gloo/wrappers.py +762 -0
  112. vispy/glsl/__init__.py +42 -0
  113. vispy/glsl/antialias/antialias.glsl +7 -0
  114. vispy/glsl/antialias/cap-butt.glsl +31 -0
  115. vispy/glsl/antialias/cap-round.glsl +29 -0
  116. vispy/glsl/antialias/cap-square.glsl +30 -0
  117. vispy/glsl/antialias/cap-triangle-in.glsl +30 -0
  118. vispy/glsl/antialias/cap-triangle-out.glsl +30 -0
  119. vispy/glsl/antialias/cap.glsl +67 -0
  120. vispy/glsl/antialias/caps.glsl +67 -0
  121. vispy/glsl/antialias/filled.glsl +50 -0
  122. vispy/glsl/antialias/outline.glsl +40 -0
  123. vispy/glsl/antialias/stroke.glsl +43 -0
  124. vispy/glsl/arrowheads/angle.glsl +99 -0
  125. vispy/glsl/arrowheads/arrowheads.frag +60 -0
  126. vispy/glsl/arrowheads/arrowheads.glsl +12 -0
  127. vispy/glsl/arrowheads/arrowheads.vert +83 -0
  128. vispy/glsl/arrowheads/curved.glsl +48 -0
  129. vispy/glsl/arrowheads/inhibitor.glsl +26 -0
  130. vispy/glsl/arrowheads/stealth.glsl +46 -0
  131. vispy/glsl/arrowheads/triangle.glsl +97 -0
  132. vispy/glsl/arrowheads/util.glsl +13 -0
  133. vispy/glsl/arrows/angle-30.glsl +12 -0
  134. vispy/glsl/arrows/angle-60.glsl +12 -0
  135. vispy/glsl/arrows/angle-90.glsl +12 -0
  136. vispy/glsl/arrows/arrow.frag +39 -0
  137. vispy/glsl/arrows/arrow.vert +49 -0
  138. vispy/glsl/arrows/arrows.glsl +17 -0
  139. vispy/glsl/arrows/common.glsl +187 -0
  140. vispy/glsl/arrows/curved.glsl +63 -0
  141. vispy/glsl/arrows/stealth.glsl +50 -0
  142. vispy/glsl/arrows/triangle-30.glsl +12 -0
  143. vispy/glsl/arrows/triangle-60.glsl +12 -0
  144. vispy/glsl/arrows/triangle-90.glsl +12 -0
  145. vispy/glsl/arrows/util.glsl +98 -0
  146. vispy/glsl/build_spatial_filters.py +660 -0
  147. vispy/glsl/collections/agg-fast-path.frag +20 -0
  148. vispy/glsl/collections/agg-fast-path.vert +78 -0
  149. vispy/glsl/collections/agg-glyph.frag +60 -0
  150. vispy/glsl/collections/agg-glyph.vert +33 -0
  151. vispy/glsl/collections/agg-marker.frag +35 -0
  152. vispy/glsl/collections/agg-marker.vert +48 -0
  153. vispy/glsl/collections/agg-path.frag +55 -0
  154. vispy/glsl/collections/agg-path.vert +166 -0
  155. vispy/glsl/collections/agg-point.frag +21 -0
  156. vispy/glsl/collections/agg-point.vert +35 -0
  157. vispy/glsl/collections/agg-segment.frag +32 -0
  158. vispy/glsl/collections/agg-segment.vert +75 -0
  159. vispy/glsl/collections/marker.frag +38 -0
  160. vispy/glsl/collections/marker.vert +48 -0
  161. vispy/glsl/collections/raw-path.frag +15 -0
  162. vispy/glsl/collections/raw-path.vert +24 -0
  163. vispy/glsl/collections/raw-point.frag +14 -0
  164. vispy/glsl/collections/raw-point.vert +31 -0
  165. vispy/glsl/collections/raw-segment.frag +18 -0
  166. vispy/glsl/collections/raw-segment.vert +26 -0
  167. vispy/glsl/collections/raw-triangle.frag +13 -0
  168. vispy/glsl/collections/raw-triangle.vert +26 -0
  169. vispy/glsl/collections/sdf-glyph-ticks.vert +69 -0
  170. vispy/glsl/collections/sdf-glyph.frag +80 -0
  171. vispy/glsl/collections/sdf-glyph.vert +59 -0
  172. vispy/glsl/collections/tick-labels.vert +71 -0
  173. vispy/glsl/colormaps/autumn.glsl +20 -0
  174. vispy/glsl/colormaps/blues.glsl +20 -0
  175. vispy/glsl/colormaps/color-space.glsl +17 -0
  176. vispy/glsl/colormaps/colormaps.glsl +24 -0
  177. vispy/glsl/colormaps/cool.glsl +20 -0
  178. vispy/glsl/colormaps/fire.glsl +21 -0
  179. vispy/glsl/colormaps/gray.glsl +20 -0
  180. vispy/glsl/colormaps/greens.glsl +20 -0
  181. vispy/glsl/colormaps/hot.glsl +22 -0
  182. vispy/glsl/colormaps/ice.glsl +20 -0
  183. vispy/glsl/colormaps/icefire.glsl +23 -0
  184. vispy/glsl/colormaps/parse.py +40 -0
  185. vispy/glsl/colormaps/reds.glsl +20 -0
  186. vispy/glsl/colormaps/spring.glsl +20 -0
  187. vispy/glsl/colormaps/summer.glsl +20 -0
  188. vispy/glsl/colormaps/user.glsl +22 -0
  189. vispy/glsl/colormaps/util.glsl +41 -0
  190. vispy/glsl/colormaps/wheel.glsl +21 -0
  191. vispy/glsl/colormaps/winter.glsl +20 -0
  192. vispy/glsl/lines/agg.frag +320 -0
  193. vispy/glsl/lines/agg.vert +241 -0
  194. vispy/glsl/markers/arrow.glsl +12 -0
  195. vispy/glsl/markers/asterisk.glsl +16 -0
  196. vispy/glsl/markers/chevron.glsl +14 -0
  197. vispy/glsl/markers/clover.glsl +20 -0
  198. vispy/glsl/markers/club.glsl +31 -0
  199. vispy/glsl/markers/cross.glsl +17 -0
  200. vispy/glsl/markers/diamond.glsl +12 -0
  201. vispy/glsl/markers/disc.glsl +9 -0
  202. vispy/glsl/markers/ellipse.glsl +67 -0
  203. vispy/glsl/markers/hbar.glsl +9 -0
  204. vispy/glsl/markers/heart.glsl +15 -0
  205. vispy/glsl/markers/infinity.glsl +15 -0
  206. vispy/glsl/markers/marker-sdf.frag +74 -0
  207. vispy/glsl/markers/marker-sdf.vert +41 -0
  208. vispy/glsl/markers/marker.frag +36 -0
  209. vispy/glsl/markers/marker.vert +46 -0
  210. vispy/glsl/markers/markers.glsl +24 -0
  211. vispy/glsl/markers/pin.glsl +18 -0
  212. vispy/glsl/markers/ring.glsl +11 -0
  213. vispy/glsl/markers/spade.glsl +28 -0
  214. vispy/glsl/markers/square.glsl +10 -0
  215. vispy/glsl/markers/tag.glsl +11 -0
  216. vispy/glsl/markers/triangle.glsl +14 -0
  217. vispy/glsl/markers/vbar.glsl +9 -0
  218. vispy/glsl/math/circle-through-2-points.glsl +30 -0
  219. vispy/glsl/math/constants.glsl +48 -0
  220. vispy/glsl/math/double.glsl +114 -0
  221. vispy/glsl/math/functions.glsl +20 -0
  222. vispy/glsl/math/point-to-line-distance.glsl +31 -0
  223. vispy/glsl/math/point-to-line-projection.glsl +29 -0
  224. vispy/glsl/math/signed-line-distance.glsl +27 -0
  225. vispy/glsl/math/signed-segment-distance.glsl +30 -0
  226. vispy/glsl/misc/regular-grid.frag +244 -0
  227. vispy/glsl/misc/spatial-filters.frag +1407 -0
  228. vispy/glsl/misc/viewport-NDC.glsl +20 -0
  229. vispy/glsl/transforms/azimuthal-equal-area.glsl +32 -0
  230. vispy/glsl/transforms/azimuthal-equidistant.glsl +38 -0
  231. vispy/glsl/transforms/hammer.glsl +44 -0
  232. vispy/glsl/transforms/identity.glsl +6 -0
  233. vispy/glsl/transforms/identity_forward.glsl +23 -0
  234. vispy/glsl/transforms/identity_inverse.glsl +23 -0
  235. vispy/glsl/transforms/linear-scale.glsl +127 -0
  236. vispy/glsl/transforms/log-scale.glsl +126 -0
  237. vispy/glsl/transforms/mercator-transverse-forward.glsl +40 -0
  238. vispy/glsl/transforms/mercator-transverse-inverse.glsl +40 -0
  239. vispy/glsl/transforms/panzoom.glsl +10 -0
  240. vispy/glsl/transforms/polar.glsl +41 -0
  241. vispy/glsl/transforms/position.glsl +44 -0
  242. vispy/glsl/transforms/power-scale.glsl +139 -0
  243. vispy/glsl/transforms/projection.glsl +7 -0
  244. vispy/glsl/transforms/pvm.glsl +13 -0
  245. vispy/glsl/transforms/rotate.glsl +45 -0
  246. vispy/glsl/transforms/trackball.glsl +15 -0
  247. vispy/glsl/transforms/translate.glsl +35 -0
  248. vispy/glsl/transforms/transverse_mercator.glsl +38 -0
  249. vispy/glsl/transforms/viewport-clipping.glsl +14 -0
  250. vispy/glsl/transforms/viewport-transform.glsl +16 -0
  251. vispy/glsl/transforms/viewport.glsl +50 -0
  252. vispy/glsl/transforms/x.glsl +24 -0
  253. vispy/glsl/transforms/y.glsl +19 -0
  254. vispy/glsl/transforms/z.glsl +14 -0
  255. vispy/io/__init__.py +20 -0
  256. vispy/io/_data/spatial-filters.npy +0 -0
  257. vispy/io/datasets.py +94 -0
  258. vispy/io/image.py +231 -0
  259. vispy/io/mesh.py +122 -0
  260. vispy/io/stl.py +167 -0
  261. vispy/io/tests/__init__.py +0 -0
  262. vispy/io/tests/test_image.py +47 -0
  263. vispy/io/tests/test_io.py +121 -0
  264. vispy/io/wavefront.py +350 -0
  265. vispy/plot/__init__.py +36 -0
  266. vispy/plot/fig.py +58 -0
  267. vispy/plot/plotwidget.py +522 -0
  268. vispy/plot/tests/__init__.py +0 -0
  269. vispy/plot/tests/test_plot.py +46 -0
  270. vispy/scene/__init__.py +43 -0
  271. vispy/scene/cameras/__init__.py +27 -0
  272. vispy/scene/cameras/_base.py +38 -0
  273. vispy/scene/cameras/arcball.py +106 -0
  274. vispy/scene/cameras/base_camera.py +538 -0
  275. vispy/scene/cameras/fly.py +474 -0
  276. vispy/scene/cameras/magnify.py +163 -0
  277. vispy/scene/cameras/panzoom.py +308 -0
  278. vispy/scene/cameras/perspective.py +333 -0
  279. vispy/scene/cameras/tests/__init__.py +0 -0
  280. vispy/scene/cameras/tests/test_cameras.py +27 -0
  281. vispy/scene/cameras/tests/test_link.py +53 -0
  282. vispy/scene/cameras/tests/test_perspective.py +122 -0
  283. vispy/scene/cameras/turntable.py +173 -0
  284. vispy/scene/canvas.py +639 -0
  285. vispy/scene/events.py +85 -0
  286. vispy/scene/node.py +644 -0
  287. vispy/scene/subscene.py +20 -0
  288. vispy/scene/tests/__init__.py +0 -0
  289. vispy/scene/tests/test_canvas.py +119 -0
  290. vispy/scene/tests/test_node.py +142 -0
  291. vispy/scene/tests/test_visuals.py +141 -0
  292. vispy/scene/visuals.py +276 -0
  293. vispy/scene/widgets/__init__.py +18 -0
  294. vispy/scene/widgets/anchor.py +25 -0
  295. vispy/scene/widgets/axis.py +88 -0
  296. vispy/scene/widgets/colorbar.py +176 -0
  297. vispy/scene/widgets/console.py +351 -0
  298. vispy/scene/widgets/grid.py +509 -0
  299. vispy/scene/widgets/label.py +50 -0
  300. vispy/scene/widgets/tests/__init__.py +0 -0
  301. vispy/scene/widgets/tests/test_colorbar.py +47 -0
  302. vispy/scene/widgets/viewbox.py +199 -0
  303. vispy/scene/widgets/widget.py +478 -0
  304. vispy/testing/__init__.py +51 -0
  305. vispy/testing/_runners.py +446 -0
  306. vispy/testing/_testing.py +416 -0
  307. vispy/testing/image_tester.py +473 -0
  308. vispy/testing/rendered_array_tester.py +85 -0
  309. vispy/testing/tests/__init__.py +0 -0
  310. vispy/testing/tests/test_testing.py +20 -0
  311. vispy/util/__init__.py +17 -0
  312. vispy/util/bunch.py +15 -0
  313. vispy/util/check_environment.py +57 -0
  314. vispy/util/config.py +490 -0
  315. vispy/util/dpi/__init__.py +19 -0
  316. vispy/util/dpi/_linux.py +69 -0
  317. vispy/util/dpi/_quartz.py +26 -0
  318. vispy/util/dpi/_win32.py +34 -0
  319. vispy/util/dpi/tests/__init__.py +0 -0
  320. vispy/util/dpi/tests/test_dpi.py +16 -0
  321. vispy/util/eq.py +41 -0
  322. vispy/util/event.py +774 -0
  323. vispy/util/fetching.py +276 -0
  324. vispy/util/filter.py +44 -0
  325. vispy/util/fonts/__init__.py +14 -0
  326. vispy/util/fonts/_freetype.py +73 -0
  327. vispy/util/fonts/_quartz.py +192 -0
  328. vispy/util/fonts/_triage.py +36 -0
  329. vispy/util/fonts/_vispy_fonts.py +20 -0
  330. vispy/util/fonts/_win32.py +105 -0
  331. vispy/util/fonts/data/OpenSans-Bold.ttf +0 -0
  332. vispy/util/fonts/data/OpenSans-BoldItalic.ttf +0 -0
  333. vispy/util/fonts/data/OpenSans-Italic.ttf +0 -0
  334. vispy/util/fonts/data/OpenSans-Regular.ttf +0 -0
  335. vispy/util/fonts/tests/__init__.py +0 -0
  336. vispy/util/fonts/tests/test_font.py +45 -0
  337. vispy/util/fourier.py +69 -0
  338. vispy/util/frozen.py +25 -0
  339. vispy/util/gallery_scraper.py +268 -0
  340. vispy/util/keys.py +91 -0
  341. vispy/util/logs.py +358 -0
  342. vispy/util/osmesa_gl.py +17 -0
  343. vispy/util/profiler.py +135 -0
  344. vispy/util/ptime.py +16 -0
  345. vispy/util/quaternion.py +229 -0
  346. vispy/util/svg/__init__.py +18 -0
  347. vispy/util/svg/base.py +20 -0
  348. vispy/util/svg/color.py +219 -0
  349. vispy/util/svg/element.py +51 -0
  350. vispy/util/svg/geometry.py +478 -0
  351. vispy/util/svg/group.py +66 -0
  352. vispy/util/svg/length.py +81 -0
  353. vispy/util/svg/number.py +25 -0
  354. vispy/util/svg/path.py +332 -0
  355. vispy/util/svg/shapes.py +57 -0
  356. vispy/util/svg/style.py +59 -0
  357. vispy/util/svg/svg.py +40 -0
  358. vispy/util/svg/transform.py +223 -0
  359. vispy/util/svg/transformable.py +28 -0
  360. vispy/util/svg/viewport.py +73 -0
  361. vispy/util/tests/__init__.py +0 -0
  362. vispy/util/tests/test_config.py +58 -0
  363. vispy/util/tests/test_docstring_parameters.py +123 -0
  364. vispy/util/tests/test_emitter_group.py +262 -0
  365. vispy/util/tests/test_event_emitter.py +743 -0
  366. vispy/util/tests/test_fourier.py +35 -0
  367. vispy/util/tests/test_gallery_scraper.py +112 -0
  368. vispy/util/tests/test_import.py +127 -0
  369. vispy/util/tests/test_key.py +22 -0
  370. vispy/util/tests/test_logging.py +45 -0
  371. vispy/util/tests/test_run.py +14 -0
  372. vispy/util/tests/test_transforms.py +42 -0
  373. vispy/util/tests/test_vispy.py +48 -0
  374. vispy/util/transforms.py +201 -0
  375. vispy/util/wrappers.py +155 -0
  376. vispy/version.py +4 -0
  377. vispy/visuals/__init__.py +50 -0
  378. vispy/visuals/_scalable_textures.py +485 -0
  379. vispy/visuals/axis.py +678 -0
  380. vispy/visuals/border.py +208 -0
  381. vispy/visuals/box.py +79 -0
  382. vispy/visuals/collections/__init__.py +30 -0
  383. vispy/visuals/collections/agg_fast_path_collection.py +219 -0
  384. vispy/visuals/collections/agg_path_collection.py +197 -0
  385. vispy/visuals/collections/agg_point_collection.py +52 -0
  386. vispy/visuals/collections/agg_segment_collection.py +142 -0
  387. vispy/visuals/collections/array_list.py +401 -0
  388. vispy/visuals/collections/base_collection.py +482 -0
  389. vispy/visuals/collections/collection.py +253 -0
  390. vispy/visuals/collections/path_collection.py +23 -0
  391. vispy/visuals/collections/point_collection.py +19 -0
  392. vispy/visuals/collections/polygon_collection.py +25 -0
  393. vispy/visuals/collections/raw_path_collection.py +119 -0
  394. vispy/visuals/collections/raw_point_collection.py +113 -0
  395. vispy/visuals/collections/raw_polygon_collection.py +77 -0
  396. vispy/visuals/collections/raw_segment_collection.py +112 -0
  397. vispy/visuals/collections/raw_triangle_collection.py +78 -0
  398. vispy/visuals/collections/segment_collection.py +19 -0
  399. vispy/visuals/collections/triangle_collection.py +16 -0
  400. vispy/visuals/collections/util.py +168 -0
  401. vispy/visuals/colorbar.py +699 -0
  402. vispy/visuals/cube.py +41 -0
  403. vispy/visuals/ellipse.py +163 -0
  404. vispy/visuals/filters/__init__.py +10 -0
  405. vispy/visuals/filters/base_filter.py +242 -0
  406. vispy/visuals/filters/clipper.py +60 -0
  407. vispy/visuals/filters/clipping_planes.py +122 -0
  408. vispy/visuals/filters/color.py +181 -0
  409. vispy/visuals/filters/markers.py +28 -0
  410. vispy/visuals/filters/mesh.py +796 -0
  411. vispy/visuals/filters/picking.py +60 -0
  412. vispy/visuals/filters/tests/__init__.py +3 -0
  413. vispy/visuals/filters/tests/test_primitive_picking_filters.py +70 -0
  414. vispy/visuals/filters/tests/test_wireframe_filter.py +16 -0
  415. vispy/visuals/glsl/__init__.py +1 -0
  416. vispy/visuals/glsl/antialiasing.py +133 -0
  417. vispy/visuals/glsl/color.py +63 -0
  418. vispy/visuals/graphs/__init__.py +1 -0
  419. vispy/visuals/graphs/graph.py +240 -0
  420. vispy/visuals/graphs/layouts/__init__.py +55 -0
  421. vispy/visuals/graphs/layouts/circular.py +49 -0
  422. vispy/visuals/graphs/layouts/force_directed.py +211 -0
  423. vispy/visuals/graphs/layouts/networkx_layout.py +87 -0
  424. vispy/visuals/graphs/layouts/random.py +52 -0
  425. vispy/visuals/graphs/tests/__init__.py +1 -0
  426. vispy/visuals/graphs/tests/test_layouts.py +139 -0
  427. vispy/visuals/graphs/tests/test_networkx_layout.py +47 -0
  428. vispy/visuals/graphs/util.py +120 -0
  429. vispy/visuals/gridlines.py +105 -0
  430. vispy/visuals/gridmesh.py +98 -0
  431. vispy/visuals/histogram.py +58 -0
  432. vispy/visuals/image.py +688 -0
  433. vispy/visuals/image_complex.py +130 -0
  434. vispy/visuals/infinite_line.py +199 -0
  435. vispy/visuals/instanced_mesh.py +152 -0
  436. vispy/visuals/isocurve.py +213 -0
  437. vispy/visuals/isoline.py +241 -0
  438. vispy/visuals/isosurface.py +113 -0
  439. vispy/visuals/line/__init__.py +6 -0
  440. vispy/visuals/line/arrow.py +289 -0
  441. vispy/visuals/line/dash_atlas.py +90 -0
  442. vispy/visuals/line/line.py +545 -0
  443. vispy/visuals/line_plot.py +135 -0
  444. vispy/visuals/linear_region.py +199 -0
  445. vispy/visuals/markers.py +810 -0
  446. vispy/visuals/mesh.py +373 -0
  447. vispy/visuals/mesh_normals.py +159 -0
  448. vispy/visuals/plane.py +54 -0
  449. vispy/visuals/polygon.py +145 -0
  450. vispy/visuals/rectangle.py +196 -0
  451. vispy/visuals/regular_polygon.py +56 -0
  452. vispy/visuals/scrolling_lines.py +197 -0
  453. vispy/visuals/shaders/__init__.py +17 -0
  454. vispy/visuals/shaders/compiler.py +206 -0
  455. vispy/visuals/shaders/expression.py +99 -0
  456. vispy/visuals/shaders/function.py +788 -0
  457. vispy/visuals/shaders/multiprogram.py +145 -0
  458. vispy/visuals/shaders/parsing.py +140 -0
  459. vispy/visuals/shaders/program.py +161 -0
  460. vispy/visuals/shaders/shader_object.py +162 -0
  461. vispy/visuals/shaders/tests/__init__.py +0 -0
  462. vispy/visuals/shaders/tests/test_function.py +486 -0
  463. vispy/visuals/shaders/tests/test_multiprogram.py +78 -0
  464. vispy/visuals/shaders/tests/test_parsing.py +57 -0
  465. vispy/visuals/shaders/variable.py +272 -0
  466. vispy/visuals/spectrogram.py +169 -0
  467. vispy/visuals/sphere.py +80 -0
  468. vispy/visuals/surface_plot.py +192 -0
  469. vispy/visuals/tests/__init__.py +0 -0
  470. vispy/visuals/tests/test_arrows.py +109 -0
  471. vispy/visuals/tests/test_axis.py +120 -0
  472. vispy/visuals/tests/test_collections.py +15 -0
  473. vispy/visuals/tests/test_colorbar.py +179 -0
  474. vispy/visuals/tests/test_colormap.py +97 -0
  475. vispy/visuals/tests/test_ellipse.py +122 -0
  476. vispy/visuals/tests/test_histogram.py +24 -0
  477. vispy/visuals/tests/test_image.py +390 -0
  478. vispy/visuals/tests/test_image_complex.py +36 -0
  479. vispy/visuals/tests/test_infinite_line.py +53 -0
  480. vispy/visuals/tests/test_instanced_mesh.py +50 -0
  481. vispy/visuals/tests/test_isosurface.py +22 -0
  482. vispy/visuals/tests/test_linear_region.py +152 -0
  483. vispy/visuals/tests/test_markers.py +54 -0
  484. vispy/visuals/tests/test_mesh.py +261 -0
  485. vispy/visuals/tests/test_mesh_normals.py +218 -0
  486. vispy/visuals/tests/test_polygon.py +112 -0
  487. vispy/visuals/tests/test_rectangle.py +163 -0
  488. vispy/visuals/tests/test_regular_polygon.py +111 -0
  489. vispy/visuals/tests/test_scalable_textures.py +180 -0
  490. vispy/visuals/tests/test_sdf.py +73 -0
  491. vispy/visuals/tests/test_spectrogram.py +42 -0
  492. vispy/visuals/tests/test_text.py +95 -0
  493. vispy/visuals/tests/test_volume.py +542 -0
  494. vispy/visuals/tests/test_windbarb.py +33 -0
  495. vispy/visuals/text/__init__.py +7 -0
  496. vispy/visuals/text/_sdf_cpu.cpython-311-darwin.so +0 -0
  497. vispy/visuals/text/_sdf_cpu.pyx +110 -0
  498. vispy/visuals/text/_sdf_gpu.py +316 -0
  499. vispy/visuals/text/text.py +675 -0
  500. vispy/visuals/transforms/__init__.py +34 -0
  501. vispy/visuals/transforms/_util.py +191 -0
  502. vispy/visuals/transforms/base_transform.py +233 -0
  503. vispy/visuals/transforms/chain.py +300 -0
  504. vispy/visuals/transforms/interactive.py +98 -0
  505. vispy/visuals/transforms/linear.py +564 -0
  506. vispy/visuals/transforms/nonlinear.py +398 -0
  507. vispy/visuals/transforms/tests/__init__.py +0 -0
  508. vispy/visuals/transforms/tests/test_transforms.py +243 -0
  509. vispy/visuals/transforms/transform_system.py +339 -0
  510. vispy/visuals/tube.py +173 -0
  511. vispy/visuals/visual.py +923 -0
  512. vispy/visuals/volume.py +1335 -0
  513. vispy/visuals/windbarb.py +291 -0
  514. vispy/visuals/xyz_axis.py +34 -0
  515. vispy-0.14.0.dist-info/LICENSE.txt +36 -0
  516. vispy-0.14.0.dist-info/METADATA +218 -0
  517. vispy-0.14.0.dist-info/RECORD +519 -0
  518. vispy-0.14.0.dist-info/WHEEL +5 -0
  519. vispy-0.14.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,291 @@
1
+ # -*- coding: utf-8 -*-
2
+ # -----------------------------------------------------------------------------
3
+ # Copyright (c) Vispy Development Team. All Rights Reserved.
4
+ # Distributed under the (new) BSD License. See LICENSE.txt for more info.
5
+ # -----------------------------------------------------------------------------
6
+ """Windbarb Visual and shader definitions."""
7
+
8
+ import numpy as np
9
+
10
+ from vispy.color import ColorArray
11
+ from vispy.gloo import VertexBuffer
12
+ from vispy.visuals.shaders import Variable
13
+ from vispy.visuals.visual import Visual
14
+
15
+ _VERTEX_SHADER = """
16
+ uniform float u_antialias;
17
+ uniform float u_px_scale;
18
+ uniform float u_scale;
19
+
20
+ attribute vec3 a_position;
21
+ attribute vec2 a_wind;
22
+ attribute vec4 a_fg_color;
23
+ attribute vec4 a_bg_color;
24
+ attribute float a_edgewidth;
25
+ attribute float a_size;
26
+ attribute float a_trig;
27
+
28
+ varying vec4 v_fg_color;
29
+ varying vec4 v_bg_color;
30
+ varying vec2 v_wind;
31
+ varying float v_trig;
32
+ varying float v_edgewidth;
33
+ varying float v_antialias;
34
+
35
+ void main (void) {
36
+ $v_size = a_size * u_px_scale * u_scale;
37
+ v_edgewidth = a_edgewidth * float(u_px_scale);
38
+ v_wind = a_wind.xy;
39
+ v_trig = a_trig;
40
+ v_antialias = u_antialias;
41
+ v_fg_color = a_fg_color;
42
+ v_bg_color = a_bg_color;
43
+ gl_Position = $transform(vec4(a_position,1.0));
44
+ float edgewidth = max(v_edgewidth, 1.0);
45
+ gl_PointSize = ($v_size) + 4.*(edgewidth + 1.5*v_antialias);
46
+ }
47
+ """
48
+
49
+ _FRAGMENT_SHADER = """
50
+ #include "math/constants.glsl"
51
+ #include "math/signed-segment-distance.glsl"
52
+ #include "antialias/antialias.glsl"
53
+ varying vec4 v_fg_color;
54
+ varying vec4 v_bg_color;
55
+ varying vec2 v_wind;
56
+ varying float v_trig;
57
+ varying float v_edgewidth;
58
+ varying float v_antialias;
59
+
60
+ // SDF-Triangle by @rougier
61
+ // https://github.com/rougier/python-opengl/blob/master/code/chapter-06/SDF-triangle.py
62
+ float sdf_triangle(vec2 p, vec2 p0, vec2 p1, vec2 p2)
63
+ {
64
+ vec2 e0 = p1 - p0;
65
+ vec2 e1 = p2 - p1;
66
+ vec2 e2 = p0 - p2;
67
+ vec2 v0 = p - p0;
68
+ vec2 v1 = p - p1;
69
+ vec2 v2 = p - p2;
70
+ vec2 pq0 = v0 - e0*clamp( dot(v0,e0)/dot(e0,e0), 0.0, 1.0 );
71
+ vec2 pq1 = v1 - e1*clamp( dot(v1,e1)/dot(e1,e1), 0.0, 1.0 );
72
+ vec2 pq2 = v2 - e2*clamp( dot(v2,e2)/dot(e2,e2), 0.0, 1.0 );
73
+ float s = sign( e0.x*e2.y - e0.y*e2.x );
74
+ vec2 d = min( min( vec2( dot( pq0, pq0 ), s*(v0.x*e0.y-v0.y*e0.x) ),
75
+ vec2( dot( pq1, pq1 ), s*(v1.x*e1.y-v1.y*e1.x) )),
76
+ vec2( dot( pq2, pq2 ), s*(v2.x*e2.y-v2.y*e2.x) ));
77
+ return -sqrt(d.x)*sign(d.y);
78
+ }
79
+
80
+ void main()
81
+ {
82
+ // Discard plotting marker body and edge if zero-size
83
+ if ($v_size <= 0.)
84
+ discard;
85
+
86
+ float edgewidth = max(v_edgewidth, 1.0);
87
+ float linewidth = max(v_edgewidth, 1.0);
88
+ float edgealphafactor = min(v_edgewidth, 1.0);
89
+
90
+ float size = $v_size + 4.*(edgewidth + 1.5*v_antialias);
91
+ // factor 6 for acute edge angles that need room as for star marker
92
+
93
+ vec2 wind = v_wind;
94
+
95
+ if (v_trig > 0.)
96
+ {
97
+ float u = wind.x * cos(radians(wind.y));
98
+ float v = wind.x * sin(radians(wind.y));
99
+ wind = vec2(u, v);
100
+ }
101
+
102
+ // knots to m/s
103
+ wind *= 2.;
104
+
105
+ // normalized distance
106
+ float dx = 0.5;
107
+ // normalized center point
108
+ vec2 O = vec2(dx);
109
+ // normalized x-component
110
+ vec2 X = normalize(wind) * dx / M_SQRT2 / 1.1 * vec2(1, -1);
111
+ // normalized y-component
112
+ // here the barb can be mirrored for southern earth * (vec2(1., -1.)
113
+ //vec2 Y = X.yx * vec2(1., -1.); // southern hemisphere
114
+ vec2 Y = X.yx * vec2(-1., 1.); // northern hemisphere
115
+ // PointCoordinate
116
+ vec2 P = gl_PointCoord;
117
+
118
+ // calculate barb items
119
+ float speed = length(wind);
120
+ int flag = int(floor(speed / 50.));
121
+ speed -= float (50 * flag);
122
+ int longbarb = int(floor(speed / 10.));
123
+ speed -= float (longbarb * 10);
124
+ int shortbarb = int(floor(speed / 5.));
125
+ int calm = shortbarb + longbarb + flag;
126
+
127
+ // starting distance
128
+ float r;
129
+ // calm, plot circles
130
+ if (calm == 0)
131
+ {
132
+ r = abs(length(O-P)- dx * 0.2);
133
+ r = min(r, abs(length(O-P)- dx * 0.1));
134
+ }
135
+ else
136
+ {
137
+ // plot shaft
138
+ r = segment_distance(P, O, O-X);
139
+ float pos = 1.;
140
+
141
+ // plot flag(s)
142
+ while(flag >= 1)
143
+ {
144
+ r = min(r, sdf_triangle(P, O-X*pos, O-X*pos-X*.4-Y*.4, O-X*pos-X*.4));
145
+ flag -= 1;
146
+ pos -= 0.15;
147
+ }
148
+ // plot longbarb(s)
149
+ while(longbarb >= 1)
150
+ {
151
+ r = min(r, segment_distance(P, O-X*pos, O-X*pos-X*.4-Y*.4));
152
+ longbarb -= 1;
153
+ pos -= 0.15;
154
+ }
155
+ // plot shortbarb
156
+ while(shortbarb >= 1)
157
+ {
158
+ if (pos == 1.0)
159
+ pos -= 0.15;
160
+ r = min(r, segment_distance(P, O-X*pos, O-X*pos-X*.2-Y*.2));
161
+ shortbarb -= 1;
162
+ pos -= 0.15;
163
+ }
164
+ }
165
+
166
+ // apply correction for size
167
+ r *= size;
168
+
169
+ vec4 edgecolor = vec4(v_fg_color.rgb, edgealphafactor*v_fg_color.a);
170
+
171
+ if (r > 0.5 * v_edgewidth + v_antialias)
172
+ {
173
+ // out of the marker (beyond the outer edge of the edge
174
+ // including transition zone due to antialiasing)
175
+ discard;
176
+ }
177
+
178
+ gl_FragColor = filled(r, edgewidth, v_antialias, edgecolor);
179
+ }
180
+ """
181
+
182
+
183
+ class WindbarbVisual(Visual):
184
+ """Visual displaying windbarbs."""
185
+
186
+ _shaders = {
187
+ 'vertex': _VERTEX_SHADER,
188
+ 'fragment': _FRAGMENT_SHADER,
189
+ }
190
+
191
+ def __init__(self, **kwargs):
192
+ self._vbo = VertexBuffer()
193
+ self._v_size_var = Variable('varying float v_size')
194
+ self._marker_fun = None
195
+ self._data = None
196
+ Visual.__init__(self, vcode=self._shaders['vertex'], fcode=self._shaders['fragment'])
197
+ self.shared_program.vert['v_size'] = self._v_size_var
198
+ self.shared_program.frag['v_size'] = self._v_size_var
199
+ self.set_gl_state(depth_test=True, blend=True,
200
+ blend_func=('src_alpha', 'one_minus_src_alpha'))
201
+ self._draw_mode = 'points'
202
+ if len(kwargs) > 0:
203
+ self.set_data(**kwargs)
204
+ self.freeze()
205
+
206
+ def set_data(self, pos=None, wind=None, trig=True, size=50.,
207
+ antialias=1., edge_width=1., edge_color='black',
208
+ face_color='white'):
209
+ """Set the data used to display this visual.
210
+
211
+ Parameters
212
+ ----------
213
+ pos : array
214
+ The array of locations to display each windbarb.
215
+ wind : array
216
+ The array of wind vector components to display each windbarb.
217
+ in m/s. For knots divide by two.
218
+ trig : bool
219
+ True - wind contains (mag, ang)
220
+ False - wind contains (u, v)
221
+ defaults to True
222
+ size : float or array
223
+ The windbarb size in px.
224
+ antialias : float
225
+ The antialiased area (in pixels).
226
+ edge_width : float | None
227
+ The width of the windbarb outline in pixels.
228
+ edge_color : Color | ColorArray
229
+ The color used to draw each symbol outline.
230
+ face_color : Color | ColorArray
231
+ The color used to draw each symbol interior.
232
+ """
233
+ assert (isinstance(pos, np.ndarray) and
234
+ pos.ndim == 2 and pos.shape[1] in (2, 3))
235
+ assert (isinstance(wind, np.ndarray) and
236
+ pos.ndim == 2 and pos.shape[1] == 2)
237
+ if edge_width < 0:
238
+ raise ValueError('edge_width cannot be negative')
239
+
240
+ # since the windbarb starts in the fragment center,
241
+ # we need to multiply by 2 for correct length
242
+ size *= 2
243
+
244
+ edge_color = ColorArray(edge_color).rgba
245
+ if len(edge_color) == 1:
246
+ edge_color = edge_color[0]
247
+
248
+ face_color = ColorArray(face_color).rgba
249
+ if len(face_color) == 1:
250
+ face_color = face_color[0]
251
+
252
+ n = len(pos)
253
+ data = np.zeros(n, dtype=[('a_position', np.float32, 3),
254
+ ('a_wind', np.float32, 2),
255
+ ('a_trig', np.float32, 0),
256
+ ('a_fg_color', np.float32, 4),
257
+ ('a_bg_color', np.float32, 4),
258
+ ('a_size', np.float32),
259
+ ('a_edgewidth', np.float32)])
260
+ data['a_fg_color'] = edge_color
261
+ data['a_bg_color'] = face_color
262
+ data['a_edgewidth'] = edge_width
263
+ data['a_position'][:, :pos.shape[1]] = pos
264
+ data['a_wind'][:, :wind.shape[1]] = wind
265
+ if trig:
266
+ data['a_trig'] = 1.
267
+ else:
268
+ data['a_trig'] = 0.
269
+ data['a_size'] = size
270
+ self.shared_program['u_antialias'] = antialias
271
+ self._data = data
272
+ self._vbo.set_data(data)
273
+ self.shared_program.bind(self._vbo)
274
+ self.update()
275
+
276
+ def _prepare_transforms(self, view):
277
+ xform = view.transforms.get_transform()
278
+ view.view_program.vert['transform'] = xform
279
+
280
+ def _prepare_draw(self, view):
281
+ view.view_program['u_px_scale'] = view.transforms.pixel_scale
282
+ view.view_program['u_scale'] = 1
283
+
284
+ def _compute_bounds(self, axis, view):
285
+ pos = self._data['a_position']
286
+ if pos is None:
287
+ return None
288
+ if pos.shape[1] > axis:
289
+ return (pos[:, axis].min(), pos[:, axis].max())
290
+ else:
291
+ return (0, 0)
@@ -0,0 +1,34 @@
1
+
2
+ import numpy as np
3
+
4
+ from .line import LineVisual
5
+
6
+
7
+ class XYZAxisVisual(LineVisual):
8
+ """
9
+ Simple 3D axis for indicating coordinate system orientation. Axes are
10
+ x=red, y=green, z=blue.
11
+ """
12
+
13
+ def __init__(self, **kwargs):
14
+ pos = np.array([[0, 0, 0],
15
+ [1, 0, 0],
16
+ [0, 0, 0],
17
+ [0, 1, 0],
18
+ [0, 0, 0],
19
+ [0, 0, 1]])
20
+ color = np.array([[1, 0, 0, 1],
21
+ [1, 0, 0, 1],
22
+ [0, 1, 0, 1],
23
+ [0, 1, 0, 1],
24
+ [0, 0, 1, 1],
25
+ [0, 0, 1, 1]])
26
+ connect = 'segments'
27
+ method = 'gl'
28
+
29
+ kwargs.setdefault('pos', pos)
30
+ kwargs.setdefault('color', color)
31
+ kwargs.setdefault('connect', connect)
32
+ kwargs.setdefault('method', method)
33
+
34
+ LineVisual.__init__(self, **kwargs)
@@ -0,0 +1,36 @@
1
+ Vispy licensing terms
2
+ ---------------------
3
+
4
+ Vispy is licensed under the terms of the (new) BSD license:
5
+
6
+ Copyright (c) 2013-2023, Vispy Development Team. All rights reserved.
7
+
8
+ Redistribution and use in source and binary forms, with or without
9
+ modification, are permitted provided that the following conditions are met:
10
+ * Redistributions of source code must retain the above copyright
11
+ notice, this list of conditions and the following disclaimer.
12
+ * Redistributions in binary form must reproduce the above copyright
13
+ notice, this list of conditions and the following disclaimer in the
14
+ documentation and/or other materials provided with the distribution.
15
+ * Neither the name of Vispy Development Team nor the names of its
16
+ contributors may be used to endorse or promote products
17
+ derived from this software without specific prior written permission.
18
+
19
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
20
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
21
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
22
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
23
+ OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
24
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
25
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
26
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
27
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
28
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
29
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
+
31
+
32
+ Exceptions
33
+ ----------
34
+
35
+ The examples code in the examples directory can be considered public
36
+ domain, unless otherwise indicated in the corresponding source file.
@@ -0,0 +1,218 @@
1
+ Metadata-Version: 2.1
2
+ Name: vispy
3
+ Version: 0.14.0
4
+ Summary: Interactive visualization in Python
5
+ Home-page: http://vispy.org
6
+ Download-URL: https://pypi.python.org/pypi/vispy
7
+ Author: Vispy contributors
8
+ Author-email: vispy@googlegroups.com
9
+ License: BSD-3-Clause
10
+ Keywords: visualization,OpenGl,ES,medical,imaging,3D,plotting,numpy,bigdata,ipython,jupyter,widgets
11
+ Platform: any
12
+ Classifier: Development Status :: 3 - Alpha
13
+ Classifier: Intended Audience :: Science/Research
14
+ Classifier: Intended Audience :: Education
15
+ Classifier: Intended Audience :: Developers
16
+ Classifier: Topic :: Scientific/Engineering :: Visualization
17
+ Classifier: License :: OSI Approved :: BSD License
18
+ Classifier: Operating System :: MacOS :: MacOS X
19
+ Classifier: Operating System :: Microsoft :: Windows
20
+ Classifier: Operating System :: POSIX
21
+ Classifier: Programming Language :: Python
22
+ Classifier: Programming Language :: Python :: 3.8
23
+ Classifier: Programming Language :: Python :: 3.9
24
+ Classifier: Programming Language :: Python :: 3.10
25
+ Classifier: Programming Language :: Python :: 3.11
26
+ Classifier: Framework :: IPython
27
+ Provides: vispy
28
+ Requires-Python: >=3.8
29
+ Description-Content-Type: text/x-rst
30
+ License-File: LICENSE.txt
31
+ Requires-Dist: numpy
32
+ Requires-Dist: freetype-py
33
+ Requires-Dist: hsluv
34
+ Requires-Dist: kiwisolver
35
+ Requires-Dist: packaging
36
+ Provides-Extra: doc
37
+ Requires-Dist: pydata-sphinx-theme ; extra == 'doc'
38
+ Requires-Dist: numpydoc ; extra == 'doc'
39
+ Requires-Dist: sphinxcontrib-apidoc ; extra == 'doc'
40
+ Requires-Dist: sphinx-gallery ; extra == 'doc'
41
+ Requires-Dist: myst-parser ; extra == 'doc'
42
+ Requires-Dist: pillow ; extra == 'doc'
43
+ Requires-Dist: pytest ; extra == 'doc'
44
+ Requires-Dist: pyopengl ; extra == 'doc'
45
+ Provides-Extra: io
46
+ Requires-Dist: meshio ; extra == 'io'
47
+ Requires-Dist: Pillow ; extra == 'io'
48
+ Provides-Extra: ipython-static
49
+ Requires-Dist: ipython ; extra == 'ipython-static'
50
+ Provides-Extra: pyglet
51
+ Requires-Dist: pyglet >=1.2 ; extra == 'pyglet'
52
+ Provides-Extra: pyqt5
53
+ Requires-Dist: pyqt5 ; extra == 'pyqt5'
54
+ Provides-Extra: pyqt6
55
+ Requires-Dist: pyqt6 ; extra == 'pyqt6'
56
+ Provides-Extra: pyside
57
+ Requires-Dist: PySide ; extra == 'pyside'
58
+ Provides-Extra: pyside2
59
+ Requires-Dist: PySide2 ; extra == 'pyside2'
60
+ Provides-Extra: pyside6
61
+ Requires-Dist: PySide6 ; extra == 'pyside6'
62
+ Provides-Extra: sdl2
63
+ Requires-Dist: PySDL2 ; extra == 'sdl2'
64
+ Provides-Extra: tk
65
+ Requires-Dist: pyopengltk ; extra == 'tk'
66
+ Provides-Extra: wx
67
+ Requires-Dist: wxPython ; extra == 'wx'
68
+
69
+ VisPy: interactive scientific visualization in Python
70
+ -----------------------------------------------------
71
+
72
+ Main website: http://vispy.org
73
+
74
+ |Build Status| |Coverage Status| |Zenodo Link| |Contributor Covenant|
75
+
76
+ ----
77
+
78
+ VisPy is a **high-performance interactive 2D/3D data visualization
79
+ library**. VisPy leverages the computational power of modern **Graphics
80
+ Processing Units (GPUs)** through the **OpenGL** library to display very
81
+ large datasets. Applications of VisPy include:
82
+
83
+ - High-quality interactive scientific plots with millions of points.
84
+ - Direct visualization of real-time data.
85
+ - Fast interactive visualization of 3D models (meshes, volume
86
+ rendering).
87
+ - OpenGL visualization demos.
88
+ - Scientific GUIs with fast, scalable visualization widgets (`Qt <http://www.qt.io>`__ or
89
+ `IPython notebook <http://ipython.org/notebook.html>`__ with WebGL).
90
+
91
+ Releases
92
+ --------
93
+
94
+ See `CHANGELOG.md <./CHANGELOG.md>`_.
95
+
96
+ Announcements
97
+ -------------
98
+
99
+ See the `VisPy Website <https://vispy.org/news.html>`_.
100
+
101
+ Using VisPy
102
+ -----------
103
+
104
+ VisPy is a young library under heavy development at this time. It
105
+ targets two categories of users:
106
+
107
+ 1. **Users knowing OpenGL**, or willing to learn OpenGL, who want to
108
+ create beautiful and fast interactive 2D/3D visualizations in Python
109
+ as easily as possible.
110
+ 2. **Scientists without any knowledge of OpenGL**, who are seeking a
111
+ high-level, high-performance plotting toolkit.
112
+
113
+ If you're in the first category, you can already start using VisPy.
114
+ VisPy offers a Pythonic, NumPy-aware, user-friendly interface for OpenGL
115
+ ES 2.0 called **gloo**. You can focus on writing your GLSL code instead
116
+ of dealing with the complicated OpenGL API - VisPy takes care of that
117
+ automatically for you.
118
+
119
+ If you're in the second category, we're starting to build experimental
120
+ high-level plotting interfaces. Notably, VisPy now ships a very basic
121
+ and experimental OpenGL backend for matplotlib.
122
+
123
+
124
+ Installation
125
+ ------------
126
+
127
+ Please follow the detailed
128
+ `installation instructions <http://vispy.org/installation.html>`_
129
+ on the VisPy website.
130
+
131
+ Structure of VisPy
132
+ ------------------
133
+
134
+ Currently, the main subpackages are:
135
+
136
+ - **app**: integrates an event system and offers a unified interface on
137
+ top of many window backends (Qt4, wx, glfw, jupyter notebook,
138
+ and others). Relatively stable API.
139
+ - **gloo**: a Pythonic, object-oriented interface to OpenGL. Relatively
140
+ stable API.
141
+ - **scene**: this is the system underlying our upcoming high level
142
+ visualization interfaces. Under heavy development and still
143
+ experimental, it contains several modules.
144
+
145
+ - **Visuals** are graphical abstractions representing 2D shapes, 3D
146
+ meshes, text, etc.
147
+ - **Transforms** implement 2D/3D transformations implemented on both
148
+ CPU and GPU.
149
+ - **Shaders** implements a shader composition system for plumbing
150
+ together snippets of GLSL code.
151
+ - The **scene graph** tracks all objects within a transformation
152
+ graph.
153
+ - **plot**: high-level plotting interfaces.
154
+
155
+ The API of all public interfaces are subject to change in the future,
156
+ although **app** and **gloo** are *relatively* stable at this point.
157
+
158
+ Code of Conduct
159
+ ---------------
160
+
161
+ The VisPy community requires its members to abide by the
162
+ `Code of Conduct <./CODE_OF_CONDUCT.md>`_. In this CoC you will find the
163
+ expectations of members, the penalties for violating these expectations, and
164
+ how violations can be reported to the members of the community in charge of
165
+ enforcing this Code of Conduct.
166
+
167
+ Governance
168
+ ----------
169
+
170
+ The VisPy project maintainers make decisions about the project based on a
171
+ simple consensus model. This is described in more detail on the
172
+ `governance page <https://vispy.org/governance/GOVERNANCE.html>`_ of the vispy
173
+ website as well as the
174
+ `list of maintainers <https://vispy.org/governance/MAINTAINERS.html>`_.
175
+
176
+ In addition to decisions about the VisPy project, there is also a steering
177
+ committee for the overall VisPy organization. More information about this
178
+ committee can also be found on the `steering committee page <https://vispy.org/org/STEERING-COMMITTEE.html>`_
179
+ of the vispy website,
180
+ along with the organization's `charter <https://vispy.org/org/CHARTER.html>`_ and
181
+ other related documents (linked in the charter).
182
+
183
+ Genesis
184
+ -------
185
+
186
+ VisPy began when four developers with their own visualization libraries
187
+ decided to team up:
188
+ `Luke Campagnola <http://luke.campagnola.me/>`__ with `PyQtGraph <http://www.pyqtgraph.org/>`__,
189
+ `Almar Klein <http://www.almarklein.org/>`__ with `Visvis <https://github.com/almarklein/visvis>`__,
190
+ `Cyrille Rossant <http://cyrille.rossant.net>`__ with `Galry <https://github.com/rossant/galry>`__,
191
+ `Nicolas Rougier <http://www.loria.fr/~rougier/index.html>`__ with `Glumpy <https://github.com/rougier/Glumpy>`__.
192
+
193
+ Now VisPy looks to build on the expertise of these developers and the
194
+ broader open-source community to build a high-performance OpenGL library.
195
+
196
+ ----
197
+
198
+ External links
199
+ --------------
200
+
201
+ - `User mailing
202
+ list <https://groups.google.com/forum/#!forum/vispy>`__
203
+ - `Dev mailing
204
+ list <https://groups.google.com/forum/#!forum/vispy-dev>`__
205
+ - `Chat room <https://gitter.im/vispy/vispy>`__
206
+ - `Developer chat room <https://gitter.im/vispy/vispy-dev>`__
207
+ - `Wiki <http://github.com/vispy/vispy/wiki>`__
208
+ - `Gallery <http://vispy.org/gallery.html>`__
209
+ - `Documentation <http://vispy.readthedocs.org>`__
210
+
211
+ .. |Build Status| image:: https://github.com/vispy/vispy/workflows/CI/badge.svg
212
+ :target: https://github.com/vispy/vispy/actions
213
+ .. |Coverage Status| image:: https://img.shields.io/coveralls/vispy/vispy/main.svg
214
+ :target: https://coveralls.io/r/vispy/vispy?branch=main
215
+ .. |Zenodo Link| image:: https://zenodo.org/badge/5822/vispy/vispy.svg
216
+ :target: http://dx.doi.org/10.5281/zenodo.17869
217
+ .. |Contributor Covenant| image:: https://img.shields.io/badge/Contributor%20Covenant-2.0-4baaaa.svg
218
+ :target: CODE_OF_CONDUCT.md