vispy 0.15.0__cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of vispy might be problematic. Click here for more details.

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-313-x86_64-linux-gnu.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,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())