ruby-processing 2.6.8 → 2.6.9
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.
- checksums.yaml +4 -4
- data/lib/ruby-processing/exporters/creator.rb +2 -2
- data/lib/ruby-processing/helper_methods.rb +56 -39
- data/lib/ruby-processing/helpers/range.rb +3 -7
- data/lib/ruby-processing/runners/base.rb +10 -10
- data/lib/ruby-processing/runners/watch.rb +5 -3
- data/lib/ruby-processing/version.rb +1 -1
- data/vendors/Rakefile +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dcf4cc5227072fee5745bcb0c8bac9b58d337b88
|
4
|
+
data.tar.gz: 7ea02eb4fbd00855ec8c0b8dab79e407cfb3dfb6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e04d303df785d8809cc221da6572e2e3bbf71240d94b7c70ebf77d61714d38024f14c4f7575816f342a320ee9ded4d099caf80c605c8a544f30e69a4de100ade
|
7
|
+
data.tar.gz: d9afb5ed70c0116bf80593fd716cf784721052f073acf5102fc3a63af664d31b5a9a89e344d28781e0c2ab5fc329b31f13bf7e01bdb33af6815b88d95d7522e2
|
@@ -19,7 +19,7 @@ end
|
|
19
19
|
CODE
|
20
20
|
|
21
21
|
CLASS_BASIC = <<-CODE
|
22
|
-
class %s
|
22
|
+
class %s < Processing::App
|
23
23
|
def setup
|
24
24
|
size %s, %s
|
25
25
|
end
|
@@ -31,7 +31,7 @@ end
|
|
31
31
|
CODE
|
32
32
|
|
33
33
|
CLASS_MODE = <<-CODE
|
34
|
-
class %s
|
34
|
+
class %s < Processing::App
|
35
35
|
def setup
|
36
36
|
size %s, %s, %s
|
37
37
|
end
|
@@ -13,7 +13,7 @@ module Processing
|
|
13
13
|
buf.end_draw
|
14
14
|
buf
|
15
15
|
end
|
16
|
-
|
16
|
+
|
17
17
|
# A nice method to run a given block for a grid.
|
18
18
|
# Lifted from action_coding/Nodebox.
|
19
19
|
def grid(cols, rows, col_size = 1, row_size = 1)
|
@@ -23,13 +23,13 @@ module Processing
|
|
23
23
|
yield x, y
|
24
24
|
end
|
25
25
|
end
|
26
|
-
|
26
|
+
|
27
27
|
# lerp_color takes three or four arguments, in Java that's two
|
28
28
|
# different methods, one regular and one static, so:
|
29
29
|
def lerp_color(*args)
|
30
30
|
args.length > 3 ? self.class.lerp_color(*args) : super(*args)
|
31
31
|
end
|
32
|
-
|
32
|
+
|
33
33
|
def color(*args)
|
34
34
|
a = args[0]
|
35
35
|
# convert to signed int
|
@@ -43,7 +43,7 @@ module Processing
|
|
43
43
|
end
|
44
44
|
super(*args)
|
45
45
|
end
|
46
|
-
|
46
|
+
|
47
47
|
# Overrides Processing convenience function thread, which takes a String
|
48
48
|
# arg (for a function) to more rubylike version, takes a block...
|
49
49
|
def thread(&block)
|
@@ -53,50 +53,67 @@ module Processing
|
|
53
53
|
fail ArgumentError, 'thread must be called with a block', caller
|
54
54
|
end
|
55
55
|
end
|
56
|
-
|
56
|
+
|
57
57
|
# Explicitly provides 'processing.org' map instance method, in which
|
58
58
|
# value is mapped from range 1, to range 2 (NB: values are not clamped to
|
59
59
|
# range 1). It may be better to explicitly write your own interpolate
|
60
60
|
# function
|
61
61
|
# @param [float] value input
|
62
62
|
# @param [range] start1, stop1
|
63
|
-
# @param [range]
|
63
|
+
# @param [range] start2, stop2
|
64
64
|
# @return [float] mapped value
|
65
65
|
def map(value, start1, stop1, start2, stop2)
|
66
66
|
start2 + (stop2 - start2) * ((value - start1).to_f / (stop1 - start1))
|
67
67
|
end
|
68
|
-
|
68
|
+
|
69
69
|
# ruby alternative implementation of map using range parameters
|
70
70
|
# (begin..end) and excluded end (begin...end) produce the same result
|
71
71
|
def map1d(val, r_in, r_out)
|
72
72
|
r_out.begin + (r_out.end - r_out.begin) *
|
73
73
|
((val - r_in.begin).to_f / (r_in.end - r_in.begin))
|
74
74
|
end
|
75
|
-
|
75
|
+
|
76
|
+
# Explicitly provides 'processing.org' map instance method, where
|
77
|
+
# value is mapped from range 1 to range 2 where values are clamped to
|
78
|
+
# range 2.
|
79
|
+
# @param val input
|
80
|
+
# @param [r_in] start1, stop1
|
81
|
+
# @param [r_out] start2, stop2
|
82
|
+
# @return mapped value
|
83
|
+
def constrained_map(val, r_in, r_out)
|
84
|
+
unless r_in.include? val
|
85
|
+
return r_out.begin if (val < r_in.begin && r_in.begin < r_in.end) ||
|
86
|
+
(val > r_in.begin && r_in.begin > r_in.end)
|
87
|
+
return r_out.end
|
88
|
+
end
|
89
|
+
r_out.begin + (r_out.end - r_out.begin) *
|
90
|
+
((val - r_in.begin).to_f / (r_in.end - r_in.begin))
|
91
|
+
end
|
92
|
+
|
76
93
|
# explicitly provide 'processing.org' norm instance method
|
77
94
|
def norm(value, start, stop)
|
78
95
|
(value - start).to_f / (stop - start)
|
79
96
|
end
|
80
|
-
|
97
|
+
|
81
98
|
# explicitly provide 'processing.org' lerp instance method
|
82
99
|
def lerp(start, stop, amt)
|
83
100
|
start + (stop - start) * amt
|
84
101
|
end
|
85
|
-
|
102
|
+
|
86
103
|
# explicitly provide 'processing.org' min instance method
|
87
104
|
# to return a float:- a, b and c need to be floats
|
88
|
-
|
105
|
+
|
89
106
|
def min(*args)
|
90
107
|
args.min # { |a,b| a <=> b } optional block not reqd
|
91
108
|
end
|
92
|
-
|
109
|
+
|
93
110
|
# explicitly provide 'processing.org' max instance method
|
94
111
|
# to return a float:- a, b and c need to be floats
|
95
|
-
|
112
|
+
|
96
113
|
def max(*args)
|
97
114
|
args.max # { |a, b| a <=> b } optional block not reqd
|
98
115
|
end
|
99
|
-
|
116
|
+
|
100
117
|
# explicitly provide 'processing.org' dist instance method
|
101
118
|
def dist(*args)
|
102
119
|
len = args.length
|
@@ -107,25 +124,25 @@ module Processing
|
|
107
124
|
end
|
108
125
|
fail ArgumentError, 'takes 4 or 6 parameters'
|
109
126
|
end
|
110
|
-
|
127
|
+
|
111
128
|
# explicitly provide 'processing.org' constrain instance method
|
112
129
|
# to return a float:- amt, low and high need to be floats
|
113
130
|
def constrain(amt, low, high)
|
114
131
|
(low..high).clip(amt)
|
115
132
|
end
|
116
|
-
|
133
|
+
|
117
134
|
# Uses PImage class method under hood
|
118
135
|
def blend_color(c1, c2, mode)
|
119
136
|
Java::ProcessingCore::PImage::blendColor(c1, c2, mode)
|
120
137
|
end
|
121
|
-
|
138
|
+
|
122
139
|
# There's just so many functions in Processing,
|
123
140
|
# Here's a convenient way to look for them.
|
124
141
|
def find_method(method_name)
|
125
142
|
reg = Regexp.new("#{method_name}", true)
|
126
143
|
methods.sort.select { |meth| reg.match(meth) }
|
127
144
|
end
|
128
|
-
|
145
|
+
|
129
146
|
# Proxy over a list of Java declared fields that have the same name as
|
130
147
|
# some methods. Add to this list as needed.
|
131
148
|
def proxy_java_fields
|
@@ -133,88 +150,88 @@ module Processing
|
|
133
150
|
methods = fields.map { |field| java_class.declared_field(field) }
|
134
151
|
@declared_fields = Hash[fields.zip(methods)]
|
135
152
|
end
|
136
|
-
|
153
|
+
|
137
154
|
# By default, your sketch path is the folder that your sketch is in.
|
138
155
|
# If you'd like to do something fancy, feel free.
|
139
156
|
def set_sketch_path(spath = nil)
|
140
157
|
field = @declared_fields['sketchPath']
|
141
158
|
field.set_value(java_self, spath || SKETCH_ROOT)
|
142
159
|
end
|
143
|
-
|
160
|
+
|
144
161
|
# Fix java conversion problems getting the last key
|
145
162
|
# If it's ASCII, return the character, otherwise the integer
|
146
163
|
def key
|
147
164
|
int = @declared_fields['key'].value(java_self)
|
148
165
|
int < 256 ? int.chr : int
|
149
166
|
end
|
150
|
-
|
167
|
+
|
151
168
|
# Provide a convenient handle for the Java-space version of self.
|
152
169
|
def java_self
|
153
170
|
@java_self ||= to_java(Java::ProcessingCore::PApplet)
|
154
171
|
end
|
155
|
-
|
172
|
+
|
156
173
|
# Get the sketch path
|
157
174
|
def sketch_path
|
158
175
|
@declared_fields['sketchPath'].value(java_self)
|
159
176
|
end
|
160
|
-
|
177
|
+
|
161
178
|
# Fields that should be made accessible as under_scored.
|
162
179
|
define_method(:mouse_x) { mouseX }
|
163
|
-
|
180
|
+
|
164
181
|
define_method(:mouse_y) { mouseY }
|
165
|
-
|
182
|
+
|
166
183
|
define_method(:pmouse_x) { pmouseX }
|
167
|
-
|
184
|
+
|
168
185
|
define_method(:pmouse_y) { pmouseY }
|
169
|
-
|
186
|
+
|
170
187
|
define_method(:frame_count) { frameCount }
|
171
|
-
|
188
|
+
|
172
189
|
define_method(:mouse_button) { mouseButton }
|
173
|
-
|
190
|
+
|
174
191
|
define_method(:key_code) { keyCode }
|
175
|
-
|
192
|
+
|
176
193
|
# Ensure that load_strings returns a real Ruby array
|
177
194
|
def load_strings(file_or_url)
|
178
195
|
loadStrings(file_or_url).to_a
|
179
196
|
end
|
180
|
-
|
197
|
+
|
181
198
|
# Writes an array of strings to a file, one line per string.
|
182
199
|
# This file is saved to the sketch's data folder
|
183
200
|
def save_strings(filename, strings)
|
184
201
|
saveStrings(filename, [strings].flatten.to_java(:String))
|
185
202
|
end
|
186
|
-
|
203
|
+
|
187
204
|
# frame_rate needs to support reading and writing
|
188
205
|
def frame_rate(fps = nil)
|
189
206
|
return @declared_fields['frameRate'].value(java_self) unless fps
|
190
207
|
super(fps)
|
191
208
|
end
|
192
|
-
|
209
|
+
|
193
210
|
# Is the mouse pressed for this frame?
|
194
211
|
def mouse_pressed?
|
195
212
|
@declared_fields['mousePressed'].value(java_self)
|
196
213
|
end
|
197
|
-
|
214
|
+
|
198
215
|
# Is a key pressed for this frame?
|
199
216
|
def key_pressed?
|
200
217
|
@declared_fields['keyPressed'].value(java_self)
|
201
|
-
end
|
202
|
-
|
218
|
+
end
|
219
|
+
|
203
220
|
private
|
204
|
-
|
221
|
+
|
205
222
|
def dist2d(*args)
|
206
223
|
dx = args[0] - args[2]
|
207
224
|
dy = args[1] - args[3]
|
208
225
|
return 0 if dx.abs < EPSILON && dy.abs < EPSILON
|
209
226
|
Math.hypot(dx, dy)
|
210
227
|
end
|
211
|
-
|
228
|
+
|
212
229
|
def dist3d(*args)
|
213
230
|
dx = args[0] - args[3]
|
214
231
|
dy = args[1] - args[4]
|
215
232
|
dz = args[2] - args[5]
|
216
233
|
return 0 if dx.abs < EPSILON && dy.abs < EPSILON && dz.abs < EPSILON
|
217
234
|
Math.sqrt(dx * dx + dy * dy + dz * dz)
|
218
|
-
end
|
235
|
+
end
|
219
236
|
end
|
220
237
|
end
|
@@ -6,15 +6,16 @@ SKETCH_ROOT ||= File.dirname(SKETCH_PATH)
|
|
6
6
|
require_relative '../../ruby-processing'
|
7
7
|
require_relative '../../ruby-processing/app'
|
8
8
|
|
9
|
+
# More processing module
|
9
10
|
module Processing
|
10
11
|
# For use with "bare" sketches that don't want to define a class or methods
|
11
|
-
|
12
|
+
BARE_WRAP = <<-EOS
|
12
13
|
class Sketch < Processing::App
|
13
14
|
%s
|
14
15
|
end
|
15
16
|
EOS
|
16
17
|
|
17
|
-
|
18
|
+
NAKED_WRAP = <<-EOS
|
18
19
|
class Sketch < Processing::App
|
19
20
|
def setup
|
20
21
|
size(DEFAULT_WIDTH, DEFAULT_HEIGHT)
|
@@ -27,15 +28,14 @@ module Processing
|
|
27
28
|
# This method is the common entry point to run a sketch, bare or complete.
|
28
29
|
def self.load_and_run_sketch
|
29
30
|
source = read_sketch_source
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
else
|
37
|
-
code = format(NAKED_TEMPLATE, source)
|
31
|
+
wrapped = !source.match(/^[^#]*< Processing::App/).nil?
|
32
|
+
no_methods = source.match(/^[^#]*(def\s+setup|def\s+draw)/).nil?
|
33
|
+
if wrapped
|
34
|
+
load SKETCH_PATH
|
35
|
+
Processing::App.sketch_class.new unless $app
|
36
|
+
return
|
38
37
|
end
|
38
|
+
code = no_methods ? format(NAKED_WRAP, source) : format(BARE_WRAP, source)
|
39
39
|
Object.class_eval code, SKETCH_PATH, -1
|
40
40
|
Processing::App.sketch_class.new
|
41
41
|
end
|
@@ -34,8 +34,10 @@ module Processing
|
|
34
34
|
def report_errors
|
35
35
|
yield
|
36
36
|
rescue Exception => e
|
37
|
-
|
38
|
-
|
37
|
+
wformat = 'Exception occured while running sketch %s...'
|
38
|
+
tformat = "Backtrace:\n\t%s"
|
39
|
+
warn format(wformat, File.basename(SKETCH_PATH))
|
40
|
+
puts format(tformat, e.backtrace.join("\n\t"))
|
39
41
|
end
|
40
42
|
|
41
43
|
def start_runner
|
@@ -48,7 +50,7 @@ module Processing
|
|
48
50
|
end
|
49
51
|
|
50
52
|
def reload_files_to_watch
|
51
|
-
@files =
|
53
|
+
@files = Dir.glob(File.join(SKETCH_ROOT, '**/*.rb'))
|
52
54
|
end
|
53
55
|
end
|
54
56
|
end
|
data/vendors/Rakefile
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-processing
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.6.
|
4
|
+
version: 2.6.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeremy Ashkenas
|
@@ -16,7 +16,7 @@ authors:
|
|
16
16
|
autorequire:
|
17
17
|
bindir: bin
|
18
18
|
cert_chain: []
|
19
|
-
date: 2015-04-
|
19
|
+
date: 2015-04-19 00:00:00.000000000 Z
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
22
|
requirement: !ruby/object:Gem::Requirement
|