ruby-processing 2.6.1 → 2.6.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c0aaf568197ed0c33de6d5ee76ee799e488dbf7c
4
- data.tar.gz: 141086257f20b9b623a7092ba17b857e22e0e694
3
+ metadata.gz: 3c47bf5ca5b3ccfac13e28bc08b675ca3ebed4a4
4
+ data.tar.gz: 9f852f28cebf20c5f4f040da1f18b59c46520e49
5
5
  SHA512:
6
- metadata.gz: 4dcfc3f5a0ae54e209ffd00ce00844287a3c5811ba352b657a42d9e47d526466a6ab97ed535b4a50d4fe6f615fc81f686008b54fe3ecb80cf2a6e95e149fe4e0
7
- data.tar.gz: 05c8de38b6678bcbb3ee193306deed6c8f4d9d45a3b9762bd62465ef27b6b1ef0581fdf2e5e035d083b049086b899ea9d4897b2507be605ae41d6f0c9beca0de
6
+ metadata.gz: 06009cf60df0dfd4d03655e8672d8dd6fcce75cc66892bc5ed7a5941b6ad81f3b36449bee4930b54ac2ef474e2834bc997436a354615a4dc71d5dfe7ab125523
7
+ data.tar.gz: e637f0ded0113ed8b710cf1b9107b7e17c4cee235b0caab5968d78eb1449710dab2639be81084790c30934ac6d4164a84f44e549667859bd39b61a8d6c0adebd
data/lib/rpextras.jar CHANGED
Binary file
@@ -103,6 +103,7 @@ module Processing
103
103
 
104
104
  def initialize(options={})
105
105
  super()
106
+ post_initialize(options)
106
107
  $app = self
107
108
  proxy_java_fields
108
109
  set_sketch_path #unless Processing.online?
@@ -129,8 +130,10 @@ module Processing
129
130
  args << "--present"
130
131
  end
131
132
  @render_mode ||= JAVA2D
132
- x = options[:x] || 0
133
- y = options[:y] || 0
133
+ xc = Processing::RP_CONFIG["X_OFF"] ||= 0
134
+ yc = Processing::RP_CONFIG["Y_OFF"] ||= 0
135
+ x = options[:x] || xc
136
+ y = options[:y] || yc
134
137
  args << "--location=#{x},#{y}" # important no spaces here
135
138
  title = options[:title] || File.basename(SKETCH_PATH).sub(/(\.rb)$/, '').titleize
136
139
  args << title
@@ -152,6 +155,10 @@ module Processing
152
155
  super(*args)
153
156
  end
154
157
 
158
+ def post_initialize(args)
159
+ nil
160
+ end
161
+
155
162
  # Make sure we set the size if we set it before we start the animation thread.
156
163
  def start
157
164
  self.size(@width, @height) if @width && @height
@@ -74,6 +74,12 @@ module Processing
74
74
  def map(value, start1, stop1, start2, stop2)
75
75
  start2 + (stop2 - start2) * ((value - start1).to_f / (stop1 - start1))
76
76
  end
77
+
78
+ # ruby alternative implementation of map using range parameters
79
+ # NB: (begin .. end) and excluded end (begin ... end) versions produce the same result
80
+ def map1d(val, r_in, r_out)
81
+ r_out.begin + (r_out.end - r_out.begin) * ((val - r_in.begin).to_f / (r_in.end - r_in.begin))
82
+ end
77
83
 
78
84
  # explicitly provide 'processing.org' norm instance method
79
85
  def norm(value, start, stop)
@@ -98,24 +104,7 @@ module Processing
98
104
  def max(*args)
99
105
  args.max { |a, b| a <=> b }
100
106
  end
101
-
102
- # explicitly provide 'processing.org' abs instance method
103
- def abs(val)
104
- warn 'abs(val) is deprecated use val.abs to avoid this warning'
105
- val.abs
106
- end
107
-
108
- # explicitly provide 'processing.org' ceil instance method
109
- def ceil(val)
110
- warn 'ceil(val) is deprecated use val.ceil to avoid this warning'
111
- val.ceil
112
- end
113
-
114
- # explicitly provide 'processing.org' round instance method
115
- def round(val)
116
- warn 'round(val) is deprecated use val.round to avoid this warning'
117
- val.round
118
- end
107
+
119
108
 
