Kivy-examples 2.3.1.dev0__py3-none-any.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.
Files changed (624) hide show
  1. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/3Drendering/main.py +77 -0
  2. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/3Drendering/monkey.obj +7966 -0
  3. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/3Drendering/objloader.py +147 -0
  4. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/3Drendering/simple.glsl +47 -0
  5. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/RST_Editor/editor.kv +72 -0
  6. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/RST_Editor/main.py +64 -0
  7. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/compass/android.txt +3 -0
  8. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/compass/compass.kv +25 -0
  9. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/compass/main.py +77 -0
  10. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/compass/needle.png +0 -0
  11. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/compass/rose.png +0 -0
  12. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/takepicture/android.txt +3 -0
  13. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/takepicture/main.py +80 -0
  14. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/takepicture/shadow32.png +0 -0
  15. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/takepicture/takepicture.kv +40 -0
  16. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/animation/animate.py +42 -0
  17. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/app_suite.py +152 -0
  18. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/app_suite_data/testkvdir.kv +4 -0
  19. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/app_with_build.py +24 -0
  20. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/app_with_config.py +49 -0
  21. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/app_with_kv.py +25 -0
  22. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/app_with_kv_in_template1.py +27 -0
  23. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/template1/test.kv +4 -0
  24. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/test.kv +4 -0
  25. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/testkvfile.kv +4 -0
  26. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/async/asyncio_advanced.py +90 -0
  27. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/async/asyncio_basic.py +59 -0
  28. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/async/trio_advanced.py +93 -0
  29. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/async/trio_basic.py +58 -0
  30. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12908_sweet_trip_mm_clap_hi.wav +0 -0
  31. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12909_sweet_trip_mm_clap_lo.wav +0 -0
  32. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12910_sweet_trip_mm_clap_mid.wav +0 -0
  33. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12911_sweet_trip_mm_hat_cl.wav +0 -0
  34. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12913_sweet_trip_mm_kick_hi.wav +0 -0
  35. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12914_sweet_trip_mm_kick_lo.wav +0 -0
  36. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12915_sweet_trip_mm_kick_mid.wav +0 -0
  37. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12916_sweet_trip_mm_kwik_mod_01.wav +0 -0
  38. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12917_sweet_trip_mm_kwik_mod_02.wav +0 -0
  39. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12918_sweet_trip_mm_kwik_mod_03.wav +0 -0
  40. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12919_sweet_trip_mm_kwik_mod_04.wav +0 -0
  41. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12920_sweet_trip_mm_kwik_mod_05.wav +0 -0
  42. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12921_sweet_trip_mm_kwik_mod_06.wav +0 -0
  43. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12922_sweet_trip_mm_kwik_mod_07.wav +0 -0
  44. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12923_sweet_trip_mm_metal_clave.wav +0 -0
  45. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12925_sweet_trip_mm_sweep_x.wav +0 -0
  46. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12926_sweet_trip_mm_sweep_y.wav +0 -0
  47. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12927_sweet_trip_mm_sweep_z.wav +0 -0
  48. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/audio.kv +59 -0
  49. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/main.py +81 -0
  50. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/pitch.py +42 -0
  51. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/camera/main.py +59 -0
  52. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/bezier.py +105 -0
  53. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/canvas_stress.py +72 -0
  54. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/circle.py +84 -0
  55. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/fbo_canvas.py +91 -0
  56. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/kiwi.jpg +0 -0
  57. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/lines.py +296 -0
  58. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/lines_extended.py +183 -0
  59. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/mesh.py +57 -0
  60. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/mesh_manipulation.py +101 -0
  61. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/mtexture1.png +0 -0
  62. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/mtexture2.png +0 -0
  63. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/multitexture.py +110 -0
  64. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/repeat_texture.py +65 -0
  65. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/rotation.py +35 -0
  66. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/rounded_rectangle.py +153 -0
  67. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/scale.py +37 -0
  68. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/stencil_canvas.py +85 -0
  69. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/tesselate.py +146 -0
  70. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/texture.py +143 -0
  71. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/texture_example_image.png +0 -0
  72. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/container/kv/1.kv +28 -0
  73. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/container/kv/2.kv +28 -0
  74. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/container/kv/3.kv +28 -0
  75. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/container/kv/root.kv +32 -0
  76. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/container/main.py +63 -0
  77. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/cover/cover_image.py +25 -0
  78. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/cover/cover_video.py +31 -0
  79. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/camera_puzzle.py +98 -0
  80. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/AnchorLayoutContainer.kv +15 -0
  81. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/BoxLayoutContainer.kv +14 -0
  82. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/ButtonContainer.kv +27 -0
  83. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/CheckBoxContainer.kv +28 -0
  84. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/FileChooserContainer.kv +19 -0
  85. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/FloatLayoutContainer.kv +16 -0
  86. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/GridLayoutContainer.kv +20 -0
  87. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/LabelContainer.kv +62 -0
  88. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/MediaContainer.kv +9 -0
  89. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/PlaygroundContainer.kv +4 -0
  90. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/PopupContainer.kv +39 -0
  91. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/ProgressBarContainer.kv +17 -0
  92. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/RestContainer.kv +5 -0
  93. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/ScatterContainer.kv +16 -0
  94. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/SelectorsContainer.kv +10 -0
  95. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/StackLayoutContainer.kv +25 -0
  96. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/TextContainer.kv +20 -0
  97. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/kivycatalog.kv +144 -0
  98. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/main.py +192 -0
  99. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/gesturedatabase.kv +117 -0
  100. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/gesturedatabase.py +180 -0
  101. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/helpers.py +30 -0
  102. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/historymanager.kv +164 -0
  103. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/historymanager.py +276 -0
  104. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/main.py +144 -0
  105. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/multistroke.kv +101 -0
  106. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/settings.kv +110 -0
  107. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/settings.py +97 -0
  108. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/pictures/android.txt +3 -0
  109. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/pictures/images/Bubbles.jpg +0 -0
  110. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/pictures/images/Ill1.jpg +0 -0
  111. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/pictures/images/Wall.jpg +0 -0
  112. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/pictures/images/faust_github.jpg +0 -0
  113. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/pictures/main.py +73 -0
  114. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/pictures/pictures.kv +57 -0
  115. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/pictures/shadow32.png +0 -0
  116. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/shadereditor/main.py +147 -0
  117. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/shadereditor/shadereditor.kv +39 -0
  118. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/README.txt +11 -0
  119. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/android.txt +3 -0
  120. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/background.png +0 -0
  121. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/faust_github.jpg +0 -0
  122. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/icons/README +4 -0
  123. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/icons/bug.png +0 -0
  124. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/icons/chevron-left.png +0 -0
  125. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/icons/chevron-right.png +0 -0
  126. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/accordions.kv +39 -0
  127. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/bubbles.kv +33 -0
  128. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/buttons.kv +26 -0
  129. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/carousel.kv +51 -0
  130. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/checkboxes.kv +33 -0
  131. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/codeinput.kv +9 -0
  132. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/dropdown.kv +40 -0
  133. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/filechoosers.kv +24 -0
  134. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/popups.kv +17 -0
  135. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/progressbar.kv +15 -0
  136. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/rstdocument.kv +24 -0
  137. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/scatter.kv +14 -0
  138. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/screenmanager.kv +46 -0
  139. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/sliders.kv +55 -0
  140. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/spinner.kv +11 -0
  141. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/splitter.kv +13 -0
  142. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/switches.kv +39 -0
  143. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/tabbedpanel + layouts.kv +69 -0
  144. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/textinputs.kv +48 -0
  145. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/togglebutton.kv +39 -0
  146. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/main.py +243 -0
  147. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/showcase.kv +100 -0
  148. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/touchtracer/README.txt +12 -0
  149. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/touchtracer/android.txt +3 -0
  150. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/touchtracer/icon.png +0 -0
  151. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/touchtracer/main.py +170 -0
  152. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/touchtracer/particle.png +0 -0
  153. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/touchtracer/touchtracer.kv +29 -0
  154. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/frameworks/twisted/echo_client_app.py +82 -0
  155. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/frameworks/twisted/echo_server_app.py +49 -0
  156. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/frameworks/twisted/twistd_app.py +66 -0
  157. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/gestures/gesture_board.py +95 -0
  158. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/gestures/my_gestures.py +90 -0
  159. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/designwithkv/controller.kv +16 -0
  160. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/designwithkv/main.py +29 -0
  161. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/firstwidget/1_skeleton.py +15 -0
  162. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/firstwidget/2_print_touch.py +16 -0
  163. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/firstwidget/3_draw_ellipse.py +22 -0
  164. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/firstwidget/4_draw_line.py +26 -0
  165. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/firstwidget/5_random_colors.py +28 -0
  166. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/firstwidget/6_button.py +38 -0
  167. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/quickstart/main.py +15 -0
  168. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/includes/button.kv +9 -0
  169. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/includes/layout.kv +6 -0
  170. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/includes/main.py +19 -0
  171. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/includes/test.kv +5 -0
  172. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/keyboard/android.txt +3 -0
  173. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/keyboard/main.py +226 -0
  174. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/keyboard/numeric.json +38 -0
  175. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kinect/README.txt +13 -0
  176. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kinect/kinectviewer.py +283 -0
  177. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/app_button.kv +9 -0
  178. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/app_camera.kv +25 -0
  179. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/app_fbo.kv +11 -0
  180. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/app_layout.kv +23 -0
  181. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/app_logo.kv +36 -0
  182. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/app_scatter.kv +6 -0
  183. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/app_stencil.kv +27 -0
  184. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/app_video.kv +42 -0
  185. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/builder_template.py +28 -0
  186. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/ids/id_in_kv/id_in_kv.py +20 -0
  187. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/ids/id_in_kv/test.kv +11 -0
  188. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/ids/kv_and_py/kv_and_py.py +34 -0
  189. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/ids/kv_and_py/test.kv +11 -0
  190. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/kivy.jpg +0 -0
  191. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/kvrun.py +38 -0
  192. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/clipboard.py +63 -0
  193. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/custom_titlebar.py +56 -0
  194. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/imagesave.py +14 -0
  195. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/joystick.py +83 -0
  196. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/multiple_dropfile.py +51 -0
  197. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/on_textedit_event.py +104 -0
  198. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/opacitywindow.py +28 -0
  199. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/shapecollisions.py +397 -0
  200. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/shapedwindow.py +98 -0
  201. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/two_panes.py +47 -0
  202. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/urlrequest.py +128 -0
  203. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/settings/android.txt +3 -0
  204. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/settings/main.py +122 -0
  205. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/shader/plasma.kv +9 -0
  206. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/shader/plasma.py +86 -0
  207. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/shader/rotated.kv +91 -0
  208. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/shader/rotated.py +102 -0
  209. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/shader/shadertree.kv +29 -0
  210. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/shader/shadertree.py +193 -0
  211. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/shader/tex3.jpg +0 -0
  212. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/benchmark.py +19 -0
  213. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/cloud.svg +25 -0
  214. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/main-smaa.py +155 -0
  215. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/main.py +50 -0
  216. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/music.svg +68 -0
  217. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/rotated.svg +23 -0
  218. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/ship.svg +181 -0
  219. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/sun.svg +35 -0
  220. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/tiger.svg +813 -0
  221. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/text/pango_demo.py +296 -0
  222. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/notes/final/data/icon.png +0 -0
  223. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/notes/final/main.py +163 -0
  224. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/notes/final/note.kv +154 -0
  225. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/main.py +82 -0
  226. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/pong.kv +53 -0
  227. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step1/main.py +15 -0
  228. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step1/pong.kv +2 -0
  229. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step2/main.py +15 -0
  230. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step2/pong.kv +21 -0
  231. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step3/main.py +26 -0
  232. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step3/pong.kv +31 -0
  233. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step4/main.py +48 -0
  234. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step4/pong.kv +34 -0
  235. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step5/main.py +75 -0
  236. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step5/pong.kv +53 -0
  237. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/accordion_1.py +17 -0
  238. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/actionbar.py +32 -0
  239. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/asyncimage.py +35 -0
  240. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/boxlayout_poshint.py +54 -0
  241. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/bubble_test.py +63 -0
  242. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/camera.py +33 -0
  243. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/carousel_buttons.py +50 -0
  244. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/cityCC0.mpg +0 -0
  245. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/cityCC0.png +0 -0
  246. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/codeinput.py +225 -0
  247. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/codeinputtest.kv +53 -0
  248. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/colorpicker.py +234 -0
  249. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/colorusage.py +62 -0
  250. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/compound_selection.py +83 -0
  251. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/customcollide.py +82 -0
  252. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/effectwidget.py +193 -0
  253. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/effectwidget2.py +47 -0
  254. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/effectwidget3_advanced.py +62 -0
  255. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/fbowidget.py +111 -0
  256. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/focus_behavior.py +98 -0
  257. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/image_mipmap.py +31 -0
  258. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/keyboardlistener.py +42 -0
  259. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/label_mipmap.py +28 -0
  260. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/label_sizing.py +193 -0
  261. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/label_text_size.py +49 -0
  262. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/label_with_markup.py +21 -0
  263. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/lang_dynamic_classes.py +18 -0
  264. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/pagelayout.py +64 -0
  265. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/popup_with_kv.py +35 -0
  266. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/recycleview/basic_data.py +124 -0
  267. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/recycleview/infinite_scrolling.py +143 -0
  268. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/recycleview/key_viewclass.py +149 -0
  269. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/recycleview/messenger.py +196 -0
  270. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/recycleview/pull_to_refresh.py +95 -0
  271. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/recycleview/rv_animate_items.py +109 -0
  272. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/rstexample.py +128 -0
  273. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/scatter.kv +53 -0
  274. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/scatter.py +16 -0
  275. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/screenmanager.py +106 -0
  276. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/scrollview.kv +16 -0
  277. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/scrollview.py +40 -0
  278. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/android.txt +3 -0
  279. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/data/images/bird.zip +0 -0
  280. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/data/images/button_white.png +0 -0
  281. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/data/images/button_white_animated.zip +0 -0
  282. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/data/images/cube.zip +0 -0
  283. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/data/images/info.png +0 -0
  284. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/data/images/info.zip +0 -0
  285. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/data/images/simple_cv_joint_animated.gif +0 -0
  286. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/main.kv +63 -0
  287. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/main.py +150 -0
  288. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/uix/__init__.py +7 -0
  289. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/uix/custom_button.py +98 -0
  290. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/settings.py +93 -0
  291. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/shorten_text.py +80 -0
  292. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/spinner.py +17 -0
  293. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/splitter.py +74 -0
  294. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/tabbed_panel_showcase.py +316 -0
  295. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/tabbedpanel.py +50 -0
  296. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/textalign.kv +49 -0
  297. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/textalign.py +48 -0
  298. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/textinput.py +59 -0
  299. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/unicode_textinput.py +244 -0
  300. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/videoplayer.py +26 -0
  301. Kivy_examples-2.3.1.dev0.dist-info/AUTHORS +66 -0
  302. Kivy_examples-2.3.1.dev0.dist-info/LICENSE +21 -0
  303. Kivy_examples-2.3.1.dev0.dist-info/METADATA +382 -0
  304. Kivy_examples-2.3.1.dev0.dist-info/RECORD +624 -0
  305. Kivy_examples-2.3.1.dev0.dist-info/WHEEL +5 -0
  306. Kivy_examples-2.3.1.dev0.dist-info/dependency_links.txt +1 -0
  307. Kivy_examples-2.3.1.dev0.dist-info/top_level.txt +1 -0
  308. kivy/__init__.py +519 -0
  309. kivy/_version.py +18 -0
  310. kivy/animation.py +831 -0
  311. kivy/app.py +1213 -0
  312. kivy/atlas.py +456 -0
  313. kivy/base.py +617 -0
  314. kivy/cache.py +262 -0
  315. kivy/clock.py +1172 -0
  316. kivy/compat.py +82 -0
  317. kivy/config.py +1004 -0
  318. kivy/context.py +102 -0
  319. kivy/core/__init__.py +247 -0
  320. kivy/core/audio/__init__.py +223 -0
  321. kivy/core/audio/audio_android.py +104 -0
  322. kivy/core/audio/audio_avplayer.py +82 -0
  323. kivy/core/audio/audio_ffpyplayer.py +185 -0
  324. kivy/core/audio/audio_gstplayer.py +101 -0
  325. kivy/core/audio/audio_pygame.py +127 -0
  326. kivy/core/camera/__init__.py +151 -0
  327. kivy/core/camera/camera_android.py +206 -0
  328. kivy/core/camera/camera_gi.py +170 -0
  329. kivy/core/camera/camera_opencv.py +163 -0
  330. kivy/core/camera/camera_picamera.py +96 -0
  331. kivy/core/clipboard/__init__.py +157 -0
  332. kivy/core/clipboard/_clipboard_ext.py +36 -0
  333. kivy/core/clipboard/clipboard_android.py +91 -0
  334. kivy/core/clipboard/clipboard_dbusklipper.py +41 -0
  335. kivy/core/clipboard/clipboard_dummy.py +26 -0
  336. kivy/core/clipboard/clipboard_gtk3.py +47 -0
  337. kivy/core/clipboard/clipboard_nspaste.py +44 -0
  338. kivy/core/clipboard/clipboard_pygame.py +67 -0
  339. kivy/core/clipboard/clipboard_sdl2.py +36 -0
  340. kivy/core/clipboard/clipboard_winctypes.py +107 -0
  341. kivy/core/clipboard/clipboard_xclip.py +29 -0
  342. kivy/core/clipboard/clipboard_xsel.py +26 -0
  343. kivy/core/gl/__init__.py +90 -0
  344. kivy/core/image/__init__.py +996 -0
  345. kivy/core/image/img_dds.py +40 -0
  346. kivy/core/image/img_ffpyplayer.py +87 -0
  347. kivy/core/image/img_pil.py +123 -0
  348. kivy/core/image/img_pygame.py +119 -0
  349. kivy/core/image/img_sdl2.py +66 -0
  350. kivy/core/image/img_tex.py +58 -0
  351. kivy/core/spelling/__init__.py +135 -0
  352. kivy/core/spelling/spelling_enchant.py +50 -0
  353. kivy/core/spelling/spelling_osxappkit.py +64 -0
  354. kivy/core/text/__init__.py +1090 -0
  355. kivy/core/text/markup.py +893 -0
  356. kivy/core/text/text_pango.py +145 -0
  357. kivy/core/text/text_pil.py +84 -0
  358. kivy/core/text/text_pygame.py +117 -0
  359. kivy/core/text/text_sdl2.py +50 -0
  360. kivy/core/video/__init__.py +219 -0
  361. kivy/core/video/video_ffmpeg.py +106 -0
  362. kivy/core/video/video_ffpyplayer.py +449 -0
  363. kivy/core/video/video_gstplayer.py +140 -0
  364. kivy/core/video/video_null.py +12 -0
  365. kivy/core/window/__init__.py +2515 -0
  366. kivy/core/window/window_egl_rpi.py +86 -0
  367. kivy/core/window/window_pygame.py +441 -0
  368. kivy/core/window/window_sdl2.py +999 -0
  369. kivy/deps/__init__.py +6 -0
  370. kivy/effects/__init__.py +23 -0
  371. kivy/effects/dampedscroll.py +114 -0
  372. kivy/effects/kinetic.py +193 -0
  373. kivy/effects/opacityscroll.py +27 -0
  374. kivy/effects/scroll.py +126 -0
  375. kivy/event.py +12 -0
  376. kivy/eventmanager/__init__.py +185 -0
  377. kivy/extras/__init__.py +0 -0
  378. kivy/extras/highlight.py +52 -0
  379. kivy/factory.py +190 -0
  380. kivy/factory_registers.py +201 -0
  381. kivy/garden/__init__.py +186 -0
  382. kivy/geometry.py +121 -0
  383. kivy/gesture.py +424 -0
  384. kivy/graphics/__init__.py +126 -0
  385. kivy/graphics/cgl_backend/__init__.py +0 -0
  386. kivy/input/__init__.py +39 -0
  387. kivy/input/factory.py +35 -0
  388. kivy/input/motionevent.py +587 -0
  389. kivy/input/postproc/__init__.py +27 -0
  390. kivy/input/postproc/calibration.py +200 -0
  391. kivy/input/postproc/dejitter.py +74 -0
  392. kivy/input/postproc/doubletap.py +101 -0
  393. kivy/input/postproc/ignorelist.py +47 -0
  394. kivy/input/postproc/retaintouch.py +93 -0
  395. kivy/input/postproc/tripletap.py +106 -0
  396. kivy/input/provider.py +40 -0
  397. kivy/input/providers/__init__.py +68 -0
  398. kivy/input/providers/androidjoystick.py +117 -0
  399. kivy/input/providers/hidinput.py +778 -0
  400. kivy/input/providers/leapfinger.py +113 -0
  401. kivy/input/providers/linuxwacom.py +396 -0
  402. kivy/input/providers/mactouch.py +220 -0
  403. kivy/input/providers/mouse.py +424 -0
  404. kivy/input/providers/mtdev.py +380 -0
  405. kivy/input/providers/probesysfs.py +254 -0
  406. kivy/input/providers/tuio.py +326 -0
  407. kivy/input/providers/wm_common.py +162 -0
  408. kivy/input/providers/wm_pen.py +121 -0
  409. kivy/input/providers/wm_touch.py +157 -0
  410. kivy/input/recorder.py +335 -0
  411. kivy/input/shape.py +27 -0
  412. kivy/interactive.py +335 -0
  413. kivy/lang/__init__.py +883 -0
  414. kivy/lang/builder.py +1004 -0
  415. kivy/lang/parser.py +822 -0
  416. kivy/lib/__init__.py +21 -0
  417. kivy/lib/ddsfile.py +419 -0
  418. kivy/lib/gstplayer/__init__.py +27 -0
  419. kivy/lib/mtdev.py +254 -0
  420. kivy/lib/vidcore_lite/__init__.py +0 -0
  421. kivy/loader.py +579 -0
  422. kivy/logger.py +646 -0
  423. kivy/metrics.py +421 -0
  424. kivy/modules/__init__.py +300 -0
  425. kivy/modules/_webdebugger.py +200 -0
  426. kivy/modules/console.py +1059 -0
  427. kivy/modules/cursor.py +75 -0
  428. kivy/modules/inspector.py +755 -0
  429. kivy/modules/joycursor.py +299 -0
  430. kivy/modules/keybinding.py +64 -0
  431. kivy/modules/monitor.py +90 -0
  432. kivy/modules/recorder.py +94 -0
  433. kivy/modules/screen.py +183 -0
  434. kivy/modules/showborder.py +33 -0
  435. kivy/modules/touchring.py +97 -0
  436. kivy/modules/webdebugger.py +30 -0
  437. kivy/multistroke.py +1477 -0
  438. kivy/network/__init__.py +7 -0
  439. kivy/network/urlrequest.py +794 -0
  440. kivy/parser.py +154 -0
  441. kivy/resources.py +102 -0
  442. kivy/storage/__init__.py +405 -0
  443. kivy/storage/dictstore.py +98 -0
  444. kivy/storage/jsonstore.py +92 -0
  445. kivy/storage/redisstore.py +103 -0
  446. kivy/support.py +267 -0
  447. kivy/tests/__init__.py +11 -0
  448. kivy/tests/async_common.py +568 -0
  449. kivy/tests/common.py +524 -0
  450. kivy/tests/conftest.py +33 -0
  451. kivy/tests/fixtures.py +169 -0
  452. kivy/tests/perf_test_textinput.py +195 -0
  453. kivy/tests/pyinstaller/simple_widget/main.py +12 -0
  454. kivy/tests/pyinstaller/simple_widget/project/__init__.py +0 -0
  455. kivy/tests/pyinstaller/simple_widget/project/widget.py +12 -0
  456. kivy/tests/pyinstaller/test_pyinstaller.py +115 -0
  457. kivy/tests/pyinstaller/video_widget/main.py +6 -0
  458. kivy/tests/pyinstaller/video_widget/project/__init__.py +38 -0
  459. kivy/tests/test_animations.py +415 -0
  460. kivy/tests/test_app.py +216 -0
  461. kivy/tests/test_audio.py +69 -0
  462. kivy/tests/test_benchmark.py +292 -0
  463. kivy/tests/test_clipboard.py +48 -0
  464. kivy/tests/test_clock.py +292 -0
  465. kivy/tests/test_compat.py +6 -0
  466. kivy/tests/test_config.py +35 -0
  467. kivy/tests/test_coverage.py +83 -0
  468. kivy/tests/test_doc_gallery.py +38 -0
  469. kivy/tests/test_environ_cli.py +50 -0
  470. kivy/tests/test_fbo_py2py3.py +74 -0
  471. kivy/tests/test_filechooser.py +11 -0
  472. kivy/tests/test_filechooser_unicode.py +82 -0
  473. kivy/tests/test_fonts.py +42 -0
  474. kivy/tests/test_garden.py +23 -0
  475. kivy/tests/test_graphics.py +1149 -0
  476. kivy/tests/test_graphics_svg.py +84 -0
  477. kivy/tests/test_image.py +74 -0
  478. kivy/tests/test_imageloader.py +485 -0
  479. kivy/tests/test_invalid_lang.py +42 -0
  480. kivy/tests/test_issues/test_6315.py +55 -0
  481. kivy/tests/test_issues/test_issue_1084.py +47 -0
  482. kivy/tests/test_issues/test_issue_1091.py +19 -0
  483. kivy/tests/test_issues/test_issue_599.py +21 -0
  484. kivy/tests/test_issues/test_issue_609.py +19 -0
  485. kivy/tests/test_issues/test_issue_6909.py +28 -0
  486. kivy/tests/test_issues/test_issue_883.py +12 -0
  487. kivy/tests/test_kivy_init.py +30 -0
  488. kivy/tests/test_knspace.py +247 -0
  489. kivy/tests/test_lang.py +431 -0
  490. kivy/tests/test_lang_complex.py +87 -0
  491. kivy/tests/test_lang_pre_process_and_post_process.py +394 -0
  492. kivy/tests/test_logger.py +516 -0
  493. kivy/tests/test_metrics.py +30 -0
  494. kivy/tests/test_module_inspector.py +382 -0
  495. kivy/tests/test_motion_event.py +44 -0
  496. kivy/tests/test_mouse_hover_event.py +249 -0
  497. kivy/tests/test_mouse_multitouchsim.py +554 -0
  498. kivy/tests/test_multistroke.py +389 -0
  499. kivy/tests/test_properties.py +1332 -0
  500. kivy/tests/test_resources.py +79 -0
  501. kivy/tests/test_rst_replace.py +63 -0
  502. kivy/tests/test_screen.py +38 -0
  503. kivy/tests/test_storage.py +135 -0
  504. kivy/tests/test_uix_actionbar.py +363 -0
  505. kivy/tests/test_uix_anchorlayout.py +79 -0
  506. kivy/tests/test_uix_asyncimage.py +133 -0
  507. kivy/tests/test_uix_boxlayout.py +94 -0
  508. kivy/tests/test_uix_bubble.py +425 -0
  509. kivy/tests/test_uix_carousel.py +93 -0
  510. kivy/tests/test_uix_colorpicker.py +77 -0
  511. kivy/tests/test_uix_dropdown.py +91 -0
  512. kivy/tests/test_uix_gridlayout.py +244 -0
  513. kivy/tests/test_uix_layout.py +16 -0
  514. kivy/tests/test_uix_modal.py +101 -0
  515. kivy/tests/test_uix_recyclegridlayout.py +383 -0
  516. kivy/tests/test_uix_relativelayout.py +30 -0
  517. kivy/tests/test_uix_scrollview.py +358 -0
  518. kivy/tests/test_uix_settings.py +33 -0
  519. kivy/tests/test_uix_slider.py +156 -0
  520. kivy/tests/test_uix_stacklayout.py +120 -0
  521. kivy/tests/test_uix_textinput.py +577 -0
  522. kivy/tests/test_uix_translate_coordinates.py +72 -0
  523. kivy/tests/test_uix_videoplayer.py +112 -0
  524. kivy/tests/test_uix_widget.py +137 -0
  525. kivy/tests/test_urlrequest/test_urlrequest_requests.py +378 -0
  526. kivy/tests/test_urlrequest/test_urlrequest_urllib.py +155 -0
  527. kivy/tests/test_utils.py +237 -0
  528. kivy/tests/test_vector.py +256 -0
  529. kivy/tests/test_video.py +25 -0
  530. kivy/tests/test_weakmethod.py +44 -0
  531. kivy/tests/test_widget.py +127 -0
  532. kivy/tests/test_widget_walk.py +70 -0
  533. kivy/tests/test_window_base.py +60 -0
  534. kivy/tests/test_window_info.py +29 -0
  535. kivy/tests/visual_test_label.py +291 -0
  536. kivy/tools/__init__.py +44 -0
  537. kivy/tools/benchmark.py +286 -0
  538. kivy/tools/changelog_parser.py +120 -0
  539. kivy/tools/coverage.py +135 -0
  540. kivy/tools/gallery.py +323 -0
  541. kivy/tools/generate-icons.py +117 -0
  542. kivy/tools/gles_compat/subset_gles.py +125 -0
  543. kivy/tools/highlight/__init__.py +9 -0
  544. kivy/tools/kviewer.py +80 -0
  545. kivy/tools/packaging/__init__.py +12 -0
  546. kivy/tools/packaging/cython_cfg.py +82 -0
  547. kivy/tools/packaging/factory.py +105 -0
  548. kivy/tools/packaging/pyinstaller_hooks/__init__.py +381 -0
  549. kivy/tools/packaging/pyinstaller_hooks/__main__.py +29 -0
  550. kivy/tools/packaging/pyinstaller_hooks/hook-kivy.py +9 -0
  551. kivy/tools/packaging/pyinstaller_hooks/pyi_rth_kivy.py +17 -0
  552. kivy/tools/pep8checker/pep8.py +2316 -0
  553. kivy/tools/pep8checker/pep8kivy.py +109 -0
  554. kivy/tools/report.py +223 -0
  555. kivy/tools/stub-gl-debug.py +201 -0
  556. kivy/tools/texturecompress.py +233 -0
  557. kivy/uix/__init__.py +56 -0
  558. kivy/uix/accordion.py +484 -0
  559. kivy/uix/actionbar.py +934 -0
  560. kivy/uix/anchorlayout.py +122 -0
  561. kivy/uix/behaviors/__init__.py +95 -0
  562. kivy/uix/behaviors/button.py +212 -0
  563. kivy/uix/behaviors/codenavigation.py +167 -0
  564. kivy/uix/behaviors/compoundselection.py +688 -0
  565. kivy/uix/behaviors/cover.py +160 -0
  566. kivy/uix/behaviors/drag.py +234 -0
  567. kivy/uix/behaviors/emacs.py +140 -0
  568. kivy/uix/behaviors/focus.py +595 -0
  569. kivy/uix/behaviors/knspace.py +590 -0
  570. kivy/uix/behaviors/togglebutton.py +156 -0
  571. kivy/uix/behaviors/touchripple.py +318 -0
  572. kivy/uix/boxlayout.py +331 -0
  573. kivy/uix/bubble.py +576 -0
  574. kivy/uix/button.py +137 -0
  575. kivy/uix/camera.py +118 -0
  576. kivy/uix/carousel.py +695 -0
  577. kivy/uix/checkbox.py +197 -0
  578. kivy/uix/codeinput.py +238 -0
  579. kivy/uix/colorpicker.py +486 -0
  580. kivy/uix/dropdown.py +391 -0
  581. kivy/uix/effectwidget.py +772 -0
  582. kivy/uix/filechooser.py +1134 -0
  583. kivy/uix/floatlayout.py +148 -0
  584. kivy/uix/gesturesurface.py +625 -0
  585. kivy/uix/gridlayout.py +629 -0
  586. kivy/uix/image.py +528 -0
  587. kivy/uix/label.py +1200 -0
  588. kivy/uix/layout.py +322 -0
  589. kivy/uix/modalview.py +339 -0
  590. kivy/uix/pagelayout.py +233 -0
  591. kivy/uix/popup.py +266 -0
  592. kivy/uix/progressbar.py +95 -0
  593. kivy/uix/recycleboxlayout.py +183 -0
  594. kivy/uix/recyclegridlayout.py +255 -0
  595. kivy/uix/recyclelayout.py +446 -0
  596. kivy/uix/recycleview/__init__.py +624 -0
  597. kivy/uix/recycleview/datamodel.py +194 -0
  598. kivy/uix/recycleview/layout.py +253 -0
  599. kivy/uix/recycleview/views.py +423 -0
  600. kivy/uix/relativelayout.py +324 -0
  601. kivy/uix/rst.py +1492 -0
  602. kivy/uix/sandbox.py +198 -0
  603. kivy/uix/scatter.py +645 -0
  604. kivy/uix/scatterlayout.py +93 -0
  605. kivy/uix/screenmanager.py +1275 -0
  606. kivy/uix/scrollview.py +1288 -0
  607. kivy/uix/settings.py +1343 -0
  608. kivy/uix/slider.py +421 -0
  609. kivy/uix/spinner.py +221 -0
  610. kivy/uix/splitter.py +430 -0
  611. kivy/uix/stacklayout.py +331 -0
  612. kivy/uix/stencilview.py +40 -0
  613. kivy/uix/switch.py +122 -0
  614. kivy/uix/tabbedpanel.py +880 -0
  615. kivy/uix/textinput.py +4049 -0
  616. kivy/uix/togglebutton.py +37 -0
  617. kivy/uix/treeview.py +665 -0
  618. kivy/uix/video.py +302 -0
  619. kivy/uix/videoplayer.py +697 -0
  620. kivy/uix/vkeyboard.py +879 -0
  621. kivy/uix/widget.py +1629 -0
  622. kivy/utils.py +550 -0
  623. kivy/vector.py +412 -0
  624. kivy/weakmethod.py +72 -0
