propane 3.4.0-java → 3.7.0.pre-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (155) hide show
  1. checksums.yaml +4 -4
  2. data/.mvn/extensions.xml +1 -2
  3. data/.mvn/wrapper/MavenWrapperDownloader.java +2 -2
  4. data/.mvn/wrapper/maven-wrapper.properties +2 -2
  5. data/.travis.yml +2 -2
  6. data/CHANGELOG.md +12 -0
  7. data/Gemfile +2 -0
  8. data/README.md +17 -8
  9. data/Rakefile +10 -11
  10. data/bin/propane +3 -1
  11. data/lib/propane.rb +6 -4
  12. data/lib/propane/app.rb +20 -10
  13. data/lib/propane/creators/sketch_class.rb +7 -1
  14. data/lib/propane/creators/sketch_factory.rb +4 -2
  15. data/lib/propane/creators/sketch_writer.rb +1 -0
  16. data/lib/propane/helper_methods.rb +23 -24
  17. data/lib/propane/helpers/numeric.rb +2 -0
  18. data/lib/propane/helpers/version_error.rb +1 -0
  19. data/lib/propane/library.rb +5 -1
  20. data/lib/propane/library_loader.rb +2 -0
  21. data/lib/propane/native_folder.rb +10 -9
  22. data/lib/propane/native_loader.rb +3 -0
  23. data/lib/propane/runner.rb +14 -6
  24. data/lib/propane/version.rb +2 -1
  25. data/library/boids/boids.rb +21 -11
  26. data/library/color_group/color_group.rb +28 -0
  27. data/library/control_panel/control_panel.rb +8 -5
  28. data/library/dxf/dxf.rb +6 -0
  29. data/library/file_chooser/chooser.rb +10 -9
  30. data/library/file_chooser/file_chooser.rb +10 -9
  31. data/library/library_proxy/library_proxy.rb +2 -0
  32. data/library/net/net.rb +7 -0
  33. data/library/simplex_noise/simplex_noise.rb +2 -0
  34. data/library/slider/slider.rb +23 -22
  35. data/library/vector_utils/vector_utils.rb +4 -0
  36. data/library/video_event/video_event.rb +4 -1
  37. data/pom.rb +37 -36
  38. data/pom.xml +7 -7
  39. data/propane.gemspec +16 -12
  40. data/src/main/java/monkstone/ColorUtil.java +13 -1
  41. data/src/main/java/monkstone/MathToolModule.java +253 -203
  42. data/src/main/java/monkstone/PropaneLibrary.java +2 -2
  43. data/src/main/java/monkstone/fastmath/Deglut.java +1 -1
  44. data/src/main/java/monkstone/filechooser/Chooser.java +2 -1
  45. data/src/main/java/monkstone/noise/SimplexNoise.java +2 -2
  46. data/src/main/java/monkstone/slider/CustomHorizontalSlider.java +1 -1
  47. data/src/main/java/monkstone/slider/CustomVerticalSlider.java +1 -1
  48. data/src/main/java/monkstone/slider/SimpleHorizontalSlider.java +1 -1
  49. data/src/main/java/monkstone/slider/SimpleVerticalSlider.java +1 -1
  50. data/src/main/java/monkstone/slider/SliderBar.java +1 -1
  51. data/src/main/java/monkstone/slider/SliderGroup.java +1 -1
  52. data/src/main/java/monkstone/slider/WheelHandler.java +7 -6
  53. data/src/main/java/monkstone/vecmath/package-info.java +1 -1
  54. data/src/main/java/monkstone/vecmath/vec2/Vec2.java +1 -1
  55. data/src/main/java/monkstone/vecmath/vec3/Vec3.java +3 -3
  56. data/src/main/java/monkstone/videoevent/CaptureEvent.java +27 -0
  57. data/src/main/java/monkstone/videoevent/{VideoInterface.java → MovieEvent.java} +11 -27
  58. data/src/main/java/monkstone/videoevent/package-info.java +1 -1
  59. data/src/main/java/processing/awt/PGraphicsJava2D.java +781 -285
  60. data/src/main/java/processing/awt/PImageAWT.java +377 -0
  61. data/src/main/java/processing/awt/PShapeJava2D.java +56 -52
  62. data/src/main/java/processing/awt/PSurfaceAWT.java +309 -209
  63. data/src/main/java/processing/awt/ShimAWT.java +581 -0
  64. data/src/main/java/processing/core/PApplet.java +4510 -4503
  65. data/src/main/java/processing/core/PConstants.java +477 -447
  66. data/src/main/java/processing/core/PFont.java +914 -880
  67. data/src/main/java/processing/core/PGraphics.java +193 -177
  68. data/src/main/java/processing/core/PImage.java +611 -309
  69. data/src/main/java/processing/core/PMatrix.java +172 -159
  70. data/src/main/java/processing/core/PMatrix2D.java +478 -415
  71. data/src/main/java/processing/core/PMatrix3D.java +762 -735
  72. data/src/main/java/processing/core/PShape.java +2888 -2652
  73. data/src/main/java/processing/core/PShapeOBJ.java +97 -92
  74. data/src/main/java/processing/core/PShapeSVG.java +1705 -1490
  75. data/src/main/java/processing/core/PStyle.java +40 -37
  76. data/src/main/java/processing/core/PSurface.java +139 -97
  77. data/src/main/java/processing/core/PSurfaceNone.java +296 -218
  78. data/src/main/java/processing/core/PVector.java +997 -965
  79. data/src/main/java/processing/core/ThinkDifferent.java +15 -13
  80. data/src/main/java/processing/data/DoubleDict.java +756 -710
  81. data/src/main/java/processing/data/DoubleList.java +749 -696
  82. data/src/main/java/processing/data/FloatDict.java +748 -702
  83. data/src/main/java/processing/data/FloatList.java +751 -697
  84. data/src/main/java/processing/data/IntDict.java +720 -673
  85. data/src/main/java/processing/data/IntList.java +699 -633
  86. data/src/main/java/processing/data/JSONArray.java +931 -873
  87. data/src/main/java/processing/data/JSONObject.java +1262 -1165
  88. data/src/main/java/processing/data/JSONTokener.java +351 -341
  89. data/src/main/java/processing/data/LongDict.java +710 -663
  90. data/src/main/java/processing/data/LongList.java +701 -635
  91. data/src/main/java/processing/data/Sort.java +37 -41
  92. data/src/main/java/processing/data/StringDict.java +525 -486
  93. data/src/main/java/processing/data/StringList.java +626 -580
  94. data/src/main/java/processing/data/Table.java +3690 -3510
  95. data/src/main/java/processing/data/TableRow.java +182 -183
  96. data/src/main/java/processing/data/XML.java +957 -883
  97. data/src/main/java/processing/dxf/RawDXF.java +404 -0
  98. data/src/main/java/processing/event/Event.java +87 -67
  99. data/src/main/java/processing/event/KeyEvent.java +48 -41
  100. data/src/main/java/processing/event/MouseEvent.java +88 -113
  101. data/src/main/java/processing/event/TouchEvent.java +10 -6
  102. data/src/main/java/processing/javafx/PGraphicsFX2D.java +20 -345
  103. data/src/main/java/processing/javafx/PSurfaceFX.java +149 -121
  104. data/src/main/java/processing/net/Client.java +744 -0
  105. data/src/main/java/processing/net/Server.java +388 -0
  106. data/src/main/java/processing/opengl/FontTexture.java +289 -270
  107. data/src/main/java/processing/opengl/FrameBuffer.java +386 -364
  108. data/src/main/java/processing/opengl/LinePath.java +547 -500
  109. data/src/main/java/processing/opengl/LineStroker.java +588 -581
  110. data/src/main/java/processing/opengl/PGL.java +3047 -2914
  111. data/src/main/java/processing/opengl/PGraphics2D.java +408 -315
  112. data/src/main/java/processing/opengl/PGraphics3D.java +107 -72
  113. data/src/main/java/processing/opengl/PGraphicsOpenGL.java +12378 -12075
  114. data/src/main/java/processing/opengl/PJOGL.java +1753 -1670
  115. data/src/main/java/processing/opengl/PShader.java +1266 -1257
  116. data/src/main/java/processing/opengl/PShapeOpenGL.java +4678 -4580
  117. data/src/main/java/processing/opengl/PSurfaceJOGL.java +1114 -1027
  118. data/src/main/java/processing/opengl/Texture.java +1492 -1401
  119. data/src/main/java/processing/opengl/VertexBuffer.java +57 -55
  120. data/test/create_test.rb +21 -20
  121. data/test/deglut_spec_test.rb +4 -2
  122. data/test/helper_methods_test.rb +49 -20
  123. data/test/math_tool_test.rb +39 -32
  124. data/test/native_folder.rb +47 -0
  125. data/test/respond_to_test.rb +3 -2
  126. data/test/sketches/key_event.rb +2 -2
  127. data/test/sketches/library/my_library/my_library.rb +3 -0
  128. data/test/test_helper.rb +2 -0
  129. data/test/vecmath_spec_test.rb +35 -22
  130. data/vendors/Rakefile +33 -62
  131. metadata +56 -48
  132. data/src/main/java/processing/core/util/image/ImageLoadFacade.java +0 -161
  133. data/src/main/java/processing/core/util/image/ImageSaveFacade.java +0 -169
  134. data/src/main/java/processing/core/util/image/constants/TifConstants.java +0 -45
  135. data/src/main/java/processing/core/util/image/load/AwtImageLoadStrategy.java +0 -80
  136. data/src/main/java/processing/core/util/image/load/Base64StringImageLoadStrategy.java +0 -73
  137. data/src/main/java/processing/core/util/image/load/FallbackImageLoadStrategy.java +0 -70
  138. data/src/main/java/processing/core/util/image/load/ImageIoImageLoadStrategy.java +0 -132
  139. data/src/main/java/processing/core/util/image/load/ImageLoadStrategy.java +0 -48
  140. data/src/main/java/processing/core/util/image/load/ImageLoadUtil.java +0 -45
  141. data/src/main/java/processing/core/util/image/load/TgaImageLoadStrategy.java +0 -255
  142. data/src/main/java/processing/core/util/image/load/TiffImageLoadStrategy.java +0 -98
  143. data/src/main/java/processing/core/util/image/save/ImageSaveStrategy.java +0 -49
  144. data/src/main/java/processing/core/util/image/save/ImageSaveUtil.java +0 -48
  145. data/src/main/java/processing/core/util/image/save/ImageWriterImageSaveStrategy.java +0 -179
  146. data/src/main/java/processing/core/util/image/save/SaveImageException.java +0 -41
  147. data/src/main/java/processing/core/util/image/save/TgaImageSaveStrategy.java +0 -198
  148. data/src/main/java/processing/core/util/image/save/TiffImageSaveStrategy.java +0 -91
  149. data/src/main/java/processing/core/util/image/save/TiffNakedFilenameImageSaveStrategy.java +0 -57
  150. data/src/main/java/processing/core/util/io/InputFactory.java +0 -285
  151. data/src/main/java/processing/core/util/io/PathUtil.java +0 -109
  152. data/src/main/java/processing/opengl/shaders/LightVert-brcm.glsl +0 -154
  153. data/src/main/java/processing/opengl/shaders/LightVert-vc4.glsl +0 -154
  154. data/src/main/java/processing/opengl/shaders/TexLightVert-brcm.glsl +0 -160
  155. data/src/main/java/processing/opengl/shaders/TexLightVert-vc4.glsl +0 -160
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0a17549b4cc5bcc10bb764cca572641ea1cc26e03f3634e6ca6765566d74e31a
4
- data.tar.gz: 365bcb651c4a64e0218c35c21ee08b7e62c7dd55523d4fc6d1a4552bd8bbc636
3
+ metadata.gz: b0e8998483c06aa7d27737cd3b9d1f87ef8edb0268367f58d42356b7f5c20aa1
4
+ data.tar.gz: de9bb8230f17b2aa2cd0da453b465c8d9f529a74b74c0de0f6c39aa62fb39eb9
5
5
  SHA512:
6
- metadata.gz: 6cfc69cad0fe6d1d3a2e663ae267bb8057c4552702133554febb911aec0495cfbe231801489419e2b1d85ce1d4e55e87c2e66d69d3606d1d864a5fc074fa84c5
7
- data.tar.gz: 298859b0bf5f3ac80796b85d306fb0f1f20b99c28857c469a0bd7ae896abb81d96d74b4a8c3105a7ccd26345ca4569659d695c22322bcfa07b90c880147e138b
6
+ metadata.gz: a54ad411a64dd89249880b5a72cf4687b475267196659bb1887b0fe9dbbce3013357ba5196a0da2369cbc92a49a9410c1c9155f9028feff3152149725c021957
7
+ data.tar.gz: 2ca39c591cb7a15b0a9f592c4f335ba5062c1a9b6dbda26afb7707d981b9d73278c0e84044b948f61f4f53eb274f5dd9430c96600d599db5a29c06cd47849c44
@@ -3,7 +3,6 @@
3
3
  <extension>
4
4
  <groupId>io.takari.polyglot</groupId>
5
5
  <artifactId>polyglot-ruby</artifactId>
6
- <version>0.4.0</version>
6
+ <version>0.4.5</version>
7
7
  </extension>
8
8
  </extensions>
9
-
@@ -20,7 +20,7 @@ import java.util.Properties;
20
20
 