120
109
  # explicitly provide 'processing.org' dist instance method
121
110
  def dist(*args)
@@ -133,100 +122,6 @@ module Processing
133
122
  (amt < low) ? low : ((amt > high) ? high : amt)
134
123
  end
135
124
 
136
- # explicitly provide 'processing.org' pow instance method
137
- def pow(x, exp)
138
- warn 'pow(x, exp) is deprecated use x**exp to avoid this warning'
139
- x**exp
140
- end
141
-
142
- # explicitly provide 'processing.org' radians instance method
143
- def radians(theta)
144
- warn 'radians(theta) is deprecated use theta.radians to avoid this warning'
145
- theta.radians
146
- end
147
-
148
- # explicitly provide 'processing.org' degrees instance method
149
- def degrees(theta)
150
- warn 'degrees(theta) is deprecated use theta.radians to avoid this warning'
151
- theta.degrees
152
- end
153
-
154
- # explicitly provide 'processing.org' hex instance method
155
- def hex(x)
156
- warn 'hex(x) is deprecated use x.hex to avoid this warning'
157
- x.hex
158
- end
159
-
160
- # explicitly provide 'processing.org' unhex instance method
161
- def unhex(str)
162
- warn 'unhex(str) is deprecated use str.to_i(base=16)'
163
- str.to_i(base=16)
164
- end
165
-
166
- # explicitly provide 'processing.org' binary instance method
167
- def binary(x)
168
- warn 'binary(x) is deprecated use x.to_s(2) to avoid this warning'
169
- x.to_s(2)
170
- end
171
-
172
- # explicitly provide 'processing.org' unbinary instance method
173
- def unbinary(str)
174
- warn 'unbinary(str) is deprecated use str.to_i(base=2)'
175
- str.to_i(base=2)
176
- end
177
-
178
- # explicitly provide 'processing.org' nf instance method
179
- def nf(*args)
180
- warn 'nf(num, digits) is deprecated use num.to_s.rjust(digits) '\
181
- 'to avoid this warning'
182
- if args.length == 2
183
- return args[0].to_s.rjust(args[1], '0')
184
- elsif args.length == 3
185
- return args[0].to_s.rjust(args[1], '0').ljust(args[1] + args[2], '0')
186
- else
187
- fail ArgumentError, 'takes 2 or 3 parameters'
188
- end
189
- end
190
-
191
- # explicitly provide 'processing.org' mag instance method
192
- def mag(*vec)
193
- warn 'mag(x, y) is deprecated use hypot(x, y)'
194
- if vec.length == 2
195
- return hypot(vec[0], vec[1])
196
- elsif vec.length == 3
197
- return Math.sqrt(vec[0] * vec[0] + vec[1] * vec[1] + vec[2] * vec[2])
198
- else
199
- fail ArgumentError, 'takes 2 or 3 parameters'
200
- end
201
- end
202
- # explicitly provide 'processing.org' trim instance method
203
- def trim(str)
204
- warn 'deprecated use str.strip'
205
- str.strip
206
- end
207
-
208
- # explicitly provide 'processing.org' println instance method
209
- def println(str)
210
- warn 'deprecated use puts(str)'
211
- puts str
212
- end
213
-
214
- # explicitly provide 'processing.org' hour instance method
215
- def hour
216
- warn 'deprecated use t = Time.now and t.hour'
217
- PApplet.hour
218
- end
219
-
220
- # explicitly provide 'processing.org' second instance method
221
- def second
222
- warn 'deprecated use t = Time.now and t.sec'
223
- PApplet.second
224
- end
225
-
226
- # explicitly provide 'processing.org' minute instance method
227
- def minute
228
- PApplet.minute
229
- end
230
125
 
231
126
  # Uses PImage class method under hood
232
127
  def blend_color(c1, c2, mode)
@@ -140,8 +140,13 @@ module Processing
140
140
  show_version
