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,78 @@
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 "misc/viewport-NDC.glsl"
10
+
11
+ // Externs
12
+ // ------------------------------------
13
+ // extern vec3 prev;
14
+ // extern vec3 curr;
15
+ // extern vec3 next;
16
+ // extern float id;
17
+ // extern vec4 color;
18
+ // extern float antialias;
19
+ // extern float linewidth;
20
+ // extern vec4 viewport;
21
+ // vec4 transform(vec3 position);
22
+
23
+ // Varyings
24
+ // ------------------------------------
25
+ varying float v_antialias;
26
+ varying float v_linewidth;
27
+ varying float v_distance;
28
+ varying vec4 v_color;
29
+
30
+
31
+ // Main
32
+ // ------------------------------------
33
+ void main (void)
34
+ {
35
+ // This function is externally generated
36
+ fetch_uniforms();
37
+ v_linewidth = linewidth;
38
+ v_antialias = antialias;
39
+ v_color = color;
40
+
41
+ // transform prev/curr/next
42
+ vec4 prev_ = $transform(vec4(prev, 1));
43
+ vec4 curr_ = $transform(vec4(curr, 1));
44
+ vec4 next_ = $transform(vec4(next, 1));
45
+
46
+ // prev/curr/next in viewport coordinates
47
+ vec2 _prev = NDC_to_viewport(prev_, viewport.zw);
48
+ vec2 _curr = NDC_to_viewport(curr_, viewport.zw);
49
+ vec2 _next = NDC_to_viewport(next_, viewport.zw);
50
+
51
+ // Compute vertex final position (in viewport coordinates)
52
+ float w = linewidth/2.0 + 1.5*antialias;
53
+ float z;
54
+ vec2 P;
55
+ if( curr == prev) {
56
+ vec2 v = normalize(_next.xy - _curr.xy);
57
+ vec2 normal = normalize(vec2(-v.y,v.x));
58
+ P = _curr.xy + normal*w*id;
59
+ } else if (curr == next) {
60
+ vec2 v = normalize(_curr.xy - _prev.xy);
61
+ vec2 normal = normalize(vec2(-v.y,v.x));
62
+ P = _curr.xy + normal*w*id;
63
+ } else {
64
+ vec2 v0 = normalize(_curr.xy - _prev.xy);
65
+ vec2 v1 = normalize(_next.xy - _curr.xy);
66
+ vec2 normal = normalize(vec2(-v0.y,v0.x));
67
+ vec2 tangent = normalize(v0+v1);
68
+ vec2 miter = vec2(-tangent.y, tangent.x);
69
+ float l = abs(w / dot(miter,normal));
70
+ P = _curr.xy + miter*l*sign(id);
71
+ }
72
+
73
+ if( abs(id) > 1.5 ) v_color.a = 0.0;
74
+
75
+ v_distance = w*id;
76
+ gl_Position = viewport_to_NDC(vec3(P, curr_.z/curr_.w), viewport.zw);
77
+
78
+ }
@@ -0,0 +1,60 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+
6
+ // Uniforms
7
+ // ------------------------------------
8
+ uniform sampler2D atlas_data;
9
+ uniform vec2 atlas_shape;
10
+
11
+ // Varyings
12
+ // ------------------------------------
13
+ varying vec4 v_color;
14
+ varying float v_offset;
15
+ varying vec2 v_texcoord;
16
+
17
+
18
+ // Main
19
+ // ------------------------------------
20
+ void main(void)
21
+ {
22
+ <viewport.clipping>;
23
+
24
+ vec2 viewport = <viewport.viewport_global>.zw;
25
+
26
+ vec4 current = texture2D(atlas_data, v_texcoord);
27
+ vec4 previous= texture2D(atlas_data, v_texcoord+vec2(-1.0,0.0)/viewport);
28
+ vec4 next = texture2D(atlas_data, v_texcoord+vec2(+1.0,0.0)/viewport);
29
+
30
+ float r = current.r;
31
+ float g = current.g;
32
+ float b = current.b;
33
+
34
+ if( v_offset < 1.0 )
35
+ {
36
+ float z = v_offset;
37
+ r = mix(current.r, previous.b, z);
38
+ g = mix(current.g, current.r, z);
39
+ b = mix(current.b, current.g, z);
40
+ }
41
+ else if( v_offset < 2.0 )
42
+ {
43
+ float z = v_offset - 1.0;
44
+ r = mix(previous.b, previous.g, z);
45
+ g = mix(current.r, previous.b, z);
46
+ b = mix(current.g, current.r, z);
47
+ }
48
+ else //if( v_offset <= 1.0 )
49
+ {
50
+ float z = v_offset - 2.0;
51
+ r = mix(previous.g, previous.r, z);
52
+ g = mix(previous.b, previous.g, z);
53
+ b = mix(current.r, previous.b, z);
54
+ }
55
+
56
+ float t = max(max(r,g),b);
57
+ vec4 color = vec4(v_color.rgb, (r+g+b)/3.0);
58
+ color = t*color + (1.0-t)*vec4(r,g,b, min(min(r,g),b));
59
+ gl_FragColor = vec4( color.rgb, v_color.a*color.a);
60
+ }
@@ -0,0 +1,33 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+
6
+ // Externs
7
+ // ------------------------------------
8
+ // vec2 origin;
9
+ // vec2 position;
10
+ // vec2 texcoord;
11
+ // vec4 color;
12
+
13
+ // Varyings
14
+ // ------------------------------------
15
+ varying vec4 v_color;
16
+ varying float v_offset;
17
+ varying vec2 v_texcoord;
18
+
19
+ // Main
20
+ // ------------------------------------
21
+ void main()
22
+ {
23
+ fetch_uniforms();
24
+
25
+ gl_Position = <transform(origin)>;
26
+ v_color = color;
27
+ v_texcoord = texcoord;
28
+ <viewport.transform>;
29
+
30
+ // We set actual position after transform
31
+ v_offset = 3.0*(offset + origin.x - int(origin.x));
32
+ gl_Position = gl_Position + vec4(2.0*position/<viewport.viewport_global>.zw,0,0);
33
+ }
@@ -0,0 +1,35 @@
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> : "arrow", "asterisk", "chevron", "clover", "club",
8
+ // "cross", "diamond", "disc", "ellipse", "hbar",
9
+ // "heart", "infinity", "pin", "ring", "spade",
10
+ // "square", "tag", "triangle", "vbar"
11
+ // ----------------------------------------------------------------------------
12
+ #include "math/constants.h"
13
+ #include "markers/markers.glsl"
14
+ #include "antialias/antialias.h"
15
+
16
+ // Varyings
17
+ // ------------------------------------
18
+ varying float v_antialias;
19
+ varying float v_linewidth;
20
+ varying float v_size;
21
+ varying vec4 v_fg_color;
22
+ varying vec4 v_bg_color;
23
+ varying vec2 v_orientation;
24
+
25
+ // Main (hooked)
26
+ // ------------------------------------
27
+ void main()
28
+ {
29
+ vec2 P = gl_PointCoord.xy - vec2(0.5,0.5);
30
+ P = vec2(v_orientation.x*P.x - v_orientation.y*P.y,
31
+ v_orientation.y*P.x + v_orientation.x*P.y);
32
+ float point_size = SQRT_2*v_size + 2. * (v_linewidth + 1.5*v_antialias);
33
+ float distance = marker_<marker>(P*point_size, v_size);
34
+ gl_FragColor = <paint>(distance, v_linewidth, v_antialias, v_fg_color, v_bg_color);
35
+ }
@@ -0,0 +1,48 @@
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
+ #version 120
10
+ #include "math/constants.glsl"
11
+
12
+ // Collection externs
13
+ // ------------------------------------
14
+ // extern vec2 position;
15
+ // extern float size;
16
+ // extern vec4 fg_color;
17
+ // extern vec4 bg_color;
18
+ // extern float orientation;
19
+ // extern float antialias;
20
+ // extern float linewidth;
21
+
22
+
23
+ // Varyings
24
+ // ------------------------------------
25
+ varying float v_size;
26
+ varying vec4 v_fg_color;
27
+ varying vec4 v_bg_color;
28
+ varying vec2 v_orientation;
29
+ varying float v_antialias;
30
+ varying float v_linewidth;
31
+
32
+
33
+ // Main (hooked)
34
+ // ------------------------------------
35
+ void main (void)
36
+ {
37
+ fetch_uniforms();
38
+
39
+ v_size = size;
40
+ v_linewidth = linewidth;
41
+ v_antialias = antialias;
42
+ v_fg_color = fg_color;
43
+ v_bg_color = bg_color;
44
+ v_orientation = vec2(cos(orientation), sin(orientation));
45
+
46
+ gl_Position = <transform>;
47
+ gl_PointSize = M_SQRT2 * size + 2.0 * (linewidth + 1.5*antialias);
48
+ }
@@ -0,0 +1,55 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+ #include "antialias/antialias.glsl"
6
+ #include "antialias/caps.glsl"
7
+
8
+ // Varyings
9
+ // ------------------------------------
10
+ varying vec2 v_caps;
11
+ varying vec4 v_color;
12
+ varying float v_length;
13
+ varying vec2 v_texcoord;
14
+ varying float v_linewidth;
15
+ varying float v_antialias;
16
+ varying float v_miter_limit;
17
+ varying vec2 v_bevel_distance;
18
+
19
+ void main()
20
+ {
21
+ float distance = v_texcoord.y;
22
+
23
+ if (v_caps.x < 0.0)
24
+ {
25
+ gl_FragColor = cap(1, v_texcoord.x, v_texcoord.y,
26
+ v_linewidth, v_antialias, v_color);
27
+ // Do not return here or clipping won't be enforced
28
+ // return;
29
+ }
30
+ else if (v_caps.y > v_length)
31
+ {
32
+ gl_FragColor = cap(1, v_texcoord.x-v_length, v_texcoord.y,
33
+ v_linewidth, v_antialias, v_color);
34
+ // Do not return here or clipping won't be enforced
35
+ // return;
36
+ }
37
+
38
+ // Round join (instead of miter)
39
+ // if (v_texcoord.x < 0.0) { distance = length(v_texcoord); }
40
+ // else if(v_texcoord.x > v_length) { distance = length(v_texcoord - vec2(v_length, 0.0)); }
41
+
42
+ else {
43
+ // Miter limit
44
+ float t = (v_miter_limit-1.0)*(v_linewidth/2.0) + v_antialias;
45
+ if( (v_texcoord.x < 0.0) && (v_bevel_distance.x > (abs(distance) + t)) )
46
+ {
47
+ distance = v_bevel_distance.x - t;
48
+ }
49
+ else if( (v_texcoord.x > v_length) && (v_bevel_distance.y > (abs(distance) + t)) )
50
+ {
51
+ distance = v_bevel_distance.y - t;
52
+ }
53
+ gl_FragColor = stroke(distance, v_linewidth, v_antialias, v_color);
54
+ }
55
+ }
@@ -0,0 +1,166 @@
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 "misc/viewport-NDC.glsl"
10
+ #include "math/point-to-line-distance.glsl"
11
+ #include "math/point-to-line-projection.glsl"
12
+
13
+ // Externs
14
+ // ------------------------------------
15
+ // extern vec3 p0;
16
+ // extern vec3 p1;
17
+ // extern vec3 p2;
18
+ // extern vec3 p3;
19
+ // extern vec2 uv;
20
+ // extern vec2 caps;
21
+ // extern vec4 color;
22
+ // extern float antialias;
23
+ // extern float linewidth;
24
+ // extern float miter_limit;
25
+ // extern vec4 viewport;
26
+ // vec4 transform(vec3 position);
27
+
28
+
29
+ // Varyings
30
+ // ------------------------------------
31
+ varying vec2 v_caps;
32
+ varying vec4 v_color;
33
+
34
+ varying float v_antialias;
35
+ varying float v_linewidth;
36
+
37
+ varying float v_length;
38
+ varying vec2 v_texcoord;
39
+ varying float v_miter_limit;
40
+ varying vec2 v_bevel_distance;
41
+
42
+
43
+ // Main
44
+ // ------------------------------------
45
+ void main (void)
46
+ {
47
+ // This function is externally generated
48
+ fetch_uniforms();
49
+
50
+ v_color = color;
51
+ v_caps = caps;
52
+ v_linewidth = linewidth;
53
+ v_antialias = antialias;
54
+ v_miter_limit = miter_limit;
55
+
56
+ // transform prev/curr/next
57
+ vec4 p0_ = $transform(vec4(p0, 1));
58
+ vec4 p1_ = $transform(vec4(p1, 1));
59
+ vec4 p2_ = $transform(vec4(p2, 1));
60
+ vec4 p3_ = $transform(vec4(p3, 1));
61
+
62
+ // prev/curr/next in viewport coordinates
63
+ vec2 _p0 = NDC_to_viewport(p0_, viewport.zw);
64
+ vec2 _p1 = NDC_to_viewport(p1_, viewport.zw);
65
+ vec2 _p2 = NDC_to_viewport(p2_, viewport.zw);
66
+ vec2 _p3 = NDC_to_viewport(p3_, viewport.zw);
67
+
68
+ v_antialias = antialias;
69
+ v_linewidth = linewidth;
70
+ v_miter_limit = miter_limit;
71
+
72
+ // Determine the direction of each of the 3 segments (previous, current, next)
73
+ vec2 v0 = normalize(_p1 - _p0);
74
+ vec2 v1 = normalize(_p2 - _p1);
75
+ vec2 v2 = normalize(_p3 - _p2);
76
+
77
+
78
+ // Determine the normal of each of the 3 segments (previous, current, next)
79
+ vec2 n0 = vec2(-v0.y, v0.x);
80
+ vec2 n1 = vec2(-v1.y, v1.x);
81
+ vec2 n2 = vec2(-v2.y, v2.x);
82
+
83
+ // Determine miter lines by averaging the normals of the 2 segments
84
+ vec2 miter_a;
85
+ vec2 miter_b;
86
+ const float epsilon = 0.1;
87
+
88
+ // WARN: Here we test if v0 = -v1 relatively to epsilon
89
+ if( length(v0+v1) < epsilon ) {
90
+ miter_a = n1;
91
+ } else {
92
+ miter_a = normalize(n0 + n1); // miter at start of current segment
93
+ }
94
+
95
+ // WARN: Here we test if v1 = -v2 relatively to epsilon
96
+ if( length(v1+v2) < epsilon ) {
97
+ miter_b = n1;
98
+ } else {
99
+ miter_b = normalize(n1 + n2); // miter at end of current segment
100
+ }
101
+
102
+ // Determine the length of the miter by projecting it onto normal
103
+ vec2 p,v;
104
+ float d, z;
105
+ float w = linewidth/2.0 + 1.5*antialias;
106
+ v_length = length(_p2-_p1);
107
+ float m = miter_limit*linewidth/2.0;
108
+ float length_a = w / dot(miter_a, n1);
109
+ float length_b = w / dot(miter_b, n1);
110
+
111
+
112
+ // Angle between prev and current segment (sign only)
113
+ float d0 = +1.0;
114
+ if( (v0.x*v1.y - v0.y*v1.x) > 0. ) { d0 = -1.0;}
115
+
116
+ // Angle between current and next segment (sign only)
117
+ float d1 = +1.0;
118
+ if( (v1.x*v2.y - v1.y*v2.x) > 0. ) { d1 = -1.0; }
119
+
120
+ // Adjust vertex position
121
+ if (uv.x == -1.) {
122
+ z = p1_.z / p1_.w;
123
+
124
+ // Cap at start
125
+ if( p0 == p1 ) {
126
+ p = _p1 - w*v1 + uv.y* w*n1;
127
+ v_texcoord = vec2(-w, uv.y*w);
128
+ v_caps.x = v_texcoord.x;
129
+ // Regular join
130
+ } else {
131
+ p = _p1 + uv.y * length_a * miter_a;
132
+ v_texcoord = vec2(point_to_line_projection(_p1,_p2,p), uv.y*w);
133
+ v_caps.x = 1.0;
134
+ }
135
+ if( p2 == p3 ) {
136
+ v_caps.y = v_texcoord.x;
137
+ } else {
138
+ v_caps.y = 1.0;
139
+ }
140
+ v_bevel_distance.x = uv.y*d0*point_to_line_distance(_p1+d0*n0*w, _p1+d0*n1*w, p);
141
+ v_bevel_distance.y = -point_to_line_distance(_p2+d1*n1*w, _p2+d1*n2*w, p);
142
+ } else {
143
+ z = p2_.z / p2_.w;
144
+
145
+ // Cap at end
146
+ if( p2 == p3 ) {
147
+ p = _p2 + w*v1 + uv.y*w*n1;
148
+ v_texcoord = vec2(v_length+w, uv.y*w);
149
+ v_caps.y = v_texcoord.x;
150
+ // Regular join
151
+ } else {
152
+ p = _p2 + uv.y*length_b * miter_b;
153
+ v_texcoord = vec2(point_to_line_projection(_p1,_p2,p), uv.y*w);
154
+ v_caps.y = 1.0;
155
+ }
156
+ if( p0 == p1 ) {
157
+ v_caps.x = v_texcoord.x;
158
+ } else {
159
+ v_caps.x = 1.0;
160
+ }
161
+ v_bevel_distance.x = -point_to_line_distance(_p1+d0*n0*w, _p1+d0*n1*w, p);
162
+ v_bevel_distance.y = uv.y*d1*point_to_line_distance(_p2+d1*n1*w, _p2+d1*n2*w, p);
163
+ }
164
+
165
+ gl_Position = viewport_to_NDC(vec3(p,z), viewport.zw);
166
+ }
@@ -0,0 +1,21 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+ #include "markers/disc.glsl"
6
+ #include "antialias/filled.glsl"
7
+
8
+ // Varyings
9
+ // ------------------------------------
10
+ varying float v_size;
11
+ varying vec4 v_color;
12
+
13
+ // Main
14
+ // ------------------------------------
15
+ void main()
16
+ {
17
+ vec2 P = gl_PointCoord.xy - vec2(0.5,0.5);
18
+ float point_size = v_size + 2. * (1.0 + 1.5*1.0);
19
+ float distance = marker_disc(P*point_size, v_size);
20
+ gl_FragColor = filled(distance, 1.0, 1.0, v_color);
21
+ }
@@ -0,0 +1,35 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+
6
+ // Externs
7
+ // ------------------------------------
8
+ // extern vec3 position;
9
+ // extern float size;
10
+ // extern vec4 fg_color;
11
+ // extern vec4 bg_color;
12
+ // extern float orientation;
13
+ // extern float antialias;
14
+ // extern float linewidth;
15
+ // extern vec4 transform(vec3);
16
+
17
+ // Varyings
18
+ // ------------------------------------
19
+ varying float v_size;
20
+ varying vec4 v_color;
21
+ varying float v_linewidth;
22
+ varying float v_antialias;
23
+
24
+ // Main (hooked)
25
+ // ------------------------------------
26
+ void main (void)
27
+ {
28
+ fetch_uniforms();
29
+
30
+ v_size = size;
31
+ v_color = color;
32
+
33
+ gl_Position = $transform(vec4(position, 1));
34
+ gl_PointSize = size + 2.0 * (1.0 + 1.5*1.0);
35
+ }
@@ -0,0 +1,32 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+ #include "antialias/caps.glsl"
6
+ #include "antialias/antialias.glsl"
7
+
8
+ // Varyings
9
+ // ------------------------------------
10
+ varying float v_length;
11
+ varying float v_linewidth;
12
+ varying float v_antialias;
13
+ varying vec2 v_texcoord;
14
+ varying vec4 v_color;
15
+
16
+
17
+ // Main
18
+ // ------------------------------------
19
+ void main (void)
20
+ {
21
+ if (v_texcoord.x < 0.0) {
22
+ gl_FragColor = cap( CAP_ROUND,
23
+ v_texcoord.x, v_texcoord.y,
24
+ v_linewidth, v_antialias, v_color);
25
+ } else if(v_texcoord.x > v_length) {
26
+ gl_FragColor = cap( CAP_ROUND,
27
+ v_texcoord.x-v_length, v_texcoord.y,
28
+ v_linewidth, v_antialias, v_color);
29
+ } else {
30
+ gl_FragColor = stroke(v_texcoord.y, v_linewidth, v_antialias, v_color);
31
+ }
32
+ }
@@ -0,0 +1,75 @@
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 "misc/viewport-NDC.glsl"
10
+
11
+ // Externs
12
+ // ------------------------------------
13
+ // extern vec3 P0;
14
+ // extern vec3 P1;
15
+ // extern float index;
16
+ // extern vec4 color;
17
+ // extern float antialias;
18
+ // extern float linewidth;
19
+ // extern vec4 viewport;
20
+ // vec4 transform(vec3 position);
21
+
22
+ // Varyings
23
+ // ------------------------------------
24
+ varying float v_length;
25
+ varying float v_antialias;
26
+ varying float v_linewidth;
27
+ varying vec2 v_texcoord;
28
+ varying vec4 v_color;
29
+
30
+
31
+
32
+ // Main
33
+ // ------------------------------------
34
+ void main (void)
35
+ {
36
+ // This function is externally generated
37
+ fetch_uniforms();
38
+ v_linewidth = linewidth;
39
+ v_antialias = antialias;
40
+ v_color = color;
41
+
42
+ vec4 P0_ = $transform(vec4(P0, 1));
43
+ vec4 P1_ = $transform(vec4(P1, 1));
44
+
45
+ // p0/p1 in viewport coordinates
46
+ vec2 p0 = NDC_to_viewport(P0_, viewport.zw);
47
+ vec2 p1 = NDC_to_viewport(P1_, viewport.zw);
48
+
49
+ //
50
+ vec2 position;
51
+ vec2 T = p1 - p0;
52
+ v_length = length(T);
53
+ float w = v_linewidth/2.0 + 1.5*v_antialias;
54
+ T = w*normalize(T);
55
+ float z;
56
+ if( index < 0.5 ) {
57
+ position = vec2( p0.x-T.y-T.x, p0.y+T.x-T.y);
58
+ v_texcoord = vec2(-w, +w);
59
+ z = P0.z;
60
+ } else if( index < 1.5 ) {
61
+ position = vec2(p0.x+T.y-T.x, p0.y-T.x-T.y);
62
+ v_texcoord= vec2(-w, -w);
63
+ z = P0.z;
64
+ } else if( index < 2.5 ) {
65
+ position = vec2( p1.x+T.y+T.x, p1.y-T.x+T.y);
66
+ v_texcoord= vec2(v_length+w, -w);
67
+ z = P1.z;
68
+ } else {
69
+ position = vec2( p1.x-T.y+T.x, p1.y+T.x+T.y);
70
+ v_texcoord = vec2(v_length+w, +w);
71
+ z = P1.z;
72
+ }
73
+
74
+ gl_Position = viewport_to_NDC(vec3(position,z), viewport.zw);
75
+ }
@@ -0,0 +1,38 @@
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> : "arrow", "asterisk", "chevron", "clover", "club",
8
+ // "cross", "diamond", "disc", "ellipse", "hbar",
9
+ // "heart", "infinity", "pin", "ring", "spade",
10
+ // "square", "tag", "triangle", "vbar"
11
+ // ----------------------------------------------------------------------------
12
+ #include "math/constants.glsl"
13
+ #include "markers/markers.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_texcoord;
22
+ varying vec4 v_fg_color;
23
+ varying vec4 v_bg_color;
24
+ varying vec2 v_orientation;
25
+
26
+ // Main (hooked)
27
+ // ------------------------------------
28
+ void main()
29
+ {
30
+ <viewport.clipping>;
31
+
32
+ vec2 P = gl_PointCoord.xy - vec2(0.5,0.5);
33
+ P = vec2(v_orientation.x*P.x - v_orientation.y*P.y,
34
+ v_orientation.y*P.x + v_orientation.x*P.y);
35
+ float point_size = M_SQRT2*v_size + 2. * (v_linewidth + 1.5*v_antialias);
36
+ float distance = marker_<marker>(P*point_size, v_size);
37
+ gl_FragColor = <paint>(distance, v_linewidth, v_antialias, v_fg_color, v_bg_color);
38
+ }