propane 3.10.0-java → 3.11.0-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (163) hide show
  1. checksums.yaml +4 -4
  2. data/.mvn/wrapper/maven-wrapper.properties +1 -1
  3. data/CHANGELOG.md +2 -0
  4. data/README.md +7 -7
  5. data/lib/propane/app.rb +2 -5
  6. data/lib/propane/helper_methods.rb +6 -6
  7. data/lib/propane/version.rb +1 -1
  8. data/lib/{propane-3.10.0.jar → propane-3.11.0.jar} +0 -0
  9. data/pom.rb +6 -6
  10. data/pom.xml +6 -6
  11. data/propane.gemspec +3 -3
  12. data/src/main/java/monkstone/noise/OpenSimplex2F.java +838 -737
  13. data/src/main/java/monkstone/vecmath/vec2/Vec2.java +8 -13
  14. data/src/main/java/monkstone/vecmath/vec3/Vec3.java +14 -28
  15. data/src/main/java/processing/awt/PImageAWT.java +6 -4
  16. data/src/main/java/processing/core/PApplet.java +71 -59
  17. data/src/main/java/processing/core/PImage.java +14 -14
  18. data/src/main/java/processing/opengl/PGraphicsOpenGL.java +13 -13
  19. data/src/main/java/processing/opengl/PShader.java +1 -6
  20. data/src/main/java/processing/opengl/PSurfaceJOGL.java +6 -6
  21. data/{lib/java/processing/opengl → src/main/resources}/cursors/arrow.png +0 -0
  22. data/{lib/java/processing/opengl → src/main/resources}/cursors/cross.png +0 -0
  23. data/{lib/java/processing/opengl → src/main/resources}/cursors/hand.png +0 -0
  24. data/{lib/java/processing/opengl → src/main/resources}/cursors/license.txt +0 -0
  25. data/{lib/java/processing/opengl → src/main/resources}/cursors/move.png +0 -0
  26. data/{lib/java/processing/opengl → src/main/resources}/cursors/text.png +0 -0
  27. data/{lib/java/processing/opengl → src/main/resources}/cursors/wait.png +0 -0
  28. data/{lib/java/processing/opengl → src/main/resources}/shaders/ColorFrag.glsl +0 -0
  29. data/{lib/java/processing/opengl → src/main/resources}/shaders/ColorVert.glsl +0 -0
  30. data/{lib/java/processing/opengl → src/main/resources}/shaders/LightFrag.glsl +0 -0
  31. data/{lib/java/processing/opengl → src/main/resources}/shaders/LightVert.glsl +0 -0
  32. data/{lib/java/processing/opengl → src/main/resources}/shaders/LineFrag.glsl +0 -0
  33. data/{lib/java/processing/opengl → src/main/resources}/shaders/LineVert.glsl +0 -0
  34. data/{lib/java/processing/opengl → src/main/resources}/shaders/MaskFrag.glsl +0 -0
  35. data/{lib/java/processing/opengl → src/main/resources}/shaders/PointFrag.glsl +0 -0
  36. data/{lib/java/processing/opengl → src/main/resources}/shaders/PointVert.glsl +0 -0
  37. data/{lib/java/processing/opengl → src/main/resources}/shaders/TexFrag.glsl +0 -0
  38. data/{lib/java/processing/opengl → src/main/resources}/shaders/TexLightFrag.glsl +0 -0
  39. data/{lib/java/processing/opengl → src/main/resources}/shaders/TexLightVert.glsl +0 -0
  40. data/{lib/java/processing/opengl → src/main/resources}/shaders/TexVert.glsl +0 -0
  41. data/test/test_helper.rb +1 -0
  42. data/vendors/Rakefile +1 -1
  43. metadata +29 -155
  44. data/lib/java/japplemenubar/JAppleMenuBar.java +0 -88
  45. data/lib/java/japplemenubar/libjAppleMenuBar.jnilib +0 -0
  46. data/lib/java/monkstone/ColorUtil.java +0 -127
  47. data/lib/java/monkstone/MathToolModule.java +0 -287
  48. data/lib/java/monkstone/PropaneLibrary.java +0 -46
  49. data/lib/java/monkstone/core/LibraryProxy.java +0 -136
  50. data/lib/java/monkstone/fastmath/DegLutTables.java +0 -111
  51. data/lib/java/monkstone/fastmath/Deglut.java +0 -71
  52. data/lib/java/monkstone/fastmath/package-info.java +0 -6
  53. data/lib/java/monkstone/filechooser/Chooser.java +0 -39
  54. data/lib/java/monkstone/noise/FastTerrain.java +0 -874
  55. data/lib/java/monkstone/noise/Noise.java +0 -90
  56. data/lib/java/monkstone/noise/NoiseGenerator.java +0 -75
  57. data/lib/java/monkstone/noise/NoiseMode.java +0 -28
  58. data/lib/java/monkstone/noise/OpenSimplex2F.java +0 -881
  59. data/lib/java/monkstone/noise/OpenSimplex2S.java +0 -1106
  60. data/lib/java/monkstone/noise/SmoothTerrain.java +0 -1099
  61. data/lib/java/monkstone/slider/CustomHorizontalSlider.java +0 -164
  62. data/lib/java/monkstone/slider/CustomVerticalSlider.java +0 -178
  63. data/lib/java/monkstone/slider/SimpleHorizontalSlider.java +0 -145
  64. data/lib/java/monkstone/slider/SimpleSlider.java +0 -166
  65. data/lib/java/monkstone/slider/SimpleVerticalSlider.java +0 -157
  66. data/lib/java/monkstone/slider/Slider.java +0 -61
  67. data/lib/java/monkstone/slider/SliderBar.java +0 -245
  68. data/lib/java/monkstone/slider/SliderGroup.java +0 -56
  69. data/lib/java/monkstone/slider/WheelHandler.java +0 -35
  70. data/lib/java/monkstone/vecmath/GfxRender.java +0 -86
  71. data/lib/java/monkstone/vecmath/JRender.java +0 -56
  72. data/lib/java/monkstone/vecmath/ShapeRender.java +0 -87
  73. data/lib/java/monkstone/vecmath/package-info.java +0 -20
  74. data/lib/java/monkstone/vecmath/vec2/Vec2.java +0 -802
  75. data/lib/java/monkstone/vecmath/vec2/package-info.java +0 -6
  76. data/lib/java/monkstone/vecmath/vec3/Vec3.java +0 -727
  77. data/lib/java/monkstone/vecmath/vec3/package-info.java +0 -6
  78. data/lib/java/monkstone/videoevent/CaptureEvent.java +0 -27
  79. data/lib/java/monkstone/videoevent/MovieEvent.java +0 -32
  80. data/lib/java/monkstone/videoevent/package-info.java +0 -20
  81. data/lib/java/processing/awt/PGraphicsJava2D.java +0 -3040
  82. data/lib/java/processing/awt/PImageAWT.java +0 -377
  83. data/lib/java/processing/awt/PShapeJava2D.java +0 -387
  84. data/lib/java/processing/awt/PSurfaceAWT.java +0 -1581
  85. data/lib/java/processing/awt/ShimAWT.java +0 -581
  86. data/lib/java/processing/core/PApplet.java +0 -15156
  87. data/lib/java/processing/core/PConstants.java +0 -523
  88. data/lib/java/processing/core/PFont.java +0 -1126
  89. data/lib/java/processing/core/PGraphics.java +0 -8600
  90. data/lib/java/processing/core/PImage.java +0 -3377
  91. data/lib/java/processing/core/PMatrix.java +0 -208
  92. data/lib/java/processing/core/PMatrix2D.java +0 -562
  93. data/lib/java/processing/core/PMatrix3D.java +0 -890
  94. data/lib/java/processing/core/PShape.java +0 -3561
  95. data/lib/java/processing/core/PShapeOBJ.java +0 -483
  96. data/lib/java/processing/core/PShapeSVG.java +0 -2016
  97. data/lib/java/processing/core/PStyle.java +0 -63
  98. data/lib/java/processing/core/PSurface.java +0 -198
  99. data/lib/java/processing/core/PSurfaceNone.java +0 -431
  100. data/lib/java/processing/core/PVector.java +0 -1066
  101. data/lib/java/processing/core/ThinkDifferent.java +0 -115
  102. data/lib/java/processing/data/DoubleDict.java +0 -850
  103. data/lib/java/processing/data/DoubleList.java +0 -928
  104. data/lib/java/processing/data/FloatDict.java +0 -847
  105. data/lib/java/processing/data/FloatList.java +0 -936
  106. data/lib/java/processing/data/IntDict.java +0 -807
  107. data/lib/java/processing/data/IntList.java +0 -936
  108. data/lib/java/processing/data/JSONArray.java +0 -1260
  109. data/lib/java/processing/data/JSONObject.java +0 -2282
  110. data/lib/java/processing/data/JSONTokener.java +0 -435
  111. data/lib/java/processing/data/LongDict.java +0 -802
  112. data/lib/java/processing/data/LongList.java +0 -937
  113. data/lib/java/processing/data/Sort.java +0 -46
  114. data/lib/java/processing/data/StringDict.java +0 -613
  115. data/lib/java/processing/data/StringList.java +0 -800
  116. data/lib/java/processing/data/Table.java +0 -4936
  117. data/lib/java/processing/data/TableRow.java +0 -198
  118. data/lib/java/processing/data/XML.java +0 -1156
  119. data/lib/java/processing/dxf/RawDXF.java +0 -404
  120. data/lib/java/processing/event/Event.java +0 -125
  121. data/lib/java/processing/event/KeyEvent.java +0 -70
  122. data/lib/java/processing/event/MouseEvent.java +0 -114
  123. data/lib/java/processing/event/TouchEvent.java +0 -57
  124. data/lib/java/processing/javafx/PGraphicsFX2D.java +0 -32
  125. data/lib/java/processing/javafx/PSurfaceFX.java +0 -173
  126. data/lib/java/processing/net/Client.java +0 -744
  127. data/lib/java/processing/net/Server.java +0 -388
  128. data/lib/java/processing/opengl/FontTexture.java +0 -378
  129. data/lib/java/processing/opengl/FrameBuffer.java +0 -513
  130. data/lib/java/processing/opengl/LinePath.java +0 -627
  131. data/lib/java/processing/opengl/LineStroker.java +0 -681
  132. data/lib/java/processing/opengl/PGL.java +0 -3483
  133. data/lib/java/processing/opengl/PGraphics2D.java +0 -615
  134. data/lib/java/processing/opengl/PGraphics3D.java +0 -281
  135. data/lib/java/processing/opengl/PGraphicsOpenGL.java +0 -13753
  136. data/lib/java/processing/opengl/PJOGL.java +0 -2008
  137. data/lib/java/processing/opengl/PShader.java +0 -1484
  138. data/lib/java/processing/opengl/PShapeOpenGL.java +0 -5269
  139. data/lib/java/processing/opengl/PSurfaceJOGL.java +0 -1385
  140. data/lib/java/processing/opengl/Texture.java +0 -1696
  141. data/lib/java/processing/opengl/VertexBuffer.java +0 -88
  142. data/lib/java/processing/pdf/PGraphicsPDF.java +0 -581
  143. data/lib/java/processing/svg/PGraphicsSVG.java +0 -378
  144. data/src/main/java/processing/opengl/cursors/arrow.png +0 -0
  145. data/src/main/java/processing/opengl/cursors/cross.png +0 -0
  146. data/src/main/java/processing/opengl/cursors/hand.png +0 -0
  147. data/src/main/java/processing/opengl/cursors/license.txt +0 -27
  148. data/src/main/java/processing/opengl/cursors/move.png +0 -0
  149. data/src/main/java/processing/opengl/cursors/text.png +0 -0
  150. data/src/main/java/processing/opengl/cursors/wait.png +0 -0
  151. data/src/main/java/processing/opengl/shaders/ColorFrag.glsl +0 -32
  152. data/src/main/java/processing/opengl/shaders/ColorVert.glsl +0 -34
  153. data/src/main/java/processing/opengl/shaders/LightFrag.glsl +0 -33
  154. data/src/main/java/processing/opengl/shaders/LightVert.glsl +0 -151
  155. data/src/main/java/processing/opengl/shaders/LineFrag.glsl +0 -32
  156. data/src/main/java/processing/opengl/shaders/LineVert.glsl +0 -100
  157. data/src/main/java/processing/opengl/shaders/MaskFrag.glsl +0 -40
  158. data/src/main/java/processing/opengl/shaders/PointFrag.glsl +0 -32
  159. data/src/main/java/processing/opengl/shaders/PointVert.glsl +0 -56
  160. data/src/main/java/processing/opengl/shaders/TexFrag.glsl +0 -37
  161. data/src/main/java/processing/opengl/shaders/TexLightFrag.glsl +0 -37
  162. data/src/main/java/processing/opengl/shaders/TexLightVert.glsl +0 -157
  163. data/src/main/java/processing/opengl/shaders/TexVert.glsl +0 -38
