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,83 @@
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 vertex shader template for arrow heads.
6
+ *
7
+ * Variables
8
+ * ---------
9
+ * $transform
10
+ * Projection matrix of vertex to the screen
11
+ *
12
+ * Attributes
13
+ * ----------
14
+ * v1
15
+ * The first vertex of the arrow body
16
+ * v2
17
+ * The second vertex of the arrow body. This will also be the center
18
+ * location of the arrow head. Using v1, we determine a direction vector
19
+ * to automatically determine the orientation.
20
+ * size
21
+ * Size of the arrow head in pixels
22
+ * color
23
+ * The color of the arrow head
24
+ * v_linewidth
25
+ * The width for the stroke or outline of the shape.
26
+ *
27
+ * Varyings
28
+ * --------
29
+ * v_size
30
+ * The arrow head size in pixels
31
+ * v_point_size
32
+ * The actual size of the point used for drawing. This is larger than the
33
+ * given arrow head size to make sure rotating goes well, and allows some
34
+ * space for anti-aliasing.
35
+ * v_color
36
+ * The color for the arrow head
37
+ * v_orientation
38
+ * A direction vector for the orientation of the arrow head
39
+ * v_antialias
40
+ * Anti-alias width
41
+ * v_linewidth
42
+ * Width for the stroke or outline of the shape.
43
+ */
44
+
45
+ #include "math/constants.glsl"
46
+
47
+ // Uniforms
48
+ // ------------------------------------
49
+ uniform float antialias;
50
+
51
+ // Attributes
52
+ // ------------------------------------
53
+ attribute vec4 v1;
54
+ attribute vec4 v2;
55
+ attribute float size;
56
+ attribute vec4 color;
57
+ attribute float linewidth;
58
+
59
+ // Varyings
60
+ // ------------------------------------
61
+ varying float v_size;
62
+ varying float v_point_size;
63
+ varying vec4 v_color;
64
+ varying vec3 v_orientation;
65
+ varying float v_antialias;
66
+ varying float v_linewidth;
67
+
68
+ // Main (hooked)
69
+ // ------------------------------------
70
+ void main (void)
71
+ {
72
+ v_size = size;
73
+ v_point_size = M_SQRT2 * size + 2.0 * (linewidth + 2.0*antialias);
74
+ v_antialias = antialias;
75
+ v_color = color;
76
+ v_linewidth = linewidth;
77
+
78
+ vec3 body = $transform(v2).xyz - $transform(v1).xyz;
79
+ v_orientation = (body / length(body));
80
+
81
+ gl_Position = $transform(v2);
82
+ gl_PointSize = v_point_size;
83
+ }
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Copyright (c) Vispy Development Team
3
+ * Distributed under the (new) BSD License. See LICENSE.txt for more info.
4
+ *
5
+ * This files contains the code for drawing curved arrow heads.
6
+ */
7
+
8
+ #include "arrowheads/util.glsl"
9
+
10
+ /**
11
+ * Computes the signed distance to an curved arrow
12
+ *
13
+ * Parameters:
14
+ * -----------
15
+ * texcoord
16
+ * Point to compute distance to
17
+ * size
18
+ * size of the arrow head in pixels
19
+ * linewidth
20
+ * Width of the line
21
+ * antialias
22
+ * Anti alias width
23
+ *
24
+ * Return:
25
+ * -------
26
+ * Signed distance to the arrow
27
+ *
28
+ */
29
+ float arrow_curved(vec2 texcoord, float size, float linewidth, float antialias)
30
+ {
31
+ vec2 start = -vec2(size/2.0, 0.0);
32
+ vec2 end = +vec2(size/2.0, 0.0);
33
+ float height = 0.5;
34
+
35
+ vec2 p1 = start + size*vec2(0.0, -height);
36
+ vec2 p2 = start + size*vec2(0.0, +height);
37
+ vec2 p3 = end;
38
+
39
+ // Head : 3 circles
40
+ vec2 c1 = circle_from_2_points(p1, p3, 6.0*size).zw;
41
+ float d1 = length(texcoord - c1) - 6.0*size;
42
+ vec2 c2 = circle_from_2_points(p2, p3, 6.0*size).xy;
43
+ float d2 = length(texcoord - c2) - 6.0*size;
44
+ vec2 c3 = circle_from_2_points(p1, p2, 3.0*size).xy;
45
+ float d3 = length(texcoord - c3) - 3.0*size;
46
+
47
+ return -min(d3, min(d1,d2));
48
+ }
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Copyright (c) Vispy Development Team
3
+ * Distributed under the (new) BSD License. See LICENSE.txt for more info.
4
+ *
5
+ * This files contains the code for drawing curved arrow heads.
6
+ */
7
+
8
+ #include "arrowheads/util.glsl"
9
+
10
+
11
+ float arrow_inhibitor_round(vec2 texcoord, float size,
12
+ float linewidth, float antialias)
13
+ {
14
+ vec2 c = vec2(size/2.0, 0.0);
15
+ float radius = size/2.0;
16
+ float radius_inner = radius - linewidth/6.0;
17
+
18
+ float d1 = length(texcoord - c) - radius;
19
+ float d2 = length(texcoord - c) - radius_inner;
20
+ float d3 = texcoord.x - (size/2.5);
21
+
22
+ return max(d3, max(d1, -d2));
23
+ //return max(d1, -d2);
24
+ }
25
+
26
+
@@ -0,0 +1,46 @@
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 code for drawing "stealth" type arrow heads.
6
+ */
7
+
8
+ #include "arrowheads/util.glsl"
9
+
10
+
11
+ /**
12
+ * Computes the signed distance to an stealth arrow
13
+ *
14
+ * Parameters:
15
+ * -----------
16
+ *
17
+ * texcoord
18
+ * Point to compute distance to
19
+ * size
20
+ * Size of the arrow head in pixels
21
+ * linewidth
22
+ * Width of the line
23
+ * antialias
24
+ * Anti alias width
25
+ *
26
+ * Return:
27
+ * -------
28
+ * Signed distance to the arrow
29
+ */
30
+ float arrow_stealth(vec2 texcoord, float size,
31
+ float linewidth, float antialias)
32
+ {
33
+ vec2 start = -vec2(size/2.0, 0.0);
34
+ vec2 end = +vec2(size/2.0, 0.0);
35
+ float height = 0.5;
36
+
37
+ // Head : 4 lines
38
+ float d1 = line_distance(texcoord, start + size*vec2(0.0, +height), end);
39
+ float d2 = line_distance(texcoord, start + size*vec2(0.0, +height),
40
+ start + size*vec2(0.3, 0.0));
41
+ float d3 = line_distance(texcoord, start + size*vec2(0.0, -height), end);
42
+ float d4 = line_distance(texcoord, start + size*vec2(0.0, -height),
43
+ start + size*vec2(0.25, 0.0));
44
+
45
+ return max( max(-d1, d3), - max(-d2,d4));
46
+ }
@@ -0,0 +1,97 @@
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 code for drawing complete triangles as arrow heads.
6
+ * this includes triangles with a top corner of 30, 60 and 90 degrees.
7
+ */
8
+
9
+ #include "arrowheads/util.glsl"
10
+
11
+ /**
12
+ * Computes the signed distance to a triangle arrow. This is a helper function,
13
+ * and in general you'll use arrow_triangle_30, arrow_triangle_60, or
14
+ * arrow_triangle_90.
15
+ *
16
+ * Parameters:
17
+ * -----------
18
+ *
19
+ * texcoord
20
+ * Point to compute distance to
21
+ * size
22
+ * Size of the arrow head in pixels
23
+ * linewidth
24
+ * Width of the line
25
+ * antialias
26
+ * Anti alias width
27
+ * height
28
+ * Height of the head (pixel)
29
+ *
30
+ * See also
31
+ * --------
32
+ * arrow_triangle_30, arrow_triangle_60, arrow_triangle_90
33
+ *
34
+ * Return:
35
+ * -------
36
+ * Signed distance to the arrow
37
+ *
38
+ */
39
+ float arrow_triangle(vec2 texcoord, float size,
40
+ float linewidth, float antialias, float height)
41
+ {
42
+ vec2 start = -vec2(size/2.0, 0.0);
43
+ vec2 end = +vec2(size/2.0, 0.0);
44
+
45
+ // Head : 3 lines
46
+ vec2 p1 = start + size*vec2(0.0, +height);
47
+ vec2 p2 = start + size*vec2(0.0, -height);
48
+
49
+ float d1 = line_distance(texcoord, end, p1);
50
+ float d2 = line_distance(texcoord, p2, end);
51
+ float d3 = start.x - texcoord.x;
52
+
53
+
54
+ return max(max(d1, d2), d3);
55
+ }
56
+
57
+ /**
58
+ * Returns the signed distance to an triangle arrow head with a tip corner
59
+ * of 30 degrees.
60
+ *
61
+ * See also
62
+ * --------
63
+ * arrow_triangle, arrow_triangle_60, arrow_triangle_90
64
+ */
65
+ float arrow_triangle_30(vec2 texcoord, float size,
66
+ float linewidth, float antialias)
67
+ {
68
+ return arrow_triangle(texcoord, size, linewidth, antialias, 0.25);
69
+ }
70
+
71
+ /**
72
+ * Returns the signed distance to an triangle arrow head with a tip corner
73
+ * of 60 degrees.
74
+ *
75
+ * See also
76
+ * --------
77
+ * arrow_triangle, arrow_triangle_30, arrow_triangle_90
78
+ */
79
+ float arrow_triangle_60(vec2 texcoord, float size,
80
+ float linewidth, float antialias)
81
+ {
82
+ return arrow_triangle(texcoord, size, linewidth, antialias, 0.5);
83
+ }
84
+
85
+ /**
86
+ * Returns the signed distance to an triangle arrow head with a tip corner
87
+ * of 90 degrees.
88
+ *
89
+ * See also
90
+ * --------
91
+ * arrow_triangle, arrow_triangle_30, arrow_triangle_60
92
+ */
93
+ float arrow_triangle_90(vec2 texcoord, float size,
94
+ float linewidth, float antialias)
95
+ {
96
+ return arrow_triangle(texcoord, size, linewidth, antialias, 1.0);
97
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Copyright (c) Vispy Development Team
3
+ * Distributed under the (new) BSD License. See LICENSE.txt for more info.
4
+ *
5
+ * This is a convencience include file with includes some math helper
6
+ * functions.
7
+ */
8
+
9
+ #include "math/signed-line-distance.glsl"
10
+ #include "math/point-to-line-distance.glsl"
11
+ #include "math/signed-segment-distance.glsl"
12
+ #include "math/circle-through-2-points.glsl"
13
+ #include "math/point-to-line-projection.glsl"
@@ -0,0 +1,12 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+ #include "arrows/util.glsl"
6
+
7
+ float arrow_angle_30(vec2 texcoord,
8
+ float body, float head,
9
+ float linewidth, float antialias)
10
+ {
11
+ return arrow_angle(texcoord, body, head, 0.25, linewidth, antialias);
12
+ }
@@ -0,0 +1,12 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+ #include "arrows/util.glsl"
6
+
7
+ float arrow_angle_60(vec2 texcoord,
8
+ float body, float head,
9
+ float linewidth, float antialias)
10
+ {
11
+ return arrow_angle(texcoord, body, head, 0.5, linewidth, antialias);
12
+ }
@@ -0,0 +1,12 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+ #include "arrows/util.glsl"
6
+
7
+ float arrow_angle_90(vec2 texcoord,
8
+ float body, float head,
9
+ float linewidth, float antialias)
10
+ {
11
+ return arrow_angle(texcoord, body, head, 1.0, linewidth, antialias);
12
+ }
@@ -0,0 +1,39 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+ // Hooks:
6
+ // <paint> : "stroke", "filled" or "outline"
7
+ // <marker> : "steath", "curved",
8
+ // "angle_30", "angle_60", "angle_90",
9
+ // "triangle_30", "triangle_60", "triangle_90",
10
+ // ----------------------------------------------------------------------------
11
+ #version 120
12
+ #include "math/constants.glsl"
13
+ #include "arrows/arrows.glsl"
14
+ #include "antialias/antialias.glsl"
15
+
16
+ // Varyings
17
+ // ------------------------------------
18
+ varying float v_antialias;
19
+ varying float v_linewidth;
20
+ varying float v_size;
21
+ varying float v_head;
22
+ varying float v_texcoord;
23
+ varying vec4 v_fg_color;
24
+ varying vec4 v_bg_color;
25
+ varying vec2 v_orientation;
26
+
27
+ // Main (hooked)
28
+ // ------------------------------------
29
+ void main()
30
+ {
31
+ vec2 P = gl_PointCoord.xy - vec2(0.5,0.5);
32
+ P = vec2(v_orientation.x*P.x - v_orientation.y*P.y,
33
+ v_orientation.y*P.x + v_orientation.x*P.y) * v_size;
34
+ float point_size = M_SQRT2*v_size + 2.0 * (v_linewidth + 1.5*v_antialias);
35
+ float body = v_size/M_SQRT2;
36
+
37
+ float distance = arrow_<arrow>(P, body, v_head*body, v_linewidth, v_antialias);
38
+ gl_FragColor = <paint>(distance, v_linewidth, v_antialias, v_fg_color, v_bg_color);
39
+ }
@@ -0,0 +1,49 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+ // Hooks:
6
+ // <transform> : vec4 function(position, ...)
7
+ //
8
+ // ----------------------------------------------------------------------------
9
+ #include "math/constants.glsl"
10
+
11
+ // Uniforms
12
+ // ------------------------------------
13
+ uniform float antialias;
14
+
15
+ // Attributes
16
+ // ------------------------------------
17
+ attribute vec2 position;
18
+ attribute float size;
19
+ attribute float head;
20
+ attribute vec4 fg_color;
21
+ attribute vec4 bg_color;
22
+ attribute float orientation;
23
+ attribute float linewidth;
24
+
25
+ // Varyings
26
+ // ------------------------------------
27
+ varying float v_size;
28
+ varying float v_head;
29
+ varying vec4 v_fg_color;
30
+ varying vec4 v_bg_color;
31
+ varying vec2 v_orientation;
32
+ varying float v_antialias;
33
+ varying float v_linewidth;
34
+
35
+ // Main (hooked)
36
+ // ------------------------------------
37
+ void main (void)
38
+ {
39
+ v_size = size;
40
+ v_head = head;
41
+ v_linewidth = linewidth;
42
+ v_antialias = antialias;
43
+ v_fg_color = fg_color;
44
+ v_bg_color = bg_color;
45
+ v_orientation = vec2(cos(orientation), sin(orientation));
46
+
47
+ gl_Position = <transform>;
48
+ gl_PointSize = M_SQRT2 * size + 2.0 * (linewidth + 1.5*antialias);
49
+ }
@@ -0,0 +1,17 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+
6
+ #include "arrows/util.glsl"
7
+
8
+ #include "arrows/curved.glsl"
9
+ #include "arrows/stealth.glsl"
10
+
11
+ #include "arrows/angle-30.glsl"
12
+ #include "arrows/angle-60.glsl"
13
+ #include "arrows/angle-90.glsl"
14
+
15
+ #include "arrows/triangle-30.glsl"
16
+ #include "arrows/triangle-60.glsl"
17
+ #include "arrows/triangle-90.glsl"
@@ -0,0 +1,187 @@
1
+ /* -------------------------------------------------------------------------
2
+ * Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ * Distributed under the (new) BSD License.
4
+ * -------------------------------------------------------------------------
5
+ */
6
+
7
+ // Computes the signed distance from a line
8
+ float line_distance(vec2 p, vec2 p1, vec2 p2) {
9
+ vec2 center = (p1 + p2) * 0.5;
10
+ float len = length(p2 - p1);
11
+ vec2 dir = (p2 - p1) / len;
12
+ vec2 rel_p = p - center;
13
+ return dot(rel_p, vec2(dir.y, -dir.x));
14
+ }
15
+
16
+ // Computes the signed distance from a line segment
17
+ float segment_distance(vec2 p, vec2 p1, vec2 p2) {
18
+ vec2 center = (p1 + p2) * 0.5;
19
+ float len = length(p2 - p1);
20
+ vec2 dir = (p2 - p1) / len;
21
+ vec2 rel_p = p - center;
22
+ float dist1 = abs(dot(rel_p, vec2(dir.y, -dir.x)));
23
+ float dist2 = abs(dot(rel_p, dir)) - 0.5*len;
24
+ return max(dist1, dist2);
25
+ }
26
+
27
+ // Computes the center with given radius passing through p1 & p2
28
+ vec4 circle_from_2_points(vec2 p1, vec2 p2, float radius)
29
+ {
30
+ float q = length(p2-p1);
31
+ vec2 m = (p1+p2)/2.0;
32
+ vec2 d = vec2( sqrt(radius*radius - (q*q/4.0)) * (p1.y-p2.y)/q,
33
+ sqrt(radius*radius - (q*q/4.0)) * (p2.x-p1.x)/q);
34
+ return vec4(m+d, m-d);
35
+ }
36
+
37
+ float arrow_curved(vec2 texcoord,
38
+ float body, float head,
39
+ float linewidth, float antialias)
40
+ {
41
+ float w = linewidth/2.0 + antialias;
42
+ vec2 start = -vec2(body/2.0, 0.0);
43
+ vec2 end = +vec2(body/2.0, 0.0);
44
+ float height = 0.5;
45
+
46
+ vec2 p1 = end - head*vec2(+1.0,+height);
47
+ vec2 p2 = end - head*vec2(+1.0,-height);
48
+ vec2 p3 = end;
49
+
50
+ // Head : 3 circles
51
+ vec2 c1 = circle_from_2_points(p1, p3, 1.25*body).zw;
52
+ float d1 = length(texcoord - c1) - 1.25*body;
53
+ vec2 c2 = circle_from_2_points(p2, p3, 1.25*body).xy;
54
+ float d2 = length(texcoord - c2) - 1.25*body;
55
+ vec2 c3 = circle_from_2_points(p1, p2, max(body-head, 1.0*body)).xy;
56
+ float d3 = length(texcoord - c3) - max(body-head, 1.0*body);
57
+
58
+ // Body : 1 segment
59
+ float d4 = segment_distance(texcoord, start, end - vec2(linewidth,0.0));
60
+
61
+ // Outside (because of circles)
62
+ if( texcoord.y > +(2.0*head + antialias) )
63
+ return 1000.0;
64
+ if( texcoord.y < -(2.0*head + antialias) )
65
+ return 1000.0;
66
+ if( texcoord.x < -(body/2.0 + antialias) )
67
+ return 1000.0;
68
+ if( texcoord.x > c1.x ) //(body + antialias) )
69
+ return 1000.0;
70
+
71
+ return min( d4, -min(d3,min(d1,d2)));
72
+ }
73
+
74
+ float arrow_triangle(vec2 texcoord,
75
+ float body, float head, float height,
76
+ float linewidth, float antialias)
77
+ {
78
+ float w = linewidth/2.0 + antialias;
79
+ vec2 start = -vec2(body/2.0, 0.0);
80
+ vec2 end = +vec2(body/2.0, 0.0);
81
+
82
+ // Head : 3 lines
83
+ float d1 = line_distance(texcoord, end, end - head*vec2(+1.0,-height));
84
+ float d2 = line_distance(texcoord, end - head*vec2(+1.0,+height), end);
85
+ float d3 = texcoord.x - end.x + head;
86
+
87
+ // Body : 1 segment
88
+ float d4 = segment_distance(texcoord, start, end - vec2(linewidth,0.0));
89
+
90
+ float d = min(max(max(d1, d2), -d3), d4);
91
+ return d;
92
+ }
93
+
94
+ float arrow_triangle_90(vec2 texcoord,
95
+ float body, float head,
96
+ float linewidth, float antialias)
97
+ {
98
+ return arrow_triangle(texcoord, body, head, 1.0, linewidth, antialias);
99
+ }
100
+
101
+ float arrow_triangle_60(vec2 texcoord,
102
+ float body, float head,
103
+ float linewidth, float antialias)
104
+ {
105
+ return arrow_triangle(texcoord, body, head, 0.5, linewidth, antialias);
106
+ }
107
+
108
+ float arrow_triangle_30(vec2 texcoord,
109
+ float body, float head,
110
+ float linewidth, float antialias)
111
+ {
112
+ return arrow_triangle(texcoord, body, head, 0.25, linewidth, antialias);
113
+ }
114
+
115
+ float arrow_angle(vec2 texcoord,
116
+ float body, float head, float height,
117
+ float linewidth, float antialias)
118
+ {
119
+ float d;
120
+ float w = linewidth/2.0 + antialias;
121
+ vec2 start = -vec2(body/2.0, 0.0);
122
+ vec2 end = +vec2(body/2.0, 0.0);
123
+
124
+ // Arrow tip (beyond segment end)
125
+ if( texcoord.x > body/2.0) {
126
+ // Head : 2 segments
127
+ float d1 = line_distance(texcoord, end, end - head*vec2(+1.0,-height));
128
+ float d2 = line_distance(texcoord, end - head*vec2(+1.0,+height), end);
129
+ // Body : 1 segment
130
+ float d3 = end.x - texcoord.x;
131
+ d = max(max(d1,d2), d3);
132
+ } else {
133
+ // Head : 2 segments
134
+ float d1 = segment_distance(texcoord, end - head*vec2(+1.0,-height), end);
135
+ float d2 = segment_distance(texcoord, end - head*vec2(+1.0,+height), end);
136
+ // Body : 1 segment
137
+ float d3 = segment_distance(texcoord, start, end - vec2(linewidth,0.0));
138
+ d = min(min(d1,d2), d3);
139
+ }
140
+ return d;
141
+ }
142
+
143
+ float arrow_angle_90(vec2 texcoord,
144
+ float body, float head,
145
+ float linewidth, float antialias)
146
+ {
147
+ return arrow_angle(texcoord, body, head, 1.0, linewidth, antialias);
148
+ }
149
+
150
+ float arrow_angle_60(vec2 texcoord,
151
+ float body, float head,
152
+ float linewidth, float antialias)
153
+ {
154
+ return arrow_angle(texcoord, body, head, 0.5, linewidth, antialias);
155
+ }
156
+
157
+ float arrow_angle_30(vec2 texcoord,
158
+ float body, float head,
159
+ float linewidth, float antialias)
160
+ {
161
+ return arrow_angle(texcoord, body, head, 0.25, linewidth, antialias);
162
+ }
163
+
164
+
165
+ float arrow_stealth(vec2 texcoord,
166
+ float body, float head,
167
+ float linewidth, float antialias)
168
+ {
169
+ float w = linewidth/2.0 + antialias;
170
+ vec2 start = -vec2(body/2.0, 0.0);
171
+ vec2 end = +vec2(body/2.0, 0.0);
172
+ float height = 0.5;
173
+
174
+ // Head : 4 lines
175
+ float d1 = line_distance(texcoord, end-head*vec2(+1.0,-height),
176
+ end);
177
+ float d2 = line_distance(texcoord, end-head*vec2(+1.0,-height),
178
+ end-vec2(3.0*head/4.0,0.0));
179
+ float d3 = line_distance(texcoord, end-head*vec2(+1.0,+height), end);
180
+ float d4 = line_distance(texcoord, end-head*vec2(+1.0,+0.5),
181
+ end-vec2(3.0*head/4.0,0.0));
182
+
183
+ // Body : 1 segment
184
+ float d5 = segment_distance(texcoord, start, end - vec2(linewidth,0.0));
185
+
186
+ return min(d5, max( max(-d1, d3), - max(-d2,d4)));
187
+ }