jruby_art 0.2.4.pre → 0.2.6.pre
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
[![Gem Version](https://badge.fury.io/rb/jruby_art.svg)](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
|