141
141
  root = ' PROCESSING_ROOT = Not Set!!!' unless proc_root
142
142
  root ||= " PROCESSING_ROOT = #{Processing::RP_CONFIG['PROCESSING_ROOT']}"
143
+ jruby = Processing::RP_CONFIG['JRUBY']
144
+ x_off = Processing::RP_CONFIG['X_OFF']
145
+ y_off = Processing::RP_CONFIG['Y_OFF']
143
146
  puts root
144
- puts " JRUBY = #{Processing::RP_CONFIG['JRUBY']}"
147
+ puts " JRUBY = #{jruby}" unless jruby.nil?
148
+ puts " X_OFF = #{x_off}" unless x_off.nil?
149
+ puts " Y_OFF = #{y_off}" unless y_off.nil?
145
150
  puts " jruby-complete installed = #{installed}"
146
151
  end
147
152
 
@@ -159,11 +164,12 @@ module Processing
159
164
 
160
165
  private
161
166
 
162
- # Trade in this Ruby instance for a JRuby instance, loading in a
163
- # starter script and passing it some arguments.
164
- # Unless --nojruby is passed, use the installed version of jruby, instead of
165
- # our vendored jarred one (vendored version is required for some sketches eg shaders).
166
- # For people with system jruby they can use ~.rp5rc config to use option without flag
167
+ # Trade in this Ruby instance for a JRuby instance, loading in a starter
168
+ # script and passing it some arguments.Unless '--nojruby' is passed, the
169
+ # installed version of jruby is used instead of our vendored jarred one
170
+ # (which is required for some sketches eg shaders and for export). To use
171
+ # jruby-complete by default set JRUBY: false in ~/.rp5rc config
172
+ # (but that will make using other gems in your sketches hard....)
167
173
  def spin_up(starter_script, sketch, args)
168
174
  runner = "#{RP5_ROOT}/lib/ruby-processing/runners/#{starter_script}"
169
175
  warn('The --jruby flag is no longer required') if @options.jruby
@@ -1,3 +1,3 @@
1
1
  module RubyProcessing
2
- VERSION = '2.6.1'
2
+ VERSION = '2.6.2'
3
3
  end
@@ -1,10 +1,11 @@
1
+ import java.io.File;
2
+
1
3
  Button enter, nojruby;
2
4
  String processingRoot = "enter your processing root here"; // edit this line in the sketch
3
5
  String done = "Done";
4
6
  String OS = System.getProperty("os.name").toLowerCase();
5
7
  String home, suggestion, separator, root;
6
8
  PFont font;
7
- StringBuilder header = new StringBuilder(200);
8
9
  float rectX, rectX2, rectY; // Position of buttons
9
10
  float rectHeight = 30; // height of rect
10
11
  float rectWidth = 90; // width of rect
@@ -16,17 +17,16 @@ boolean acceptOver = false;
16
17
  boolean noJruby = false;
17
18
  boolean selected = false;
18
19
  boolean no_jruby = false;
19
-
20
+ // The JSON object
21
+ JSONObject json;
20
22
 
