vispy 0.15.0__cp312-cp312-macosx_10_13_x86_64.whl

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

Potentially problematic release.


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

Files changed (521) hide show
  1. vispy/__init__.py +33 -0
  2. vispy/app/__init__.py +15 -0
  3. vispy/app/_default_app.py +76 -0
  4. vispy/app/_detect_eventloop.py +148 -0
  5. vispy/app/application.py +263 -0
  6. vispy/app/backends/__init__.py +52 -0
  7. vispy/app/backends/_egl.py +264 -0
  8. vispy/app/backends/_glfw.py +513 -0
  9. vispy/app/backends/_jupyter_rfb.py +278 -0
  10. vispy/app/backends/_offscreen_util.py +121 -0
  11. vispy/app/backends/_osmesa.py +235 -0
  12. vispy/app/backends/_pyglet.py +451 -0
  13. vispy/app/backends/_pyqt4.py +36 -0
  14. vispy/app/backends/_pyqt5.py +36 -0
  15. vispy/app/backends/_pyqt6.py +40 -0
  16. vispy/app/backends/_pyside.py +37 -0
  17. vispy/app/backends/_pyside2.py +52 -0
  18. vispy/app/backends/_pyside6.py +53 -0
  19. vispy/app/backends/_qt.py +1003 -0
  20. vispy/app/backends/_sdl2.py +444 -0
  21. vispy/app/backends/_template.py +244 -0
  22. vispy/app/backends/_test.py +8 -0
  23. vispy/app/backends/_tk.py +800 -0
  24. vispy/app/backends/_wx.py +476 -0
  25. vispy/app/backends/tests/__init__.py +0 -0
  26. vispy/app/backends/tests/test_offscreen_util.py +52 -0
  27. vispy/app/backends/tests/test_rfb.py +77 -0
  28. vispy/app/base.py +294 -0
  29. vispy/app/canvas.py +828 -0
  30. vispy/app/qt.py +92 -0
  31. vispy/app/tests/__init__.py +0 -0
  32. vispy/app/tests/qt-designer.ui +58 -0
  33. vispy/app/tests/test_app.py +442 -0
  34. vispy/app/tests/test_backends.py +164 -0
  35. vispy/app/tests/test_canvas.py +122 -0
  36. vispy/app/tests/test_context.py +92 -0
  37. vispy/app/tests/test_qt.py +47 -0
  38. vispy/app/tests/test_simultaneous.py +134 -0
  39. vispy/app/timer.py +174 -0
  40. vispy/color/__init__.py +17 -0
  41. vispy/color/_color_dict.py +193 -0
  42. vispy/color/color_array.py +447 -0
  43. vispy/color/color_space.py +181 -0
  44. vispy/color/colormap.py +1213 -0
  45. vispy/color/tests/__init__.py +0 -0
  46. vispy/color/tests/test_color.py +378 -0
  47. vispy/conftest.py +12 -0
  48. vispy/ext/__init__.py +0 -0
  49. vispy/ext/cocoapy.py +1522 -0
  50. vispy/ext/cubehelix.py +138 -0
  51. vispy/ext/egl.py +375 -0
  52. vispy/ext/fontconfig.py +118 -0
  53. vispy/ext/gdi32plus.py +206 -0
  54. vispy/ext/osmesa.py +105 -0
  55. vispy/geometry/__init__.py +23 -0
  56. vispy/geometry/_triangulation_debugger.py +171 -0
  57. vispy/geometry/calculations.py +162 -0
  58. vispy/geometry/curves.py +399 -0
  59. vispy/geometry/generation.py +643 -0
  60. vispy/geometry/isocurve.py +175 -0
  61. vispy/geometry/isosurface.py +465 -0
  62. vispy/geometry/meshdata.py +700 -0
  63. vispy/geometry/normals.py +78 -0
  64. vispy/geometry/parametric.py +56 -0
  65. vispy/geometry/polygon.py +137 -0
  66. vispy/geometry/rect.py +210 -0
  67. vispy/geometry/tests/__init__.py +0 -0
  68. vispy/geometry/tests/test_calculations.py +23 -0
  69. vispy/geometry/tests/test_generation.py +56 -0
  70. vispy/geometry/tests/test_meshdata.py +106 -0
  71. vispy/geometry/tests/test_triangulation.py +594 -0
  72. vispy/geometry/torusknot.py +142 -0
  73. vispy/geometry/triangulation.py +876 -0
  74. vispy/gloo/__init__.py +56 -0
  75. vispy/gloo/buffer.py +505 -0
  76. vispy/gloo/context.py +272 -0
  77. vispy/gloo/framebuffer.py +257 -0
  78. vispy/gloo/gl/__init__.py +234 -0
  79. vispy/gloo/gl/_constants.py +332 -0
  80. vispy/gloo/gl/_es2.py +986 -0
  81. vispy/gloo/gl/_gl2.py +1365 -0
  82. vispy/gloo/gl/_proxy.py +499 -0
  83. vispy/gloo/gl/_pyopengl2.py +362 -0
  84. vispy/gloo/gl/dummy.py +24 -0
  85. vispy/gloo/gl/es2.py +62 -0
  86. vispy/gloo/gl/gl2.py +98 -0
  87. vispy/gloo/gl/glplus.py +168 -0
  88. vispy/gloo/gl/pyopengl2.py +97 -0
  89. vispy/gloo/gl/tests/__init__.py +0 -0
  90. vispy/gloo/gl/tests/test_basics.py +282 -0
  91. vispy/gloo/gl/tests/test_functionality.py +568 -0
  92. vispy/gloo/gl/tests/test_names.py +246 -0
  93. vispy/gloo/gl/tests/test_use.py +71 -0
  94. vispy/gloo/glir.py +1824 -0
  95. vispy/gloo/globject.py +101 -0
  96. vispy/gloo/preprocessor.py +67 -0
  97. vispy/gloo/program.py +543 -0
  98. vispy/gloo/tests/__init__.py +0 -0
  99. vispy/gloo/tests/test_buffer.py +558 -0
  100. vispy/gloo/tests/test_context.py +119 -0
  101. vispy/gloo/tests/test_framebuffer.py +195 -0
  102. vispy/gloo/tests/test_glir.py +307 -0
  103. vispy/gloo/tests/test_globject.py +35 -0
  104. vispy/gloo/tests/test_program.py +302 -0
  105. vispy/gloo/tests/test_texture.py +732 -0
  106. vispy/gloo/tests/test_use_gloo.py +187 -0
  107. vispy/gloo/tests/test_util.py +60 -0
  108. vispy/gloo/tests/test_wrappers.py +261 -0
  109. vispy/gloo/texture.py +1046 -0
  110. vispy/gloo/util.py +129 -0
  111. vispy/gloo/wrappers.py +762 -0
  112. vispy/glsl/__init__.py +42 -0
  113. vispy/glsl/antialias/antialias.glsl +7 -0
  114. vispy/glsl/antialias/cap-butt.glsl +31 -0
  115. vispy/glsl/antialias/cap-round.glsl +29 -0
  116. vispy/glsl/antialias/cap-square.glsl +30 -0
  117. vispy/glsl/antialias/cap-triangle-in.glsl +30 -0
  118. vispy/glsl/antialias/cap-triangle-out.glsl +30 -0
  119. vispy/glsl/antialias/cap.glsl +67 -0
  120. vispy/glsl/antialias/caps.glsl +67 -0
  121. vispy/glsl/antialias/filled.glsl +50 -0
  122. vispy/glsl/antialias/outline.glsl +40 -0
  123. vispy/glsl/antialias/stroke.glsl +43 -0
  124. vispy/glsl/arrowheads/angle.glsl +99 -0
  125. vispy/glsl/arrowheads/arrowheads.frag +60 -0
  126. vispy/glsl/arrowheads/arrowheads.glsl +12 -0
  127. vispy/glsl/arrowheads/arrowheads.vert +83 -0
  128. vispy/glsl/arrowheads/curved.glsl +48 -0
  129. vispy/glsl/arrowheads/inhibitor.glsl +26 -0
  130. vispy/glsl/arrowheads/stealth.glsl +46 -0
  131. vispy/glsl/arrowheads/triangle.glsl +97 -0
  132. vispy/glsl/arrowheads/util.glsl +13 -0
  133. vispy/glsl/arrows/angle-30.glsl +12 -0
  134. vispy/glsl/arrows/angle-60.glsl +12 -0
  135. vispy/glsl/arrows/angle-90.glsl +12 -0
  136. vispy/glsl/arrows/arrow.frag +39 -0
  137. vispy/glsl/arrows/arrow.vert +49 -0
  138. vispy/glsl/arrows/arrows.glsl +17 -0
  139. vispy/glsl/arrows/common.glsl +187 -0
  140. vispy/glsl/arrows/curved.glsl +63 -0
  141. vispy/glsl/arrows/stealth.glsl +50 -0
  142. vispy/glsl/arrows/triangle-30.glsl +12 -0
  143. vispy/glsl/arrows/triangle-60.glsl +12 -0
  144. vispy/glsl/arrows/triangle-90.glsl +12 -0
  145. vispy/glsl/arrows/util.glsl +98 -0
  146. vispy/glsl/build_spatial_filters.py +660 -0
  147. vispy/glsl/collections/agg-fast-path.frag +20 -0
  148. vispy/glsl/collections/agg-fast-path.vert +78 -0
  149. vispy/glsl/collections/agg-glyph.frag +60 -0
  150. vispy/glsl/collections/agg-glyph.vert +33 -0
  151. vispy/glsl/collections/agg-marker.frag +35 -0
  152. vispy/glsl/collections/agg-marker.vert +48 -0
  153. vispy/glsl/collections/agg-path.frag +55 -0
  154. vispy/glsl/collections/agg-path.vert +166 -0
  155. vispy/glsl/collections/agg-point.frag +21 -0
  156. vispy/glsl/collections/agg-point.vert +35 -0
  157. vispy/glsl/collections/agg-segment.frag +32 -0
  158. vispy/glsl/collections/agg-segment.vert +75 -0
  159. vispy/glsl/collections/marker.frag +38 -0
  160. vispy/glsl/collections/marker.vert +48 -0
  161. vispy/glsl/collections/raw-path.frag +15 -0
  162. vispy/glsl/collections/raw-path.vert +24 -0
  163. vispy/glsl/collections/raw-point.frag +14 -0
  164. vispy/glsl/collections/raw-point.vert +31 -0
  165. vispy/glsl/collections/raw-segment.frag +18 -0
  166. vispy/glsl/collections/raw-segment.vert +26 -0
  167. vispy/glsl/collections/raw-triangle.frag +13 -0
  168. vispy/glsl/collections/raw-triangle.vert +26 -0
  169. vispy/glsl/collections/sdf-glyph-ticks.vert +69 -0
  170. vispy/glsl/collections/sdf-glyph.frag +80 -0
  171. vispy/glsl/collections/sdf-glyph.vert +59 -0
  172. vispy/glsl/collections/tick-labels.vert +71 -0
  173. vispy/glsl/colormaps/autumn.glsl +20 -0
  174. vispy/glsl/colormaps/blues.glsl +20 -0
  175. vispy/glsl/colormaps/color-space.glsl +17 -0
  176. vispy/glsl/colormaps/colormaps.glsl +24 -0
  177. vispy/glsl/colormaps/cool.glsl +20 -0
  178. vispy/glsl/colormaps/fire.glsl +21 -0
  179. vispy/glsl/colormaps/gray.glsl +20 -0
  180. vispy/glsl/colormaps/greens.glsl +20 -0
  181. vispy/glsl/colormaps/hot.glsl +22 -0
  182. vispy/glsl/colormaps/ice.glsl +20 -0
  183. vispy/glsl/colormaps/icefire.glsl +23 -0
  184. vispy/glsl/colormaps/parse.py +40 -0
  185. vispy/glsl/colormaps/reds.glsl +20 -0
  186. vispy/glsl/colormaps/spring.glsl +20 -0
  187. vispy/glsl/colormaps/summer.glsl +20 -0
  188. vispy/glsl/colormaps/user.glsl +22 -0
  189. vispy/glsl/colormaps/util.glsl +41 -0
  190. vispy/glsl/colormaps/wheel.glsl +21 -0
  191. vispy/glsl/colormaps/winter.glsl +20 -0
  192. vispy/glsl/lines/agg.frag +320 -0
  193. vispy/glsl/lines/agg.vert +241 -0
  194. vispy/glsl/markers/arrow.glsl +12 -0
  195. vispy/glsl/markers/asterisk.glsl +16 -0
  196. vispy/glsl/markers/chevron.glsl +14 -0
  197. vispy/glsl/markers/clover.glsl +20 -0
  198. vispy/glsl/markers/club.glsl +31 -0
  199. vispy/glsl/markers/cross.glsl +17 -0
  200. vispy/glsl/markers/diamond.glsl +12 -0
  201. vispy/glsl/markers/disc.glsl +9 -0
  202. vispy/glsl/markers/ellipse.glsl +67 -0
  203. vispy/glsl/markers/hbar.glsl +9 -0
  204. vispy/glsl/markers/heart.glsl +15 -0
  205. vispy/glsl/markers/infinity.glsl +15 -0
  206. vispy/glsl/markers/marker-sdf.frag +74 -0
  207. vispy/glsl/markers/marker-sdf.vert +41 -0
  208. vispy/glsl/markers/marker.frag +36 -0
  209. vispy/glsl/markers/marker.vert +46 -0
  210. vispy/glsl/markers/markers.glsl +24 -0
  211. vispy/glsl/markers/pin.glsl +18 -0
  212. vispy/glsl/markers/ring.glsl +11 -0
  213. vispy/glsl/markers/spade.glsl +28 -0
  214. vispy/glsl/markers/square.glsl +10 -0
  215. vispy/glsl/markers/tag.glsl +11 -0
  216. vispy/glsl/markers/triangle.glsl +14 -0
  217. vispy/glsl/markers/vbar.glsl +9 -0
  218. vispy/glsl/math/circle-through-2-points.glsl +30 -0
  219. vispy/glsl/math/constants.glsl +48 -0
  220. vispy/glsl/math/double.glsl +114 -0
  221. vispy/glsl/math/functions.glsl +20 -0
  222. vispy/glsl/math/point-to-line-distance.glsl +31 -0
  223. vispy/glsl/math/point-to-line-projection.glsl +29 -0
  224. vispy/glsl/math/signed-line-distance.glsl +27 -0
  225. vispy/glsl/math/signed-segment-distance.glsl +30 -0
  226. vispy/glsl/misc/regular-grid.frag +244 -0
  227. vispy/glsl/misc/spatial-filters.frag +1407 -0
  228. vispy/glsl/misc/viewport-NDC.glsl +20 -0
  229. vispy/glsl/transforms/azimuthal-equal-area.glsl +32 -0
  230. vispy/glsl/transforms/azimuthal-equidistant.glsl +38 -0
  231. vispy/glsl/transforms/hammer.glsl +44 -0
  232. vispy/glsl/transforms/identity.glsl +6 -0
  233. vispy/glsl/transforms/identity_forward.glsl +23 -0
  234. vispy/glsl/transforms/identity_inverse.glsl +23 -0
  235. vispy/glsl/transforms/linear-scale.glsl +127 -0
  236. vispy/glsl/transforms/log-scale.glsl +126 -0
  237. vispy/glsl/transforms/mercator-transverse-forward.glsl +40 -0
  238. vispy/glsl/transforms/mercator-transverse-inverse.glsl +40 -0
  239. vispy/glsl/transforms/panzoom.glsl +10 -0
  240. vispy/glsl/transforms/polar.glsl +41 -0
  241. vispy/glsl/transforms/position.glsl +44 -0
  242. vispy/glsl/transforms/power-scale.glsl +139 -0
  243. vispy/glsl/transforms/projection.glsl +7 -0
  244. vispy/glsl/transforms/pvm.glsl +13 -0
  245. vispy/glsl/transforms/rotate.glsl +45 -0
  246. vispy/glsl/transforms/trackball.glsl +15 -0
  247. vispy/glsl/transforms/translate.glsl +35 -0
  248. vispy/glsl/transforms/transverse_mercator.glsl +38 -0
  249. vispy/glsl/transforms/viewport-clipping.glsl +14 -0
  250. vispy/glsl/transforms/viewport-transform.glsl +16 -0
  251. vispy/glsl/transforms/viewport.glsl +50 -0
  252. vispy/glsl/transforms/x.glsl +24 -0
  253. vispy/glsl/transforms/y.glsl +19 -0
  254. vispy/glsl/transforms/z.glsl +14 -0
  255. vispy/io/__init__.py +20 -0
  256. vispy/io/_data/spatial-filters.npy +0 -0
  257. vispy/io/datasets.py +94 -0
  258. vispy/io/image.py +231 -0
  259. vispy/io/mesh.py +122 -0
  260. vispy/io/stl.py +167 -0
  261. vispy/io/tests/__init__.py +0 -0
  262. vispy/io/tests/test_image.py +47 -0
  263. vispy/io/tests/test_io.py +121 -0
  264. vispy/io/wavefront.py +350 -0
  265. vispy/plot/__init__.py +36 -0
  266. vispy/plot/fig.py +58 -0
  267. vispy/plot/plotwidget.py +522 -0
  268. vispy/plot/tests/__init__.py +0 -0
  269. vispy/plot/tests/test_plot.py +46 -0
  270. vispy/scene/__init__.py +43 -0
  271. vispy/scene/cameras/__init__.py +27 -0
  272. vispy/scene/cameras/_base.py +38 -0
  273. vispy/scene/cameras/arcball.py +105 -0
  274. vispy/scene/cameras/base_camera.py +551 -0
  275. vispy/scene/cameras/fly.py +474 -0
  276. vispy/scene/cameras/magnify.py +163 -0
  277. vispy/scene/cameras/panzoom.py +311 -0
  278. vispy/scene/cameras/perspective.py +338 -0
  279. vispy/scene/cameras/tests/__init__.py +0 -0
  280. vispy/scene/cameras/tests/test_cameras.py +27 -0
  281. vispy/scene/cameras/tests/test_link.py +53 -0
  282. vispy/scene/cameras/tests/test_perspective.py +122 -0
  283. vispy/scene/cameras/turntable.py +183 -0
  284. vispy/scene/canvas.py +639 -0
  285. vispy/scene/events.py +85 -0
  286. vispy/scene/node.py +644 -0
  287. vispy/scene/subscene.py +20 -0
  288. vispy/scene/tests/__init__.py +0 -0
  289. vispy/scene/tests/test_canvas.py +119 -0
  290. vispy/scene/tests/test_node.py +142 -0
  291. vispy/scene/tests/test_visuals.py +141 -0
  292. vispy/scene/visuals.py +276 -0
  293. vispy/scene/widgets/__init__.py +18 -0
  294. vispy/scene/widgets/anchor.py +25 -0
  295. vispy/scene/widgets/axis.py +88 -0
  296. vispy/scene/widgets/colorbar.py +176 -0
  297. vispy/scene/widgets/console.py +351 -0
  298. vispy/scene/widgets/grid.py +509 -0
  299. vispy/scene/widgets/label.py +50 -0
  300. vispy/scene/widgets/tests/__init__.py +0 -0
  301. vispy/scene/widgets/tests/test_colorbar.py +47 -0
  302. vispy/scene/widgets/viewbox.py +199 -0
  303. vispy/scene/widgets/widget.py +478 -0
  304. vispy/testing/__init__.py +51 -0
  305. vispy/testing/_runners.py +448 -0
  306. vispy/testing/_testing.py +416 -0
  307. vispy/testing/image_tester.py +494 -0
  308. vispy/testing/rendered_array_tester.py +85 -0
  309. vispy/testing/tests/__init__.py +0 -0
  310. vispy/testing/tests/test_testing.py +20 -0
  311. vispy/util/__init__.py +32 -0
  312. vispy/util/bunch.py +15 -0
  313. vispy/util/check_environment.py +57 -0
  314. vispy/util/config.py +490 -0
  315. vispy/util/dpi/__init__.py +19 -0
  316. vispy/util/dpi/_linux.py +69 -0
  317. vispy/util/dpi/_quartz.py +26 -0
  318. vispy/util/dpi/_win32.py +34 -0
  319. vispy/util/dpi/tests/__init__.py +0 -0
  320. vispy/util/dpi/tests/test_dpi.py +16 -0
  321. vispy/util/eq.py +41 -0
  322. vispy/util/event.py +774 -0
  323. vispy/util/fetching.py +276 -0
  324. vispy/util/filter.py +44 -0
  325. vispy/util/fonts/__init__.py +14 -0
  326. vispy/util/fonts/_freetype.py +73 -0
  327. vispy/util/fonts/_quartz.py +192 -0
  328. vispy/util/fonts/_triage.py +36 -0
  329. vispy/util/fonts/_vispy_fonts.py +20 -0
  330. vispy/util/fonts/_win32.py +105 -0
  331. vispy/util/fonts/data/OpenSans-Bold.ttf +0 -0
  332. vispy/util/fonts/data/OpenSans-BoldItalic.ttf +0 -0
  333. vispy/util/fonts/data/OpenSans-Italic.ttf +0 -0
  334. vispy/util/fonts/data/OpenSans-Regular.ttf +0 -0
  335. vispy/util/fonts/tests/__init__.py +0 -0
  336. vispy/util/fonts/tests/test_font.py +45 -0
  337. vispy/util/fourier.py +69 -0
  338. vispy/util/frozen.py +25 -0
  339. vispy/util/gallery_scraper.py +268 -0
  340. vispy/util/keys.py +91 -0
  341. vispy/util/logs.py +358 -0
  342. vispy/util/osmesa_gl.py +17 -0
  343. vispy/util/profiler.py +135 -0
  344. vispy/util/ptime.py +16 -0
  345. vispy/util/quaternion.py +229 -0
  346. vispy/util/svg/__init__.py +18 -0
  347. vispy/util/svg/base.py +20 -0
  348. vispy/util/svg/color.py +219 -0
  349. vispy/util/svg/element.py +51 -0
  350. vispy/util/svg/geometry.py +478 -0
  351. vispy/util/svg/group.py +66 -0
  352. vispy/util/svg/length.py +81 -0
  353. vispy/util/svg/number.py +25 -0
  354. vispy/util/svg/path.py +332 -0
  355. vispy/util/svg/shapes.py +57 -0
  356. vispy/util/svg/style.py +59 -0
  357. vispy/util/svg/svg.py +40 -0
  358. vispy/util/svg/transform.py +223 -0
  359. vispy/util/svg/transformable.py +28 -0
  360. vispy/util/svg/viewport.py +73 -0
  361. vispy/util/tests/__init__.py +0 -0
  362. vispy/util/tests/test_config.py +58 -0
  363. vispy/util/tests/test_docstring_parameters.py +123 -0
  364. vispy/util/tests/test_emitter_group.py +262 -0
  365. vispy/util/tests/test_event_emitter.py +743 -0
  366. vispy/util/tests/test_fourier.py +35 -0
  367. vispy/util/tests/test_gallery_scraper.py +112 -0
  368. vispy/util/tests/test_import.py +127 -0
  369. vispy/util/tests/test_key.py +22 -0
  370. vispy/util/tests/test_logging.py +45 -0
  371. vispy/util/tests/test_run.py +14 -0
  372. vispy/util/tests/test_transforms.py +42 -0
  373. vispy/util/tests/test_vispy.py +48 -0
  374. vispy/util/transforms.py +201 -0
  375. vispy/util/wrappers.py +155 -0
  376. vispy/version.py +21 -0
  377. vispy/visuals/__init__.py +50 -0
  378. vispy/visuals/_scalable_textures.py +487 -0
  379. vispy/visuals/axis.py +678 -0
  380. vispy/visuals/border.py +208 -0
  381. vispy/visuals/box.py +79 -0
  382. vispy/visuals/collections/__init__.py +30 -0
  383. vispy/visuals/collections/agg_fast_path_collection.py +219 -0
  384. vispy/visuals/collections/agg_path_collection.py +197 -0
  385. vispy/visuals/collections/agg_point_collection.py +52 -0
  386. vispy/visuals/collections/agg_segment_collection.py +142 -0
  387. vispy/visuals/collections/array_list.py +401 -0
  388. vispy/visuals/collections/base_collection.py +482 -0
  389. vispy/visuals/collections/collection.py +253 -0
  390. vispy/visuals/collections/path_collection.py +23 -0
  391. vispy/visuals/collections/point_collection.py +19 -0
  392. vispy/visuals/collections/polygon_collection.py +25 -0
  393. vispy/visuals/collections/raw_path_collection.py +119 -0
  394. vispy/visuals/collections/raw_point_collection.py +113 -0
  395. vispy/visuals/collections/raw_polygon_collection.py +77 -0
  396. vispy/visuals/collections/raw_segment_collection.py +112 -0
  397. vispy/visuals/collections/raw_triangle_collection.py +78 -0
  398. vispy/visuals/collections/segment_collection.py +19 -0
  399. vispy/visuals/collections/triangle_collection.py +16 -0
  400. vispy/visuals/collections/util.py +168 -0
  401. vispy/visuals/colorbar.py +699 -0
  402. vispy/visuals/cube.py +41 -0
  403. vispy/visuals/ellipse.py +162 -0
  404. vispy/visuals/filters/__init__.py +10 -0
  405. vispy/visuals/filters/base_filter.py +242 -0
  406. vispy/visuals/filters/clipper.py +60 -0
  407. vispy/visuals/filters/clipping_planes.py +122 -0
  408. vispy/visuals/filters/color.py +181 -0
  409. vispy/visuals/filters/markers.py +28 -0
  410. vispy/visuals/filters/mesh.py +801 -0
  411. vispy/visuals/filters/picking.py +60 -0
  412. vispy/visuals/filters/tests/__init__.py +3 -0
  413. vispy/visuals/filters/tests/test_primitive_picking_filters.py +70 -0
  414. vispy/visuals/filters/tests/test_wireframe_filter.py +16 -0
  415. vispy/visuals/glsl/__init__.py +1 -0
  416. vispy/visuals/glsl/antialiasing.py +133 -0
  417. vispy/visuals/glsl/color.py +63 -0
  418. vispy/visuals/graphs/__init__.py +1 -0
  419. vispy/visuals/graphs/graph.py +240 -0
  420. vispy/visuals/graphs/layouts/__init__.py +55 -0
  421. vispy/visuals/graphs/layouts/circular.py +49 -0
  422. vispy/visuals/graphs/layouts/force_directed.py +211 -0
  423. vispy/visuals/graphs/layouts/networkx_layout.py +87 -0
  424. vispy/visuals/graphs/layouts/random.py +52 -0
  425. vispy/visuals/graphs/tests/__init__.py +1 -0
  426. vispy/visuals/graphs/tests/test_layouts.py +139 -0
  427. vispy/visuals/graphs/tests/test_networkx_layout.py +47 -0
  428. vispy/visuals/graphs/util.py +120 -0
  429. vispy/visuals/gridlines.py +161 -0
  430. vispy/visuals/gridmesh.py +98 -0
  431. vispy/visuals/histogram.py +58 -0
  432. vispy/visuals/image.py +701 -0
  433. vispy/visuals/image_complex.py +130 -0
  434. vispy/visuals/infinite_line.py +199 -0
  435. vispy/visuals/instanced_mesh.py +152 -0
  436. vispy/visuals/isocurve.py +213 -0
  437. vispy/visuals/isoline.py +241 -0
  438. vispy/visuals/isosurface.py +113 -0
  439. vispy/visuals/line/__init__.py +6 -0
  440. vispy/visuals/line/arrow.py +289 -0
  441. vispy/visuals/line/dash_atlas.py +90 -0
  442. vispy/visuals/line/line.py +545 -0
  443. vispy/visuals/line_plot.py +135 -0
  444. vispy/visuals/linear_region.py +199 -0
  445. vispy/visuals/markers.py +819 -0
  446. vispy/visuals/mesh.py +373 -0
  447. vispy/visuals/mesh_normals.py +159 -0
  448. vispy/visuals/plane.py +54 -0
  449. vispy/visuals/polygon.py +145 -0
  450. vispy/visuals/rectangle.py +196 -0
  451. vispy/visuals/regular_polygon.py +56 -0
  452. vispy/visuals/scrolling_lines.py +197 -0
  453. vispy/visuals/shaders/__init__.py +17 -0
  454. vispy/visuals/shaders/compiler.py +206 -0
  455. vispy/visuals/shaders/expression.py +99 -0
  456. vispy/visuals/shaders/function.py +788 -0
  457. vispy/visuals/shaders/multiprogram.py +145 -0
  458. vispy/visuals/shaders/parsing.py +140 -0
  459. vispy/visuals/shaders/program.py +161 -0
  460. vispy/visuals/shaders/shader_object.py +162 -0
  461. vispy/visuals/shaders/tests/__init__.py +0 -0
  462. vispy/visuals/shaders/tests/test_function.py +486 -0
  463. vispy/visuals/shaders/tests/test_multiprogram.py +78 -0
  464. vispy/visuals/shaders/tests/test_parsing.py +57 -0
  465. vispy/visuals/shaders/variable.py +272 -0
  466. vispy/visuals/spectrogram.py +169 -0
  467. vispy/visuals/sphere.py +80 -0
  468. vispy/visuals/surface_plot.py +192 -0
  469. vispy/visuals/tests/__init__.py +0 -0
  470. vispy/visuals/tests/test_arrows.py +109 -0
  471. vispy/visuals/tests/test_axis.py +120 -0
  472. vispy/visuals/tests/test_collections.py +15 -0
  473. vispy/visuals/tests/test_colorbar.py +179 -0
  474. vispy/visuals/tests/test_colormap.py +97 -0
  475. vispy/visuals/tests/test_ellipse.py +122 -0
  476. vispy/visuals/tests/test_gridlines.py +30 -0
  477. vispy/visuals/tests/test_histogram.py +24 -0
  478. vispy/visuals/tests/test_image.py +392 -0
  479. vispy/visuals/tests/test_image_complex.py +36 -0
  480. vispy/visuals/tests/test_infinite_line.py +53 -0
  481. vispy/visuals/tests/test_instanced_mesh.py +50 -0
  482. vispy/visuals/tests/test_isosurface.py +22 -0
  483. vispy/visuals/tests/test_linear_region.py +152 -0
  484. vispy/visuals/tests/test_markers.py +54 -0
  485. vispy/visuals/tests/test_mesh.py +261 -0
  486. vispy/visuals/tests/test_mesh_normals.py +218 -0
  487. vispy/visuals/tests/test_polygon.py +112 -0
  488. vispy/visuals/tests/test_rectangle.py +163 -0
  489. vispy/visuals/tests/test_regular_polygon.py +111 -0
  490. vispy/visuals/tests/test_scalable_textures.py +196 -0
  491. vispy/visuals/tests/test_sdf.py +73 -0
  492. vispy/visuals/tests/test_spectrogram.py +42 -0
  493. vispy/visuals/tests/test_surface_plot.py +57 -0
  494. vispy/visuals/tests/test_text.py +95 -0
  495. vispy/visuals/tests/test_volume.py +542 -0
  496. vispy/visuals/tests/test_windbarb.py +33 -0
  497. vispy/visuals/text/__init__.py +7 -0
  498. vispy/visuals/text/_sdf_cpu.cpython-312-darwin.so +0 -0
  499. vispy/visuals/text/_sdf_cpu.pyx +112 -0
  500. vispy/visuals/text/_sdf_gpu.py +316 -0
  501. vispy/visuals/text/text.py +675 -0
  502. vispy/visuals/transforms/__init__.py +34 -0
  503. vispy/visuals/transforms/_util.py +191 -0
  504. vispy/visuals/transforms/base_transform.py +233 -0
  505. vispy/visuals/transforms/chain.py +300 -0
  506. vispy/visuals/transforms/interactive.py +98 -0
  507. vispy/visuals/transforms/linear.py +564 -0
  508. vispy/visuals/transforms/nonlinear.py +398 -0
  509. vispy/visuals/transforms/tests/__init__.py +0 -0
  510. vispy/visuals/transforms/tests/test_transforms.py +243 -0
  511. vispy/visuals/transforms/transform_system.py +339 -0
  512. vispy/visuals/tube.py +173 -0
  513. vispy/visuals/visual.py +923 -0
  514. vispy/visuals/volume.py +1366 -0
  515. vispy/visuals/windbarb.py +291 -0
  516. vispy/visuals/xyz_axis.py +34 -0
  517. vispy-0.15.0.dist-info/METADATA +243 -0
  518. vispy-0.15.0.dist-info/RECORD +521 -0
  519. vispy-0.15.0.dist-info/WHEEL +6 -0
  520. vispy-0.15.0.dist-info/licenses/LICENSE.txt +36 -0
  521. vispy-0.15.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,20 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+
