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
vispy/glsl/__init__.py ADDED
@@ -0,0 +1,42 @@
1
+ # -*- coding: utf-8 -*-
2
+ # -----------------------------------------------------------------------------
3
+ # Copyright (c) 2014, Nicolas P. Rougier
4
+ # Distributed under the (new) BSD License. See LICENSE.txt for more info.
5
+ # -----------------------------------------------------------------------------
6
+ import os
7
+ import os.path as op
8
+
9
+ from .. import config
10
+
11
+
12
+ def find(name):
13
+ """Locate a filename into the shader library."""
14
+ if op.exists(name):
15
+ return name
16
+
17
+ path = op.dirname(__file__) or '.'
18
+
19
+ paths = [path] + config['include_path']
20
+
21
+ for path in paths:
22
+ filename = op.abspath(op.join(path, name))
23
+ if op.exists(filename):
24
+ return filename
25
+
26
+ for d in os.listdir(path):
27
+ fullpath = op.abspath(op.join(path, d))
28
+ if op.isdir(fullpath):
29
+ filename = op.abspath(op.join(fullpath, name))
30
+ if op.exists(filename):
31
+ return filename
32
+
33
+ return None
34
+
35
+
36
+ def get(name):
37
+ """Retrieve code from the given filename."""
38
+ filename = find(name)
39
+ if filename is None:
40
+ raise RuntimeError('Could not find %s' % name)
41
+ with open(filename) as fid:
42
+ return fid.read()
@@ -0,0 +1,7 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+ #include "antialias/stroke.glsl"
6
+ #include "antialias/filled.glsl"
7
+ #include "antialias/outline.glsl"
@@ -0,0 +1,31 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+ #include "antialias/stroke.glsl"
6
+
7
+
8
+ /* ---------------------------------------------------------
9
+ Compute antialiased fragment color for a line cap.
10
+ Type: butt
11
+
12
+ Parameters:
13
+ -----------
14
+
15
+
16
+ dx,dy : signed distances to cap point (in pixels)
17
+ linewidth: Stroke line width (in pixels)
18
+ antialias: Stroke antialiased area (in pixels)
19
+ stroke: Stroke color
20
+
21
+ Return:
22
+ -------
23
+ Fragment color (vec4)
24
+
25
+ --------------------------------------------------------- */
26
+ vec4 cap_butt(float dx, float dy, float linewidth, float antialias, vec4 color)
27
+ {
28
+ float t = linewidth/2.0 - antialias;
29
+ float d = max(abs(dx)+t, abs(dy));
30
+ return stroke(d, linewidth, antialias, color);
31
+ }
@@ -0,0 +1,29 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+ #include "antialias/stroke.glsl"
6
+
7
+
8
+ /* ---------------------------------------------------------
9
+ Compute antialiased fragment color for a line cap.
10
+ Type: round
11
+
12
+ Parameters:
13
+ -----------
14
+
15
+ dx,dy : signed distances to cap point (in pixels)
16
+ linewidth: Stroke line width (in pixels)
17
+ antialias: Stroke antialiased area (in pixels)
18
+ stroke: Stroke color
19
+
20
+ Return:
21
+ -------
22
+ Fragment color (vec4)
23
+
24
+ --------------------------------------------------------- */
25
+ vec4 cap_round(float dx, float dy, float linewidth, float antialias, vec4 color)
26
+ {
27
+ float d = lenght(vec2(dx,dy));
28
+ return stroke(d, linewidth, antialias, color);
29
+ }
@@ -0,0 +1,30 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+ #include "antialias/stroke.glsl"
6
+
7
+
8
+ /* ---------------------------------------------------------
9
+ Compute antialiased fragment color for a line cap.
10
+ Type: square
11
+
12
+ Parameters:
13
+ -----------
14
+
15
+ dx,dy : signed distances to cap point (in pixels)
16
+ linewidth: Stroke line width (in pixels)
17
+ antialias: Stroke antialiased area (in pixels)
18
+ stroke: Stroke color
19
+
20
+ Return:
21
+ -------
22
+ Fragment color (vec4)
23
+
24
+ --------------------------------------------------------- */
25
+ vec4 cap_square(float dx, float dy, float linewidth, float antialias, vec4 color)
26
+ {
27
+ float t = linewidth/2.0 - antialias;
28
+ float d = max(abs(dx),abs(dy));
29
+ return stroke(d, linewidth, antialias, color);
30
+ }
@@ -0,0 +1,30 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+ #include "antialias/stroke.glsl"
6
+
7
+ /* ---------------------------------------------------------
8
+ Compute antialiased fragment color for a line cap.
9
+ Type: triangle in
10
+
11
+ Parameters:
12
+ -----------
13
+
14
+ type : Type of cap
15
+ dx,dy : signed distances to cap point (in pixels)
16
+ linewidth: Stroke line width (in pixels)
17
+ antialias: Stroke antialiased area (in pixels)
18
+ stroke: Stroke color
19
+
20
+ Return:
21
+ -------
22
+ Fragment color (vec4)
23
+
24
+ --------------------------------------------------------- */
25
+ vec4 cap_triangle_in(float dx, float dy, float linewidth, float antialias, vec4 color)
26
+ {
27
+ float t = linewidth/2.0 - antialias;
28
+ float d = (abs(dx)+abs(dy));
29
+ return stroke(d, linewidth, antialias, color);
30
+ }
@@ -0,0 +1,30 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+ #include "antialias/stroke.glsl"
6
+
7
+ /* ---------------------------------------------------------
8
+ Compute antialiased fragment color for a line cap.
9
+ Type: triangle out
10
+
11
+ Parameters:
12
+ -----------
13
+
14
+ dx,dy : signed distances to cap point (in pixels)
15
+ linewidth: Stroke line width (in pixels)
16
+ antialias: Stroke antialiased area (in pixels)
17
+ stroke: Stroke color
18
+
19
+ Return:
20
+ -------
21
+ Fragment color (vec4)
22
+
23
+ --------------------------------------------------------- */
24
+ vec4 cap_triangle_out(float dx, float dy, float linewidth, float antialias, vec4 color)
25
+ {
26
+ float t = linewidth/2.0 - antialias;
27
+ float d = max(abs(dy),(t+abs(dx)-abs(dy)));
28
+
29
+ return stroke(d, linewidth, antialias, color);
30
+ }
@@ -0,0 +1,67 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+ #include "antialias/stroke.glsl"
6
+
7
+ // Cap types
8
+ // ----------------------------
9
+ const int CAP_NONE = 0;
10
+ const int CAP_ROUND = 1;
11
+ const int CAP_TRIANGLE_IN = 2;
12
+ const int CAP_TRIANGLE_OUT = 3;
13
+ const int CAP_SQUARE = 4;
14
+ const int CAP_BUTT = 5;
15
+
16
+
17
+ /* ---------------------------------------------------------
18
+ Compute antialiased fragment color for a line cap.
19
+ Require the stroke function.
20
+
21
+ Parameters:
22
+ -----------
23
+
24
+ type : Type of cap
25
+ dx,dy : signed distances to cap point (in pixels)
26
+ linewidth: Stroke line width (in pixels)
27
+ antialias: Stroke antialiased area (in pixels)
28
+ stroke: Stroke color
29
+
30
+ Return:
31
+ -------
32
+ Fragment color (vec4)
33
+
34
+ --------------------------------------------------------- */
35
+ vec4 cap(int type, float dx, float dy, float linewidth, float antialias, vec4 color)
36
+ {
37
+ float d = 0.0;
38
+ dx = abs(dx);
39
+ dy = abs(dy);
40
+ float t = linewidth/2.0 - antialias;
41
+
42
+ // Round
43
+ if (type == CAP_ROUND)
44
+ d = sqrt(dx*dx+dy*dy);
45
+
46
+ // Square
47
+ else if (type == CAP_SQUARE)
48
+ d = max(dx,dy);
49
+
50
+ // Butt
51
+ else if (type == CAP_BUTT)
52
+ d = max(dx+t,dy);
53
+
54
+ // Triangle in
55
+ else if (type == CAP_TRIANGLE_IN)
56
+ d = (dx+abs(dy));
57
+
58
+ // Triangle out
59
+ else if (type == CAP_TRIANGLE_OUT)
60
+ d = max(abs(dy),(t+dx-abs(dy)));
61
+
62
+ // None
63
+ else
64
+ discard;
65
+
66
+ return stroke(d, linewidth, antialias, color);
67
+ }
@@ -0,0 +1,67 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+ #include "antialias/stroke.glsl"
6
+
7
+ // Cap types
8
+ // ----------------------------
9
+ const int CAP_NONE = 0;
10
+ const int CAP_ROUND = 1;
11
+ const int CAP_TRIANGLE_IN = 2;
12
+ const int CAP_TRIANGLE_OUT = 3;
13
+ const int CAP_SQUARE = 4;
14
+ const int CAP_BUTT = 5;
15
+
16
+
17
+ /* ---------------------------------------------------------
18
+ Compute antialiased fragment color for a line cap.
19
+ Require the stroke function.
20
+
21
+ Parameters:
22
+ -----------
23
+
24
+ type : Type of cap
25
+ dx,dy : signed distances to cap point (in pixels)
26
+ linewidth: Stroke line width (in pixels)
27
+ antialias: Stroke antialiased area (in pixels)
28
+ stroke: Stroke color
29
+
30
+ Return:
31
+ -------
32
+ Fragment color (vec4)
33
+
34
+ --------------------------------------------------------- */
35
+ vec4 cap(int type, float dx, float dy, float linewidth, float antialias, vec4 color)
36
+ {
37
+ float d = 0.0;
38
+ dx = abs(dx);
39
+ dy = abs(dy);
40
+ float t = linewidth/2.0 - antialias;
41
+
42
+ // Round
43
+ if (type == CAP_ROUND)
44
+ d = sqrt(dx*dx+dy*dy);
45
+
46
+ // Square
47
+ else if (type == CAP_SQUARE)
48
+ d = max(dx,dy);
49
+
50
+ // Butt
51
+ else if (type == CAP_BUTT)
52
+ d = max(dx+t,dy);
53
+
54
+ // Triangle in
55
+ else if (type == CAP_TRIANGLE_IN)
56
+ d = (dx+abs(dy));
57
+
58
+ // Triangle out
59
+ else if (type == CAP_TRIANGLE_OUT)
60
+ d = max(abs(dy),(t+dx-abs(dy)));
61
+
62
+ // None
63
+ else
64
+ discard;
65
+
66
+ return stroke(d, linewidth, antialias, color);
67
+ }
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Copyright (c) Vispy Development Team
3
+ * Distributed under the (new) BSD License. See LICENSE.txt for more info.
4
+ *
5
+ * This file contains code for filling a shape with anti-alias.
6
+ */
7
+
8
+ /**
9
+ * Compute antialiased fragment color for a filled shape.
10
+ *
11
+ * Parameters:
12
+ * -----------
13
+ *
14
+ * distance
15
+ * Signed distance to border (in pixels)
16
+ * linewidth
17
+ * Stroke line width (in pixels)
18
+ * antialias
19
+ * Stroke antialiased area (in pixels)
20
+ * bg_color
21
+ * Fill color
22
+ *
23
+ * Return:
24
+ * -------
25
+ * Fragment color (vec4)
26
+ */
27
+ vec4 filled(float distance, float linewidth, float antialias, vec4 bg_color)
28
+ {
29
+ vec4 frag_color;
30
+ float t = linewidth/2.0 - antialias;
31
+ float signed_distance = distance;
32
+ float border_distance = abs(signed_distance) - t;
33
+ float alpha = border_distance/antialias;
34
+ alpha = exp(-alpha*alpha);
35
+
36
+ if( border_distance < 0.0 ) {
37
+ frag_color = bg_color;
38
+ } else if( signed_distance < 0.0 ) {
39
+ frag_color = bg_color;
40
+ } else {
41
+ frag_color = vec4(bg_color.rgb, alpha * bg_color.a);
42
+ }
43
+
44
+ return frag_color;
45
+ }
46
+
47
+ vec4 filled(float distance, float linewidth, float antialias, vec4 fg_color, vec4 bg_color)
48
+ {
49
+ return filled(distance, linewidth, antialias, fg_color);
50
+ }
@@ -0,0 +1,40 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+
6
+ /* ---------------------------------------------------------
7
+ Compute antialiased fragment color for an outlined shape.
8
+
9
+ Parameters:
10
+ -----------
11
+
12
+ distance : signed distance to border (in pixels)
13
+ linewidth: Stroke line width (in pixels)
14
+ antialias: Stroke antialiased area (in pixels)
15
+ stroke: Stroke color
16
+ fill: Fill color
17
+
18
+ Return:
19
+ -------
20
+ Fragment color (vec4)
21
+
22
+ --------------------------------------------------------- */
23
+
24
+ vec4 outline(float distance, float linewidth, float antialias, vec4 fg_color, vec4 bg_color)
25
+ {
26
+ vec4 frag_color;
27
+ float t = linewidth/2.0 - antialias;
28
+ float signed_distance = distance;
29
+ float border_distance = abs(signed_distance) - t;
30
+ float alpha = border_distance/antialias;
31
+ alpha = exp(-alpha*alpha);
32
+
33
+ if( border_distance < 0.0 )
34
+ frag_color = fg_color;
35
+ else if( signed_distance < 0.0 )
36
+ frag_color = mix(bg_color, fg_color, sqrt(alpha));
37
+ else
38
+ frag_color = vec4(fg_color.rgb, fg_color.a * alpha);
39
+ return frag_color;
40
+ }
@@ -0,0 +1,43 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+
6
+ /* ---------------------------------------------------------
7
+ Compute antialiased fragment color for a stroke line.
8
+
9
+ Parameters:
10
+ -----------
11
+
12
+ distance : signed distance to border (in pixels)
13
+ linewidth: Stroke line width (in pixels)
14
+ antialias: Stroke antialiased area (in pixels)
15
+ stroke: Stroke color
16
+
17
+ Return:
18
+ -------
19
+ Fragment color (vec4)
20
+
21
+ --------------------------------------------------------- */
22
+
23
+ vec4 stroke(float distance, float linewidth, float antialias, vec4 fg_color)
24
+ {
25
+ vec4 frag_color;
26
+ float t = linewidth/2.0 - antialias;
27
+ float signed_distance = distance;
28
+ float border_distance = abs(signed_distance) - t;
29
+ float alpha = border_distance/antialias;
30
+ alpha = exp(-alpha*alpha);
31
+
32
+ if( border_distance < 0.0 )
33
+ frag_color = fg_color;
34
+ else
35
+ frag_color = vec4(fg_color.rgb, fg_color.a * alpha);
36
+
37
+ return frag_color;
38
+ }
39
+
40
+ vec4 stroke(float distance, float linewidth, float antialias, vec4 fg_color, vec4 bg_color)
41
+ {
42
+ return stroke(distance, linewidth, antialias, fg_color);
43
+ }
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Copyright (c) Vispy Development Team
3
+ * Distributed under the (new) BSD License. See LICENSE.txt for more info.
4
+ *
5
+ * This file contains the shader code for drawing "angle" arrow heads, which
6
+ * are drawn as two lines moving away from the arrow tip under a certain
7
+ * angle.
8
+ */
9
+
10
+ #include "arrowheads/util.glsl"
11
+
12
+ /**
13
+ * Computes the signed distance to an angle arrow. This is a helper function,
14
+ * and in general you'll use arrow_angle_30, arrow_angle_60 or arrow_angle_90.
15
+ *
16
+ * Parameters:
17
+ * -----------
18
+ * texcoord
19
+ * Point to compute distance to
20
+ * size
21
+ * Size of the arrow head in pixels
22
+ * height
23
+ * Height of the head (pixel)
24
+ *
25
+ * See also
26
+ * --------
27
+ * arrow_angle_30, arrow_angle_60, arrow_angle_90
28
+ *
29
+ * Return:
30
+ * -------
31
+ * Signed distance to the arrow
32
+ */
33
+ float arrow_angle(vec2 texcoord, float size,
34
+ float linewidth, float antialias, float height)
35
+ {
36
+ float d;
37
+ vec2 start = -vec2(size/2.0, 0.0);
38
+ vec2 end = +vec2(size/2.0, 0.0);
39
+
40
+ vec2 p1 = start + size*vec2(0.0, +height);
41
+ vec2 p2 = start + size*vec2(0.0, -height);
42
+
43
+ // Arrow tip (beyond segment end)
44
+ if( texcoord.x > size/2.0) {
45
+ // Head : 2 segments
46
+ float d1 = line_distance(texcoord, end, p1);
47
+ float d2 = line_distance(texcoord, p2, end);
48
+ // Body : 1 segment
49
+ float d3 = end.x - texcoord.x;
50
+ d = max(max(d1,d2), d3);
51
+ } else {
52
+ // Head : 2 segments
53
+ float d1 = segment_distance(texcoord, p1, end);
54
+ float d2 = segment_distance(texcoord, p2, end);
55
+ // Body : 1 segment
56
+ float d3 = segment_distance(texcoord, vec2(0.0, 0.0), end);
57
+ d = min(min(d1,d2), d3);
58
+ }
59
+ return d;
60
+ }
61
+
62
+ /**
63
+ * Returns the distance to an arrow with tip corner of 30 degrees
64
+ *
65
+ * See also
66
+ * --------
67
+ * arro_angle, arrow_angle_60, arrow_angle_90
68
+ */
69
+ float arrow_angle_30(vec2 texcoord, float size,
70
+ float linewidth, float antialias)
71
+ {
72
+ return arrow_angle(texcoord, size, linewidth, antialias, 0.25);
73
+ }
74
+
75
+ /**
76
+ * Returns the distance to an arrow with tip corner of 60 degrees
77
+ *
78
+ * See also
79
+ * --------
80
+ * arro_angle, arrow_angle_30, arrow_angle_90
81
+ */
82
+ float arrow_angle_60(vec2 texcoord, float size,
83
+ float linewidth, float antialias)
84
+ {
85
+ return arrow_angle(texcoord, size, linewidth, antialias, 0.5);
86
+ }
87
+
88
+ /**
89
+ * Returns the distance to an arrow with tip corner of 90 degrees
90
+ *
91
+ * See also
92
+ * --------
93
+ * arro_angle, arrow_angle_30, arrow_angle_60
94
+ */
95
+ float arrow_angle_90(vec2 texcoord, float size,
96
+ float linewidth, float antialias)
97
+ {
98
+ return arrow_angle(texcoord, size, linewidth, antialias, 1.0);
99
+ }
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Copyright (c) Vispy Development Team
3
+ * Distributed under the (new) BSD License. See LICENSE.txt for more info.
4
+ *
5
+ * This file contains the fragment shader template for arrow heads.
6
+ *
7
+ * Variables
8
+ * ---------
9
+ *
10
+ * $arrow_type
11
+ * The type of arrow head. Examples incude: curved, stealth, triangle_30
12
+ * and more.
13
+ * $fill_type
14
+ * How to fill the arrow head. Possible values: "filled", "outline" or
15
+ * "stroke".
16
+ *
17
+ * Varyings
18
+ * --------
19
+ * v_size
20
+ * The arrow head size in pixels
21
+ * v_point_size
22
+ * The actual size of the point used for drawing. This is larger than the
23
+ * given arrow head size to make sure rotating goes well, and allows some
24
+ * space for anti-aliasing.
25
+ * v_color
26
+ * The color for the arrow head
27
+ * v_orientation
28
+ * A direction vector for the orientation of the arrow head
29
+ * v_antialias
30
+ * Anti-alias width
31
+ * v_linewidth
32
+ * Width for the stroke or outline of the shape.
33
+ */
34
+ #version 120
35
+ #include "math/constants.glsl"
36
+ #include "arrowheads/arrowheads.glsl"
37
+ #include "antialias/antialias.glsl"
38
+
39
+ // Varyings
40
+ // ------------------------------------
41
+ varying float v_size;
42
+ varying float v_point_size;
43
+ varying vec4 v_color;
44
+ varying vec3 v_orientation;
45
+ varying float v_antialias;
46
+ varying float v_linewidth;
47
+
48
+ void main()
49
+ {
50
+ // 1. Move the origin to the center of the point
51
+ // 2. Rotate the canvas for drawing the arrow
52
+ // 3. Scale the coordinates with v_point_size
53
+ vec2 P = gl_PointCoord.xy - vec2(0.5, 0.5);
54
+ P = vec2(v_orientation.x*P.x - v_orientation.y*P.y,
55
+ v_orientation.y*P.x + v_orientation.x*P.y) * v_point_size;
56
+
57
+ float distance = arrow_$arrow_type(P, v_size, v_linewidth, v_antialias);
58
+ gl_FragColor = $fill_type(distance, v_linewidth, v_antialias, v_color,
59
+ v_color);
60
+ }
@@ -0,0 +1,12 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+
6
+ #include "arrowheads/util.glsl"
7
+
8
+ #include "arrowheads/curved.glsl"
9
+ #include "arrowheads/stealth.glsl"
10
+ #include "arrowheads/triangle.glsl"
11
+ #include "arrowheads/angle.glsl"
12
+ #include "arrowheads/inhibitor.glsl"