@@ -0,0 +1,772 @@
1
+ '''
2
+ EffectWidget
3
+ ============
4
+
5
+ .. versionadded:: 1.9.0
6
+
7
+ The :class:`EffectWidget` is able to apply a variety of fancy
8
+ graphical effects to
9
+ its children. It works by rendering to a series of
10
+ :class:`~kivy.graphics.Fbo` instances with custom opengl fragment shaders.
11
+ As such, effects can freely do almost anything, from inverting the
12
+ colors of the widget, to anti-aliasing, to emulating the appearance of a
13
+ crt monitor!
14
+
15
+ .. warning::
16
+ This code is still experimental, and its API is subject to change in a
17
+ future version.
18
+
19
+ The basic usage is as follows::
20
+
21
+ w = EffectWidget()
22
+ w.add_widget(Button(text='Hello!')
23
+ w.effects = [InvertEffect(), HorizontalBlurEffect(size=2.0)]
24
+
25
+ The equivalent in kv would be::
26
+
27
+ #: import ew kivy.uix.effectwidget
28
+ EffectWidget:
29
+ effects: ew.InvertEffect(), ew.HorizontalBlurEffect(size=2.0)
30
+ Button:
31
+ text: 'Hello!'
32
+
33
+ The effects can be a list of effects of any length, and they will be
34
+ applied sequentially.
35
+
36
+ The module comes with a range of prebuilt effects, but the interface
37
+ is designed to make it easy to create your own. Instead of writing a
38
+ full glsl shader, you provide a single function that takes
39
+ some inputs based on the screen (current pixel color, current widget
40
+ texture etc.). See the sections below for more information.
41
+
42
+ Usage Guidelines
43
+ ----------------
44
+
45
+ It is not efficient to resize an :class:`EffectWidget`, as
46
+ the :class:`~kivy.graphics.Fbo` is recreated on each resize event.
47
+ If you need to resize frequently, consider doing things a different
48
+ way.
49
+
50
+ Although some effects have adjustable parameters, it is
51
+ *not* efficient to animate these, as the entire
52
+ shader is reconstructed every time. You should use glsl
53
+ uniform variables instead. The :class:`AdvancedEffectBase`
54
+ may make this easier.
55
+
56
+ .. note:: The :class:`EffectWidget` *cannot* draw outside its own
57
+ widget area (pos -> pos + size). Any child widgets
58
+ overlapping the boundary will be cut off at this point.
59
+
60
+ Provided Effects
61
+ ----------------
62
+
63
+ The module comes with several pre-written effects. Some have
64
+ adjustable properties (e.g. blur radius). Please see the individual
65
+ effect documentation for more details.
66
+
67
+ - :class:`MonochromeEffect` - makes the widget grayscale.
68
+ - :class:`InvertEffect` - inverts the widget colors.
69
+ - :class:`ChannelMixEffect` - swaps color channels.
70
+ - :class:`ScanlinesEffect` - displays flickering scanlines.
71
+ - :class:`PixelateEffect` - pixelates the image.
72
+ - :class:`HorizontalBlurEffect` - Gaussuan blurs horizontally.
73
+ - :class:`VerticalBlurEffect` - Gaussuan blurs vertically.
74
+ - :class:`FXAAEffect` - applies a very basic anti-aliasing.
75
+
76
+ Creating Effects
77
+ ----------------
78
+
79
+ Effects are designed to make it easy to create and use your own
80
+ transformations. You do this by creating and using an instance of
81
+ :class:`EffectBase` with your own custom :attr:`EffectBase.glsl`
82
+ property.
83
+
84
+ The glsl property is a string representing part of a glsl fragment
85
+ shader. You can include as many functions as you like (the string
86
+ is simply spliced into the whole shader), but it
87
+ must implement a function :code:`effect` as below::
88
+
89
+ vec4 effect(vec4 color, sampler2D texture, vec2 tex_coords, vec2 coords)
90
+ {
91
+ // ... your code here
92
+ return something; // must be a vec4 representing the new color
93
+ }
94
+
95
+ The full shader will calculate the normal pixel color at each point,
96
+ then call your :code:`effect` function to transform it. The
97
+ parameters are:
98
+
99
+ - **color**: The normal color of the current pixel (i.e. texture
100
+ sampled at tex_coords).
101
+ - **texture**: The texture containing the widget's normal background.
102
+ - **tex_coords**: The normal texture_coords used to access texture.
103
+ - **coords**: The pixel indices of the current pixel.
104
+
105
+ The shader code also has access to two useful uniform variables,
106
+ :code:`time` containing the time (in seconds) since the program start,
107
+ and :code:`resolution` containing the shape (x pixels, y pixels) of
108
+ the widget.
109
+
110
+ For instance, the following simple string (taken from the `InvertEffect`)
111
+ would invert the input color but set alpha to 1.0::
112
+
113
+ vec4 effect(vec4 color, sampler2D texture, vec2 tex_coords, vec2 coords)
114
+ {
115
+ return vec4(1.0 - color.xyz, 1.0);
116
+ }
117
+
118
+ You can also set the glsl by automatically loading the string from a
119
+ file, simply set the :attr:`EffectBase.source` property of an effect.
120
+
121
+ '''
122
+
123
+ from kivy.clock import Clock
124
+ from kivy.uix.relativelayout import RelativeLayout
125
+ from kivy.properties import (StringProperty, ObjectProperty, ListProperty,
126
+ NumericProperty, DictProperty)
127
+ from kivy.graphics import (RenderContext, Fbo, Color, Rectangle,
128
+ Translate, PushMatrix, PopMatrix, ClearColor,
129
+ ClearBuffers)
130
+ from kivy.event import EventDispatcher
131
+ from kivy.base import EventLoop
132
+ from kivy.resources import resource_find
133
+ from kivy.logger import Logger
134
+
135
+ __all__ = ('EffectWidget', 'EffectBase', 'AdvancedEffectBase',
136
+ 'MonochromeEffect', 'InvertEffect', 'ChannelMixEffect',
137
+ 'ScanlinesEffect', 'PixelateEffect',
138
+ 'HorizontalBlurEffect', 'VerticalBlurEffect',
139
+ 'FXAAEffect')
140
+
141
+ shader_header = '''
142
+ #ifdef GL_ES
143
+ precision highp float;
144
+ #endif
145
+
146
+ /* Outputs from the vertex shader */
147
+ varying vec4 frag_color;
148
+ varying vec2 tex_coord0;
149
+
150
+ /* uniform texture samplers */
151
+ uniform sampler2D texture0;
152
+ '''
153
+
154
+ shader_uniforms = '''
155
+ uniform vec2 resolution;
156
+ uniform float time;
157
+ '''
158
+
159
+ shader_footer_trivial = '''
160
+ void main (void){
161
+ gl_FragColor = frag_color * texture2D(texture0, tex_coord0);
162
+ }
163
+ '''
164
+
165
+ shader_footer_effect = '''
166
+ void main (void){
167
+ vec4 normal_color = frag_color * texture2D(texture0, tex_coord0);
168
+ vec4 effect_color = effect(normal_color, texture0, tex_coord0,
169
+ gl_FragCoord.xy);
170
+ gl_FragColor = effect_color;
171
+ }
172
+ '''
173
+
174
+
175
+ effect_trivial = '''
176
+ vec4 effect(vec4 color, sampler2D texture, vec2 tex_coords, vec2 coords)
177
+ {
178
+ return color;
179
+ }
180
+ '''
181
+
182
+ effect_monochrome = '''
183
+ vec4 effect(vec4 color, sampler2D texture, vec2 tex_coords, vec2 coords)
184
+ {
185
+ float mag = 1.0/3.0 * (color.x + color.y + color.z);
186
+ return vec4(mag, mag, mag, color.w);
187
+ }
188
+ '''
189
+
190
+ effect_invert = '''
191
+ vec4 effect(vec4 color, sampler2D texture, vec2 tex_coords, vec2 coords)
192
+ {
193
+ return vec4(1.0 - color.xyz, color.w);
194
+ }
195
+ '''
196
+
197
+ effect_mix = '''
198
+ vec4 effect(vec4 color, sampler2D texture, vec2 tex_coords, vec2 coords)
199
+ {{
200
+ return vec4(color.{}, color.{}, color.{}, color.w);
201
+ }}
202
+ '''
203
+
204
+ effect_blur_h = '''
205
+ vec4 effect(vec4 color, sampler2D texture, vec2 tex_coords, vec2 coords)
206
+ {{
207
+ float dt = ({} / 4.0) * 1.0 / resolution.x;
208
+ vec4 sum = vec4(0.0);
209
+ sum += texture2D(texture, vec2(tex_coords.x - 4.0*dt, tex_coords.y))
210
+ * 0.05;
211
+ sum += texture2D(texture, vec2(tex_coords.x - 3.0*dt, tex_coords.y))
212
+ * 0.09;
213
+ sum += texture2D(texture, vec2(tex_coords.x - 2.0*dt, tex_coords.y))
214
+ * 0.12;
215
+ sum += texture2D(texture, vec2(tex_coords.x - dt, tex_coords.y))
216
+ * 0.15;
217
+ sum += texture2D(texture, vec2(tex_coords.x, tex_coords.y))
218
+ * 0.16;
219
+ sum += texture2D(texture, vec2(tex_coords.x + dt, tex_coords.y))
220
+ * 0.15;
221
+ sum += texture2D(texture, vec2(tex_coords.x + 2.0*dt, tex_coords.y))
222
+ * 0.12;
223
+ sum += texture2D(texture, vec2(tex_coords.x + 3.0*dt, tex_coords.y))
224
+ * 0.09;
225
+ sum += texture2D(texture, vec2(tex_coords.x + 4.0*dt, tex_coords.y))
226
+ * 0.05;
227
+ return vec4(sum.xyz, color.w);
228
+ }}
229
+ '''
230
+
231
+ effect_blur_v = '''
232
+ vec4 effect(vec4 color, sampler2D texture, vec2 tex_coords, vec2 coords)
233
+ {{
234
+ float dt = ({} / 4.0)
235
+ * 1.0 / resolution.x;
236
+ vec4 sum = vec4(0.0);
237
+ sum += texture2D(texture, vec2(tex_coords.x, tex_coords.y - 4.0*dt))
238
+ * 0.05;
239
+ sum += texture2D(texture, vec2(tex_coords.x, tex_coords.y - 3.0*dt))
240
+ * 0.09;
241
+ sum += texture2D(texture, vec2(tex_coords.x, tex_coords.y - 2.0*dt))
242
+ * 0.12;
243
+ sum += texture2D(texture, vec2(tex_coords.x, tex_coords.y - dt))
244
+ * 0.15;
245
+ sum += texture2D(texture, vec2(tex_coords.x, tex_coords.y))
246
+ * 0.16;
247
+ sum += texture2D(texture, vec2(tex_coords.x, tex_coords.y + dt))
248
+ * 0.15;
249
+ sum += texture2D(texture, vec2(tex_coords.x, tex_coords.y + 2.0*dt))
250
+ * 0.12;
251
+ sum += texture2D(texture, vec2(tex_coords.x, tex_coords.y + 3.0*dt))
252
+ * 0.09;
253
+ sum += texture2D(texture, vec2(tex_coords.x, tex_coords.y + 4.0*dt))
254
+ * 0.05;
255
+ return vec4(sum.xyz, color.w);
256
+ }}
257
+ '''
258
+
259
+ effect_postprocessing = '''
260
+ vec4 effect(vec4 color, sampler2D texture, vec2 tex_coords, vec2 coords)
261
+ {
262
+ vec2 q = tex_coords * vec2(1, -1);
263
+ vec2 uv = 0.5 + (q-0.5);//*(0.9);// + 0.1*sin(0.2*time));
264
+
265
+ vec3 oricol = texture2D(texture,vec2(q.x,1.0-q.y)).xyz;
266
+ vec3 col;
267
+
268
+ col.r = texture2D(texture,vec2(uv.x+0.003,-uv.y)).x;
269
+ col.g = texture2D(texture,vec2(uv.x+0.000,-uv.y)).y;
270
+ col.b = texture2D(texture,vec2(uv.x-0.003,-uv.y)).z;
271
+
272
+ col = clamp(col*0.5+0.5*col*col*1.2,0.0,1.0);
273
+
274
+ //col *= 0.5 + 0.5*16.0*uv.x*uv.y*(1.0-uv.x)*(1.0-uv.y);
275
+
276
+ col *= vec3(0.8,1.0,0.7);
277
+
278
+ col *= 0.9+0.1*sin(10.0*time+uv.y*1000.0);
279
+
280
+ col *= 0.97+0.03*sin(110.0*time);
281
+
282
+ float comp = smoothstep( 0.2, 0.7, sin(time) );
283
+ //col = mix( col, oricol, clamp(-2.0+2.0*q.x+3.0*comp,0.0,1.0) );
284
+
285
+ return vec4(col, color.w);
286
+ }
287
+ '''
288
+
289
+ effect_pixelate = '''
290
+ vec4 effect(vec4 vcolor, sampler2D texture, vec2 texcoord, vec2 pixel_coords)
291
+ {{
292
+ vec2 pixelSize = {} / resolution;
293
+
294
+ vec2 xy = floor(texcoord/pixelSize)*pixelSize + pixelSize/2.0;
295
+
296
+ return texture2D(texture, xy);
297
+ }}
298
+ '''
299
+
300
+ effect_fxaa = '''
301
+ vec4 effect( vec4 color, sampler2D buf0, vec2 texCoords, vec2 coords)
302
+ {
303
+
304
+ vec2 frameBufSize = resolution;
305
+
306
+ float FXAA_SPAN_MAX = 8.0;
307
+ float FXAA_REDUCE_MUL = 1.0/8.0;
308
+ float FXAA_REDUCE_MIN = 1.0/128.0;
309
+
310
+ vec3 rgbNW=texture2D(buf0,texCoords+(vec2(-1.0,-1.0)/frameBufSize)).xyz;
311
+ vec3 rgbNE=texture2D(buf0,texCoords+(vec2(1.0,-1.0)/frameBufSize)).xyz;
312
+ vec3 rgbSW=texture2D(buf0,texCoords+(vec2(-1.0,1.0)/frameBufSize)).xyz;
313
+ vec3 rgbSE=texture2D(buf0,texCoords+(vec2(1.0,1.0)/frameBufSize)).xyz;
314
+ vec3 rgbM=texture2D(buf0,texCoords).xyz;
315
+
316
+ vec3 luma=vec3(0.299, 0.587, 0.114);
317
+ float lumaNW = dot(rgbNW, luma);
318
+ float lumaNE = dot(rgbNE, luma);
319
+ float lumaSW = dot(rgbSW, luma);
320
+ float lumaSE = dot(rgbSE, luma);
321
+ float lumaM = dot(rgbM, luma);
322
+
323
+ float lumaMin = min(lumaM, min(min(lumaNW, lumaNE), min(lumaSW, lumaSE)));
324
+ float lumaMax = max(lumaM, max(max(lumaNW, lumaNE), max(lumaSW, lumaSE)));
325
+
326
+ vec2 dir;
327
+ dir.x = -((lumaNW + lumaNE) - (lumaSW + lumaSE));
328
+ dir.y = ((lumaNW + lumaSW) - (lumaNE + lumaSE));
329
+
330
+ float dirReduce = max(
331
+ (lumaNW + lumaNE + lumaSW + lumaSE) * (0.25 * FXAA_REDUCE_MUL),
332
+ FXAA_REDUCE_MIN);
333
+
334
+ float rcpDirMin = 1.0/(min(abs(dir.x), abs(dir.y)) + dirReduce);
335
+
336
+ dir = min(vec2(FXAA_SPAN_MAX, FXAA_SPAN_MAX),
337
+ max(vec2(-FXAA_SPAN_MAX, -FXAA_SPAN_MAX),
338
+ dir * rcpDirMin)) / frameBufSize;
339
+
340
+ vec3 rgbA = (1.0/2.0) * (
341
+ texture2D(buf0, texCoords.xy + dir * (1.0/3.0 - 0.5)).xyz +
342
+ texture2D(buf0, texCoords.xy + dir * (2.0/3.0 - 0.5)).xyz);
343
+ vec3 rgbB = rgbA * (1.0/2.0) + (1.0/4.0) * (
344
+ texture2D(buf0, texCoords.xy + dir * (0.0/3.0 - 0.5)).xyz +
345
+ texture2D(buf0, texCoords.xy + dir * (3.0/3.0 - 0.5)).xyz);
346
+ float lumaB = dot(rgbB, luma);
347
+
348
+ vec4 return_color;
349
+ if((lumaB < lumaMin) || (lumaB > lumaMax)){
350
+ return_color = vec4(rgbA, color.w);
351
+ }else{
352
+ return_color = vec4(rgbB, color.w);
353
+ }
354
+
355
+ return return_color;
356
+ }
357
+ '''
358
+
359
+
360
+ class EffectBase(EventDispatcher):
361
+ '''The base class for GLSL effects. It simply returns its input.
362
+
363
+ See the module documentation for more details.
364
+
365
+ '''
366
+
367
+ glsl = StringProperty(effect_trivial)
368
+ '''The glsl string defining your effect function. See the
369
+ module documentation for more details.
370
+
371
+ :attr:`glsl` is a :class:`~kivy.properties.StringProperty` and
372
+ defaults to
373
+ a trivial effect that returns its input.
374
+ '''
375
+
376
+ source = StringProperty('')
377
+ '''The (optional) filename from which to load the :attr:`glsl`
378
+ string.
379
+
380
+ :attr:`source` is a :class:`~kivy.properties.StringProperty` and
381
+ defaults to ''.
382
+ '''
383
+
384
+ fbo = ObjectProperty(None, allownone=True)
385
+ '''The fbo currently using this effect. The :class:`EffectBase`
386
+ automatically handles this.
387
+
388
+ :attr:`fbo` is an :class:`~kivy.properties.ObjectProperty` and
389
+ defaults to None.
390
+ '''
391
+
392
+ def __init__(self, *args, **kwargs):
393
+ super(EffectBase, self).__init__(*args, **kwargs)
394
+ fbind = self.fbind
395
+ fbo_shader = self.set_fbo_shader
396
+ fbind('fbo', fbo_shader)
397
+ fbind('glsl', fbo_shader)
398
+ fbind('source', self._load_from_source)
399
+
400
+ def set_fbo_shader(self, *args):
401
+ '''Sets the :class:`~kivy.graphics.Fbo`'s shader by splicing
402
+ the :attr:`glsl` string into a full fragment shader.
403
+
404
+ The full shader is made up of :code:`shader_header +
405
+ shader_uniforms + self.glsl + shader_footer_effect`.
406
+ '''
407
+ if self.fbo is None:
408
+ return
409
+ self.fbo.set_fs(shader_header + shader_uniforms + self.glsl +
410
+ shader_footer_effect)
411
+
412
+ def _load_from_source(self, *args):
413
+ '''(internal) Loads the glsl string from a source file.'''
414
+ source = self.source
415
+ if not source:
416
+ return
417
+ filename = resource_find(source)
418
+ if filename is None:
419
+ return Logger.error('Error reading file {filename}'.
420
+ format(filename=source))
421
+ with open(filename) as fileh:
422
+ self.glsl = fileh.read()
423
+
424
+
425
+ class AdvancedEffectBase(EffectBase):
426
+ '''An :class:`EffectBase` with additional behavior to easily
427
+ set and update uniform variables in your shader.
428
+
429
+ This class is provided for convenience when implementing your own
430
+ effects: it is not used by any of those provided with Kivy.
431
+
432
+ In addition to your base glsl string that must be provided as
433
+ normal, the :class:`AdvancedEffectBase` has an extra property
434
+ :attr:`uniforms`, a dictionary of name-value pairs. Whenever
435
+ a value is changed, the new value for the uniform variable is
436
+ uploaded to the shader.
437
+
438
+ You must still manually declare your uniform variables at the top
439
+ of your glsl string.
440
+ '''
441
+
442
+ uniforms = DictProperty({})
443
+ '''A dictionary of uniform variable names and their values. These
444
+ are automatically uploaded to the :attr:`fbo` shader if appropriate.
445
+
446
+ uniforms is a :class:`~kivy.properties.DictProperty` and
447
+ defaults to {}.
448
+ '''
449
+
450
+ def __init__(self, *args, **kwargs):
451
+ super(AdvancedEffectBase, self).__init__(*args, **kwargs)
452
+ self.fbind('uniforms', self._update_uniforms)
453
+
454
+ def _update_uniforms(self, *args):
455
+ if self.fbo is None:
456
+ return
457
+ for key, value in self.uniforms.items():
458
+ self.fbo[key] = value
459
+
460
+ def set_fbo_shader(self, *args):
461
+ super(AdvancedEffectBase, self).set_fbo_shader(*args)
462
+ self._update_uniforms()
463
+
464
+
465
+ class MonochromeEffect(EffectBase):
466
+ '''Returns its input colors in monochrome.'''
467
+ def __init__(self, *args, **kwargs):
468
+ super(MonochromeEffect, self).__init__(*args, **kwargs)
469
+ self.glsl = effect_monochrome
470
+
471
+
472
+ class InvertEffect(EffectBase):
473
+ '''Inverts the colors in the input.'''
474
+ def __init__(self, *args, **kwargs):
475
+ super(InvertEffect, self).__init__(*args, **kwargs)
476
+ self.glsl = effect_invert
477
+
478
+
479
+ class ScanlinesEffect(EffectBase):
480
+ '''Adds scanlines to the input.'''
481
+ def __init__(self, *args, **kwargs):
482
+ super(ScanlinesEffect, self).__init__(*args, **kwargs)
483
+ self.glsl = effect_postprocessing
484
+
485
+
486
+ class ChannelMixEffect(EffectBase):
487
+ '''Mixes the color channels of the input according to the order
488
+ property. Channels may be arbitrarily rearranged or repeated.'''
489
+
490
+ order = ListProperty([1, 2, 0])
491
+ '''The new sorted order of the rgb channels.
492
+
493
+ order is a :class:`~kivy.properties.ListProperty` and defaults to
494
+ [1, 2, 0], corresponding to (g, b, r).
495
+ '''
496
+
497
+ def __init__(self, *args, **kwargs):
498
+ super(ChannelMixEffect, self).__init__(*args, **kwargs)
499
+ self.do_glsl()
500
+
501
+ def on_order(self, *args):
502
+ self.do_glsl()
503
+
504
+ def do_glsl(self):
505
+ letters = [{0: 'x', 1: 'y', 2: 'z'}[i] for i in self.order]
506
+ self.glsl = effect_mix.format(*letters)
507
+
508
+
509
+ class PixelateEffect(EffectBase):
510
+ '''Pixelates the input according to its
511
+ :attr:`~PixelateEffect.pixel_size`'''
512
+
513
+ pixel_size = NumericProperty(10)
514
+ '''
515
+ Sets the size of a new 'pixel' in the effect, in terms of number of
516
+ 'real' pixels.
517
+
518
+ pixel_size is a :class:`~kivy.properties.NumericProperty` and
519
+ defaults to 10.
520
+ '''
521
+
522
+ def __init__(self, *args, **kwargs):
523
+ super(PixelateEffect, self).__init__(*args, **kwargs)
524
+ self.do_glsl()
525
+
526
+ def on_pixel_size(self, *args):
527
+ self.do_glsl()
528
+
529
+ def do_glsl(self):
530
+ self.glsl = effect_pixelate.format(float(self.pixel_size))
531
+
532
+
533
+ class HorizontalBlurEffect(EffectBase):
534
+ '''Blurs the input horizontally, with the width given by
535
+ :attr:`~HorizontalBlurEffect.size`.'''
536
+
537
+ size = NumericProperty(4.0)
538
+ '''The blur width in pixels.
539
+
540
+ size is a :class:`~kivy.properties.NumericProperty` and defaults to
541
+ 4.0.
542
+ '''
543
+
544
+ def __init__(self, *args, **kwargs):
545
+ super(HorizontalBlurEffect, self).__init__(*args, **kwargs)
546
+ self.do_glsl()
547
+
548
+ def on_size(self, *args):
549
+ self.do_glsl()
550
+
551
+ def do_glsl(self):
552
+ self.glsl = effect_blur_h.format(float(self.size))
553
+
554
+
555
+ class VerticalBlurEffect(EffectBase):
556
+ '''Blurs the input vertically, with the width given by
557
+ :attr:`~VerticalBlurEffect.size`.'''
558
+
559
+ size = NumericProperty(4.0)
560
+ '''The blur width in pixels.
561
+
562
+ size is a :class:`~kivy.properties.NumericProperty` and defaults to
563
+ 4.0.
564
+ '''
565
+
566
+ def __init__(self, *args, **kwargs):
567
+ super(VerticalBlurEffect, self).__init__(*args, **kwargs)
568
+ self.do_glsl()
569
+
570
+ def on_size(self, *args):
571
+ self.do_glsl()
572
+
573
+ def do_glsl(self):
574
+ self.glsl = effect_blur_v.format(float(self.size))
575
+
576
+
577
+ class FXAAEffect(EffectBase):
578
+ '''Applies very simple anti-aliasing via fxaa.'''
579
+ def __init__(self, *args, **kwargs):
580
+ super(FXAAEffect, self).__init__(*args, **kwargs)
581
+ self.glsl = effect_fxaa
582
+
583
+
584
+ class EffectFbo(Fbo):
585
+ '''An :class:`~kivy.graphics.Fbo` with extra functionality that allows
586
+ attempts to set a new shader. See :meth:`set_fs`.
587
+ '''
588
+ def __init__(self, *args, **kwargs):
589
+ kwargs.setdefault("with_stencilbuffer", True)
590
+ super(EffectFbo, self).__init__(*args, **kwargs)
591
+ self.texture_rectangle = None
592
+
593
+ def set_fs(self, value):
594
+ '''Attempt to set the fragment shader to the given value.
595
+ If setting the shader fails, the existing one is preserved and an
596
+ exception is raised.
597
+ '''
598
+ shader = self.shader
599
+ old_value = shader.fs
600
+ shader.fs = value
601
+ if not shader.success:
602
+ shader.fs = old_value
603
+ raise Exception('Setting new shader failed.')
604
+
605
+
606
+ class EffectWidget(RelativeLayout):
607
+ '''
608
+ Widget with the ability to apply a series of graphical effects to
609
+ its children. See the module documentation for more information on
610
+ setting effects and creating your own.
611
+ '''
612
+
613
+ background_color = ListProperty((0, 0, 0, 0))
614
+ '''This defines the background color to be used for the fbo in the
615
+ EffectWidget.
616
+
617
+ :attr:`background_color` is a :class:`ListProperty` defaults to
618
+ (0, 0, 0, 0)
619
+ '''
620
+
621
+ texture = ObjectProperty(None)
622
+ '''The output texture of the final :class:`~kivy.graphics.Fbo` after
623
+ all effects have been applied.
624
+
625
+ texture is an :class:`~kivy.properties.ObjectProperty` and defaults
626
+ to None.
627
+ '''
628
+
629
+ effects = ListProperty([])
630
+ '''List of all the effects to be applied. These should all be
631
+ instances or subclasses of :class:`EffectBase`.
632
+
633
+ effects is a :class:`ListProperty` and defaults to [].
634
+ '''
635
+
636
+ fbo_list = ListProperty([])
637
+ '''(internal) List of all the fbos that are being used to apply
638
+ the effects.
639
+
640
+ fbo_list is a :class:`ListProperty` and defaults to [].
641
+ '''
642
+
643
+ _bound_effects = ListProperty([])
644
+ '''(internal) List of effect classes that have been given an fbo to
645
+ manage. This is necessary so that the fbo can be removed if the
646
+ effect is no longer in use.
647
+
648
+ _bound_effects is a :class:`ListProperty` and defaults to [].
649
+ '''
650
+
651
+ def __init__(self, **kwargs):
652
+ # Make sure opengl context exists
653
+ EventLoop.ensure_window()
654
+
655
+ self.canvas = RenderContext(use_parent_projection=True,
656
+ use_parent_modelview=True)
657
+
658
+ with self.canvas:
659
+ self.fbo = Fbo(size=self.size)
660
+
661
+ with self.fbo.before:
662
+ PushMatrix()
663
+ with self.fbo:
664
+ ClearColor(0, 0, 0, 0)
665
+ ClearBuffers()
666
+ self._background_color = Color(*self.background_color)
667
+ self.fbo_rectangle = Rectangle(size=self.size)
668
+ with self.fbo.after:
669
+ PopMatrix()
670
+
671
+ super(EffectWidget, self).__init__(**kwargs)
672
+
673
+ Clock.schedule_interval(self._update_glsl, 0)
674
+
675
+ fbind = self.fbind
676
+ fbo_setup = self.refresh_fbo_setup
677
+ fbind('size', fbo_setup)
678
+ fbind('effects', fbo_setup)
679
+ fbind('background_color', self._refresh_background_color)
680
+
681
+ self.refresh_fbo_setup()
682
+ self._refresh_background_color() # In case this was changed in kwargs
683
+
684
+ def _refresh_background_color(self, *args):
685
+ self._background_color.rgba = self.background_color
686
+
687
+ def _update_glsl(self, *largs):
688
+ '''(internal) Passes new time and resolution uniform
689
+ variables to the shader.
690
+ '''
691
+ time = Clock.get_boottime()
692
+ resolution = [float(size) for size in self.size]
693
+ self.canvas['time'] = time
694
+ self.canvas['resolution'] = resolution
695
+ for fbo in self.fbo_list:
696
+ fbo['time'] = time
697
+ fbo['resolution'] = resolution
698
+
699
+ def refresh_fbo_setup(self, *args):
700
+ '''(internal) Creates and assigns one :class:`~kivy.graphics.Fbo`
701
+ per effect, and makes sure all sizes etc. are correct and
702
+ consistent.
703
+ '''
704
+ # Add/remove fbos until there is one per effect
705
+ while len(self.fbo_list) < len(self.effects):
706
+ with self.canvas:
707
+ new_fbo = EffectFbo(size=self.size)
708
+ with new_fbo:
709
+ ClearColor(0, 0, 0, 0)
710
+ ClearBuffers()
711
+ Color(1, 1, 1, 1)
712
+ new_fbo.texture_rectangle = Rectangle(size=self.size)
713
+
714
+ new_fbo.texture_rectangle.size = self.size
715
+ self.fbo_list.append(new_fbo)
716
+ while len(self.fbo_list) > len(self.effects):
717
+ old_fbo = self.fbo_list.pop()
718
+ self.canvas.remove(old_fbo)
719
+
720
+ # Remove fbos from unused effects
721
+ for effect in self._bound_effects:
722
+ if effect not in self.effects:
723
+ effect.fbo = None
724
+ self._bound_effects = self.effects
725
+
726
+ # Do resizing etc.
727
+ self.fbo.size = self.size
728
+ self.fbo_rectangle.size = self.size
729
+ for i in range(len(self.fbo_list)):
730
+ self.fbo_list[i].size = self.size
731
+ self.fbo_list[i].texture_rectangle.size = self.size
732
+
733
+ # If there are no effects, just draw our main fbo
734
+ if len(self.fbo_list) == 0:
735
+ self.texture = self.fbo.texture
736
+ return
737
+
738
+ for i in range(1, len(self.fbo_list)):
739
+ fbo = self.fbo_list[i]
740
+ fbo.texture_rectangle.texture = self.fbo_list[i - 1].texture
741
+
742
+ # Build effect shaders
743
+ for effect, fbo in zip(self.effects, self.fbo_list):
744
+ effect.fbo = fbo
745
+
746
+ self.fbo_list[0].texture_rectangle.texture = self.fbo.texture
747
+ self.texture = self.fbo_list[-1].texture
748
+
749
+ for fbo in self.fbo_list:
750
+ fbo.draw()
751
+ self.fbo.draw()
752
+
753
+ def add_widget(self, *args, **kwargs):
754
+ # Add the widget to our Fbo instead of the normal canvas
755
+ c = self.canvas
756
+ self.canvas = self.fbo
757
+ super(EffectWidget, self).add_widget(*args, **kwargs)
758
+ self.canvas = c
759
+
760
+ def remove_widget(self, *args, **kwargs):
761
+ # Remove the widget from our Fbo instead of the normal canvas
762
+ c = self.canvas
763
+ self.canvas = self.fbo
764
+ super(EffectWidget, self).remove_widget(*args, **kwargs)
765
+ self.canvas = c
766
+
767
+ def clear_widgets(self, *args, **kwargs):
768
+ # Clear widgets from our Fbo instead of the normal canvas
769
+ c = self.canvas
770
+ self.canvas = self.fbo
771
+ super(EffectWidget, self).clear_widgets(*args, **kwargs)
772
+ self.canvas = c