jruby_art 0.2.4.pre → 0.2.6.pre
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/CHANGELOG.md +12 -1
- data/README.md +6 -4
- data/Rakefile +1 -1
- data/lib/jruby_art.rb +0 -5
- data/lib/jruby_art/app.rb +33 -19
- data/lib/jruby_art/config.rb +2 -4
- data/lib/jruby_art/version.rb +1 -1
- data/lib/rpextras.jar +0 -0
- data/library/library_proxy/library_proxy.rb +3 -0
- data/library/video/lib/export.txt +1 -0
- data/library/video/lib/macosx64.txt +1 -0
- data/library/video/lib/windows.txt +3 -0
- data/library/video/video.rb +12 -0
- data/spec/vecmath_spec.rb +208 -2
- data/vendors/Rakefile +44 -5
- metadata +8 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 186cf1166260ed477d29a53e4d6af5982ec61320
|
4
|
+
data.tar.gz: 778ff0c076f4fc7a5cae5e297713ee2154eadafd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5501b44349aefdbedd0531db69d1e539e85f2da546a0777da584b159540b03909e960ae6b433bbf5639dc3ba2795b9ac173837657a8f25b685af4735dfd0dcf0
|
7
|
+
data.tar.gz: 6a331e4710e2f8185e2cc535959e033b14906e35561d4625040fd43ab01523bdd5f84a0db04cd4f9bc39b1e4980ce65b2e69ac21ac78da1d721e313c9d43acd0
|
data/CHANGELOG.md
CHANGED
@@ -1,10 +1,19 @@
|
|
1
1
|
## JRubyArt CHANGELOG
|
2
2
|
|
3
3
|
It might seem a little of that this log starts at version 0.1.2, the reason for this is that previous version relate to earlier versions which were essentially a clone of ruby-processing.
|
4
|
+
### Version 0.2.6
|
5
|
+
|
6
|
+
Enable use of 'videoEvent' and 'captureEvent' java reflection methods by creating a 'VideoInterface' in a java class.
|
7
|
+
|
8
|
+
|
9
|
+
### Version 0.2.5
|
10
|
+
|
11
|
+
jruby-1.7.20 version
|
12
|
+
Revert to Processing::Proxy as a module, but implement :method_missing (after tyfkda processing ruby-mode), and java_import PConstants in that module. Require 'yaml' rather than 'psych' as workaround for builtin 'psych' in jruby.
|
4
13
|
|
5
14
|
### Version 0.2.4
|
6
15
|
|
7
|
-
Can't wait forever for jruby-9000, this release is
|
16
|
+
Can't wait forever for jruby-9000, this release is required to promote the new [toxiclibs gem][].
|
8
17
|
|
9
18
|
### Version 0.2.3
|
10
19
|
|
@@ -47,3 +56,5 @@ Move config file from ~/.k9rc to ~/.jruby_art/config.yml, created installer for
|
|
47
56
|
### Version 0.1.2
|
48
57
|
|
49
58
|
First point release, requires user build, supports 2D and opengl sketches, but no library support. Sketches will only run with jruby (jruby-complete is not included). To run sketches with load_image jruby-complete is required, so either provide that or use netbeans as your ide (with jruby plugin).
|
59
|
+
|
60
|
+
[toxiclibs gem]:https://github.com/ruby-processing/toxicgem
|
data/README.md
CHANGED
@@ -2,10 +2,11 @@
|
|
2
2
|
[](http://badge.fury.io/rb/jruby_art)
|
3
3
|
|
4
4
|
Is an alternative implementation of [ruby-processing][] that provides a ruby-wrapper for the java version of [processing][]. It is currently at the pre-release stage, but is ready for testing, and available from rubygems.org.
|
5
|
+
Core processing jars are included, so it does not require a vanilla processing install..., you should perhaps consider making a contribution to the [processing foundation][].
|
5
6
|
|
6
7
|
### Requirements
|
7
8
|
|
8
|
-
Java runtime 7+, and ruby (can be MRI ruby), curl (to download jruby-complete and examples, although there is a workaround).
|
9
|
+
Java runtime 7+, and ruby (can be MRI ruby), curl (to download jruby-complete and examples, although there is a workaround).
|
9
10
|
|
10
11
|
### Getting Started
|
11
12
|
|
@@ -51,13 +52,13 @@ However such sketches must be run with `k9 run sketch.rb`, however you can do 'k
|
|
51
52
|
|
52
53
|
###Ruby Versions
|
53
54
|
|
54
|
-
jruby-1.7.
|
55
|
+
jruby-1.7.20 (when sketches run with jruby command)
|
55
56
|
|
56
|
-
jruby-9.0.0.0.
|
57
|
+
jruby-9.0.0.0.pre2 also seems to work (the next pre-release will probably target jruby-9.0.0.0-pre2)
|
57
58
|
|
58
59
|
or
|
59
60
|
|
60
|
-
ruby-2.1.2+ (when sketches are run using k9 command, ie using jruby-complete)
|
61
|
+
ruby-2.1.2+ (when sketches are run using k9 command, ie using jruby-complete with jruby-9.0.0.0)
|
61
62
|
|
62
63
|
### Using netbeans as an ide for JRubyArt
|
63
64
|
|
@@ -87,3 +88,4 @@ ___
|
|
87
88
|
[netbeans]:http://learning-ruby-processing.blogspot.co.uk/2014/10/alternative-ruby-processing-implentation.html
|
88
89
|
[processing-2.2.1]:https://processing.org/download/
|
89
90
|
[processing-core]:https://github.com/ruby-processing/processing-core/blob/master/README.md
|
91
|
+
[processing foundation]:https://processing.org/download/
|
data/Rakefile
CHANGED
@@ -18,7 +18,7 @@ spec = Gem::Specification.new do |s|
|
|
18
18
|
s.description = "A ruby wrapper for processing, that doesn't require a separate install of processing"
|
19
19
|
s.license = 'MIT'
|
20
20
|
s.author = 'Martin Prout'
|
21
|
-
s.email = '
|
21
|
+
s.email = 'mamba2928@yahoo.co.uk'
|
22
22
|
s.homepage = 'https://github.com/ruby-processing/JRubyArt'
|
23
23
|
s.executables << 'k9'
|
24
24
|
s.files = %w(LICENSE.md README.md Rakefile CHANGELOG.md) + Dir.glob('{bin,lib,library,spec,vendors}/**/*')
|
data/lib/jruby_art.rb
CHANGED
@@ -15,14 +15,9 @@ if RUBY_PLATFORM == 'java'
|
|
15
15
|
# require_relative jar unless jar =~ /native/ (breaks netbeans)
|
16
16
|
require jar unless jar =~ /native/
|
17
17
|
end
|
18
|
-
#Dir[File.join(working_directory, platform)].each do |jar|
|
19
|
-
# require_relative jar (break netbeans)
|
20
|
-
# require jar
|
21
|
-
# end
|
22
18
|
Java::ProcessingFastmath::DeglutLibrary.new.load(JRuby.runtime, false)
|
23
19
|
Java::ProcessingVecmathVec2::Vec2Library.new.load(JRuby.runtime, false)
|
24
20
|
Java::ProcessingVecmathVec3::Vec3Library.new.load(JRuby.runtime, false)
|
25
|
-
|
26
21
|
AppRender = Java::ProcessingVecmath::AppRender
|
27
22
|
ShapeRender = Java::ProcessingVecmath::ShapeRender
|
28
23
|
require 'jruby_art/app'
|
data/lib/jruby_art/app.rb
CHANGED
@@ -26,14 +26,14 @@ module Processing
|
|
26
26
|
def post_initialize(_opts = {})
|
27
27
|
nil
|
28
28
|
end
|
29
|
-
|
29
|
+
|
30
30
|
# This method configures the sketch title and and presentation mode.
|
31
31
|
#
|
32
32
|
def configure_sketch
|
33
33
|
presentation_mode
|
34
34
|
sketch_title
|
35
35
|
end
|
36
|
-
|
36
|
+
|
37
37
|
# This method sets the sketch presentation mode.
|
38
38
|
#
|
39
39
|
def presentation_mode
|
@@ -41,20 +41,20 @@ module Processing
|
|
41
41
|
args << '--full-screen'
|
42
42
|
args << "--bgcolor=#{opts[:bgcolor]}" if opts[:bgcolor]
|
43
43
|
end
|
44
|
-
|
44
|
+
|
45
45
|
# This method is the main draw loop of the sketch. This is usually
|
46
46
|
# overridden by the user.
|
47
47
|
#
|
48
48
|
def draw
|
49
49
|
nil
|
50
50
|
end
|
51
|
-
|
51
|
+
|
52
52
|
# This method runs the processing sketch.
|
53
53
|
#
|
54
54
|
def run_sketch
|
55
55
|
PApplet.run_sketch(args.to_java(:string), self)
|
56
56
|
end
|
57
|
-
|
57
|
+
|
58
58
|
# This method sets the sketch title.
|
59
59
|
#
|
60
60
|
def sketch_title
|
@@ -73,22 +73,22 @@ module Processing
|
|
73
73
|
key_released: :keyReleased,
|
74
74
|
key_typed: :keyTyped
|
75
75
|
}
|
76
|
-
|
76
|
+
|
77
77
|
# This class is for default (Java2D) sketches only
|
78
78
|
class App < PApplet
|
79
79
|
include Math, Common, HelperMethods
|
80
80
|
attr_reader :title, :args, :opts
|
81
|
-
|
81
|
+
|
82
82
|
class << self
|
83
83
|
# Handy getters and setters on the class go here:
|
84
84
|
attr_accessor :sketch_class, :library_loader
|
85
|
-
|
85
|
+
|
86
86
|
def load_libraries(*args)
|
87
87
|
library_loader ||= LibraryLoader.new
|
88
88
|
library_loader.load_libraries(*args)
|
89
89
|
end
|
90
90
|
alias_method :load_library, :load_libraries
|
91
|
-
|
91
|
+
|
92
92
|
# When certain special methods get added to the sketch, we need to let
|
93
93
|
# Processing call them by their expected Java names.
|
94
94
|
def method_added(method_name) #:nodoc:
|
@@ -96,11 +96,11 @@ module Processing
|
|
96
96
|
alias_method METHODS_TO_ALIAS[method_name], method_name
|
97
97
|
end
|
98
98
|
end
|
99
|
-
|
99
|
+
|
100
100
|
def sketch_class
|
101
101
|
self.class.sketch_class
|
102
102
|
end
|
103
|
-
|
103
|
+
|
104
104
|
# App should be instantiated with an optional list of opts
|
105
105
|
# and array of args.
|
106
106
|
#
|
@@ -116,7 +116,7 @@ module Processing
|
|
116
116
|
configure_sketch
|
117
117
|
run_sketch
|
118
118
|
end
|
119
|
-
|
119
|
+
|
120
120
|
# This method provides the default setup for the sketch. It can
|
121
121
|
# be overridden by the user for finer grained control.
|
122
122
|
#
|
@@ -124,7 +124,7 @@ module Processing
|
|
124
124
|
size(width, height)
|
125
125
|
end
|
126
126
|
end
|
127
|
-
|
127
|
+
|
128
128
|
# This class is for opengl sketches (P2D and P3D)
|
129
129
|
class AppGL < PApplet
|
130
130
|
include Math, Processing, Common
|
@@ -132,7 +132,7 @@ module Processing
|
|
132
132
|
include HelperMethods
|
133
133
|
Java::ProcessingVecmathArcball::ArcballLibrary.new.load(JRuby.runtime, false)
|
134
134
|
attr_reader :title, :args, :opts
|
135
|
-
|
135
|
+
|
136
136
|
# App should be instantiated with an optional list of opts
|
137
137
|
# and array of args.
|
138
138
|
#
|
@@ -148,7 +148,7 @@ module Processing
|
|
148
148
|
configure_sketch
|
149
149
|
run_sketch
|
150
150
|
end
|
151
|
-
|
151
|
+
|
152
152
|
# This method provides the default setup for the sketch. It can
|
153
153
|
# be overridden by the user for finer grained control.
|
154
154
|
#
|
@@ -156,17 +156,17 @@ module Processing
|
|
156
156
|
size(width, height, mode = P3D)
|
157
157
|
fail unless /opengl/ =~ mode
|
158
158
|
end
|
159
|
-
|
159
|
+
|
160
160
|
class << self
|
161
161
|
# Handy getters and setters on the class go here:
|
162
162
|
attr_accessor :sketch_class, :library_loader
|
163
|
-
|
163
|
+
|
164
164
|
def load_libraries(*args)
|
165
165
|
library_loader ||= LibraryLoader.new
|
166
166
|
library_loader.load_libraries(*args)
|
167
167
|
end
|
168
168
|
alias_method :load_library, :load_libraries
|
169
|
-
|
169
|
+
|
170
170
|
# When certain special methods get added to the sketch, we need to let
|
171
171
|
# Processing call them by their expected Java names.
|
172
172
|
def method_added(method_name) #:nodoc:
|
@@ -175,5 +175,19 @@ module Processing
|
|
175
175
|
end
|
176
176
|
end
|
177
177
|
end
|
178
|
-
end
|
179
178
|
|
179
|
+
# Importing PConstants to access to processing constants,
|
180
|
+
# to keep namespace clean use PConstants::TRIANGLE (for example)
|
181
|
+
# or to use bare TRIANGLE also 'include PConstants'
|
182
|
+
# Using :method_missing to mimic inner class methods
|
183
|
+
# @HACK you should consider using 'forwardable' to avoid this
|
184
|
+
# egregious hack...
|
185
|
+
module Proxy
|
186
|
+
java_import 'processing.core.PConstants'
|
187
|
+
|
188
|
+
def method_missing(name, *args)
|
189
|
+
return $app.send(name, *args) if $app && $app.respond_to?(name)
|
190
|
+
super
|
191
|
+
end
|
192
|
+
end
|
193
|
+
end
|
data/lib/jruby_art/config.rb
CHANGED
@@ -1,13 +1,11 @@
|
|
1
|
-
require '
|
1
|
+
require 'yaml'
|
2
2
|
# The Processing module is a wrapper for JRubyArt
|
3
3
|
# Author:: Martin Prout (extends / re-implements ruby-processing)
|
4
4
|
module Processing
|
5
5
|
unless defined? RP_CONFIG
|
6
6
|
begin
|
7
7
|
CONFIG_FILE_PATH = File.expand_path('~/.jruby_art/config.yml')
|
8
|
-
|
9
|
-
RP_CONFIG = Psych.load(yaml)
|
10
|
-
end
|
8
|
+
RP_CONFIG = YAML.load_file(CONFIG_FILE_PATH)
|
11
9
|
rescue
|
12
10
|
warn('WARNING: you need to set PROCESSING_ROOT in ~/.jruby_art/config.yml')
|
13
11
|
end
|
data/lib/jruby_art/version.rb
CHANGED
data/lib/rpextras.jar
CHANGED
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
name = Video
|
@@ -0,0 +1 @@
|
|
1
|
+
Macosx requires binary blobs to use this library, copy the macosx64 folder from the
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'rpextras'
|
2
|
+
require_relative 'lib/video.jar'
|
3
|
+
require_relative 'lib/gstreamer-java.jar'
|
4
|
+
require_relative 'lib/jna.jar'
|
5
|
+
|
6
|
+
class Processing::App
|
7
|
+
include Java::ProcessingCore::VideoInterface
|
8
|
+
end
|
9
|
+
|
10
|
+
class Processing::AppGL
|
11
|
+
include Java::ProcessingCore::VideoInterface
|
12
|
+
end
|
data/spec/vecmath_spec.rb
CHANGED
@@ -34,7 +34,38 @@ describe 'Vec2D#==' do
|
|
34
34
|
it 'should return a == b' do
|
35
35
|
a = Vec2D.new(3, 5)
|
36
36
|
b = Vec2D.new(6, 7)
|
37
|
-
expect(a == b).to
|
37
|
+
expect(a == b).to be false
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
describe 'Vec2D#eql?' do
|
42
|
+
it 'should return a.eql? b' do
|
43
|
+
a = Vec2D.new(3.0, 5.0)
|
44
|
+
b = Vec2D.new(3.0, 5.0)
|
45
|
+
expect(a.eql?(b)).to be true
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
describe 'Vec2D#eql?' do
|
50
|
+
it 'should return a.eql? b' do
|
51
|
+
a = Vec2D.new(3.0, 5.0)
|
52
|
+
b = Vec2D.new(3.0, 5.000001)
|
53
|
+
expect(a.eql?(b)).to be false
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
describe 'Vec2D#equal?' do
|
58
|
+
it 'should return a.eql? b' do
|
59
|
+
a = Vec2D.new(3.0, 5.0)
|
60
|
+
expect(a.equal?(a)).to be true
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
describe 'Vec2D#equal?' do
|
65
|
+
it 'should return a.eql? b' do
|
66
|
+
a = Vec2D.new(3.0, 5.0)
|
67
|
+
b = Vec2D.new(3.0, 5.0)
|
68
|
+
expect(a.equal?(b)).to be false
|
38
69
|
end
|
39
70
|
end
|
40
71
|
|
@@ -42,7 +73,7 @@ describe 'Vec2D#==' do
|
|
42
73
|
it 'should return a == b' do
|
43
74
|
a = Vec2D.new(3.0000000, 5.00000)
|
44
75
|
b = Vec2D.new(3.0000000, 5.000001)
|
45
|
-
expect(a == b).to
|
76
|
+
expect(a == b).to be true
|
46
77
|
end
|
47
78
|
end
|
48
79
|
|
@@ -275,3 +306,178 @@ describe 'Vec2D#rotate rot' do
|
|
275
306
|
expect(a).to eq(Vec2D.new(-10.0, 20.0))
|
276
307
|
end
|
277
308
|
end
|
309
|
+
|
310
|
+
describe 'Vec3D#to_a' do
|
311
|
+
it 'should return x, y, z as an array' do
|
312
|
+
x, y, z = 1.0000001, 1.01, 0.999999
|
313
|
+
a = Vec3D.new(x, y, z)
|
314
|
+
expect(a.to_a).to eq([x, y, z])
|
315
|
+
end
|
316
|
+
end
|
317
|
+
|
318
|
+
describe 'Vec3D#copy' do
|
319
|
+
it 'should return a deep copy' do
|
320
|
+
x, y, z = 1.0000001, 1.01, 0.999999
|
321
|
+
a = Vec3D.new(x, y, z)
|
322
|
+
expect(a.copy.to_a).to eq([x, y, z])
|
323
|
+
end
|
324
|
+
end
|
325
|
+
|
326
|
+
describe 'Vec3D#copy' do
|
327
|
+
it 'should produce a new object' do
|
328
|
+
x, y, z = 1.0000001, 1.01, 0.999999
|
329
|
+
a = Vec3D.new(x, y, z)
|
330
|
+
b = a.copy
|
331
|
+
b.normalize!
|
332
|
+
expect(a).not_to eq(b)
|
333
|
+
end
|
334
|
+
end
|
335
|
+
|
336
|
+
describe 'Vec3D#normalize! zero vector' do
|
337
|
+
it 'should do nothing' do
|
338
|
+
a = Vec3D.new
|
339
|
+
b = a.normalize!
|
340
|
+
expect(a).to eq(b)
|
341
|
+
end
|
342
|
+
end
|
343
|
+
|
344
|
+
describe 'Vec3D#normalize zero vector' do
|
345
|
+
it 'should do nothing' do
|
346
|
+
a = Vec3D.new
|
347
|
+
b = a.normalize
|
348
|
+
expect(a).to eq(b)
|
349
|
+
expect(a).to_not equal(b)
|
350
|
+
end
|
351
|
+
end
|
352
|
+
|
353
|
+
describe 'Vec3D#dist_squared' do
|
354
|
+
it 'should return Vec3D.dist_squared(a, b)' do
|
355
|
+
a = Vec3D.new(3, 5, 2)
|
356
|
+
b = Vec3D.new(6, 7, 1)
|
357
|
+
expect(a.dist_squared(b)).to eq 3.0**2 + 2**2 + 1
|
358
|
+
end
|
359
|
+
end
|
360
|
+
|
361
|
+
describe 'Vec3D#dist' do
|
362
|
+
it 'should return Vec3D.dist(a, b)' do
|
363
|
+
a = Vec3D.new(3, 5, 2)
|
364
|
+
b = Vec3D.new(6, 7, 1)
|
365
|
+
expect(a.dist(b)).to eq Math.sqrt(3.0**2 + 2**2 + 1)
|
366
|
+
end
|
367
|
+
end
|
368
|
+
|
369
|
+
describe 'Vec3D#normalize' do
|
370
|
+
it 'should return Vec3D#normalize a new Vec3D with mag == 1.0' do
|
371
|
+
a = Vec3D.new(3, 5, 2)
|
372
|
+
b = a.normalize
|
373
|
+
expect(b.mag).to be_within(EPSILON).of(1.0)
|
374
|
+
end
|
375
|
+
end
|
376
|
+
|
377
|
+
describe 'Vec3D#normalize!' do
|
378
|
+
it 'should return Vec3D#normalize! Vec3D#mag == 1.0' do
|
379
|
+
a = Vec3D.new(3, 5, 2)
|
380
|
+
a.normalize!
|
381
|
+
expect(a.mag).to be_within(EPSILON).of(1.0)
|
382
|
+
end
|
383
|
+
end
|
384
|
+
|
385
|
+
describe 'Vec3D#set_mag zero vector' do
|
386
|
+
it 'should return zero vector' do
|
387
|
+
a = Vec3D.new(0, 0, 0)
|
388
|
+
expect(a.set_mag(Math.sqrt(48))).to eq Vec3D.new(0, 0, 0)
|
389
|
+
end
|
390
|
+
end
|
391
|
+
|
392
|
+
describe 'Vec3D#set_mag' do
|
393
|
+
it 'should return Vec3D#set_mag' do
|
394
|
+
a = Vec3D.new(1, 1, 1)
|
395
|
+
expect(a.set_mag(Math.sqrt(48))).to eq Vec3D.new(4, 4, 4)
|
396
|
+
end
|
397
|
+
end
|
398
|
+
|
399
|
+
describe 'Vec3D#cross product' do
|
400
|
+
it 'should return Vec3D.cross(vec)' do
|
401
|
+
a = Vec3D.new(3, 5, 2)
|
402
|
+
b = Vec3D.new(6, 7, 1)
|
403
|
+
expect(a.cross(b)).to eq Vec3D.new(-9.0, 9.0, -9.0)
|
404
|
+
end
|
405
|
+
end
|
406
|
+
|
407
|
+
describe 'Vec3D#set_mag negative block' do
|
408
|
+
it 'should return Vec3D#set_mag' do
|
409
|
+
a = Vec3D.new(1, 1, 1)
|
410
|
+
expect(a.set_mag(Math.sqrt(48)) { false }).to eq a
|
411
|
+
end
|
412
|
+
end
|
413
|
+
|
414
|
+
describe 'Vec3D#inspect' do
|
415
|
+
it 'should return a String' do
|
416
|
+
a = Vec3D.new(3, 5, 2.000000000000001)
|
417
|
+
expect(a.inspect).to eq 'Vec3D(x = 3.0000, y = 5.0000, z = 2.0000)'
|
418
|
+
end
|
419
|
+
end
|
420
|
+
|
421
|
+
describe 'Vec3D#set_mag positive block' do
|
422
|
+
it 'should return Vec3D#set_mag' do
|
423
|
+
a = Vec3D.new(1, 1, 1)
|
424
|
+
expect(a.set_mag(Math.sqrt(48)) { true }).to eq Vec3D.new(4, 4, 4)
|
425
|
+
end
|
426
|
+
end
|
427
|
+
|
428
|
+
describe 'Vec3D#to_a' do
|
429
|
+
it 'should return x, y as an array' do
|
430
|
+
x, y, z = 1.0000001, 1.01, 1.001
|
431
|
+
a = Vec3D.new(x, y, z)
|
432
|
+
expect(a.to_a).to eq([x, y, z])
|
433
|
+
end
|
434
|
+
end
|
435
|
+
|
436
|
+
describe 'Vec3D#z=' do
|
437
|
+
it 'should set z value' do
|
438
|
+
x, y, z = 1.0000001, 1.01, 1.001
|
439
|
+
a = Vec3D.new(x, y, z)
|
440
|
+
w = 56.0
|
441
|
+
a.z = w
|
442
|
+
expect(a.z).to eq(w)
|
443
|
+
end
|
444
|
+
end
|
445
|
+
|
446
|
+
describe 'Vec3D#==' do
|
447
|
+
it 'should return a == b' do
|
448
|
+
a = Vec3D.new(3.0, 5.0, 0)
|
449
|
+
b = Vec3D.new(3.0, 5.000001, 0)
|
450
|
+
expect(a == b).to be true
|
451
|
+
end
|
452
|
+
end
|
453
|
+
|
454
|
+
describe 'Vec3D#eql?' do
|
455
|
+
it 'should return a.eql? b' do
|
456
|
+
a = Vec3D.new(3.0, 5.0, 0)
|
457
|
+
b = Vec3D.new(3.0, 5.0, 0)
|
458
|
+
expect(a.eql?(b)).to be true
|
459
|
+
end
|
460
|
+
end
|
461
|
+
|
462
|
+
describe 'Vec3D#eql?' do
|
463
|
+
it 'should return a.eql? b' do
|
464
|
+
a = Vec3D.new(3.0, 5.0, 0)
|
465
|
+
b = Vec3D.new(3.0, 5.000001, 0)
|
466
|
+
expect(a.eql?(b)).to be false
|
467
|
+
end
|
468
|
+
end
|
469
|
+
|
470
|
+
describe 'Vec3D#equal?' do
|
471
|
+
it 'should return a.eql? b' do
|
472
|
+
a = Vec3D.new(3.0, 5.0)
|
473
|
+
expect(a.equal?(a)).to be true
|
474
|
+
end
|
475
|
+
end
|
476
|
+
|
477
|
+
describe 'Vec3D#equal?' do
|
478
|
+
it 'should return a.eql? b' do
|
479
|
+
a = Vec3D.new(3.0, 5.0, 0)
|
480
|
+
b = Vec3D.new(3.0, 5.0, 0)
|
481
|
+
expect(a.equal?(b)).to be false
|
482
|
+
end
|
483
|
+
end
|
data/vendors/Rakefile
CHANGED
@@ -10,14 +10,25 @@ WARNING = <<-EOS
|
|
10
10
|
|
11
11
|
EOS
|
12
12
|
|
13
|
-
JRUBYC_VERSION = '1.7.
|
14
|
-
EXAMPLES = '0.0.
|
13
|
+
JRUBYC_VERSION = '1.7.20'
|
14
|
+
EXAMPLES = '0.0.6-pre'
|
15
15
|
HOME_DIR = ENV['HOME']
|
16
16
|
MAC_OR_LINUX = /linux|mac|darwin/ =~ RbConfig::CONFIG['host_os']
|
17
|
-
CLOBBER.include("jruby-complete-#{JRUBYC_VERSION}.jar", "#{EXAMPLES}.tar.gz")
|
17
|
+
CLOBBER.include("jruby-complete-#{JRUBYC_VERSION}.jar", "#{EXAMPLES}.tar.gz", "video.zip")
|
18
18
|
|
19
19
|
desc "download, and copy to ruby-processing"
|
20
|
-
task :default => [:
|
20
|
+
task :default => [:install_ruby, :install_video, :config, :install_examples]
|
21
|
+
|
22
|
+
desc "install jruby"
|
23
|
+
task :install_ruby => [:download, :copy_ruby]
|
24
|
+
|
25
|
+
desc "install video library"
|
26
|
+
task :install_video => [:download_video, :copy_video]
|
27
|
+
|
28
|
+
|
29
|
+
desc "install examples"
|
30
|
+
task :install_examples => [:download_examples, :copy_examples]
|
31
|
+
|
21
32
|
|
22
33
|
desc "download JRuby upstream sources"
|
23
34
|
task :download => ["jruby-complete-#{JRUBYC_VERSION}.jar"]
|
@@ -28,7 +39,18 @@ file "jruby-complete-#{JRUBYC_VERSION}.jar" do
|
|
28
39
|
rescue
|
29
40
|
warn(WARNING)
|
30
41
|
end
|
31
|
-
check_sha1("jruby-complete-#{JRUBYC_VERSION}.jar", "
|
42
|
+
check_sha1("jruby-complete-#{JRUBYC_VERSION}.jar", "0f784b3d9d760b80b2f9d78ede80ee1d8d85e786")
|
43
|
+
end
|
44
|
+
|
45
|
+
desc "download processing video-library"
|
46
|
+
task :download_video => ["video.zip"]
|
47
|
+
|
48
|
+
file "video.zip" do
|
49
|
+
begin
|
50
|
+
sh "curl -O https://github.com/processing/processing-video/releases/download/latest/video.zip"
|
51
|
+
rescue
|
52
|
+
warn(WARNING)
|
53
|
+
end
|
32
54
|
end
|
33
55
|
|
34
56
|
directory "../lib/ruby"
|
@@ -40,6 +62,9 @@ end
|
|
40
62
|
|
41
63
|
desc "download, and copy to JRubyArt"
|
42
64
|
task :unpack_samples => [:download_examples, :copy_examples]
|
65
|
+
|
66
|
+
|
67
|
+
|
43
68
|
desc 'download and copy examples to user home'
|
44
69
|
task :download_examples
|
45
70
|
file_name = (MAC_OR_LINUX.nil?) ? "#{EXAMPLES}.zip" : "#{EXAMPLES}.tar.gz"
|
@@ -55,6 +80,20 @@ file file_name do
|
|
55
80
|
end
|
56
81
|
end
|
57
82
|
|
83
|
+
|
84
|
+
|
85
|
+
desc "copy video library"
|
86
|
+
|
87
|
+
task :copy_video => ["../library/video/lib"] do
|
88
|
+
sh "unzip video.zip"
|
89
|
+
Dir["video/library/*.jar"].each do |f|
|
90
|
+
sh "cp #{f} ../library/video/lib"
|
91
|
+
end
|
92
|
+
sh "cp -r video/library/windows32 ../library/video/lib"
|
93
|
+
sh "cp -r video/library/windows64 ../library/video/lib"
|
94
|
+
sh "cp -r video/library/macosx64 ../library/video/lib"
|
95
|
+
end
|
96
|
+
|
58
97
|
desc "copy examples"
|
59
98
|
task :copy_examples => file_name do
|
60
99
|
if MAC_OR_LINUX.nil?
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jruby_art
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.6.pre
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Martin Prout
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-06-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
@@ -53,7 +53,7 @@ dependencies:
|
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0.9'
|
55
55
|
description: A ruby wrapper for processing, that doesn't require a separate install of processing
|
56
|
-
email:
|
56
|
+
email: mamba2928@yahoo.co.uk
|
57
57
|
executables:
|
58
58
|
- k9
|
59
59
|
extensions: []
|
@@ -97,8 +97,13 @@ files:
|
|
97
97
|
- lib/jruby_art/helpers/camel_string.rb
|
98
98
|
- lib/jruby_art/helpers/numeric.rb
|
99
99
|
- lib/jruby_art/helpers/range.rb
|
100
|
+
- library/video/video.rb
|
101
|
+
- library/video/lib/export.txt
|
102
|
+
- library/video/lib/macosx64.txt
|
103
|
+
- library/video/lib/windows.txt
|
100
104
|
- library/grammar/grammar.rb
|
101
105
|
- library/control_panel/control_panel.rb
|
106
|
+
- library/library_proxy/library_proxy.rb
|
102
107
|
- library/boids/boids.rb
|
103
108
|
- library/file_chooser/file_chooser.rb
|
104
109
|
- spec/library_loader_spec.rb
|