@@ -1,287 +0,0 @@
1
- /**
2
- * The purpose of this tool is to allow JRubyArt users to use an alternative
3
- * to processing.org map, lerp and norm methods in their sketches and to implement
4
- * JRubyArt convenenience method grid(width, height, stepW, stepH) { |x, y| do stuff }
5
- * Copyright (c) 2015-20 Martin Prout. This tool is free software; you can
6
- * redistribute it and/or modify it under the terms of the GNU Lesser General
7
- * Public License as published by the Free Software Foundation; either version
8
- * 2.1 of the License, or (at your option) any later version.
9
- *
10
- * Obtain a copy of the license at http://www.gnu.org/licenses/lgpl-2.1.html
11
- */
12
- package monkstone;
13
-
14
- import org.jruby.Ruby;
15
- import org.jruby.RubyFixnum;
16
- import org.jruby.RubyFloat;
17
- import org.jruby.RubyModule;
18
- import org.jruby.RubyRange;
19
- import org.jruby.anno.JRubyMethod;
20
- import org.jruby.anno.JRubyModule;
21
- import org.jruby.runtime.Block;
22
- import org.jruby.runtime.ThreadContext;
23
- import org.jruby.runtime.builtin.IRubyObject;
24
-
25
- /**
26
- *
27
- * @author Martin Prout
28
- */
29
- @JRubyModule(name = "MathTool")
30
- public class MathToolModule {
31
-
32
- /**
33
- *
34
- * @param runtime Ruby
35
- */
36
- public static void createMathToolModule(Ruby runtime) {
37
- RubyModule mtModule = runtime.defineModule("MathTool");
38
- mtModule.defineAnnotatedMethods(MathToolModule.class);
39
- }
40
-
41
- /**
42
- *
43
- * @param context ThreadContext
44
- * @param recv IRubyObject
45
- * @param args array of RubyRange (must be be numeric)
46
- * @return mapped value RubyFloat
47
- */
48
- @JRubyMethod(name = "map1d", rest = true, module = true)
49
- public static IRubyObject mapOneD(ThreadContext context, IRubyObject recv, IRubyObject[] args) {
50
- double value = (args[0] instanceof RubyFloat)
51
- ? ((RubyFloat) args[0]).getValue() : ((RubyFixnum) args[0]).getDoubleValue();
52
- RubyRange r1 = (RubyRange) args[1];
53
- RubyRange r2 = (RubyRange) args[2];
54
- double first1 = (r1.first(context) instanceof RubyFloat)
55
- ? ((RubyFloat) r1.first(context)).getValue() : ((RubyFixnum) r1.first(context)).getDoubleValue();
56
- double first2 = (r2.first(context) instanceof RubyFloat)
57
- ? ((RubyFloat) r2.first(context)).getValue() : ((RubyFixnum) r2.first(context)).getDoubleValue();
58
- double last1 = (r1.last(context) instanceof RubyFloat)
59
- ? ((RubyFloat) r1.last(context)).getValue() : ((RubyFixnum) r1.last(context)).getDoubleValue();
60
- double last2 = (r2.last(context) instanceof RubyFloat)
61
- ? ((RubyFloat) r2.last(context)).getValue() : ((RubyFixnum) r2.last(context)).getDoubleValue();
62
- return mapMt(context, value, first1, last1, first2, last2);
63
- }
64
-
65
- /**
66
- *
67
- * @param context ThreadContext
68
- * @param recv IRubyObject
69
- * @param args array of RubyRange (must be be numeric)
70
- * @return mapped value RubyFloat
71
- */
72
- @JRubyMethod(name = "constrained_map", rest = true, module = true)
73
- public static IRubyObject constrainedMap(ThreadContext context, IRubyObject recv, IRubyObject[] args) {
74
- double value = (args[0] instanceof RubyFloat) ? ((RubyFloat) args[0]).getValue() : ((RubyFixnum) args[0]).getDoubleValue();
75
- RubyRange r1 = (RubyRange) args[1];
76
- RubyRange r2 = (RubyRange) args[2];
77
- double first1 = (r1.first(context) instanceof RubyFloat)
78
- ? ((RubyFloat) r1.first(context)).getValue() : ((RubyFixnum) r1.first(context)).getDoubleValue();
79
- double first2 = (r2.first(context) instanceof RubyFloat)
80
- ? ((RubyFloat) r2.first(context)).getValue() : ((RubyFixnum) r2.first(context)).getDoubleValue();
81
- double last1 = (r1.last(context) instanceof RubyFloat)
82
- ? ((RubyFloat) r1.last(context)).getValue() : ((RubyFixnum) r1.last(context)).getDoubleValue();
83
- double last2 = (r2.last(context) instanceof RubyFloat)
84
- ? ((RubyFloat) r2.last(context)).getValue() : ((RubyFixnum) r2.last(context)).getDoubleValue();
85
- double max = Math.max(first1, last1);
86
- double min = Math.min(first1, last1);
87
- if (value < min) {
88
- return mapMt(context, min, first1, last1, first2, last2);
89
- }
90
- if (value > max) {
91
- return mapMt(context, max, first1, last1, first2, last2);
92
- }
93
- return mapMt(context, value, first1, last1, first2, last2);
94
- }
95
-
96
- /**
97
- *
98
- * @param context ThreadContext
99
- * @param recv self IRubyObject
100
- * @param args floats as in processing map function
101
- * @return mapped value RubyFloat
102
- */
103
- @JRubyMethod(name = "p5map", rest = true, module = true)
104
- public static IRubyObject mapProcessing(ThreadContext context, IRubyObject recv, IRubyObject[] args) {
105
- double value = (args[0] instanceof RubyFloat) ? ((RubyFloat) args[0]).getValue() : ((RubyFixnum) args[0]).getDoubleValue();
106
- double first1 = (args[1] instanceof RubyFloat) ? ((RubyFloat) args[1]).getValue() : ((RubyFixnum) args[1]).getDoubleValue();
107
- double first2 = (args[3] instanceof RubyFloat) ? ((RubyFloat) args[3]).getValue() : ((RubyFixnum) args[3]).getDoubleValue();
108
- double last1 = (args[2] instanceof RubyFloat) ? ((RubyFloat) args[2]).getValue() : ((RubyFixnum) args[2]).getDoubleValue();
109
- double last2 = (args[4] instanceof RubyFloat) ? ((RubyFloat) args[4]).getValue() : ((RubyFixnum) args[4]).getDoubleValue();
110
- return mapMt(context, value, first1, last1, first2, last2);
111
- }
112
-
113
- /**
114
- * A more correct version than processing.org version
115
- *
116
- * @param context ThreadContext
117
- * @param recv self IRubyObject
118
- * @param args args[2] should be between 0 and 1.0 if not returns start or
119
- * stop
120
- * @return lerped value RubyFloat
121
- */
122
- @JRubyMethod(name = "lerp", rest = true, module = true)
123
- public static IRubyObject lerpP(ThreadContext context, IRubyObject recv, IRubyObject[] args) {
124
- double start = (args[0] instanceof RubyFloat) ? ((RubyFloat) args[0]).getValue() : ((RubyFixnum) args[0]).getDoubleValue();
125
- double stop = (args[1] instanceof RubyFloat) ? ((RubyFloat) args[1]).getValue() : ((RubyFixnum) args[1]).getDoubleValue();
126
- double amount = (args[2] instanceof RubyFloat) ? ((RubyFloat) args[2]).getValue() : ((RubyFixnum) args[2]).getDoubleValue();
127
- if (amount <= 0) {
128
- return args[0];
129
- }
130
- if (amount >= 1.0) {
131
- return args[1];
132
- }
133
- return context.runtime.newFloat((1 - amount) * start + (stop * amount));
134
- }
135
-
136
- /**
137
- * Identical to p5map(value, low, high, 0, 1). Numbers outside of the range
138
- * are not clamped to 0 and 1, because out-of-range values are often
139
- * intentional and useful.
140
- *
141
- * @param context ThreadContext
142
- * @param recv IRubyObject
143
- * @param args array of args must be be numeric
144
- * @return mapped value RubyFloat
145
- */
146
- @JRubyMethod(name = "norm", rest = true, module = true)
147
- public static IRubyObject normP(ThreadContext context, IRubyObject recv, IRubyObject[] args) {
148
- double value = (args[0] instanceof RubyFloat) ? ((RubyFloat) args[0]).getValue() : ((RubyFixnum) args[0]).getDoubleValue();
149
- double start = (args[1] instanceof RubyFloat) ? ((RubyFloat) args[1]).getValue() : ((RubyFixnum) args[1]).getDoubleValue();
150
- double stop = (args[2] instanceof RubyFloat) ? ((RubyFloat) args[2]).getValue() : ((RubyFixnum) args[2]).getDoubleValue();
151
- return mapMt(context, value, start, stop, 0, 1.0);
152
- }
153
-
154
- /**
155
- * Identical to p5map(value, low, high, 0, 1) but 'clamped'. Numbers outside
156
- * of the range are clamped to 0 and 1,
157
- *
158
- * @param context ThreadContext
159
- * @param recv IRubyObject
160
- * @param args array of args must be be numeric
161
- * @return mapped value RubyFloat
162
- */
163
- @JRubyMethod(name = "norm_strict", rest = true, module = true)
164
- public static IRubyObject norm_strict(ThreadContext context, IRubyObject recv, IRubyObject[] args) {
165
-
166
- double value = (args[0] instanceof RubyFloat) ? ((RubyFloat) args[0]).getValue() : ((RubyFixnum) args[0]).getDoubleValue();
167
- double start = (args[1] instanceof RubyFloat) ? ((RubyFloat) args[1]).getValue() : ((RubyFixnum) args[1]).getDoubleValue();
168
- double stop = (args[2] instanceof RubyFloat) ? ((RubyFloat) args[2]).getValue() : ((RubyFixnum) args[2]).getDoubleValue();
169
- double max = Math.max(start, stop);
170
- double min = Math.min(start, stop);
171
- if (value < min) {
172
- return mapMt(context, min, start, stop, 0, 1.0);
173
- }
174
- if (value > max) {
175
- return mapMt(context, max, start, stop, 0, 1.0);
176
- }
177
- return mapMt(context, value, start, stop, 0, 1.0);
178
- }
179
- // start2 + (stop2 - start2) * ((value - start1) / (stop1 - start1));
180
- static final RubyFloat mapMt(ThreadContext context, double value, double first1, double last1, double first2, double last2) {
181
- Ruby ruby = context.runtime;
182
- double result = first2 + (last2 - first2) * ((value - first1) / (last1 - first1));
183
- return ruby.newFloat(result);
184
- }
185
-
186
- /**
187
- * Provides processing constrain method as a ruby module method
188
- *
189
- * @param context ThreadContext
190
- * @param recv IRubyObject
191
- * @param args array of args must be be numeric
192
- * @return original or limit values
193
- */
194
- @JRubyMethod(name = "constrain", rest = true, module = true)
195
- public static IRubyObject constrainValue(ThreadContext context, IRubyObject recv, IRubyObject[] args) {
196
- RubyFloat value = args[0].convertToFloat();
197
- RubyFloat start = args[1].convertToFloat();
198
- RubyFloat stop = args[2].convertToFloat();
199
- if (value.op_ge(context, start).isTrue() && value.op_le(context, stop).isTrue()) {
200
- return args[0];
201
- } else if (value.op_ge(context, start).isTrue()) {
202
- return args[2];
203
- } else {
204
- return args[1];
205
- }
206
- }
207
-
208
- /**
209
- * Provides JRubyArt grid method as a ruby module method behaves like:-
210
- * def grid(dx, dy, sx = 1, sy = 1)
211
- * (0...dx).step(sx) do |x|
212
- * (0...dy).step(sy) do |y|
213
- * yield(x, y)
214
- * end
215
- * end
216
- * end
217
- * @param context ThreadContext
218
- * @param recv IRubyObject
219
- * @param args array of args should be Fixnum
220
- * @param block { |x, y| `do something` }
221
- * @return nil
222
- */
223
- @JRubyMethod(name = "grid", rest = true, module = true)
224
- public static IRubyObject createGrid(ThreadContext context, IRubyObject recv, IRubyObject[] args, Block block) {
225
- Ruby ruby = context.runtime;
226
- int row = (int) args[0].toJava(Integer.class);
227
- int column = (int) args[1].toJava(Integer.class);
228
- int rowStep = 1;
229
- int colStep = 1;
230
- if (args.length == 4){
231
- rowStep = (int) args[2].toJava(Integer.class);
232
- colStep = (int) args[3].toJava(Integer.class);
233
- }
234
- if (block.isGiven()) {
235
- int tempRow = row / rowStep;
236
- int tempColumn = column /colStep;
237
- for (int z = 0; z < (tempRow * tempColumn); z++){
238
- int y = z % tempColumn;
239
- int x = z / tempColumn;
240
- block.yieldSpecific(context, ruby.newFixnum(x * rowStep), ruby.newFixnum(y * colStep));
241
- }
242
- }
243
- return context.nil;
244
- }
245
- /**
246
- * Provides JRubyArt mesh_grid method as a ruby module method
247
- * def grid(dx, dy, dz, sx = 1, sy = 1, sz = 1)
248
- * (0...dx).step(sx) do |x|
249
- * (0...dy).step(sy) do |y|
250
- * (0...dz).step(sy) do |z|
251
- * yield(x, y, z)
252
- * end
253
- * end
254
- * end
255
- * end
256
- *
257
- * @param context ThreadContext
258
- * @param recv IRubyObject
259
- * @param args array of args should be Fixnum
260
- * @param block { |x, y, z| `do something` }
261
- * @return nil
262
- */
263
- @JRubyMethod(name = "mesh_grid", rest = true, module = true)
264
- public static IRubyObject createGrid3D(ThreadContext context, IRubyObject recv, IRubyObject[] args, Block block) {
265
- Ruby ruby = context.runtime;
266
- int xDim = (int) args[0].toJava(Integer.class);
267
- int yDim = (int) args[1].toJava(Integer.class);
268
- int zDim = (int) args[2].toJava(Integer.class);
269
- int xStep = (args.length > 3) ? (int) args[3].toJava(Integer.class) : 1;
270
- int yStep = (args.length > 4) ? (int) args[4].toJava(Integer.class) : 1;
271
- int zStep = (args.length == 6) ? (int) args[5].toJava(Integer.class) : 1;
272
- int dimX = xDim / xStep;
273
- int dimY = yDim / yStep;
274
- int dimZ = zDim / zStep;
275
- if (block.isGiven()) {
276
- int count = dimX * dimY * dimZ;
277
- for (int x = 0; x < xDim; x += xStep){
278
- for (int j = 0; j < (dimZ * dimY); j++){
279
- int z = j % dimZ;
280
- int y = j / dimZ;
281
- block.yieldSpecific(context, ruby.newFixnum(x), ruby.newFixnum(y * yStep), ruby.newFixnum(z * zStep));
282
- }
283
- }
284
- }
285
- return context.nil;
286
- }
287
- }
@@ -1,46 +0,0 @@
1
- /**
2
- * The purpose of this class is to load the MathTool into ruby-processing runtime
3
- * Copyright (C) 2015-20 Martin Prout. This code is free software; you can
4
- * redistribute it and/or modify it under the terms of the GNU Lesser General
5
- * Public License as published by the Free Software Foundation; either version
6
- * 2.1 of the License, or (at your option) any later version.
7
- *
8
- * Obtain a copy of the license at http://www.gnu.org/licenses/lgpl-2.1.html
9
- */
10
- package monkstone;
11
-
12
- import java.io.IOException;
13
- import monkstone.fastmath.Deglut;
14
- import monkstone.vecmath.vec2.Vec2;
15
- import monkstone.vecmath.vec3.Vec3;
16
- import org.jruby.Ruby;
17
- import org.jruby.runtime.load.Library;
18
-
19
- /**
20
- *
21
- * @author Martin Prout
22
- */
23
- public class PropaneLibrary implements Library {
24
-
25
- /**
26
- *
27
- * @param runtime
28
- */
29
- public static void load(final Ruby runtime) {
30
- MathToolModule.createMathToolModule(runtime);
31
- Deglut.createDeglut(runtime);
32
- Vec2.createVec2(runtime);
33
- Vec3.createVec3(runtime);
34
- }
35
-
36
- /**
37
- *
38
- * @param runtime
39
- * @param wrap
40
- * @throws java.io.IOException
41
- */
42
- @Override
43
- public void load(final Ruby runtime, boolean wrap) throws IOException {
44
- PropaneLibrary.load(runtime);
45
- }
46
- }
@@ -1,136 +0,0 @@
1
- package monkstone.core;
2
-
3
- import processing.core.PApplet;
4
- import static processing.core.PConstants.*;
5
- import processing.event.MouseEvent;
6
- import processing.event.KeyEvent;
7
-
8
- /**
9
- * The purpose of this class is to enable access to processing pre, draw and
10
- * post loops in ruby-processing as a regular java library class. Also included
11
- * background, fill and stroke methods. PConstants should also be available from
12
- * static import
13
- *
14
- * @author Martin Prout
15
- */
16
- public abstract class LibraryProxy {
17
-
18
- private final PApplet app;
19
-
20
- /**
21
- * Useful accessors
22
- */
23
- public int width, height;
24
-
25
- /**
26
- *
27
- * @param app PApplet
28
- */
29
- public LibraryProxy(PApplet app) {
30
- this.app = app;
31
- this.width = app.width;
32
- this.height = app.height;
33
- setActive(true);
34
- }
35
-
36
- /**
37
- * Extending classes can override this, gives access to, by reflection,
38
- * processing PApplet pre loop (called before draw)
39
- */
40
- public void pre() {
41
- }
42
-
43
- /**
44
- * Extending classes must implement this gives access to processing PApplet
45
- * draw loop
46
- */
47
- public abstract void draw();
48
-
49
- /**
50
- * Extending classes can override this, gives access to, by reflection,
51
- * processing PApplet post loop (called after draw)
52
- */
53
- public void post() {
54
- }
55
-
56
- /**
57
- * Extending classes can override this, gives access to, by reflection,
58
- * processing PApplet post loop (called after draw)
59
- * @param e
60
- */
61
- public void keyEvent(KeyEvent e) {
62
- }
63
-
64
- /**
65
- * Extending classes can override this, gives access to, by reflection,
66
- * processing PApplet post loop (called after draw)
67
- * @param e
68
- */
69
- public void mouseEvent(MouseEvent e) {
70
- }
71
-
72
- /**
73
- * Register or unregister reflection methods
74
- *
75
- * @param active
76
- */
77
- final void setActive(boolean active) {
78
- if (active) {
79
- this.app.registerMethod("pre", this);
80
- this.app.registerMethod("draw", this);
81
- this.app.registerMethod("post", this);
82
- this.app.registerMethod("mouseEvent", this);
83
- this.app.registerMethod("keyEvent", this);
84
- this.app.registerMethod("dispose", this);
85
- } else {
86
- this.app.unregisterMethod("pre", this);
87
- this.app.unregisterMethod("draw", this);
88
- this.app.unregisterMethod("post", this);
89
- this.app.unregisterMethod("mouseEvent", this);
90
- this.app.unregisterMethod("keyEvent", this);
91
- }
92
- }
93
-
94
- /**
95
- * Simple signature for background hides need to call app
96
- *
97
- * @param col int
98
- */
99
- public void background(int col) {
100
- this.app.background(col);
101
- }
102
-
103
- /**
104
- * Simple signature for fill hides need to call app
105
- *
106
- * @param col int
107
- */
108
- public void fill(int col) {
109
- this.app.fill(col);
110
- }
111
-
112
- /**
113
- * Simple signature for stroke hides need to call app
114
- *
115
- * @param col int
116
- */
117
- public void stroke(int col) {
118
- this.app.stroke(col);
119
- }
120
-
121
- /**
122
- * Access applet if we must
123
- *
124
- * @return applet PApplet
125
- */
126
- public PApplet app() {
127
- return this.app;
128
- }
129
-
130
- /**
131
- * required for processing
132
- */
133
- public void dispose() {
134
- setActive(false);
135
- }
136
- }
@@ -1,111 +0,0 @@
1
- /*
2
- * Copyright (c) 2021 Martin Prout
3
- *
4
- * This library is free software; you can redistribute it and/or
5
- * modify it under the terms of the GNU Lesser General Public
6
- * License as published by the Free Software Foundation; either
7
- * version 2.1 of the License, or (at your option) any later version.
8
- *
9
- * http://creativecommons.org/licenses/LGPL/2.1/
10
- *
11
- * This library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
- * Lesser General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library; if not, write to the Free Software
18
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19
- */
20
- package monkstone.fastmath;
21
-
22
- public final class DegLutTables {
23
-
24
- /**
25
- *
26
- */
27
- static public final float PI = 3.1415927f;
28
-
29
- /**
30
- *
31
- */
32
- static public final float PI2 = PI * 2;
33
- static private final int SIN_BITS = 15; // 16KB. Adjust for accuracy.
34
- static private final int SIN_MASK = ~(-1 << SIN_BITS);
35
- static private final int SIN_COUNT = SIN_MASK + 1;
36
-
37
- static private final float RAD_FULL = PI * 2;
38
- static private final float DEG_FULL = 360;
39
- static private final float RAD_TO_INDEX = SIN_COUNT / RAD_FULL;
40
- static private final float DEG_TO_INDEX = SIN_COUNT / DEG_FULL;
41
-
42
- /**
43
- * multiply by this to convert from radians to degrees
44
- */
45
- static public final float RADIANS_TO_DEGREES = 180f / PI;
46
-
47
- /**
48
- *
49
- */
50
- static public final float RAD_DEG = RADIANS_TO_DEGREES;
51
- /**
52
- * multiply by this to convert from degrees to radians
53
- */
54
- static public final float DEGREES_TO_RADIANS = PI / 180;
55
-
56
- /**
57
- *
58
- */
59
- static public final float DEG_RAD = DEGREES_TO_RADIANS;
60
-
61
- static private class Sin {
62
-
63
- static final float[] table = new float[SIN_COUNT];
64
-
65
- static {
66
- for (int i = 0; i < SIN_COUNT; i++) {
67
- table[i] = (float) Math.sin((i + 0.5f) / SIN_COUNT * RAD_FULL);
68
- }
69
- for (int i = 0; i < 360; i += 90) {
70
- table[(int) (i * DEG_TO_INDEX) & SIN_MASK] = (float) Math.sin(i * DEGREES_TO_RADIANS);
71
- }
72
- }
73
- }
74
-
75
- /**
76
- * Returns the sine in radians from a lookup table.
77
- * @param radians
78
- * @return
79
- */
80
- static public final float sin(float radians) {
81
- return Sin.table[(int) (radians * RAD_TO_INDEX) & SIN_MASK];
82
- }
83
-
84
- /**
85
- * Returns the cosine in radians from a lookup table.
86
- * @param radians
87
- * @return
88
- */
89
- static public final float cos(float radians) {
90
- return Sin.table[(int) ((radians + PI / 2) * RAD_TO_INDEX) & SIN_MASK];
91
- }
92
-
93
- /**
94
- * Returns the sine in radians from a lookup table.
95
- * @param degrees
96
- * @return
97
- */
98
- static public final float sinDeg(float degrees) {
99
- return Sin.table[(int) (degrees * DEG_TO_INDEX) & SIN_MASK];
100
- }
101
-
102
- /**
103
- * Returns the cosine in radians from a lookup table.
104
- * @param degrees
105
- * @return
106
- */
107
- static public final float cosDeg(float degrees) {
108
- return Sin.table[(int) ((degrees + 90) * DEG_TO_INDEX) & SIN_MASK];
109
- }
110
- }
111
-
@@ -1,71 +0,0 @@
1
- /*
2
- * Copyright (c) 2015-21 Martin Prout
3
- *
4
- * This library is free software; you can redistribute it and/or
5
- * modify it under the terms of the GNU Lesser General Public
6
- * License as published by the Free Software Foundation; either
7
- * version 2.1 of the License, or (at your option) any later version.
8
- *
9
- * http://creativecommons.org/licenses/LGPL/2.1/
10
- *
11
- * This library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
- * Lesser General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library; if not, write to the Free Software
18
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19
- */
20
- package monkstone.fastmath;
21
-
22
- import org.jruby.Ruby;
23
- import org.jruby.RubyNumeric;
24
- import org.jruby.RubyModule;
25
- import org.jruby.anno.JRubyModule;
26
- import org.jruby.anno.JRubyMethod;
27
- import org.jruby.runtime.ThreadContext;
28
- import org.jruby.runtime.builtin.IRubyObject;
29
-
30
- /**
31
- *
32
- * @author Martin Prout
33
- */
34
- @JRubyModule(name = "DegLut")
35
- public class Deglut {
36
-
37
- /**
38
- *
39
- * @param runtime Ruby
40
- */
41
- public static void createDeglut(final Ruby runtime) {
42
- RubyModule deglutModule = runtime.defineModule("DegLut");
43
- deglutModule.defineAnnotatedMethods(Deglut.class);
44
- }
45
-
46
- /**
47
- *
48
- * @param context ThreadContext
49
- * @param recv IRubyObject
50
- * @param other IRubyObject degrees
51
- * @return sin IRubyObject
52
- */
53
- @JRubyMethod(name = "sin", module = true)
54
- public static IRubyObject sin(ThreadContext context, IRubyObject recv, IRubyObject other) {
55
- float thet = (float) ((RubyNumeric) other).getLongValue();
56
- return context.runtime.newFloat(DegLutTables.sinDeg(thet));
57
- }
58
-
59
- /**
60
- *
61
- * @param context ThreadContext
62
- * @param recv IRubyObject
63
- * @param other IRubyObject degrees
64
- * @return cos IRubyObject
65
- */
66
- @JRubyMethod(name = "cos", module = true)
67
- public static IRubyObject cos(ThreadContext context, IRubyObject recv, IRubyObject other) {
68
- float thet = (float) ((RubyNumeric) other).getLongValue();
69
- return context.runtime.newFloat(DegLutTables.cosDeg(thet));
70
- }
71
- }
@@ -1,6 +0,0 @@
1
- /*
2
- * To change this license header, choose License Headers in Project Properties.
3
- * To change this template file, choose Tools | Templates
4
- * and open the template in the editor.
5
- */
6
- package monkstone.fastmath;
@@ -1,39 +0,0 @@
1
- /*
2
- * Copyright (c) 2015-20 Martin Prout
3
- *
4
- * This library is free software; you can redistribute it and/or
5
- * modify it under the terms of the GNU Lesser General Public
6
- * License as published by the Free Software Foundation; either
7
- * version 2.1 of the License, or (at your option) any later version.
8
- *
9
- * http://creativecommons.org/licenses/LGPL/2.1/
10
- *
11
- * This library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
- * Lesser General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library; if not, write to the Free Software
18
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19
- */
20
- package monkstone.filechooser;
21
-
22
- import java.io.File;
23
-
24
- /**
25
- * This interface makes it easier/possible to use the reflection methods
26
- * selectInput def setup java_signature 'void selectInput(String, String)'
27
- * selectInput('Select a file to process:', 'fileSelected') end
28
- *
29
- * def file_selected(selection) if selection.nil? puts 'Window was closed or the
30
- * user hit cancel.' else puts format('User selected %s',
31
- * selection.get_absolute_path) end end
32
- *
33
- * @author Martin Prout
34
- */
35
- @FunctionalInterface
36
- public interface Chooser {
37
-
38
- public void file_selected(File selection);
39
- }