21
21
  public class MavenWrapperDownloader {
22
22
 
23
- private static final String WRAPPER_VERSION = "0.5.5";
23
+ private static final String WRAPPER_VERSION = "0.5.6";
24
24
  /**
25
25
  * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
26
26
  */
@@ -89,7 +89,7 @@ public class MavenWrapperDownloader {
89
89
  System.exit(0);
90
90
  } catch (Throwable e) {
91
91
  System.out.println("- Error downloading");
92
- e.printStackTrace();
92
+
93
93
  System.exit(1);
94
94
  }
95
95
  }
@@ -1,2 +1,2 @@
1
- distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.1/apache-maven-3.6.1-bin.zip
2
- wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar
1
+ distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip
2
+ wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar
@@ -1,8 +1,8 @@
1
1
  language: java
2
- dist: trusty
2
+ dist: bionic
3
3
 
4
4
  rvm:
5
- - jruby-9.2.7.0
5
+ - jruby-9.2.12.0
6
6
  jdk:
7
7
  - openjdk11
8
8
  os:
@@ -1,3 +1,15 @@
1
+ **v3.7.0** Experimental support for ios-arm64
2
+
3
+ **v3.6.0** Recommend JRuby-9.2.14.0 use video-2.0 release
4
+
5
+ **v3.5.0** Rebase processing core code around Sam Pottingers latest fixes for JOGL an image save, does mean breaking some of Diwis and Joshua Davis examples, but one hopes codeanticode knows what he's doing.
6
+
7
+ **v3.4.3** Use Map.of to initialize HashMap bump processing version in build bump to jruby-9.2.11.0
8
+
9
+ **v3.4.2** Fix native library bug on windows (thanks to Jay Scott). Add minim library examples
10
+
11
+ **v3.4.1** Update to jruby-9.2.9.0
12
+
1
13
  **v3.4.0** Experimental refactoring of ThinkDifferent, and some other processing classes