21
23
  void setup() {
22
24
  size(600, 200);
23
25
  home = System.getProperty("user.home");
24
26
  File f = new File(home);
27
+ json = new JSONObject();
25
28
  root = f.getParent();
26
29
  separator = System.getProperty("file.separator");
27
- header.append("# YAML configuration file for ruby-processing\n");
28
- header.append("# RP5HOME: \"").append(root).append(separator).append("ruby193 ... ").append(separator);
29
- header.append("ruby-processing\" #windows users may need to set this\n");
30
30
  font = createFont("Helvetica", 18);
31
31
  if (OS.contains("mac")) {
32
32
  suggestion = "/Applications/Processing.app/Contents/Resources/Java";
@@ -40,7 +40,7 @@ void setup() {
40
40
  selectedColor = color(0);
41
41
  rectX = rectWidth + 20;
42
42
  rectX2 = rectWidth + 150;
43
- rectY = height * 0.8f - rectHeight / 4;
43
+ rectY = height * 0.8 - rectHeight / 4;
44
44
  enter = new Button(rectX2, rectY, rectWidth, rectHeight, "enter");
45
45
  nojruby = new Button(rectX, rectY, rectWidth, rectHeight, "nojruby");
46
46
  }
@@ -71,19 +71,16 @@ void draw() {
71
71
  void writeRoot() {
72
72
  rectColor = selectedColor;
73
73
  rectHighlight = selectedColor;
74
- header.append("PROCESSING_ROOT: \"").append(processingRoot).append("\"\n");
75
- if (no_jruby) {
76
- header.append("JRUBY: \'false\'\n");
77
- } else {
78
- header.append("JRUBY: \'true\'\n");
79
- }
80
- PrintWriter pw = createWriter(home + separator + ".rp5rc");
81
- pw.append(header);
82
- pw.flush();
83
- pw.close();
74
+ json.setString("PROCESSING_ROOT", processingRoot);
75
+ json.setBoolean("JRUBY", no_jruby);
76
+ json.setInt("X_OFF", floor(displayWidth * 0.1));
77
+ json.setInt("Y_OFF", floor(displayHeight * 0.1));
78
+
79
+ saveJSONObject(json, home + separator + ".rp5rc");
84
80
  processingRoot = done;
85
81
  }
86
82
 
83
+
87
84
  void keyReleased() {
88
85
  if (key != CODED) {
89
86
  switch (key) {
@@ -108,6 +105,7 @@ void update(float x, float y) {
108
105
  noJruby = nojruby.overRect();
109
106
  }
110
107
 
108
+
111
109
  void mouseClicked() {
112
110
  update(mouseX, mouseY);
113
111
  if (acceptOver) {
@@ -147,4 +145,3 @@ class Button {
147
145
  && mouseY >= y && mouseY <= y + h);
148
146
  }
149
147
  }
150
-
@@ -0,0 +1,26 @@
1
+ # Hooky class demonstrates how to use the post_initialize hook,
2
+ # available since ruby-processing-2.6.2, to additional attribute
3
+ # in this case :background as an array of int (splat to color)
4
+ # Not sure how clever it is to have multiple sketch instances.
5
+
6
+ class Hooky < Processing::App
7
+ attr_reader :back
8
+
9
+ def setup
10
+ size 200, 200
11
+ background(*back)
12
+ end
13
+
14
+ def post_initialize(args)
15
+ @back = (args[:background])
16
+ end
17
+ end
18
+
19
+ red = [200, 0, 0]
20
+ green = [0, 200, 0]
21
+ blue = [0, 0, 200]
22
+ colors = [red, green, blue]
23
+
24
+ colors.each_with_index do |col, i|
25
+ Hooky.new(x: i * 90, y: i * 90, title: "Hooky #{i}", background: col)
26
+ end
@@ -0,0 +1,75 @@
1
+ # An example demonstrating the use of a hook to decouple subclasses in
2
+ # ruby-processing. The base class here is Spin, and we have included
3
+ # post_initialize as the hook (it does nothing in the base class). SpinArm
4
+ # and SpinSpots both subclass Spin, but only SpinSpots requires the hook to
5
+ # change the initialization. Note the use the hook means the subclass does
6
+ # not need to call super
7
+
8
+ def setup
9
+ size 640, 360
10
+ @arm = SpinArm.new(x: width / 2, y: height / 2, s: 0.01)
11
+ @spots = SpinSpots.new(x: width / 2, y: height / 2, s: -0.02, d: 90.0)
12
+ end
13
+
14
+ def draw
15
+ background 204
16
+ @arm.display
17
+ @spots.display
18
+ end
19
+
20
+ class Spin
21
+
22
+ attr_accessor :x, :y, :speed
23
+ attr_accessor :angle
24
+
25
+ def initialize(args = {})
26
+ @x, @y = args[:x], args[:y]
27
+ @speed = args[:s]
28
+ @angle = args[:angle] || 0.0
29
+ post_initialize(args) # this is the hook
30
+ end
31
+
32
+ def update
33
+ @angle += speed
34
+ end
35
+
36
+ def post_initialize(_args)
37
+ nil
38
+ end
39
+
40
+ end
41
+
42
+ class SpinArm < Spin # inherit from (or "extend") class Spin
43
+ # NB: initialize inherited from Spin class
44
+
45
+ def display
46
+ stroke_weight 1
47
+ stroke 0
48
+ push_matrix
49
+ translate x, y
50
+ update
51
+ rotate angle
52
+ line 0, 0, 165, 0
53
+ pop_matrix
54
+ end
55
+ end
56
+
57
+
58
+ class SpinSpots < Spin
59
+ attr_accessor :dim
60
+
61
+ def post_initialize(args)
62
+ @dim = args[:d]
63
+ end
64
+
65
+ def display
66
+ no_stroke
67
+ push_matrix
68
+ translate x, y
69
+ update
70
+ rotate angle
71
+ ellipse(-dim / 2, 0, dim, dim)
72
+ ellipse(dim / 2, 0, dim, dim)
73
+ pop_matrix
74
+ end
75
+ end
data/vendors/Rakefile CHANGED
@@ -3,12 +3,12 @@ require 'rake/clean'
3
3
  WARNING = <<-EOS
4
4
  WARNING: you may not have wget installed, you could just download
5
5
  the correct version of jruby-complete to the vendors folder, and
6
- re-run k9 setup install instead of installing wget. Some systems
6
+ re-run rp5 setup install instead of installing wget. Some systems
7
7
  may also require 'sudo' access to install, NB: this is untested....
8
8
 
9
9
  EOS
10
10
 
11
- JRUBY_VERSION = "1.7.14"
11
+ JRUBY_VERSION = "1.7.15"
12
12
 
13
13
  CLOBBER.include("jruby-complete-#{JRUBY_VERSION}.jar")
14
14
 
@@ -20,11 +20,11 @@ task :download => ["jruby-complete-#{JRUBY_VERSION}.jar"]
20
20
 
21
21
  file "jruby-complete-#{JRUBY_VERSION}.jar" do
22
22
  begin
23
- sh "wget http://jruby.org.s3.amazonaws.com/downloads/#{JRUBY_VERSION}/jruby-complete-#{JRUBY_VERSION}.jar"
24
- check_sha1("jruby-complete-#{JRUBY_VERSION}.jar", "ad70c18834a143afa6686ebcda27351ebfef7385")
23
+ sh "wget http://jruby.org.s3.amazonaws.com/downloads/#{JRUBY_VERSION}/jruby-complete-#{JRUBY_VERSION}.jar"
25
24
  rescue
26
25
  warn(WARNING)
27
26
  end
27
+ check_sha1("jruby-complete-#{JRUBY_VERSION}.jar", "4d9cb332bad3633c9c23a720542f456dc0c58a81")
28
28
  end
29
29
 
30
30
  directory "../lib/ruby"
@@ -46,3 +46,6 @@ def check_sha1(filename, expected_hash)
46
46
  raise "bad sha1 checksum for #{filename} (expected #{expected_hash} got #{sha1.hexdigest})"
47
47
  end
48
48
  end
49
+
50
+
51
+
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.1
4
+ version: 2.6.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeremy Ashkenas
@@ -18,7 +18,7 @@ authors:
18
18
  autorequire:
19
19
  bindir: bin
20
20
  cert_chain: []
21
- date: 2014-08-30 00:00:00.000000000 Z
21
+ date: 2014-09-04 00:00:00.000000000 Z
22
22
  dependencies:
23
23
  - !ruby/object:Gem::Dependency
24
24
  name: bundler
@@ -813,6 +813,8 @@ files:
813
813
  - samples/processing_app/topics/motion/puff.rb
814
814
  - samples/processing_app/topics/motion/reflection1.rb
815
815
  - samples/processing_app/topics/motion/reflection2.rb
816
+ - samples/processing_app/topics/ruby_hook/hooky.rb
817
+ - samples/processing_app/topics/ruby_hook/subclass.rb
816
818
  - samples/processing_app/topics/shaders/README
817
819
  - samples/processing_app/topics/shaders/Rakefile
818
820
  - samples/processing_app/topics/shaders/blur_filter.rb