6
+ vec2 NDC_to_viewport(vec4 position, vec2 viewport)
7
+ {
8
+ vec2 p = position.xy/position.w;
9
+ return (p+1.0)/2.0 * viewport;
10
+ }
11
+
12
+ vec4 viewport_to_NDC(vec2 position, vec2 viewport)
13
+ {
14
+ return vec4(2.0*(position/viewport) - 1.0, 0.0, 1.0);
15
+ }
16
+
17
+ vec4 viewport_to_NDC(vec3 position, vec2 viewport)
18
+ {
19
+ return vec4(2.0*(position.xy/viewport) - 1.0, position.z, 1.0);
20
+ }
@@ -0,0 +1,32 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+
6
+ float scale(float x) { return sqrt(2.0/(1.0+x)); }
7
+ float angle(float x) { return 2.0 * asin(x/2.0); }
8
+
9
+ vec2 forward(float longitude, float latitude)
10
+ {
11
+ float cos_lon = cos(longitude);
12
+ float cos_lat = cos(latitude);
13
+ float k = scale(cos_lon * cos_lat);
14
+ return vec2( k * cos_lat * sin(longitude), k * sin(latitude));
15
+ }
16
+ vec2 forward(vec2 P) { return forward(P.x,P.y); }
17
+ vec3 forward(vec3 P) { return vec3(forward(P.x,P.y), P.z); }
18
+ vec4 forward(vec4 P) { return vec4(forward(P.x,P.y), P.z, P.w); }
19
+
20
+ vec2 inverse(float x, float y)
21
+ {
22
+ float rho = sqrt(x*x + y*y);
23
+ float c = angle(rho);
24
+ float sinc = sin(c);
25
+ float cosc = cos(c);
26
+ if (rho != 0)
27
+ return vec2( atan(x*sinc, rho*cosc), asin(y*sinc/rho));
28
+ return vec2( atan(x*sinc, rho*cosc), asin(0));
29
+ }
30
+ vec2 inverse(vec2 P) { return inverse(P.x,P.y); }
31
+ vec3 inverse(vec3 P) { return vec3(inverse(P.x,P.y), P.z); }
32
+ vec4 inverse(vec4 P) { return vec4(inverse(P.x,P.y), P.z, P.w); }
@@ -0,0 +1,38 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+
6
+ float scale(float x) {
7
+ float c = acos(x);
8
+ if (c != 0.0)
9
+ return c / sin(c);
10
+ discard;
11
+ }
12
+ float angle(float x) { return x; }
13
+
14
+ vec2 forward(float longitude, float latitude)
15
+ {
16
+ float cos_lon = cos(longitude);
17
+ float cos_lat = cos(latitude);
18
+ float k = scale(cos_lon * cos_lat);
19
+ return vec2( k * cos_lat * sin(longitude), k * sin(latitude));
20
+ }
21
+ vec2 forward(vec2 P) { return forward(P.x,P.y); }
22
+ vec3 forward(vec3 P) { return vec3(forward(P.x,P.y), P.z); }
23
+ vec4 forward(vec4 P) { return vec4(forward(P.x,P.y), P.z, P.w); }
24
+
25
+ vec2 inverse(float x, float y)
26
+ {
27
+ float rho = sqrt(x*x + y*y);
28
+ float c = angle(rho);
29
+ float sinc = sin(c);
30
+ float cosc = cos(c);
31
+ //if (rho != 0)
32
+ return vec2( atan(x*sinc, rho*cosc), asin(y*sinc/rho));
33
+ //else
34
+ //return vec2( atan(x*sinc, rho*cosc), asin(1e10));
35
+ }
36
+ vec2 inverse(vec2 P) { return inverse(P.x,P.y); }
37
+ vec3 inverse(vec3 P) { return vec3(inverse(P.x,P.y), P.z); }
38
+ vec4 inverse(vec4 P) { return vec4(inverse(P.x,P.y), P.z, P.w); }
@@ -0,0 +1,44 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+ //
6
+ // Hammer projection
7
+ // See http://en.wikipedia.org/wiki/Hammer_projection
8
+ //
9
+ // ----------------------------------------------------------------------------
10
+ #include "math/constants.glsl"
11
+
12
+ const float B = 2.0;
13
+
14
+ vec4 forward(float longitude, float latitude, float z, float w)
15
+ {
16
+ float cos_lat = cos(latitude);
17
+ float sin_lat = sin(latitude);
18
+ float cos_lon = cos(longitude/B);
19
+ float sin_lon = sin(longitude/B);
20
+ float d = sqrt(1.0 + cos_lat * cos_lon);
21
+ float x = (B * M_SQRT2 * cos_lat * sin_lon) / d;
22
+ float y = (M_SQRT2 * sin_lat) / d;
23
+ return vec4(x,y,z,w);
24
+ }
25
+ vec4 forward(float x, float y) {return forward(x, y, 0.0, 1.0);}
26
+ vec4 forward(float x, float y, float z) {return forward(x, y, 0.0, 1.0);}
27
+ vec4 forward(vec2 P) { return forward(P.x, P.y); }
28
+ vec4 forward(vec3 P) { return forward(P.x, P.y, P.z, 1.0); }
29
+ vec4 forward(vec4 P) { return forward(P.x, P.y, P.z, P.w); }
30
+
31
+
32
+ vec2 inverse(float x, float y)
33
+ {
34
+ float z = 1.0 - (x*x/16.0) - (y*y/4.0);
35
+ // if (z < 0.0)
36
+ // discard;
37
+ z = sqrt(z);
38
+ float longitude = 2.0*atan( (z*x),(2.0*(2.0*z*z - 1.0)));
39
+ float latitude = asin(z*y);
40
+ return vec2(longitude, latitude);
41
+ }
42
+ vec2 inverse(vec2 P) { return inverse(P.x,P.y); }
43
+ vec3 inverse(vec3 P) { return vec3(inverse(P.x,P.y), P.z); }
44
+ vec4 inverse(vec4 P) { return vec4(inverse(P.x,P.y), P.z, P.w); }
@@ -0,0 +1,6 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+ #include "transforms/identity_forward.glsl"
6
+ #include "transforms/identity_inverse.glsl"
@@ -0,0 +1,23 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+
6
+ /* ---------------------------------------------------------
7
+ Forward identity projection (identity)
8
+
9
+ Parameters:
10
+ -----------
11
+
12
+ position : 2d position in cartesian coordinates
13
+
14
+ Return:
15
+ -------
16
+ 2d position in cartesian coordinates
17
+
18
+ --------------------------------------------------------- */
19
+
20
+ vec2 transform_identity_forward(vec2 P)
21
+ {
22
+ return P;
23
+ }
@@ -0,0 +1,23 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+
6
+ /* ---------------------------------------------------------
7
+ Inverse cartesian projection (identity)
8
+
9
+ Parameters:
10
+ -----------
11
+
12
+ position : 2d position in cartesian coordinates
13
+
14
+ Return:
15
+ -------
16
+
17
+ 2d position in cartesian coordinates
18
+
19
+ --------------------------------------------------------- */
20
+ vec2 transform_identity_inverse(vec2 P)
21
+ {
22
+ return P;
23
+ }
@@ -0,0 +1,127 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+ /*
6
+ Linear scales are the most common scale, and a good default choice to map a
7
+ continuous input domain to a continuous output range. The mapping is linear
8
+ in that the output range value y can be expressed as a linear function of the
9
+ input domain value x: y = mx + b. The input domain is typically a dimension
10
+ of the data that you want to visualize, such as the height of students
11
+ (measured in meters) in a sample population. The output range is typically a
12
+ dimension of the desired output visualization, such as the height of bars
13
+ (measured in pixels) in a histogram.
14
+ */
15
+ uniform int linear_scale_clamp;
16
+ uniform int linear_scale_discard;
17
+ uniform vec2 linear_scale_range;
18
+ uniform vec2 linear_scale_domain;
19
+
20
+
21
+ float forward(float value)
22
+ {
23
+ vec2 domain = linear_scale_domain;
24
+ vec2 range = linear_scale_range;
25
+ float t = (value - domain.x) /(domain.y - domain.x);
26
+
27
+ #ifdef __FRAGMENT_SHADER__
28
+ if (linear_scale_discard > 0)
29
+ if (t != clamp(t, 0.0, 1.0))
30
+ discard;
31
+ #endif
32
+
33
+ if (linear_scale_clamp > 0)
34
+ t = clamp(t, 0.0, 1.0);
35
+
36
+ return range.x + t*(range.y - range.x);
37
+ }
38
+
39
+ vec2 forward(vec2 value)
40
+ {
41
+ vec2 domain = linear_scale_domain;
42
+ vec2 range = linear_scale_range;
43
+ vec2 t = (value - domain.x) /(domain.y - domain.x);
44
+
45
+ #ifdef __FRAGMENT_SHADER__
46
+ if (linear_scale_discard > 0)
47
+ if (t != clamp(t, 0.0, 1.0))
48
+ discard;
49
+ #endif
50
+
51
+ if (linear_scale_clamp > 0)
52
+ t = clamp(t, 0.0, 1.0);
53
+
54
+ return range.x + t*(range.y - range.x);
55
+ }
56
+
57
+ vec3 forward(vec3 value)
58
+ {
59
+ vec2 domain = linear_scale_domain;
60
+ vec2 range = linear_scale_range;
61
+ vec3 t = (value - domain.x) /(domain.y - domain.x);
62
+
63
+ #ifdef __FRAGMENT_SHADER__
64
+ if (linear_scale_discard > 0)
65
+ if (t != clamp(t, 0.0, 1.0))
66
+ discard;
67
+ #endif
68
+
69
+ if (linear_scale_clamp > 0)
70
+ t = clamp(t, 0.0, 1.0);
71
+
72
+ return range.x + t*(range.y - range.x);
73
+ }
74
+
75
+ float inverse(float value)
76
+ {
77
+ vec2 domain = linear_scale_domain;
78
+ vec2 range = linear_scale_range;
79
+ float t = (value - range.x) / (range.y - range.x);
80
+
81
+ #ifdef __FRAGMENT_SHADER__
82
+ if (linear_scale_discard > 0)
83
+ if (t != clamp(t, 0.0, 1.0))
84
+ discard;
85
+ #endif
86
+
87
+ if (linear_scale_clamp > 0)
88
+ t = clamp(t, 0.0, 1.0);
89
+
90
+ return domain.x + t*(domain.y - domain.x);
91
+ }
92
+
93
+ vec2 inverse(vec2 value)
94
+ {
95
+ vec2 domain = linear_scale_domain;
96
+ vec2 range = linear_scale_range;
97
+ vec2 t = (value - range.x) / (range.y - range.x);
98
+
99
+ #ifdef __FRAGMENT_SHADER__
100
+ if (linear_scale_discard > 0)
101
+ if (t != clamp(t, 0.0, 1.0))
102
+ discard;
103
+ #endif
104
+
105
+ if (linear_scale_clamp > 0)
106
+ t = clamp(t, 0.0, 1.0);
107
+
108
+ return domain.x + t*(domain.y - domain.x);
109
+ }
110
+
111
+ vec3 inverse(vec3 value)
112
+ {
113
+ vec2 domain = linear_scale_domain;
114
+ vec2 range = linear_scale_range;
115
+ vec3 t = (value - range.x) / (range.y - range.x);
116
+
117
+ #ifdef __FRAGMENT_SHADER__
118
+ if (linear_scale_discard > 0)
119
+ if (t != clamp(t, 0.0, 1.0))
120
+ discard;
121
+ #endif
122
+
123
+ if (linear_scale_clamp > 0)
124
+ t = clamp(t, 0.0, 1.0);
125
+
126
+ return domain.x + t*(domain.y - domain.x);
127
+ }
@@ -0,0 +1,126 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+
6
+ uniform int log_scale_clamp;
7
+ uniform int log_scale_discard;
8
+ uniform vec2 log_scale_range;
9
+ uniform vec2 log_scale_domain;
10
+ uniform float log_scale_base;
11
+
12
+ float forward(float value)
13
+ {
14
+ vec2 domain = log_scale_domain;
15
+ vec2 range = log_scale_range;
16
+ float base = log_scale_base;
17
+
18
+ float v = log(value) / log(base);
19
+ float t = (v - domain.x) /(domain.y - domain.x);
20
+
21
+ #ifdef __FRAGMENT_SHADER__
22
+ if (log_scale_discard > 0)
23
+ if (t != clamp(t, 0.0, 1.0))
24
+ discard;
25
+ #endif
26
+
27
+ if (log_scale_clamp > 0)
28
+ t = clamp(t, 0.0, 1.0);
29
+ return sign(value) * (range.x + t*(range.y - range.x));
30
+ }
31
+
32
+ vec2 forward(vec2 value)
33
+ {
34
+ vec2 domain = log_scale_domain;
35
+ vec2 range = log_scale_range;
36
+ float base = log_scale_base;
37
+ vec2 v = log(value) / log(base);
38
+ vec2 t = (v - domain.x) /(domain.y - domain.x);
39
+
40
+ #ifdef __FRAGMENT_SHADER__
41
+ if (log_scale_discard > 0)
42
+ if (t != clamp(t, 0.0, 1.0))
43
+ discard;
44
+ #endif
45
+
46
+ if (log_scale_clamp > 0)
47
+ t = clamp(t, 0.0, 1.0);
48
+ return sign(value) * (range.x + t*(range.y - range.x));
49
+ }
50
+
51
+ vec3 forward(vec3 value)
52
+ {
53
+ vec2 domain = log_scale_domain;
54
+ vec2 range = log_scale_range;
55
+ float base = log_scale_base;
56
+ vec3 v = log(value) / log(base);
57
+ vec3 t = (v - domain.x) /(domain.y - domain.x);
58
+
59
+ #ifdef __FRAGMENT_SHADER__
60
+ if (log_scale_discard > 0)
61
+ if (t != clamp(t, 0.0, 1.0))
62
+ discard;
63
+ #endif
64
+
65
+ if (log_scale_clamp > 0)
66
+ t = clamp(t, 0.0, 1.0);
67
+ return sign(value) * (range.x + t*(range.y - range.x));
68
+ }
69
+
70
+
71
+ float inverse(float value)
72
+ {
73
+ vec2 domain = log_scale_domain;
74
+ vec2 range = log_scale_range;
75
+ float base = log_scale_base;
76
+ float t = (abs(value) - range.x) / (range.y - range.x);
77
+
78
+ #ifdef __FRAGMENT_SHADER__
79
+ if (log_scale_discard > 0)
80
+ if (t != clamp(t, 0.0, 1.0))
81
+ discard;
82
+ #endif
83
+
84
+ if (log_scale_clamp > 0)
85
+ t = clamp(t, 0.0, 1.0);
86
+ float v = domain.x + t*(domain.y - domain.x);
87
+ return sign(value) * pow(base, abs(v));
88
+ }
89
+
90
+ vec2 inverse(vec2 value)
91
+ {
92
+ vec2 domain = log_scale_domain;
93
+ vec2 range = log_scale_range;
94
+ float base = log_scale_base;
95
+ vec2 t = (abs(value) - range.x) / (range.y - range.x);
96
+
97
+ #ifdef __FRAGMENT_SHADER__
98
+ if (log_scale_discard > 0)
99
+ if (t != clamp(t, 0.0, 1.0))
100
+ discard;
101
+ #endif
102
+
103
+ if (log_scale_clamp > 0)
104
+ t = clamp(t, 0.0, 1.0);
105
+ vec2 v = domain.x + t*(domain.y - domain.x);
106
+ return sign(value) * pow(vec2(base), abs(v));
107
+ }
108
+
109
+ vec3 inverse(vec3 value)
110
+ {
111
+ vec2 domain = log_scale_domain;
112
+ vec2 range = log_scale_range;
113
+ float base = log_scale_base;
114
+ vec3 t = (abs(value) - range.x) / (range.y - range.x);
115
+
116
+ #ifdef __FRAGMENT_SHADER__
117
+ if (log_scale_discard > 0)
118
+ if (t != clamp(t, 0.0, 1.0))
119
+ discard;
120
+ #endif
121
+
122
+ if (log_scale_clamp > 0)
123
+ t = clamp(t, 0.0, 1.0);
124
+ vec3 v = domain.x + t*(domain.y - domain.x);
125
+ return sign(value) * pow(vec3(base), abs(v));
126
+ }
@@ -0,0 +1,40 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+
6
+ // Constants
7
+ // ---------
8
+ const float k0 = 0.75;
9
+ const float a = 1.00;
10
+
11
+ // Helper functions
12
+ // ----------------
13
+ float cosh(float x) { return 0.5 * (exp(x)+exp(-x)); }
14
+ float sinh(float x) { return 0.5 * (exp(x)-exp(-x)); }
15
+
16
+
17
+ /* ---------------------------------------------------------
18
+ Transverse Mercator projection
19
+ -> http://en.wikipedia.org/wiki/Transverse_Mercator_projection
20
+
21
+
22
+ Parameters:
23
+ -----------
24
+
25
+ position : 2d position in (longitude,latitiude) coordinates
26
+
27
+ Return:
28
+ -------
29
+ 2d position in cartesian coordinates
30
+
31
+ --------------------------------------------------------- */
32
+
33
+ vec2 transform_forward(vec2 P)
34
+ {
35
+ float lambda = P.x;
36
+ float phi = P.y;
37
+ float x = 0.5*k0*log((1.0+sin(lambda)*cos(phi)) / (1.0 - sin(lambda)*cos(phi)));
38
+ float y = k0*a*atan(tan(phi), cos(lambda));
39
+ return vec2(x,y);
40
+ }
@@ -0,0 +1,40 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+
6
+ // Constants
7
+ // ------------------------------------
8
+ const float k0 = 0.75;
9
+ const float a = 1.00;
10
+
11
+
12
+ // Helper functions
13
+ // ------------------------------------
14
+ float cosh(float x) { return 0.5 * (exp(x)+exp(-x)); }
15
+ float sinh(float x) { return 0.5 * (exp(x)-exp(-x)); }
16
+
17
+
18
+ /* ---------------------------------------------------------
19
+ Inverse Lambert azimuthal equal-area projection
20
+ -> http://en.wikipedia.org/wiki/Transverse_Mercator_projection
21
+
22
+ Parameters:
23
+ -----------
24
+
25
+ position : 2d position in cartesian coordinates
26
+
27
+ Return:
28
+ -------
29
+ 2d position in (longitude,latitiude) coordinates
30
+
31
+ --------------------------------------------------------- */
32
+
33
+ vec2 transform_inverse(vec2 P)
34
+ {
35
+ float x = P.x;
36
+ float y = P.y;
37
+ float lambda = atan(sinh(x/(k0*a)),cos(y/(k0*a)));
38
+ float phi = asin(sin(y/(k0*a))/cosh(x/(k0*a)));
39
+ return vec2(lambda,phi);
40
+ }
@@ -0,0 +1,10 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+ uniform vec2 panzoom_scale;
6
+ uniform vec2 panzoom_translate;
7
+ vec4 panzoom(vec4 position)
8
+ {
9
+ return vec4(panzoom_scale*position.xy + panzoom_translate, position.z, 1.0);
10
+ }
@@ -0,0 +1,41 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+ //
6
+ // Polar projection
7
+ // See http://en.wikipedia.org/wiki/Hammer_projection
8
+ //
9
+ // ----------------------------------------------------------------------------
10
+ #include "math/constants.glsl"
11
+
12
+ uniform float polar_origin;
13
+
14
+ vec4 forward(float rho, float theta, float z, float w)
15
+ {
16
+ return vec4(rho * cos(theta + polar_origin),
17
+ rho * sin(theta + polar_origin),
18
+ z, w);
19
+ }
20
+ vec4 forward(float x, float y) {return forward(x, y, 0.0, 1.0);}
21
+ vec4 forward(float x, float y, float z) {return forward(x, y, z, 1.0);}
22
+ vec4 forward(vec2 P) { return forward(P.x, P.y); }
23
+ vec4 forward(vec3 P) { return forward(P.x, P.y, P.z, 1.0); }
24
+ vec4 forward(vec4 P) { return forward(P.x, P.y, P.z, P.w); }
25
+ // vec4 forward(float x, float y, float z) { return vec3(forward(x,y),z); }
26
+
27
+ vec4 inverse(float x, float y, float z, float w)
28
+ {
29
+ float rho = length(vec2(x,y));
30
+ float theta = atan(y,x);
31
+ if( theta < 0.0 )
32
+ theta = 2.0*M_PI+theta;
33
+ return vec4(rho, theta-polar_origin, z, w);
34
+ }
35
+ vec4 inverse(float x, float y) {return inverse(x,y,0.0,1.0); }
36
+ vec4 inverse(float x, float y, float z) {return inverse(x,y,z,1.0); }
37
+ vec4 inverse(vec2 P) { return inverse(P.x, P.y, 0.0, 1.0); }
38
+ vec4 inverse(vec3 P) { return inverse(P.x, P.y, P.z, 1.0); }
39
+ vec4 inverse(vec4 P) { return inverse(P.x, P.y, P.z, P.w); }
40
+
41
+ //vec3 inverse(float x, float y, float z) { return vec3(inverse(x,y),z); }
@@ -0,0 +1,44 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+
6
+ vec4 position(float x)
7
+ {
8
+ return vec4(x, 0.0, 0.0, 1.0);
9
+ }
10
+
11
+ vec4 position(float x, float y)
12
+ {
13
+ return vec4(x, y, 0.0, 1.0);
14
+ }
15
+
16
+ vec4 position(vec2 xy)
17
+ {
18
+ return vec4(xy, 0.0, 1.0);
19
+ }
20
+
21
+ vec4 position(float x, float y, float z)
22
+ {
23
+ return vec4(x, y, z, 1.0);
24
+ }
25
+
26
+ vec4 position(vec3 xyz)
27
+ {
28
+ return vec4(xyz, 1.0);
29
+ }
30
+
31
+ vec4 position(vec4 xyzw)
32
+ {
33
+ return xyzw;
34
+ }
35
+
36
+ vec4 position(vec2 xy, float z)
37
+ {
38
+ return vec4(xy, z, 1.0);
39
+ }
40
+
41
+ vec4 position(float x, vec2 yz)
42
+ {
43
+ return vec4(x, yz, 1.0);
44
+ }