propane 0.8.0-java → 0.9.0-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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +3 -1
- data/README.md +1 -1
- data/lib/propane/app.rb +56 -55
- data/lib/propane/creators/sketch_writer.rb +7 -3
- data/lib/propane/helper_methods.rb +40 -29
- data/lib/propane/runner.rb +3 -2
- data/lib/propane/version.rb +1 -1
- data/pom.rb +1 -1
- data/pom.xml +1 -1
- data/vendors/Rakefile +31 -1
- metadata +2 -59
- data/examples/data_path/Rakefile +0 -32
- data/examples/data_path/bw_shader.rb +0 -47
- data/examples/data_path/data/Texture01.jpg +0 -0
- data/examples/data_path/data/Texture02.jpg +0 -0
- data/examples/data_path/data/Univers45.vlw +0 -0
- data/examples/data_path/data/bwfrag.glsl +0 -23
- data/examples/data_path/data/displaceFrag.glsl +0 -8
- data/examples/data_path/data/displaceVert.glsl +0 -201
- data/examples/data_path/data/lachoy.jpg +0 -0
- data/examples/data_path/data/landscape.glsl +0 -352
- data/examples/data_path/data/monjori.glsl +0 -30
- data/examples/data_path/data/moon.jpg +0 -0
- data/examples/data_path/data/sea.jpg +0 -0
- data/examples/data_path/edge_detection.rb +0 -49
- data/examples/data_path/glsl_heightmap_noise.rb +0 -125
- data/examples/data_path/kinetic_type.rb +0 -79
- data/examples/data_path/landscape.rb +0 -34
- data/examples/data_path/linear_image.rb +0 -51
- data/examples/data_path/monjori.rb +0 -35
- data/examples/regular/Rakefile +0 -30
- data/examples/regular/arcball_box.rb +0 -28
- data/examples/regular/arcball_constrain.rb +0 -29
- data/examples/regular/bezier_playground.rb +0 -206
- data/examples/regular/circle_collision.rb +0 -118
- data/examples/regular/colors_two.rb +0 -60
- data/examples/regular/creating_colors.rb +0 -64
- data/examples/regular/drawolver.rb +0 -93
- data/examples/regular/elegant_ball.rb +0 -159
- data/examples/regular/empathy.rb +0 -80
- data/examples/regular/fern.rb +0 -57
- data/examples/regular/fibonacci_sphere.rb +0 -91
- data/examples/regular/flight_patterns.rb +0 -64
- data/examples/regular/fractions.rb +0 -32
- data/examples/regular/grapher.rb +0 -40
- data/examples/regular/gravity.rb +0 -120
- data/examples/regular/grey_circles.rb +0 -28
- data/examples/regular/jwishy.rb +0 -99
- data/examples/regular/letters.rb +0 -42
- data/examples/regular/lib/boundary.rb +0 -38
- data/examples/regular/lib/particle.rb +0 -77
- data/examples/regular/lib/particle_system.rb +0 -111
- data/examples/regular/lib/rain_drops.rb +0 -54
- data/examples/regular/liquidy.rb +0 -41
- data/examples/regular/mouse_button_demo.rb +0 -32
- data/examples/regular/polyhedrons.rb +0 -249
- data/examples/regular/raining.rb +0 -60
- data/examples/regular/ribbon_doodle.rb +0 -89
- data/examples/regular/select_file.rb +0 -32
- data/examples/regular/select_image.rb +0 -40
- data/examples/regular/slider_demo.rb +0 -61
- data/examples/regular/slider_example.rb +0 -53
- data/examples/regular/slider_simple.rb +0 -47
- data/examples/regular/tree.rb +0 -76
- data/examples/regular/vector_math.rb +0 -37
- data/examples/regular/words.rb +0 -41
- data/lib/propane/helpers/string_extra.rb +0 -45
- data/lib/propane/underscorer.rb +0 -19
data/examples/regular/raining.rb
DELETED
@@ -1,60 +0,0 @@
|
|
1
|
-
#!/usr/bin/env jruby -v -W2
|
2
|
-
require 'propane'
|
3
|
-
require_relative 'lib/rain_drops'
|
4
|
-
|
5
|
-
class Raining < Propane::App
|
6
|
-
# raining after Rain1 by Thomas R. 'TomK32' Koll
|
7
|
-
#
|
8
|
-
# draws raindrops as bezier shapes and moves them downwards
|
9
|
-
#
|
10
|
-
# available key commands:
|
11
|
-
# + make raindrops heavier/bigger
|
12
|
-
# - make raindrops smaller
|
13
|
-
# a more raindrops
|
14
|
-
# s less raindrops
|
15
|
-
# <SPACE>
|
16
|
-
#
|
17
|
-
# License: Same as processing
|
18
|
-
#
|
19
|
-
|
20
|
-
attr_reader :drops, :weight, :drops_size, :paused
|
21
|
-
|
22
|
-
def setup
|
23
|
-
size 640, 480
|
24
|
-
frame_rate 30
|
25
|
-
@drops_size = 20
|
26
|
-
@weight = 20
|
27
|
-
@drops = RainDrops.new width, height
|
28
|
-
@paused = false
|
29
|
-
font = create_font('Georgia', 15)
|
30
|
-
text_font(font)
|
31
|
-
end
|
32
|
-
|
33
|
-
def draw
|
34
|
-
return if paused
|
35
|
-
# we fill up with new drops randomly
|
36
|
-
drops.fill_up(weight) while rand(drops_size / 3) < (drops_size - drops.size)
|
37
|
-
# the less drops the darker it is
|
38
|
-
background 127 + 127 * (drops.size / drops_size.to_f)
|
39
|
-
drops.run
|
40
|
-
form = '%d of %d drops with a size of %d'
|
41
|
-
text(format(form, drops.size, drops_size, weight), 10, 20)
|
42
|
-
end
|
43
|
-
|
44
|
-
def key_pressed
|
45
|
-
case key
|
46
|
-
when '+'
|
47
|
-
@weight += 5
|
48
|
-
when '-'
|
49
|
-
@weight -= 5 if weight > 10
|
50
|
-
when 'a'
|
51
|
-
@drops_size += 5
|
52
|
-
when 's'
|
53
|
-
@drops_size -= 5 if drops_size > 5
|
54
|
-
when ' '
|
55
|
-
@paused = !paused
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
Raining.new title: 'Raining'
|
@@ -1,89 +0,0 @@
|
|
1
|
-
#!/usr/bin/env jruby -v -W2
|
2
|
-
# frozen_string_literal: true
|
3
|
-
# Adapted to use Propane Vec2D and Vec3D classes by Martin Prout
|
4
|
-
|
5
|
-
# Use Face Struct triangle 'mesh'.
|
6
|
-
Face = Struct.new(:a, :b, :c) # triangle mesh face
|
7
|
-
require 'propane'
|
8
|
-
|
9
|
-
# Monkey patch the Vec3D class to support rotations
|
10
|
-
Vec3D.class_eval do # re-open the Vec3D class to add the rotate methods
|
11
|
-
def rotate_y!(theta)
|
12
|
-
co = Math.cos(theta)
|
13
|
-
si = Math.sin(theta)
|
14
|
-
xx = co * x - si * z
|
15
|
-
self.z = si * x + co * z
|
16
|
-
self.x = xx
|
17
|
-
self
|
18
|
-
end
|
19
|
-
|
20
|
-
def rotate_x!(theta)
|
21
|
-
co = Math.cos(theta)
|
22
|
-
si = Math.sin(theta)
|
23
|
-
zz = co * z - si * y
|
24
|
-
self.y = si * z + co * y
|
25
|
-
self.z = zz
|
26
|
-
self
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
# After a toxiclibs "MeshDoodle" sketch by Karsten Schmidt
|
31
|
-
class Doodle < Propane::App
|
32
|
-
attr_reader :prev, :p, :q, :rotation, :faces, :pos, :weight
|
33
|
-
|
34
|
-
def setup
|
35
|
-
size(600, 600, P3D)
|
36
|
-
@weight = 0
|
37
|
-
@prev = Vec3D.new
|
38
|
-
@p = Vec3D.new
|
39
|
-
@q = Vec3D.new
|
40
|
-
@rotation = Vec2D.new
|
41
|
-
@faces = []
|
42
|
-
end
|
43
|
-
|
44
|
-
def draw
|
45
|
-
background(0)
|
46
|
-
lights
|
47
|
-
translate(width / 2, height / 2, 0)
|
48
|
-
rotate_x(rotation.x)
|
49
|
-
rotate_y(rotation.y)
|
50
|
-
no_stroke
|
51
|
-
begin_shape(TRIANGLES)
|
52
|
-
# iterate over all faces/triangles of the 'mesh'
|
53
|
-
faces.each do |f|
|
54
|
-
# create vertices for each corner point
|
55
|
-
f.a.to_vertex(renderer)
|
56
|
-
f.b.to_vertex(renderer)
|
57
|
-
f.c.to_vertex(renderer)
|
58
|
-
end
|
59
|
-
end_shape
|
60
|
-
# update rotation
|
61
|
-
@rotation += Vec2D.new(0.014, 0.0237)
|
62
|
-
end
|
63
|
-
|
64
|
-
def mouse_moved
|
65
|
-
# get 3D rotated mouse position
|
66
|
-
@pos = Vec3D.new(mouse_x - width / 2, mouse_y - height / 2, 0)
|
67
|
-
pos.rotate_x!(rotation.x)
|
68
|
-
pos.rotate_y!(rotation.y)
|
69
|
-
# use distance to previous point as target stroke weight
|
70
|
-
@weight += (sqrt(pos.dist(prev)) * 2 - weight) * 0.1
|
71
|
-
# define offset points for the triangle strip
|
72
|
-
a = pos + Vec3D.new(0, 0, weight)
|
73
|
-
b = pos + Vec3D.new(0, 0, -weight)
|
74
|
-
# add 2 faces to the mesh
|
75
|
-
faces << Face.new(p, b, q)
|
76
|
-
faces << Face.new(p, a, b)
|
77
|
-
# store current points for next iteration
|
78
|
-
@prev = pos
|
79
|
-
@p = a
|
80
|
-
@q = b
|
81
|
-
end
|
82
|
-
|
83
|
-
# An example of AppRenderer usage for Vec3D => vertex conversion
|
84
|
-
def renderer
|
85
|
-
@renderer ||= Propane::Render::AppRender.new(self)
|
86
|
-
end
|
87
|
-
end
|
88
|
-
|
89
|
-
Doodle.new title: 'Ribbon Doodle'
|
@@ -1,32 +0,0 @@
|
|
1
|
-
#!/usr/bin/env jruby -v -W2
|
2
|
-
|
3
|
-
############################
|
4
|
-
# Use mouse drag to rotate
|
5
|
-
# The arcball. Use mousewheel
|
6
|
-
# to zoom. Hold down x, y, z
|
7
|
-
# to constrain rotation axis.
|
8
|
-
############################
|
9
|
-
|
10
|
-
require 'propane'
|
11
|
-
|
12
|
-
class SelectFile < Propane::App
|
13
|
-
|
14
|
-
load_library :file_chooser
|
15
|
-
###########
|
16
|
-
# Example Native File Chooser using vanilla processing
|
17
|
-
# select_input, and file_selected
|
18
|
-
###########
|
19
|
-
|
20
|
-
def setup
|
21
|
-
size 200, 100
|
22
|
-
# java_signature 'void selectInput(String, String)'
|
23
|
-
select_input('Select a File', 'file_selected')
|
24
|
-
end
|
25
|
-
|
26
|
-
# signature 'void file_selected(java.io.File file)'
|
27
|
-
def file_selected(file)
|
28
|
-
puts file.get_absolute_path unless file.nil?
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
SelectFile.new
|
@@ -1,40 +0,0 @@
|
|
1
|
-
#!/usr/bin/env jruby -v -W2
|
2
|
-
|
3
|
-
require 'propane'
|
4
|
-
|
5
|
-
class SelectImage < Propane::App
|
6
|
-
|
7
|
-
load_library :file_chooser
|
8
|
-
###########
|
9
|
-
# Example Native File Chooser using vanilla processing
|
10
|
-
# select_input, and file_selected
|
11
|
-
###########
|
12
|
-
attr_reader :img
|
13
|
-
|
14
|
-
def setup
|
15
|
-
size(400, 200)
|
16
|
-
fill 0, 0, 200
|
17
|
-
text('Click Window to Load Image', 10, 100)
|
18
|
-
end
|
19
|
-
|
20
|
-
def draw
|
21
|
-
image(img, 0, 0) unless img.nil?
|
22
|
-
end
|
23
|
-
|
24
|
-
def file_selected(selection)
|
25
|
-
if selection.nil?
|
26
|
-
puts 'Nothing Chosen'
|
27
|
-
else
|
28
|
-
@img = load_image(selection.get_absolute_path)
|
29
|
-
img.resize(width, height)
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
def mouse_clicked
|
34
|
-
@img = nil
|
35
|
-
# java_signature 'void selectInput(String, String)'
|
36
|
-
select_input('Select Image File', 'file_selected')
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
SelectImage.new
|
@@ -1,61 +0,0 @@
|
|
1
|
-
#!/usr/bin/env jruby -v -W2
|
2
|
-
# frozen_string_literal: true
|
3
|
-
# example usage of experimental slider library
|
4
|
-
require 'propane'
|
5
|
-
|
6
|
-
class SliderDemo < Propane::App
|
7
|
-
load_library :slider
|
8
|
-
attr_reader :color1, :color2, :color3, :r, :gs, :b, :back
|
9
|
-
|
10
|
-
def setup
|
11
|
-
size(600, 400)
|
12
|
-
smooth(4)
|
13
|
-
@back = true
|
14
|
-
@r, @gs, @b = 0, 0, 0
|
15
|
-
@color1 = Slider.slider(
|
16
|
-
app: self,
|
17
|
-
vertical: true,
|
18
|
-
x: 100,
|
19
|
-
y: 77,
|
20
|
-
length: 200,
|
21
|
-
range: (-125.0..125.0),
|
22
|
-
name: 'Slider 1',
|
23
|
-
inital_value: 10
|
24
|
-
)
|
25
|
-
@color2 = Slider.slider(
|
26
|
-
app: self,
|
27
|
-
vertical: true,
|
28
|
-
x: 256,
|
29
|
-
y: 77,
|
30
|
-
length: 200,
|
31
|
-
range: (0..255),
|
32
|
-
name: 'Slider 2',
|
33
|
-
initial_value: 180
|
34
|
-
)
|
35
|
-
@color3 = Slider.slider(
|
36
|
-
app: self,
|
37
|
-
vertical: true,
|
38
|
-
x: 410,
|
39
|
-
y: 77,
|
40
|
-
length: 200,
|
41
|
-
range: (0.0..255.0),
|
42
|
-
name: 'Slider 3',
|
43
|
-
initial_value: 134
|
44
|
-
)
|
45
|
-
color1.bar_width(100)
|
46
|
-
color1.widget_colors(color('#930303'), color('#FF0000'))
|
47
|
-
color2.bar_width(100)
|
48
|
-
color2.widget_colors(color('#5BCE4D'), color('#1CFF00'))
|
49
|
-
color3.bar_width(100)
|
50
|
-
color3.widget_colors(color('#4439C9'), color('#9990FF'))
|
51
|
-
end
|
52
|
-
|
53
|
-
def draw
|
54
|
-
background(r + 125, gs, b)
|
55
|
-
@r = color1.read_value
|
56
|
-
@gs = color2.read_value
|
57
|
-
@b = color3.read_value
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
SliderDemo.new(title: 'Slider Demo')
|
@@ -1,53 +0,0 @@
|
|
1
|
-
#!/usr/bin/env jruby -v -W2
|
2
|
-
# frozen_string_literal: true
|
3
|
-
require 'propane'
|
4
|
-
|
5
|
-
# Simple slider example
|
6
|
-
class SliderExample < Propane::App
|
7
|
-
load_library :slider
|
8
|
-
attr_reader :color1, :color2, :color3, :r, :gs, :b, :back
|
9
|
-
|
10
|
-
def setup
|
11
|
-
size(600, 400)
|
12
|
-
smooth(4)
|
13
|
-
@back = true
|
14
|
-
@r, @gs, @b = 0, 0, 0
|
15
|
-
@color1 = Slider.slider(
|
16
|
-
app: self,
|
17
|
-
x: 77,
|
18
|
-
y: 200,
|
19
|
-
length: 200,
|
20
|
-
range: (0..255.0),
|
21
|
-
name: 'Slider 1',
|
22
|
-
initial_value: 50
|
23
|
-
)
|
24
|
-
@color2 = Slider.slider(
|
25
|
-
app: self,
|
26
|
-
x: 77,
|
27
|
-
y: 230,
|
28
|
-
length: 200,
|
29
|
-
range: (0..255),
|
30
|
-
name: 'Slider 2',
|
31
|
-
initial_value: 50
|
32
|
-
)
|
33
|
-
@color3 = Slider.slider(
|
34
|
-
app: self,
|
35
|
-
x: 77,
|
36
|
-
y: 260,
|
37
|
-
length: 200,
|
38
|
-
range: (0.0..255.0),
|
39
|
-
name: 'Slider 3'
|
40
|
-
)
|
41
|
-
end
|
42
|
-
|
43
|
-
def draw
|
44
|
-
background(b, r, gs)
|
45
|
-
fill(r, gs, b)
|
46
|
-
ellipse(300, 200, 300, 300)
|
47
|
-
@r = color1.read_value
|
48
|
-
@gs = color2.read_value
|
49
|
-
@b = color3.read_value
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
SliderExample.new(title: 'Slider Example')
|
@@ -1,47 +0,0 @@
|
|
1
|
-
#!/usr/bin/env jruby -v -W2
|
2
|
-
# frozen_string_literal: true
|
3
|
-
require 'propane'
|
4
|
-
|
5
|
-
class SliderSimple < Propane::App
|
6
|
-
load_library :slider
|
7
|
-
attr_reader :color1, :color2, :color3, :r, :gs, :b, :back
|
8
|
-
|
9
|
-
def setup
|
10
|
-
size(600, 400)
|
11
|
-
smooth(4)
|
12
|
-
@back = true
|
13
|
-
@r, @gs, @b = 0, 0, 0
|
14
|
-
@color1 = Slider.slider(
|
15
|
-
app: self,
|
16
|
-
x: 77,
|
17
|
-
y: 200,
|
18
|
-
name: 'Slider 1',
|
19
|
-
initial_value: 50
|
20
|
-
)
|
21
|
-
@color2 = Slider.slider(
|
22
|
-
app: self,
|
23
|
-
x: 77,
|
24
|
-
y: 230,
|
25
|
-
name: 'Slider 2',
|
26
|
-
initial_value: 50
|
27
|
-
)
|
28
|
-
@color3 = Slider.slider(
|
29
|
-
app: self,
|
30
|
-
x: 77,
|
31
|
-
y: 260,
|
32
|
-
name: 'Slider 3'
|
33
|
-
)
|
34
|
-
color_mode(RGB, 100)
|
35
|
-
end
|
36
|
-
|
37
|
-
def draw
|
38
|
-
background(b, r, gs)
|
39
|
-
fill(r, gs, b)
|
40
|
-
ellipse(300, 200, 300, 300)
|
41
|
-
@r = color1.read_value
|
42
|
-
@gs = color2.read_value
|
43
|
-
@b = color3.read_value
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
SliderSimple.new(title: 'Simple Slider')
|
data/examples/regular/tree.rb
DELETED
@@ -1,76 +0,0 @@
|
|
1
|
-
#!/usr/bin/env jruby -v -W2
|
2
|
-
require 'propane'
|
3
|
-
|
4
|
-
class Tree < Propane::App
|
5
|
-
# http://processing.org/learning/topics/tree.html
|
6
|
-
# by Joe Holt
|
7
|
-
def setup
|
8
|
-
size 200, 200
|
9
|
-
color_mode RGB, 1
|
10
|
-
frame_rate 30
|
11
|
-
smooth
|
12
|
-
@x = 0.0
|
13
|
-
@dx = width / 100
|
14
|
-
@start_time = Time.now
|
15
|
-
@frame_time = nil
|
16
|
-
end
|
17
|
-
|
18
|
-
def draw
|
19
|
-
t = Time.now
|
20
|
-
if @frame_time
|
21
|
-
fps = 1.0 / (t - @frame_time)
|
22
|
-
# printf "%0.1f fps\n", fps
|
23
|
-
end
|
24
|
-
@frame_time = t
|
25
|
-
|
26
|
-
background 0
|
27
|
-
stroke 1, 1, 1
|
28
|
-
# Let's pick an angle 0 to 90 degrees based on the mouse position
|
29
|
-
a = (@x / width) * 90
|
30
|
-
# Convert it to radians
|
31
|
-
@theta = a.radians
|
32
|
-
# Start the tree from the bottom of the screen
|
33
|
-
translate(width / 2, height)
|
34
|
-
# Draw a line 60 pixels
|
35
|
-
h = height / 3
|
36
|
-
line(0, 0, 0, -h)
|
37
|
-
# Move to the end of that line
|
38
|
-
translate(0, -h)
|
39
|
-
# Start the recursive branching!
|
40
|
-
branch(h)
|
41
|
-
|
42
|
-
@x += @dx
|
43
|
-
if @x < 0
|
44
|
-
puts "Time after this iteration: " + (Time.now - @start_time).to_s
|
45
|
-
end
|
46
|
-
if @x > width || @x < 0
|
47
|
-
@dx = - @dx
|
48
|
-
@x += @dx * 2
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
def branch(h)
|
53
|
-
# Each branch will be 2/3rds the size of the previous one
|
54
|
-
h *= 0.66
|
55
|
-
# All recursive functions must have an exit condition!!!!
|
56
|
-
# Here, ours is when the length of the branch is 2 pixels or less
|
57
|
-
if h > 2
|
58
|
-
push_matrix # Save the current state of transformation (i.e. where are we now)
|
59
|
-
rotate(@theta) # Rotate by theta
|
60
|
-
line(0, 0, 0, -h) # Draw the branch
|
61
|
-
translate(0, -h) # Move to the end of the branch
|
62
|
-
branch(h) # Ok, now call myself to draw two new branches!!
|
63
|
-
pop_matrix # Whenever we get back here, we "pop" in order to restore the previous matrix state
|
64
|
-
|
65
|
-
# Repeat the same thing, only branch off to the "left" this time!
|
66
|
-
push_matrix
|
67
|
-
rotate(-@theta)
|
68
|
-
line(0, 0, 0, -h)
|
69
|
-
translate(0, -h)
|
70
|
-
branch(h)
|
71
|
-
pop_matrix
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
Tree.new title: 'Tree'
|