vispy 0.15.0__cp312-cp312-macosx_10_13_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.

Files changed (521) 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 +1003 -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 +1213 -0
  45. vispy/color/tests/__init__.py +0 -0
  46. vispy/color/tests/test_color.py +378 -0
  47. vispy/conftest.py +12 -0
  48. vispy/ext/__init__.py +0 -0
  49. vispy/ext/cocoapy.py +1522 -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 +162 -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 +700 -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 +594 -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 +568 -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 +1824 -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 +1046 -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 +105 -0
  274. vispy/scene/cameras/base_camera.py +551 -0
  275. vispy/scene/cameras/fly.py +474 -0
  276. vispy/scene/cameras/magnify.py +163 -0
  277. vispy/scene/cameras/panzoom.py +311 -0
  278. vispy/scene/cameras/perspective.py +338 -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 +183 -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 +448 -0
  306. vispy/testing/_testing.py +416 -0
  307. vispy/testing/image_tester.py +494 -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 +32 -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 +21 -0
  377. vispy/visuals/__init__.py +50 -0
  378. vispy/visuals/_scalable_textures.py +487 -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 +162 -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 +801 -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 +161 -0
  430. vispy/visuals/gridmesh.py +98 -0
  431. vispy/visuals/histogram.py +58 -0
  432. vispy/visuals/image.py +701 -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 +819 -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_gridlines.py +30 -0
  477. vispy/visuals/tests/test_histogram.py +24 -0
  478. vispy/visuals/tests/test_image.py +392 -0
  479. vispy/visuals/tests/test_image_complex.py +36 -0
  480. vispy/visuals/tests/test_infinite_line.py +53 -0
  481. vispy/visuals/tests/test_instanced_mesh.py +50 -0
  482. vispy/visuals/tests/test_isosurface.py +22 -0
  483. vispy/visuals/tests/test_linear_region.py +152 -0
  484. vispy/visuals/tests/test_markers.py +54 -0
  485. vispy/visuals/tests/test_mesh.py +261 -0
  486. vispy/visuals/tests/test_mesh_normals.py +218 -0
  487. vispy/visuals/tests/test_polygon.py +112 -0
  488. vispy/visuals/tests/test_rectangle.py +163 -0
  489. vispy/visuals/tests/test_regular_polygon.py +111 -0
  490. vispy/visuals/tests/test_scalable_textures.py +196 -0
  491. vispy/visuals/tests/test_sdf.py +73 -0
  492. vispy/visuals/tests/test_spectrogram.py +42 -0
  493. vispy/visuals/tests/test_surface_plot.py +57 -0
  494. vispy/visuals/tests/test_text.py +95 -0
  495. vispy/visuals/tests/test_volume.py +542 -0
  496. vispy/visuals/tests/test_windbarb.py +33 -0
  497. vispy/visuals/text/__init__.py +7 -0
  498. vispy/visuals/text/_sdf_cpu.cpython-312-darwin.so +0 -0
  499. vispy/visuals/text/_sdf_cpu.pyx +112 -0
  500. vispy/visuals/text/_sdf_gpu.py +316 -0
  501. vispy/visuals/text/text.py +675 -0
  502. vispy/visuals/transforms/__init__.py +34 -0
  503. vispy/visuals/transforms/_util.py +191 -0
  504. vispy/visuals/transforms/base_transform.py +233 -0
  505. vispy/visuals/transforms/chain.py +300 -0
  506. vispy/visuals/transforms/interactive.py +98 -0
  507. vispy/visuals/transforms/linear.py +564 -0
  508. vispy/visuals/transforms/nonlinear.py +398 -0
  509. vispy/visuals/transforms/tests/__init__.py +0 -0
  510. vispy/visuals/transforms/tests/test_transforms.py +243 -0
  511. vispy/visuals/transforms/transform_system.py +339 -0
  512. vispy/visuals/tube.py +173 -0
  513. vispy/visuals/visual.py +923 -0
  514. vispy/visuals/volume.py +1366 -0
  515. vispy/visuals/windbarb.py +291 -0
  516. vispy/visuals/xyz_axis.py +34 -0
  517. vispy-0.15.0.dist-info/METADATA +243 -0
  518. vispy-0.15.0.dist-info/RECORD +521 -0
  519. vispy-0.15.0.dist-info/WHEEL +6 -0
  520. vispy-0.15.0.dist-info/licenses/LICENSE.txt +36 -0
  521. vispy-0.15.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,139 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+ /*
6
+ Power scales are similar to linear scales, except there's an exponential
7
+ transform that is applied to the input domain value before the output range
8
+ value is computed. The mapping to the output range value y can be expressed
9
+ as a function of the input domain value x: y = mx^k + b, where k is the
10
+ exponent value. Power scales also support negative values, in which case the
11
+ input value is multiplied by -1, and the resulting output value is also
12
+ multiplied by -1.
13
+ */
14
+
15
+ uniform int power_scale_clamp;
16
+ uniform int power_scale_discard;
17
+ uniform vec2 power_scale_range;
18
+ uniform vec2 power_scale_domain;
19
+ uniform float power_scale_exponent;
20
+
21
+ float forward(float value)
22
+ {
23
+ vec2 domain = power_scale_domain;
24
+ vec2 range = power_scale_range;
25
+ float exponent = power_scale_exponent;
26
+ float v = pow(abs(value), exponent);
27
+ float t = (v - domain.x) /(domain.y - domain.x);
28
+
29
+ #ifdef __FRAGMENT_SHADER__
30
+ if (power_scale_discard > 0)
31
+ if (t != clamp(t, 0.0, 1.0))
32
+ discard;
33
+ #endif
34
+
35
+ if (power_scale_clamp > 0)
36
+ t = clamp(t, 0.0, 1.0);
37
+
38
+ return sign(value) * (range.x + t*(range.y - range.x));
39
+ }
40
+
41
+ vec2 forward(vec2 value)
42
+ {
43
+ vec2 domain = power_scale_domain;
44
+ vec2 range = power_scale_range;
45
+ float exponent = power_scale_exponent;
46
+ vec2 v = pow(abs(value), vec2(exponent));
47
+ vec2 t = (v - domain.x) /(domain.y - domain.x);
48
+
49
+ #ifdef __FRAGMENT_SHADER__
50
+ if (power_scale_discard > 0)
51
+ if (t != clamp(t, 0.0, 1.0))
52
+ discard;
53
+ #endif
54
+
55
+ if (power_scale_clamp > 0)
56
+ t = clamp(t, 0.0, 1.0);
57
+
58
+ return sign(value) * (range.x + t*(range.y - range.x));
59
+ }
60
+
61
+ vec3 forward(vec3 value)
62
+ {
63
+ vec2 domain = power_scale_domain;
64
+ vec2 range = power_scale_range;
65
+ float exponent = power_scale_exponent;
66
+ vec3 v = pow(abs(value), vec3(exponent));
67
+ vec3 t = (v - domain.x) /(domain.y - domain.x);
68
+
69
+ #ifdef __FRAGMENT_SHADER__
70
+ if (power_scale_discard > 0)
71
+ if (t != clamp(t, 0.0, 1.0))
72
+ discard;
73
+ #endif
74
+
75
+ if (power_scale_clamp > 0)
76
+ t = clamp(t, 0.0, 1.0);
77
+
78
+ return sign(value) * (range.x + t*(range.y - range.x));
79
+ }
80
+
81
+ float inverse(float value)
82
+ {
83
+ vec2 domain = power_scale_domain;
84
+ vec2 range = power_scale_range;
85
+ float exponent = power_scale_exponent;
86
+ float t = (abs(value) - range.x) / (range.y - range.x);
87
+
88
+ #ifdef __FRAGMENT_SHADER__
89
+ if (power_scale_discard > 0)
90
+ if (t != clamp(t, 0.0, 1.0))
91
+ discard;
92
+ #endif
93
+
94
+ if (power_scale_clamp > 0)
95
+ t = clamp(t, 0.0, 1.0);
96
+
97
+ float v = domain.x + t*(domain.y - domain.x);
98
+ return sign(value) * pow(abs(v), 1.0/exponent);
99
+ }
100
+
101
+ vec2 inverse(vec2 value)
102
+ {
103
+ vec2 domain = power_scale_domain;
104
+ vec2 range = power_scale_range;
105
+ float exponent = power_scale_exponent;
106
+ vec2 t = (abs(value) - range.x) / (range.y - range.x);
107
+
108
+ #ifdef __FRAGMENT_SHADER__
109
+ if (power_scale_discard > 0)
110
+ if (t != clamp(t, 0.0, 1.0))
111
+ discard;
112
+ #endif
113
+
114
+ if (power_scale_clamp > 0)
115
+ t = clamp(t, 0.0, 1.0);
116
+
117
+ vec2 v = domain.x + t*(domain.y - domain.x);
118
+ return sign(value) * pow(abs(v), vec2(1.0/exponent));
119
+ }
120
+
121
+ vec3 inverse(vec3 value)
122
+ {
123
+ vec2 domain = power_scale_domain;
124
+ vec2 range = power_scale_range;
125
+ float exponent = power_scale_exponent;
126
+ vec3 t = (abs(value) - range.x) / (range.y - range.x);
127
+
128
+ #ifdef __FRAGMENT_SHADER__
129
+ if (power_scale_discard > 0)
130
+ if (t != clamp(t, 0.0, 1.0))
131
+ discard;
132
+ #endif
133
+
134
+ if (power_scale_clamp > 0)
135
+ t = clamp(t, 0.0, 1.0);
136
+
137
+ vec3 v = domain.x + t*(domain.y - domain.x);
138
+ return sign(value) * pow(abs(v), vec3(1.0/exponent));
139
+ }
@@ -0,0 +1,7 @@
1
+ // Simple matrix projection
2
+ uniform mat4 projection;
3
+
4
+ vec4 transform(vec4 position)
5
+ {
6
+ return projection*position;
7
+ }
@@ -0,0 +1,13 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+
6
+ uniform mat4 view;
7
+ uniform mat4 model;
8
+ uniform mat4 projection;
9
+
10
+ vec4 transform(vec4 position)
11
+ {
12
+ return projection*view*model*position;
13
+ }
@@ -0,0 +1,45 @@
1
+ // -----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier
3
+ // Distributed under the (new) BSD License. See LICENSE.txt for more info.
4
+ // -----------------------------------------------------------------------------
5
+ uniform vec3 rotate_axis;
6
+ uniform vec3 rotate_origin;
7
+ uniform float rotate_angle;
8
+ uniform mat4 rotate_forward_matrix;
9
+ uniform mat4 rotate_inverse_matrix;
10
+
11
+ vec2 forward(vec2 position)
12
+ {
13
+ vec4 P = vec4(position,0.0,1.0);
14
+ P.xy -= rotate_origin.xy;
15
+ P = rotate_forward_matrix*P;
16
+ P.xy += rotate_origin.xy;
17
+ return P.xy;
18
+ }
19
+
20
+ vec3 forward(vec3 position)
21
+ {
22
+ vec4 P = vec4(position,1.0);
23
+ P.xyz -= rotate_origin;
24
+ P = rotate_forward_matrix*P;
25
+ P.xyz += rotate_origin;
26
+ return P.xyz;
27
+ }
28
+
29
+ vec2 inverse(vec2 position)
30
+ {
31
+ vec4 P = vec4(position,0.0,1.0);
32
+ P.xy -= rotate_origin.xy;
33
+ P = rotate_inverse_matrix*P;
34
+ P.xy += rotate_origin.xy;
35
+ return P.xy;
36
+ }
37
+
38
+ vec3 inverse(vec3 position)
39
+ {
40
+ vec4 P = vec4(position,1.0);
41
+ P.xyz -= rotate_origin;
42
+ P = rotate_inverse_matrix*P;
43
+ P.xyz += rotate_origin;
44
+ return P.xyz;
45
+ }
@@ -0,0 +1,15 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+ uniform mat4 trackball_view;
6
+ uniform mat4 trackball_model;
7
+ uniform mat4 trackball_projection;
8
+
9
+ vec4 transform(vec4 position)
10
+ {
11
+ return trackball_projection
12
+ * trackball_view
13
+ * trackball_model
14
+ * position;
15
+ }
@@ -0,0 +1,35 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+ uniform vec3 translate_translate;
6
+
7
+ vec2 forward(float x, float y)
8
+ { return vec2(x,y) + translate_translate.xy; }
9
+
10
+ vec2 forward(vec2 P)
11
+ { return P + translate_translate.xy; }
12
+
13
+ vec3 forward(float x, float y, float z)
14
+ { return vec3(x,y,z) + translate_translate); }
15
+
16
+ vec3 forward(vec3 P)
17
+ { return P + translate_translate; }
18
+
19
+ vec4 forward(vec4 P)
20
+ { return vec4(P.xyz + translate_translate, P.w); }
21
+
22
+ vec2 inverse(float x, float y)
23
+ { return vec2(x,y) - translate_translate.xy; }
24
+
25
+ vec2 inverse(vec2 P)
26
+ { return P - translate_translate.xy; }
27
+
28
+ vec3 inverse(float x, float y, float z)
29
+ { return vec3(x,y,z) - translate_translate); }
30
+
31
+ vec3 inverse(vec3 P)
32
+ { return P - translate_translate; }
33
+
34
+ vec4 inverse(vec4 P)
35
+ { return vec4(P.xyz - translate_translate, P.w); }
@@ -0,0 +1,38 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+ //
6
+ // Transverse Mercator projection
7
+ // See http://en.wikipedia.org/wiki/Transverse_Mercator_projection
8
+ //
9
+ // ----------------------------------------------------------------------------
10
+ #include "math/constants.glsl"
11
+
12
+ // Constants
13
+ const float k0 = 0.75;
14
+ const float a = 1.00;
15
+
16
+ // Helper functions
17
+ float cosh(float x) { return 0.5 * (exp(x)+exp(-x)); }
18
+ float sinh(float x) { return 0.5 * (exp(x)-exp(-x)); }
19
+
20
+ vec2 forward(float lambda, float phi)
21
+ {
22
+ float x = 0.5*k0*log((1.0+sin(lambda)*cos(phi)) / (1.0 - sin(lambda)*cos(phi)));
23
+ float y = k0*a*atan(tan(phi), cos(lambda));
24
+ return vec2(x,y);
25
+ }
26
+ vec2 forward(vec2 P) { return forward(P.x,P.y); }
27
+ vec3 forward(vec3 P) { return vec3(forward(P.x,P.y), P.z); }
28
+ vec4 forward(vec4 P) { return vec4(forward(P.x,P.y), P.z, P.w); }
29
+
30
+ vec2 inverse(float x, float y)
31
+ {
32
+ float lambda = atan(sinh(x/(k0*a)),cos(y/(k0*a)));
33
+ float phi = asin(sin(y/(k0*a))/cosh(x/(k0*a)));
34
+ return vec2(lambda,phi);
35
+ }
36
+ vec2 inverse(vec2 P) { return inverse(P.x,P.y); }
37
+ vec3 inverse(vec3 P) { return vec3(inverse(P.x,P.y), P.z); }
38
+ vec4 inverse(vec4 P) { return vec4(inverse(P.x,P.y), P.z, P.w); }
@@ -0,0 +1,14 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+ uniform vec4 viewport; // in pixels
6
+ uniform vec2 iResolution; // in pixels
7
+ void clipping(void)
8
+ {
9
+ vec2 position = gl_FragCoord.xy;
10
+ if( position.x < (viewport.x)) discard;
11
+ else if( position.x > (viewport.x+viewport.z)) discard;
12
+ else if( position.y < (viewport.y)) discard;
13
+ else if( position.y > (viewport.y+viewport.w)) discard;
14
+ }
@@ -0,0 +1,16 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+ uniform vec4 viewport; // in pixels
6
+ uniform vec2 iResolution; // in pixels
7
+ vec4 transform(vec4 position)
8
+ {
9
+ float w = viewport.z / iResolution.x;
10
+ float h = viewport.w / iResolution.y;
11
+ float x = 2.0*(viewport.x / iResolution.x) - 1.0 + w;
12
+ float y = 2.0*(viewport.y / iResolution.y) - 1.0 + h;
13
+ return vec4((x + w*position.x/position.w)*position.w,
14
+ (y + h*position.y/position.w)*position.w,
15
+ position.z, position.w);
16
+ }
@@ -0,0 +1,50 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+ uniform vec4 viewport_local;
6
+ uniform vec4 viewport_global;
7
+ uniform int viewport_transform;
8
+ uniform int viewport_clipping;
9
+
10
+ #ifdef __VERTEX_SHADER__
11
+ void transform(void)
12
+ {
13
+ if (viewport_transform == 0) return;
14
+
15
+ vec4 position = gl_Position;
16
+
17
+ float w = viewport_local.z / viewport_global.z;
18
+ float h = viewport_local.w / viewport_global.w;
19
+ float x = 2.0*(viewport_local.x / viewport_global.z) - 1.0 + w;
20
+ float y = 2.0*(viewport_local.y / viewport_global.w) - 1.0 + h;
21
+
22
+ gl_Position = vec4((x + w*position.x/position.w)*position.w,
23
+ (y + h*position.y/position.w)*position.w,
24
+ position.z, position.w);
25
+ }
26
+ #endif
27
+
28
+ #ifdef __FRAGMENT_SHADER__
29
+ void clipping(void)
30
+ {
31
+ // if (viewport_clipping == 0) return;
32
+
33
+ vec2 position = gl_FragCoord.xy;
34
+ if( position.x < (viewport_local.x)) discard;
35
+ else if( position.x > (viewport_local.x+viewport_local.z)) discard;
36
+ else if( position.y < (viewport_local.y)) discard;
37
+ else if( position.y > (viewport_local.y+viewport_local.w)) discard;
38
+
39
+ /*
40
+ if( length(position.x - viewport_local.x) < 1.0 )
41
+ gl_FragColor = vec4(0,0,0,1);
42
+ else if( length(position.x - viewport_local.x - viewport_local.z) < 1.0 )
43
+ gl_FragColor = vec4(0,0,0,1);
44
+ else if( length(position.y - viewport_local.y) < 1.0 )
45
+ gl_FragColor = vec4(0,0,0,1);
46
+ else if( length(position.y - viewport_local.y - viewport_local.w) < 1.0 )
47
+ gl_FragColor = vec4(0,0,0,1);
48
+ */
49
+ }
50
+ #endif
@@ -0,0 +1,24 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+
6
+ float get_x(float x)
7
+ {
8
+ return x;
9
+ }
10
+
11
+ float get_x(vec2 xy)
12
+ {
13
+ return xy.x;
14
+ }
15
+
16
+ float get_x(vec3 xyz)
17
+ {
18
+ return xyz.x;
19
+ }
20
+
21
+ float get_x(vec4 xyzw)
22
+ {
23
+ return xyzw.x;
24
+ }
@@ -0,0 +1,19 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+
6
+ float get_y(vec2 xy)
7
+ {
8
+ return xy.y;
9
+ }
10
+
11
+ float get_y(vec3 xyz)
12
+ {
13
+ return xyz.y;
14
+ }
15
+
16
+ float get_y(vec4 xyzw)
17
+ {
18
+ return xyzw.y;
19
+ }
@@ -0,0 +1,14 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+
6
+ float get_z(vec3 xyz)
7
+ {
8
+ return xyz.z;
9
+ }
10
+
11
+ float get_z(vec4 xyzw)
12
+ {
13
+ return xyzw.z;
14
+ }
vispy/io/__init__.py ADDED
@@ -0,0 +1,20 @@
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
+ """Utilities related to data reading, writing, fetching, and generation."""
5
+
6
+
7
+ from os import path as _op
8
+
9
+ from .datasets import (load_iris, load_crate, load_data_file, # noqa
10
+ load_spatial_filters) # noqa
11
+ from .mesh import read_mesh, write_mesh # noqa
12
+ from .image import (read_png, write_png, imread, imsave, _make_png, # noqa
13
+ _check_img_lib) # noqa
14
+
15
+ _data_dir = _op.join(_op.dirname(__file__), '_data')
16
+
17
+ __all__ = ['imread', 'imsave', 'load_iris', 'load_crate',
18
+ 'load_spatial_filters', 'load_data_file',
19
+ 'read_mesh', 'read_png', 'write_mesh',
20
+ 'write_png']
Binary file
vispy/io/datasets.py ADDED
@@ -0,0 +1,94 @@
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
+ import numpy as np
6
+ from os import path as op
7
+
8
+ from ..util import load_data_file
9
+
10
+ # This is the package data dir, not the dir for config, etc.
11
+ DATA_DIR = op.join(op.dirname(__file__), '_data')
12
+
13
+
14
+ def load_iris():
15
+ """Load the iris dataset
16
+
17
+ Returns
18
+ -------
19
+ iris : NpzFile
20
+ data['data'] : a (150, 4) NumPy array with the iris' features
21
+ data['group'] : a (150,) NumPy array with the iris' group
22
+ """
23
+ return np.load(load_data_file('iris/iris.npz',
24
+ force_download='2014-09-04'))
25
+
26
+
27
+ def load_crate():
28
+ """Load an image of a crate
29
+
30
+ Returns
31
+ -------
32
+ crate : array
33
+ 256x256x3 crate image.
34
+ """
35
+ return np.load(load_data_file('orig/crate.npz'))['crate']
36
+
37
+
38
+ def pack_unit(value):
39
+ """Packs float values between [0,1] into 4 unsigned int8
40
+
41
+ Returns
42
+ -------
43
+ pack: array
44
+ packed interpolation kernel
45
+ """
46
+ pack = np.zeros(value.shape + (4,), dtype=np.ubyte)
47
+ for i in range(4):
48
+ value, pack[..., i] = np.modf(value * 256.)
49
+ return pack
50
+
51
+
52
+ def pack_ieee(value):
53
+ """Packs float ieee binary representation into 4 unsigned int8
54
+
55
+ Returns
56
+ -------
57
+ pack: array
58
+ packed interpolation kernel
59
+ """
60
+ return np.fromstring(value.tobytes(),
61
+ np.ubyte).reshape((value.shape + (4,)))
62
+
63
+
64
+ def load_spatial_filters(packed=True):
65
+ """Load spatial-filters kernel
66
+
67
+ Parameters
68
+ ----------
69
+ packed : bool
70
+ Whether or not the data should be in "packed" representation
71
+ for use in GLSL code.
72
+
73
+ Returns
74
+ -------
75
+ kernel : array
76
+ 16x1024x4 (packed float in rgba) or
77
+ 16x1024 (unpacked float)
78
+ 16 interpolation kernel with length 1024 each.
79
+
80
+ names : tuple of strings
81
+ Respective interpolation names, plus "Nearest" which does
82
+ not require a filter but can still be used
83
+ """
84
+ names = ("Linear", "Hanning", "Hamming", "Hermite",
85
+ "Kaiser", "Quadric", "Cubic", "CatRom",
86
+ "Mitchell", "Spline16", "Spline36", "Gaussian",
87
+ "Bessel", "Sinc", "Lanczos", "Blackman", "Nearest")
88
+
89
+ kernel = np.load(op.join(DATA_DIR, 'spatial-filters.npy'))
90
+ if packed:
91
+ # convert the kernel to a packed representation
92
+ kernel = pack_unit(kernel)
93
+
94
+ return kernel, names