propane 3.4.0-java → 3.7.0.pre-java

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 (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
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Numeric #:nodoc:
2
4
  def degrees
3
5
  self * 57.29577951308232
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
 
2
3
  class JDKVersionError < StandardError
3
4
  def message
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'native_folder'
2
4
  require_relative 'native_loader'
3
5
  require 'pathname'
@@ -18,6 +20,7 @@ class Library
18
20
  return if (@path = Pathname.new(
19
21
  File.join(PROPANE_ROOT, 'library', name, "#{name}.rb")
20
22
  )).exist?
23
+
21
24
  locate_java
22
25
  end
23
26
 
@@ -46,10 +49,11 @@ class Library
46
49
  end
47
50
 
48
51
  def load_jars
49
- Dir.glob("#{dir}/*.jar").each do |jar|
52
+ Dir.glob("#{dir}/*.jar").sort.each do |jar|
50
53
  require jar
51
54
  end
52
55
  return true unless native_binaries?
56
+
53
57
  add_binaries_to_classpath
54
58
  end
55
59
 
@@ -33,10 +33,12 @@ module Propane
33
33
 
34
34
  def loader(name)
35
35
  return true if @loaded_libraries.include?(name)
36
+
36
37
  fname = name.to_s
37
38
  library = Library.new(fname)
38
39
  library.locate
39
40
  return require_library(library, name) if library.ruby?
41
+
40
42
  warn("Not found library: #{fname}") unless library.exist?
41
43
  load_jars(library, name)
42
44
  end
@@ -1,11 +1,13 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rbconfig'
2
4
 
3
5
  # Utility to load native binaries on Java CLASSPATH
4
6
  class NativeFolder
5
7
  attr_reader :os, :bit
6
8
 
7
- WIN_FORMAT = 'windows%d'.freeze
8
- LINUX_FORMAT = 'linux%d'.freeze
9
+ WIN_FORMAT = 'windows%d'
10
+ LINUX_FORMAT = 'linux%d'
9
11
  WIN_PATTERNS = [
10
12
  /bccwin/i,
11
13
  /cygwin/i,
@@ -17,22 +19,21 @@ class NativeFolder
17
19
 
18
20
  def initialize
19
21
  @os = RbConfig::CONFIG['host_os'].downcase
20
- @bit = java.lang.System.get_property('os.arch') =~ /64/ ? 64 : 32
22
+ @bit = /64/.match?(java.lang.System.get_property('os.arch')) ? 64 : 32
21
23
  end
22
24
 
23
25
  def name
24
26
  return 'macosx' if /darwin|mac/.match?(os)
25
- return format(LINUX_FORMAT, bit) if os =~ /linux/
26
- if WIN_PATTERNS.any? { |pat| pat =~ os }
27
- return format(WINDOWS_FORMAT, '64') if /64/.match?(bit)
28
- return format(WINDOWS_FORMAT, '32') if /32/.match?(bit)
29
- end
27
+ return format(LINUX_FORMAT, bit) if /linux/.match?(os)
28
+ return format(WIN_FORMAT, bit) if WIN_PATTERNS.any? { |pat| pat.match?(os) }
29
+
30
30
  raise 'Unsupported Architecture'
31
31
  end
32
32
 
33
33
  def extension
34
34
  return '*.so' if /linux/.match?(os)
35
- return '*.dll' if WIN_PATTERNS.any? { |pat| pat =~ os }
35
+ return '*.dll' if WIN_PATTERNS.any? { |pat| pat.match?(os) }
36
+
36
37
  '*.dylib' # MacOS
37
38
  end
38
39
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # This class knows how to dynamically set the 'java' native library path
2
4
  # It might not work with java 9?
3
5
  class NativeLoader
@@ -21,6 +23,7 @@ class NativeLoader
21
23
  field = JC::Class.for_name('java.lang.ClassLoader')
22
24
  .get_declared_field('sys_paths')
23
25
  return unless field
26
+
24
27
  field.accessible = true # some jruby magic
25
28
  field.set(JC::Class.for_name('java.lang.System').get_class_loader, nil)
26
29
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: false
2
+
2
3
  require 'optparse'
3
4
  require_relative 'version'
4
5
 
@@ -40,7 +41,7 @@ module Propane
40
41
  end
41
42
 
42
43
  options[:install] = false
43
- message = '<Samples><GLVideo><Video><Sound> Install samples or library'
44
+ message = '<Samples><Video><Sound> Install samples or library'
44
45
  opts.on('-i', '--install', message) do
45
46
  options[:install] = true
46
47
  end
@@ -54,6 +55,8 @@ module Propane
54
55
  # assumed to have this option.
55
56
  opts.on('-h', '--help', 'Display this screen') do
56
57
  puts opts
58
+ puts ''
59
+ puts 'Run a sketch: jruby [--dev] [<sketch.rb>]'
57
60
  exit
58
61
  end
59
62
  end
@@ -67,7 +70,6 @@ module Propane
67
70
  end
68
71
 
69
72
  def show_version
70
-
71
73
  v_format = "Propane version %s\nJRuby version %s"
72
74
  puts format(v_format, Propane::VERSION, JRUBY_VERSION)
73
75
  end
@@ -75,7 +77,8 @@ module Propane
75
77
  def show_version
76
78
  require 'erb'
77
79
  require_relative 'helpers/version_error'
78
- raise JDKVersionError.new if ENV_JAVA['java.specification.version'] < '11'
80
+ raise JDKVersionError if ENV_JAVA['java.specification.version'] < '11'
81
+
79
82
  template = ERB.new <<-EOF
80
83
  propane version <%= Propane::VERSION %>
81
84
  JRuby version <%= JRUBY_VERSION %>
@@ -86,8 +89,13 @@ module Propane
86
89
  def install(library)
87
90
  choice = library.downcase
88
91
  valid = Regexp.union('samples', 'sound', 'video', 'glvideo')
89
- return warn format('No installer for %s', choice) unless valid =~ choice
92
+ unless valid.match?(choice)
93
+ return warn format('No installer for %<lib>s', lib: choice)
94
+ end
95
+
90
96
  system "cd #{PROPANE_ROOT}/vendors && rake download_and_copy_#{choice}"
91
97
  end
92
- end # class Runner
93
- end # module Propane
98
+ end
99
+ # class Runner
100
+ end
101
+ # module Propane
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Propane
3
- VERSION = '3.4.0'
4
+ VERSION = '3.7.0.pre'
4
5
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Boids -- after Tom de Smedt.
2
4
  # See his Python version: http://nodebox.net/code/index.php/Boids
3
5
  # This is an example of how a pure-Ruby library can work. Original for
@@ -7,7 +9,8 @@ class Boid
7
9
  attr_accessor :boids, :pos, :vel, :is_perching, :perch_time
8
10
 
9
11
  def initialize(boids, pos)
10
- @boids, @flock = boids, boids
12
+ @boids = boids
13
+ @flock = boids
11
14
  @pos = pos
12
15
  @vel = Vec3D.new
13
16
  @is_perching = false
@@ -53,6 +56,7 @@ class Boid
53
56
  # Tweet, Tweet! The boid police will bust you for breaking the speed limit.
54
57
  most = [vel.x.abs, vel.y.abs, vel.z.abs].max
55
58
  return if most < max
59
+
56
60
  scale = max / most.to_f
57
61
  @vel *= scale
58
62
  end
@@ -75,7 +79,7 @@ class Boids
75
79
  extend Forwardable
76
80
  def_delegators(:@boids, :reject, :<<, :each, :shuffle!, :length, :next)
77
81
 
78
- attr_reader :has_goal, :perch, :perch_tm, :perch_y
82
+ attr_reader :has_goal, :perchance, :perch_tm, :perch_y
79
83
 
80
84
  def initialize
81
85
  @boids = []
@@ -88,16 +92,20 @@ class Boids
88
92
 
89
93
  def setup(n, x, y, w, h)
90
94
  n.times do
91
- dx, dy = rand(w), rand(h)
95
+ dx = rand(w)
96
+ dy = rand(h)
92
97
  z = rand(200.0)
93
98
  self << Boid.new(self, Vec3D.new(x + dx, y + dy, z))
94
99
  end
95
- @x, @y, @w, @h = x, y, w, h
100
+ @x = x
101
+ @y = y
102
+ @w = w
103
+ @h = h
96
104
  @scattered = false
97
105
  @scatter = 0.005
98
106
  @scatter_time = 50.0
99
107
  @scatter_i = 0.0
100
- @perch = 1.0 # Lower this number to divebomb.
108
+ @perchance = 1.0 # Lower this number to divebomb.
101
109
  @perch_y = h
102
110
  @perch_tm = -> { 25.0 + rand(50.0) }
103
111
  @has_goal = false
@@ -118,11 +126,11 @@ class Boids
118
126
  def perch(ground = nil, chance = 1.0, frames = nil)
119
127
  @perch_tm = frames.nil? ? -> { 25.0 + rand(50.0) } : frames
120
128
  @perch_y = ground.nil? ? @h : ground
121
- @perch = chance
129
+ @perchance = chance
122
130
  end
123
131
 
124
132
  def no_perch
125
- @perch = 0.0
133
+ @perchance = 0.0
126
134
  end
127
135
 
128
136
  def goal(target:, flee: false)
@@ -138,7 +146,8 @@ class Boids
138
146
 
139
147
  def constrain
140
148
  # Put them boids in a cage.
141
- dx, dy = @w * 0.1, @h * 0.1
149
+ dx = @w * 0.1
150
+ dy = @h * 0.1
142
151
  each do |b|
143
152
  b.vel.x += rand(dx) if b.pos.x < @x - dx
144
153
  b.vel.x += rand(dy) if b.pos.y < @y - dy
@@ -146,9 +155,10 @@ class Boids
146
155
  b.vel.y -= rand(dy) if b.pos.y > @y + @h + dy
147
156
  b.vel.z += 10.0 if b.pos.z < 0.0
148
157
  b.vel.z -= 10.0 if b.pos.z > 100.0
149
- next unless b.pos.y > perch_y && rand < perch
158
+ next unless b.pos.y > perch_y && rand < perchance
159
+
150
160
  b.pos.y = perch_y
151
- b.vel.y = -(b.vel.y.abs) * 0.2
161
+ b.vel.y = -b.vel.y.abs * 0.2
152
162
  b.is_perching = true
153
163
  b.perch_time = perch_tm.respond_to?(:call) ? perch_tm.call : perch_tm
154
164
  end
@@ -166,7 +176,7 @@ class Boids
166
176
  m2 = 1.0 # separation
167
177
  m3 = 1.0 # alignment
168
178
  m4 = 1.0 # goal
169
- @scattered = true if !(@scattered) && rand < @scatter
179
+ @scattered = true if !@scattered && rand < @scatter
170
180
  if @scattered
171
181
  m1 = -m1
172
182
  m3 *= 0.25
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ java_import Java::Monkstone::ColorUtil
4
+
5
+ # class wraps a java color array, supports shuffle!, last and ruby_string
6
+ # as well as ability to initialize with an array of "web" color string
7
+ class ColorGroup
8
+ attr_reader :colors
9
+ def initialize(p5cols)
10
+ @colors = p5cols
11
+ end
12
+
13
+ def self.from_web_array(web)
14
+ ColorGroup.new(ColorUtil.web_array(web.to_java(:string)))
15
+ end
16
+
17
+ def shuffle!
18
+ @colors = ColorUtil.shuffle(colors)
19
+ end
20
+
21
+ def ruby_string
22
+ ColorUtil.rubyString(colors)
23
+ end
24
+
25
+ def last
26
+ colors[0]
27
+ end
28
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Here's a little library for quickly hooking up controls to sketches.
2
4
  # For messing with the parameters and such.
3
5
  # These controls will set instance variables on the sketches.
@@ -25,7 +27,7 @@ module ControlPanel
25
27
  add_change_listener do
26
28
  update_label(label, name, value)
27
29
  ControlPanel.app_value(name, value)
28
- proc.call(value) if proc
30
+ proc&.call(value)
29
31
  end
30
32
  ControlPanel.app_value(name, val)
31
33
  end
@@ -49,7 +51,7 @@ module ControlPanel
49
51
  control_panel.add_element(self, name)
50
52
  add_action_listener do
51
53
  ControlPanel.app_value(name, value) unless value.nil?
52
- proc.call(value) if proc
54
+ proc&.call(value)
53
55
  end
54
56
  set_selected_index(initial_value ? elements.index(initial_value) : 0)
55
57
  end
@@ -69,7 +71,7 @@ module ControlPanel
69
71
  control_panel.add_element(self, name, false)
70
72
  add_action_listener do
71
73
  ControlPanel.app_value(name, value)
72
- proc.call(value) if proc
74
+ proc&.call(value)
73
75
  end
74
76
  end
75
77
 
@@ -87,7 +89,7 @@ module ControlPanel
87
89
  control_panel.add_element(self, name, false, true)
88
90
  add_action_listener do
89
91
  Propane.app.send(name)
90
- proc.call(value) if proc
92
+ proc&.call(value)
91
93
  end
92
94
  end
93
95
  end
@@ -160,7 +162,7 @@ module ControlPanel
160
162
  def feel(lf = 'metal')
161
163
  lafinfo = javax.swing.UIManager.getInstalledLookAndFeels
162
164
  laf = lafinfo.to_ary.find do |info|
163
- info.name =~ Regexp.new(Regexp.escape(lf), Regexp::IGNORECASE)
165
+ Regexp.new(Regexp.escape(lf), Regexp::IGNORECASE).match?(info.name)
164
166
  end
165
167
  javax.swing.UIManager.setLookAndFeel(laf.class_name)
166
168
  end
@@ -171,6 +173,7 @@ module ControlPanel
171
173
  def control_panel
172
174
  @control_panel ||= ControlPanel::Panel.new
173
175
  return @control_panel unless block_given?
176
+
174
177
  yield(@control_panel)
175
178
  @control_panel.display
176
179
  @control_panel.set_visible true
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ # @TODO usage
4
+ class Propane::App
5
+ java_import Java::ProcessingDxf::RawDXF
6
+ end
@@ -1,18 +1,19 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  # Usage: :wq
3
4
  # load_library :chooser
4
- #
5
+ #
5
6
  # def setup
6
- # java_signature 'void selectInput(String, String)'
7
- # selectInput('Select a file to process:', 'fileSelected')
7
+ # java_signature 'void selectInput(String, String)'
8
+ # selectInput('Select a file to process:', 'fileSelected')
8
9
  # end
9
- #
10
+ #
10
11
  # def fileSelected(selection)
11
- # if selection.nil?
12
- # puts 'Window was closed or the user hit cancel.'
13
- # else
14
- # puts format('User selected %s', selection.get_absolute_path)
15
- # end
12
+ # if selection.nil?
13
+ # puts 'Window was closed or the user hit cancel.'
14
+ # else
15
+ # puts format('User selected %s', selection.get_absolute_path)
16
+ # end
16
17
  # end
17
18
  class Propane::App
18
19
  include Java::MonkstoneFilechooser::Chooser
@@ -1,18 +1,19 @@
1
1
  # frozen_string_literal: true
2
- # Usage:
2
+
3
+ # Usage:
3
4
  # load_library :file_chooser
4
5
  # class ...
5
6
  # def setup
6
- # java_signature 'void selectInput(String, String)'
7
- # selectInput('Select a file to process:', 'fileSelected')
7
+ # java_signature 'void selectInput(String, String)'
8
+ # selectInput('Select a file to process:', 'fileSelected')
8
9
  # end
9
- #
10
+ #
10
11
  # def fileSelected(selection)
11
- # if selection.nil?
12
- # puts 'Window was closed or the user hit cancel.'
13
- # else
14
- # puts format('User selected %s', selection.get_absolute_path)
15
- # end
12
+ # if selection.nil?
13
+ # puts 'Window was closed or the user hit cancel.'
14
+ # else
15
+ # puts format('User selected %s', selection.get_absolute_path)
16
+ # end
16
17
  # end
17
18
  # ...
18
19
  class Propane::App
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  java_import Java::MonkstoneCore::LibraryProxy
2
4
  java_import Java::ProcessingEvent::KeyEvent
3
5
  java_import Java::ProcessingEvent::MouseEvent
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ # @TODO usage
4
+ class Propane::App
5
+ java_import Java::ProcessingNet::Client
6
+ java_import Java::ProcessingNet::Server
7
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Propane::App
2
4
  SimplexNoise = Java::MonkstoneNoise::SimplexNoise
3
5
  end