2
14
 
3
15
  **v3.3.1** Reflection makes refactoring a nightmare DesktopHandler => ThinkDifferent
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  gemspec
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
- # Propane ![Travis CI](https://travis-ci.org/ruby-processing/propane.svg)
1
+ # Propane [![Gem Version](https://badge.fury.io/rb/propane.svg)](https://badge.fury.io/rb/propane) ![Travis CI](https://travis-ci.org/ruby-processing/propane.svg)
2
2
 
3
- This version is intended to work with openjdk11+, @sampottinger is currently working on [vanilla processing][vanilla] which will enable JRubyArt to catch up. Unfortunately there is a cockup in debian distributions, and it is currently safer to use the Oracle version on debian (Archlinux openjdk version is fine).
3
+ This version is intended to work with openjdk11+, @sampottinger is currently working on [vanilla processing][vanilla] which will enable JRubyArt to catch up.
4
4
 
5
5
  A slim layer to communicate with Processing from JRuby, features maven build. We have created a configuration free version of ruby processing, for processing-4.0+, where we include a modified processing core (`public runPropane()` to replace `protected runSketch()`. These jars are small enough to include in a gem distribution, and hence we do not require configuration. This has created a scriptable version, ie files get run direct from jruby. Currently JavaFX is unsupported again @sampottinger is currently working on [vanilla processing][vanilla] to use OpenJFX. It would be nice make use of java modules, but I think we should let jruby project do that first (unless processing.org beat them to it).
6
6
 
@@ -8,9 +8,12 @@ adjust above for your OS/distro setup.
8
8
 
9
9
  ## Requirements
10
10
 
11
- - `jdk-11.0.2+`
12
- - `jruby-9.2.7.0`
13
- - `mvn-3.5.4+`
11
+ There may be a linker issue with P2D or P3D sketches with stock openjdk with some linux distros, in which case you might find [Adopt open jdk binaries][adopt] will work for you.
12
+
13
+ - `jdk-11.0.3+`
14
+ - `jruby-9.2.12.0`
15
+
16
+ Currently you can ignore `illegal reflective access` warnings, see [here how to suppress them][warning].
14
17
 
15
18
  ## Building and testing
16
19
 
@@ -24,10 +27,10 @@ rake javadoc
24
27
 
25
28
  ```bash
26
29
  jgem install propane # from rubygems
27
- jgem install propane-3.3.0-java.gem # local install
30
+ jgem install propane-3.6.0-java.gem # local install
28
31
  # Alternative
29
32
  jruby -S gem install propane # from rubygems
30
- jruby -S gem install propane-3.3.0-java.gem # local install
33
+ jruby -S gem install propane-3.6.0-java.gem # local install
31
34
  ```
32
35
 
33
36
  ## Check Install
@@ -37,6 +40,10 @@ To check version and confirm gem bin files are on your path (also checks JDK ver
37
40
  propane --version
38
41
  ```
39
42
 
43
+ ## Suppressing Reflective Access warnings
44
+
45
+ Since propane-3.5.0 it is possible to suppress reflective access warnings by setting JAVA_HOME environmental variable jruby does the rest.
46
+
40
47
  ## Usage
41
48
 
42
49
  A propane sketch:-
@@ -88,13 +95,15 @@ See [gh-pages][gh-pages] for more detailed instructions and much more.
88
95
 
89
96
  ## Examples
90
97
 
91
- [Worked Examples](https://github.com/ruby-processing/propane-examples) more to follow, feel free to add your own, especially ruby-2.4
98
+ [Worked Examples](https://github.com/ruby-processing/propane-examples) more to follow, feel free to add your own, especially ruby-2.5
92
99
  + syntax now we can. To install the samples. The samples get copied to `~/propane_samples`. Depends on wget.
93
100
  ```bash
94
101
  propane --install samples
95
102
  ```
96
103
  please move existing `propane_samples` if you wish to keep them. The current release features several PixelFlow glsl library examples, including a few shadertoy demos as sketches.
97
104
 
105
+ [adopt]: https://adoptopenjdk.net/
98
106
  [building]:http://ruby-processing.github.io/building/building/
99
107
  [gh-pages]:https://ruby-processing.github.io/propane/
100
108
  [vanilla]:https://github.com/processing/processing/pull/5753
109
+ [warning]: https://monkstone.github.io/jruby_art/update/2019/09/10/Reflective_Access.html
data/Rakefile CHANGED
@@ -1,18 +1,17 @@
1
1
  # frozen_string_literal: false
2
+
2
3
  require_relative 'lib/propane/version'
3
4
 
4
- task default: [:init, :compile, :install, :test, :gem]
5
+ task default: %i[init compile install test gem]
5
6
 
6
- # depends on installed processing, with processing on path
7
+ # Currently depends on local jogl-2.4.0 jars on path ~/jogl24
7
8
  desc 'Copy Jars'
8
9
  task :init do
9
- # processing_root = File.dirname(`readlink -f $(which processing)`) # for Archlinux etc
10
- processing_root = File.join(ENV['HOME'], 'processing-3.5.3') # alternative for debian linux etc
11
- jar_dir = File.join(processing_root, 'core', 'library')
12
- opengl = Dir.entries(jar_dir).grep(/amd64|macosx-universal/)
10
+ jogl24 = File.join(ENV['HOME'], 'jogl24')
11
+ opengl = Dir.entries(jogl24).grep(/amd64|universal|arm64/).select { |jar| jar =~ /linux|windows|macosx|ios|/ }
13
12
  opengl.concat %w[jogl-all.jar gluegen-rt.jar]
14
13
  opengl.each do |gl|
15
- FileUtils.cp(File.join(jar_dir, gl), File.join('.', 'lib'))
14
+ FileUtils.cp(File.join(jogl24, gl), File.join('.', 'lib'))
16
15
  end
17
16
  end
18
17
 
@@ -23,17 +22,17 @@ end
23
22
 
24
23
  desc 'Gem'
25
24
  task :gem do
26
- sh 'gem build propane.gemspec'
25
+ sh 'jgem build propane.gemspec'
27
26
  end
28
27
 
29
28
  desc 'Document'
30
29
  task :javadoc do
31
- sh 'mvn javadoc:javadoc'
30
+ sh './mvnw javadoc:javadoc'
32
31
  end
33
32
 
34
33
  desc 'Compile'
35
34
  task :compile do
36
- sh 'mvn package'
35
+ sh './mvnw package'
37
36
  end
38
37
 
39
38
  desc 'JRuby-Complete'
@@ -53,7 +52,7 @@ end
53
52
 
54
53
  desc 'clean'
55
54
  task :clean do
56
- Dir["./**/*.{jar,gem}"].each do |path|
55
+ Dir['./**/*.{jar,gem}'].each do |path|
57
56
  puts "Deleting #{path} ..."
58
57
  File.delete(path)
59
58
  end
@@ -1,6 +1,8 @@
1
1
  #!/usr/bin/env jruby
2
+ # frozen_string_literal: true
3
+
2
4
  unless defined? PROPANE_ROOT
3
- $LOAD_PATH << File.expand_path(File.dirname(__FILE__))
5
+ $LOAD_PATH << __dir__
4
6
  PROPANE_ROOT = File.expand_path(File.dirname(__FILE__) + '/../')
5
7
  end
6
8
 
@@ -1,10 +1,12 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'java'
3
4
  unless defined? PROPANE_ROOT
4
- $LOAD_PATH << File.expand_path(File.dirname(__FILE__))
5
- PROPANE_ROOT = File.absolute_path(File.dirname(__dir__))
5
+ $LOAD_PATH << File.dirname(__dir__)
6
+ PROPANE_ROOT = File.dirname(__dir__)
6
7
  end
7
- Dir["#{PROPANE_ROOT}/lib/*.jar"].each do |jar|
8
+ Dir["#{PROPANE_ROOT}/lib/*.jar"].sort.each do |jar|
8
9
  require jar
9
10
  end
10
- require_relative 'propane/app'
11
+ require "#{PROPANE_ROOT}/lib/propane/app"
12
+ require "#{PROPANE_ROOT}/lib/propane/helpers/numeric"
@@ -1,4 +1,6 @@
1
1
  # frozen_string_literal: false
2
+
3
+ require 'jruby'
2
4
  require_relative 'helper_methods'
3
5
  require_relative 'library_loader'
4
6
 
@@ -8,7 +10,7 @@ module Propane
8
10
  # Load vecmath, fastmath and mathtool modules
9
11
  Java::Monkstone::PropaneLibrary.load(JRuby.runtime)
10
12
  SKETCH_ROOT = File.absolute_path('.')
11
-
13
+ # import custom Vecmath renderers
12
14
  module Render
13
15
  java_import 'monkstone.vecmath.GfxRender'
14
16
  java_import 'monkstone.vecmath.ShapeRender'
@@ -49,13 +51,15 @@ module Propane
49
51
 
50
52
  # All sketches extend this class
51
53
  class App < PApplet
52
- include Math, MathTool, HelperMethods, Render
54
+ include HelperMethods
55
+ include Math
56
+ include MathTool
57
+ include Render
53
58
  # Alias some methods for familiarity for Shoes coders.
54
59
  alias oval ellipse
55
60
  alias stroke_width stroke_weight
56
61
  alias rgb color
57
62
  alias gray color
58
- field_reader :surface
59
63
 
60
64
  def sketch_class
61
65
  self.class.sketch_class
@@ -75,8 +79,8 @@ module Propane
75
79
  #
76
80
  class << self
77
81
  # Handy getters and setters on the class go here:
78
- attr_accessor :sketch_class, :library_loader, :title, :arguments, :options
79
-
82
+ attr_accessor :sketch_class, :library_loader, :arguments, :options
83
+ attr_reader :surface
80
84
  def load_libraries(*args)
81
85
  library_loader ||= LibraryLoader.new
82
86
  library_loader.load_library(*args)
@@ -99,6 +103,7 @@ module Propane
99
103
  # Processing call them by their expected Java names.
100
104
  def method_added(method_name) #:nodoc:
101
105
  return unless METHODS_TO_ALIAS.key?(method_name)
106
+
102
107
  alias_method METHODS_TO_ALIAS[method_name], method_name
103
108
  end
104
109
  end
@@ -112,12 +117,14 @@ module Propane
112
117
  proxy_java_fields
113
118
  raise TypeError unless options.is_a? Hash
114
119
  raise TypeError unless arguments.is_a? Array
120
+
115
121
  # Set up the sketch.
116
122
  super()
117
123
  post_initialize(options)
118
124
  Propane.app = self
119
125
  @arguments = arguments
120
126
  @options = options
127
+ @surface = get_surface
121
128
  run_propane
122
129
  end
123
130
 
@@ -126,12 +133,11 @@ module Propane
126
133
  @width ||= w
127
134
  @height ||= h
128
135
  @render_mode ||= mode
129
- import_opengl if /opengl/ =~ mode
136
+ import_opengl if /opengl/.match?(mode)
130
137
  super(*args)
131
138
  end
132
139
 
133
- def post_initialize(_args)
134
- end
140
+ def post_initialize(_args); end
135
141
 
136
142
  def sketch_title(title)
137
143
  surface.set_title(title)
@@ -164,6 +170,7 @@ module Propane
164
170
  # Processing call them by their expected Java names.
165
171
  def method_added(method_name) #:nodoc:
166
172
  return unless METHODS_TO_ALIAS.key?(method_name)
173
+
167
174
  alias_method METHODS_TO_ALIAS[method_name], method_name
168
175
  end
169
176
  end
@@ -181,7 +188,10 @@ module Propane
181
188
 
182
189
  def method_missing(name, *args, &block)
183
190
  return Propane.app.send(name, *args) if Propane.app.respond_to? name
191
+
184
192
  super
185
193
  end
186
- end # Processing::Proxy
187
- end # Propane
194
+ end
195
+ # end Processing::Proxy
196
+ end
197
+ # end Propane
@@ -5,7 +5,10 @@ class SketchClass
5
5
  attr_reader :name, :width, :height, :mode
6
6
 
7
7
  def initialize(name:, width: 150, height: 150, mode: nil)
8
- @name, @width, @height, @mode = name, width, height, mode
8
+ @name = name
9
+ @width = width
10
+ @height = height
11
+ @mode = mode
9
12
  end
10
13
 
11
14
  def class_sketch
@@ -26,6 +29,7 @@ class SketchClass
26
29
 
27
30
  def size
28
31
  return format(' size %d, %d', width.to_i, height.to_i) unless mode
32
+
29
33
  format(' size %d, %d, %s', width.to_i, height.to_i, mode.upcase)
30
34
  end
31
35
 
@@ -36,6 +40,7 @@ class SketchClass
36
40
 
37
41
  def method_lines(name, content = nil)
38
42
  return [format(' def %s', name), '', ' end'] unless content
43
+
39
44
  [format(' def %s', name), content, ' end', '']
40
45
  end
41
46
 
@@ -43,6 +48,7 @@ class SketchClass
43
48
  lines = [
44
49
  '#!/usr/bin/env jruby',
45
50
  '# frozen_string_literal: false',
51
+ '',
46
52
  "require 'propane'",
47
53
  '',
48
54
  class_sketch
@@ -1,8 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'sketch_writer'
2
4
 
3
5
  class SketchFactory
4
- NAMES = %w[One Two Three]
5
- def initialize(argc)
6
+ NAMES = %w[One Two Three].freeze
7
+ def initialize(_argc)
6
8
  NAMES.each do |name|
7
9
  SketchWriter.new(File.basename(name, '.rb'), width: 300, height: 300).write
8
10
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: false
2
+
2
3
  require_relative 'sketch_class'
3
4
 
4
5
  # The file writer can write a sketch when given instance of Sketch type
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: false
2
+
2
3
  # processing module wrapper
3
- require_relative 'helpers/numeric'
4
4
  module Propane
5
5
  # Provides some convenience methods
6
6
  module HelperMethods
@@ -52,11 +52,12 @@ module Propane
52
52
 
53
53
  def color(*args)
54
54
  return super(*args) unless args.length == 1
55
+
55
56
  super(hex_color(args[0]))
56
57
  end
57
58
 
58
59
  def web_to_color_array(web)
59
- Java::Monkstone::ColorUtil.webArray(web)
60
+ Java::Monkstone::ColorUtil.webArray(web.to_java(:string))
60
61
  end
61
62
 
62
63
  def int_to_ruby_colors(hex)
@@ -66,11 +67,8 @@ module Propane
66
67
  # Overrides Processing convenience function thread, which takes a String
67
68
  # arg (for a function) to more rubylike version, takes a block...
68
69
  def thread(&block)
69
- if block_given?
70
- Thread.new(&block)
71
- else
72
- raise ArgumentError, 'thread must be called with a block', caller
73
- end
70
+ warn 'A Block is Needed' unless block_given?
71
+ Java::JavaLang::Thread.new(&block).start
74
72
  end
75
73
 
76
74
  # explicitly provide 'processing.org' min instance method
@@ -94,9 +92,9 @@ module Propane
94
92
  def dist(*args)
95
93
  case args.length
96
94
  when 4
97
- return dist2d(*args)
95
+ dist2d(*args)
98
96
  when 6
99
- return dist3d(*args)
97
+ dist3d(*args)
100
98
  else
101
99
  raise ArgumentError, 'takes 4 or 6 parameters'
102
100
  end
@@ -111,13 +109,13 @@ module Propane
111
109
  # Here's a convenient way to look for them.
112
110
  def find_method(method_name)
113
111
  reg = Regexp.new(method_name.to_s, true)
114
- methods.sort.select { |meth| reg.match(meth) }
112
+ methods.sort.select { |meth| reg.match?(meth) }
115
113
  end
116
114
 
117
115
  # Proxy over a list of Java declared fields that have the same name as
118
116
  # some methods. Add to this list as needed.
119
117
  def proxy_java_fields
120
- fields = %w(key frameRate mousePressed keyPressed)
118
+ fields = %w[key frameRate mousePressed keyPressed]
121
119
  methods = fields.map { |field| java_class.declared_field(field) }
122
120
  @declared_fields = Hash[fields.zip(methods)]
123
121
  end
@@ -163,6 +161,7 @@ module Propane
163
161
  # frame_rate needs to support reading and writing
164
162
  def frame_rate(fps = nil)
165
163
  return @declared_fields['frameRate'].value(java_self) unless fps
164
+
166
165
  super(fps)
167
166
  end
168
167
 
@@ -178,21 +177,19 @@ module Propane
178
177
 
179
178
  private
180
179
 
181
- INTEGER_COL = -> (x) { x.is_a?(Integer) }
182
- STRING_COL = -> (x) { x.is_a?(String) }
183
- FLOAT_COL = -> (x) { x.is_a?(Float) }
184
180
  # parse single argument color int/double/String
185
- def hex_color(a)
186
- case a
187
- when INTEGER_COL
188
- Java::Monkstone::ColorUtil.colorLong(a)
189
- when STRING_COL
190
- return Java::Monkstone::ColorUtil.colorString(a) if a =~ /#\h+/
191
- raise StandardError, 'Dodgy Hexstring'
192
- when FLOAT_COL
193
- Java::Monkstone::ColorUtil.colorDouble(a)
181
+ def hex_color(arg)
182
+ case arg
183
+ when Integer
184
+ Java::Monkstone::ColorUtil.colorLong(arg)
185
+ when String
186
+ raise 'Dodgy Hexstring' unless /#\h{6}$/.match?(arg)
187
+
188
+ Java::Monkstone::ColorUtil.colorString(arg)
189
+ when Float
190
+ Java::Monkstone::ColorUtil.colorDouble(arg)
194
191
  else
195
- raise StandardError, 'Dodgy Color Conversion'
192
+ raise 'Dodgy Color Conversion'
196
193
  end
197
194
  end
198
195
 
@@ -200,6 +197,7 @@ module Propane
200
197
  dx = args[0] - args[2]
201
198
  dy = args[1] - args[3]
202
199
  return 0 if dx.abs < EPSILON && dy.abs < EPSILON
200
+
203
201
  Math.hypot(dx, dy)
204
202
  end
205
203
 
@@ -208,6 +206,7 @@ module Propane
208
206
  dy = args[1] - args[4]
209
207
  dz = args[2] - args[5]
210
208
  return 0 if dx.abs < EPSILON && dy.abs < EPSILON && dz.abs < EPSILON
209
+
211
210
  Math.sqrt(dx * dx + dy * dy + dz * dz)
212
211
  end
213
212
  end