ruby-processing 1.0.3 → 1.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. data/CHANGELOG +12 -0
  2. data/README +3 -0
  3. data/lib/core/core.jar +0 -0
  4. data/lib/core/jruby-complete.jar +0 -0
  5. data/lib/patches/JRubyApplet.diff +24 -0
  6. data/lib/patches/PATCHES.txt +3 -0
  7. data/lib/patches/PApplet.diff +27 -0
  8. data/lib/ruby-processing.rb +4 -1
  9. data/lib/ruby-processing/app.rb +121 -75
  10. data/lib/ruby-processing/exporters/applet_exporter.rb +1 -1
  11. data/lib/ruby-processing/exporters/base_exporter.rb +21 -16
  12. data/lib/ruby-processing/exporters/creator.rb +12 -6
  13. data/lib/ruby-processing/runner.rb +2 -2
  14. data/lib/ruby-processing/runners/base.rb +59 -0
  15. data/lib/ruby-processing/runners/live.rb +2 -2
  16. data/lib/ruby-processing/runners/run.rb +2 -1
  17. data/lib/ruby-processing/runners/watch.rb +47 -11
  18. data/lib/templates/applet/index.html.erb +6 -6
  19. data/lib/templates/create/bare_sketch.rb.erb +7 -0
  20. data/lib/templates/create/blank_sketch.rb.erb +2 -2
  21. data/library/control_panel/control_panel.rb +6 -2
  22. data/library/opengl/library/export.txt +0 -0
  23. data/library/opengl/library/opengl.jar +0 -0
  24. data/library/pdf/library/itext.jar +0 -0
  25. data/library/pdf/library/pdf.jar +0 -0
  26. data/library/pdf/notes.txt +3 -4
  27. data/samples/animator.rb +35 -39
  28. data/samples/bezier_playground.rb +2 -4
  29. data/samples/fern.rb +34 -42
  30. data/samples/flight_patterns.rb +48 -54
  31. data/samples/full_screen.rb +20 -25
  32. data/samples/getting_started.rb +19 -39
  33. data/samples/learning_processing/chapter_01/1_stroke_and_fill.rb +14 -30
  34. data/samples/learning_processing/chapter_01/2_nofill.rb +18 -23
  35. data/samples/learning_processing/chapter_01/3_rgb_color.rb +16 -28
  36. data/samples/learning_processing/chapter_01/4_alpha_transparency.rb +7 -1
  37. data/samples/learning_processing/chapter_01/5_zoog.rb +20 -33
  38. data/samples/learning_processing/chapter_02/1_zoog_again.rb +3 -1
  39. data/samples/learning_processing/chapter_03/6_interactive_zoog.rb +34 -42
  40. data/samples/learning_processing/chapter_16/03_adjust_video_brightness.rb +49 -0
  41. data/samples/learning_processing/chapter_17/01_simple_displaying_text.rb +14 -0
  42. data/samples/learning_processing/chapter_17/02_text_align.rb +21 -0
  43. data/samples/learning_processing/chapter_17/03_scrolling_headlines.rb +35 -0
  44. data/samples/learning_processing/chapter_17/04_text_mirror.rb +68 -0
  45. data/samples/learning_processing/chapter_17/05_rotating_text.rb +22 -0
  46. data/samples/learning_processing/chapter_17/06_text_breaking_up.rb +73 -0
  47. data/samples/learning_processing/chapter_17/07_boxes_along_a_curve.rb +49 -0
  48. data/samples/learning_processing/chapter_17/08_characters_along_a_curve.rb +51 -0
  49. data/samples/learning_processing/chapter_17/data/ArialMT-16.vlw +0 -0
  50. data/samples/learning_processing/chapter_17/data/Courier-Bold-20.vlw +0 -0
  51. data/samples/learning_processing/chapter_18/01_user_input.rb +39 -0
  52. data/samples/learning_processing/chapter_18/02_graphing_comma_separated_numbers_from_a_text_file.rb +28 -0
  53. data/samples/learning_processing/chapter_18/03_creating_object_from_a_text_file.rb +64 -0
  54. data/samples/learning_processing/chapter_18/data/data-1.txt +1 -0
  55. data/samples/learning_processing/chapter_18/data/data-2.txt +10 -0
  56. data/samples/orbit.rb +45 -0
  57. data/samples/processing_app/basics/image/pointillism.rb +1 -1
  58. data/samples/processing_app/topics/effects/lens.rb +1 -0
  59. metadata +30 -13
  60. data/library/opengl/bin/processing/opengl/PGraphicsOpenGL$ImageCache.class +0 -0
  61. data/library/opengl/bin/processing/opengl/PGraphicsOpenGL$TessCallback.class +0 -0
  62. data/library/opengl/bin/processing/opengl/PGraphicsOpenGL.class +0 -0
  63. data/library/pdf/bin/processing/pdf/PGraphicsPDF.class +0 -0
@@ -0,0 +1,49 @@
1
+ def setup
2
+ size 320, 320
3
+ rect_mode CENTER
4
+ smooth
5
+ @r = 100 # The radius of a circle
6
+ @w, @h = 40, 40 # The width and height of the boxes
7
+ end
8
+
9
+ def draw
10
+ background 255
11
+
12
+ # Start in the center and draw the circle
13
+ translate width/2, height/2
14
+ no_fill
15
+ stroke 0
16
+
17
+ # Our curve is a circle with radius r in the center of the window.
18
+ ellipse 0, 0, @r*2, @r*2
19
+
20
+ # 10 boxes along the curve
21
+ total_boxes = 10
22
+
23
+ # @we must keep track of our position along the curve
24
+ arc_length = 0
25
+
26
+ # For every box
27
+ total_boxes.times do |i|
28
+ # Each box is centered so we move half the width
29
+ arc_length += @w / 2.0
30
+
31
+ # Angle in radians is the arclength divided by the radius
32
+ theta = arc_length / @r
33
+
34
+ push_matrix
35
+ # Polar to cartesian coordinate conversion
36
+ translate @r * cos(theta), @r * sin(theta)
37
+
38
+ # @rotate the box
39
+ rotate theta
40
+
41
+ # Display the box
42
+ fill 0, 100
43
+ rect 0, 0, @w, @h
44
+ pop_matrix
45
+
46
+ # Move halfway again
47
+ arc_length += @w / 2
48
+ end
49
+ end
@@ -0,0 +1,51 @@
1
+ def setup
2
+ size 320, 320
3
+ @message = "text along a curve" # The message to be displayed
4
+ @r = 100 # The radius of a circle
5
+ text_font create_font("Georgia", 40, true)
6
+ text_align CENTER # The text must be centered!
7
+ smooth
8
+ end
9
+
10
+ def draw
11
+ background 255
12
+
13
+ # Start in the center and draw the circle
14
+ translate width/2, height/2
15
+ no_fill
16
+ ellipse 0, 0, @r*2, @r*2
17
+
18
+ # We must keep track of our position along the curve
19
+ arc_length = 0
20
+
21
+ # For every box
22
+ @message.each_byte do |char|
23
+ # Instead of a constant width, we check the width of each character.
24
+ w = text_width(char.chr)
25
+
26
+ # Each box is centered so we move half the width
27
+ arc_length += w / 2
28
+
29
+ # Angle in radians is the arc_length divided by the radius
30
+ # Starting on the left side of the circle by adding PI
31
+ theta = PI + arc_length / @r
32
+
33
+ push_matrix
34
+
35
+ # Polar to Cartesian conversion allows us to find the point along the curve.
36
+ # See Chapter 13 for a review of this concept.
37
+ translate @r * cos(theta), @r * sin(theta)
38
+
39
+ # Rotate the box (rotation is offset by 90 degrees)
40
+ rotate theta + PI / 2
41
+
42
+ # Display the character
43
+ fill 0
44
+ text char, 0, 0
45
+
46
+ pop_matrix
47
+
48
+ # Move halfway again
49
+ arc_length += w / 2
50
+ end
51
+ end
@@ -0,0 +1,39 @@
1
+ # Example 18-1: User input
2
+ require 'ruby-processing'
3
+
4
+ class UserInput < Processing::App
5
+
6
+ def setup
7
+ size 300, 200
8
+ @typing = ""
9
+ @saved = ""
10
+ textFont createFont "Arial", 16, true # set the font for text
11
+ end
12
+
13
+ def draw
14
+ background 255
15
+ indent = 25
16
+ fill 0 # Set the fill for text
17
+
18
+ # Display everything
19
+ text "Click in this applet and type. \nHit return to save what you typed. ", indent, 40
20
+ text @typing, indent, 90
21
+ text @saved, indent, 130
22
+ end
23
+
24
+ def keyPressed
25
+ # If the return key is pressed, save the String and clear it
26
+ if key == "\n"
27
+ @saved = @typing
28
+ @typing = "" # A String can be cleared by setting it equal to ""
29
+ else
30
+ # Otherwise, concatenate the String
31
+ # Each character typed by the user is added to the
32
+ # end of the String variable.
33
+ @typing = @typing + key
34
+ end
35
+ end
36
+
37
+ end
38
+
39
+ UserInput.new :title => "01 User Input"
@@ -0,0 +1,28 @@
1
+ # Example 18-2: Graphing comma separated numbers from a text file
2
+ require 'ruby-processing'
3
+
4
+ class GraphingCommaSeparatedNumbersFromATextFile < Processing::App
5
+
6
+ def setup
7
+ size 200, 200
8
+ # The text from the file is loaded into an array.
9
+ stuff = loadStrings("data-1.txt")
10
+
11
+ # This array has one element because the file only has one line.
12
+ # Convert String into an array of integers using ',' as a delimiter
13
+ @data = stuff[0].split(",").collect{ |n| n.to_i } # XXX: int(split(stuff[0], ","))
14
+ end
15
+
16
+ def draw
17
+ background 255
18
+ stroke 0
19
+ @data.each_with_index do |data, i|
20
+ # The array of ints is used to set the color and height of each rectangle.
21
+ fill data
22
+ rect i * 20, 0, 20, data
23
+ end
24
+ end
25
+
26
+ end
27
+
28
+ GraphingCommaSeparatedNumbersFromATextFile.new :title => "02 Graphing Comma Separated Numbers From A Text File"
@@ -0,0 +1,64 @@
1
+ # Example 18-3: Creating objects from a text file
2
+ require 'ruby-processing'
3
+
4
+ class CreatingObjectFromATextFile < Processing::App
5
+
6
+ def setup
7
+ size 200, 200
8
+ smooth
9
+
10
+ # Load text file as an array of Strings
11
+ data = loadStrings("data-2.txt")
12
+
13
+ # The size of the array of Bubble objects is determined by the
14
+ # total number of lines in the text file.
15
+ @bubbles = []
16
+ data.each do |datum|
17
+ # Each line is split into an array of floating point numbers.
18
+ values = datum.split(",").collect{ |n| n.to_f } # XXX: float[] values = float(split(datum, "," ))
19
+ # The values in the array are passed into the Bubble class constructor.
20
+ @bubbles << Bubble.new(*values)
21
+ end
22
+ end
23
+
24
+ def draw
25
+ background 255
26
+ # Display and move all bubbles
27
+ @bubbles.each do |bubble|
28
+ bubble.display
29
+ bubble.drift
30
+ end
31
+ end
32
+
33
+ end
34
+
35
+ # A Class to describe a "Bubble"
36
+ class Bubble
37
+ # The constructor initializes color and size
38
+ # Location is filled randomly
39
+ def initialize(r, g, diameter)
40
+ @x = $app.random($app.width)
41
+ @y = $app.height
42
+ @r = r
43
+ @g = g
44
+ @diameter = diameter
45
+ end
46
+
47
+ # Display the Bubble
48
+ def display
49
+ $app.stroke 0
50
+ $app.fill @r, @g, 255, 150
51
+ $app.ellipse @x, @y, @diameter, @diameter
52
+ end
53
+
54
+ # Move the bubble
55
+ def drift
56
+ @y += $app.random(-3, -0.1)
57
+ @x += $app.random(-1, 1)
58
+ if @y < -@diameter * 2
59
+ @y = $app.height + @diameter * 2
60
+ end
61
+ end
62
+ end
63
+
64
+ CreatingObjectFromATextFile.new :title => " Creating Object From A Text File"
@@ -0,0 +1 @@
1
+ 102,75,192,178,78,23,144,181,125,55
@@ -0,0 +1,10 @@
1
+ 88,149,22
2
+ 193,78,8
3
+ 90,152,56
4
+ 136,18,37
5
+ 47,2,55
6
+ 36,142,57
7
+ 10,61,31
8
+ 9,121,49
9
+ 156,60,12
10
+ 71,200,21
data/samples/orbit.rb ADDED
@@ -0,0 +1,45 @@
1
+ # Ported from http://nodebox.net/code/index.php/Graphics_State
2
+
3
+ # This sketch demonstrates how to use the frame rate as orbital state,
4
+ # as well as how to use system fonts in Ruby-Processing.
5
+
6
+ require 'ruby-processing'
7
+
8
+ class Orbit < Processing::App
9
+ def setup
10
+ frame_rate 30
11
+ smooth
12
+ fill 0
13
+ @font = create_font('Helvetica', 40)
14
+ end
15
+
16
+ def draw
17
+ background 255
18
+ translate 225, 225
19
+
20
+ text_font @font
21
+ ellipse 0, 0, 10, 10
22
+ text 'sun', 10, 0
23
+
24
+ 3.times do |i|
25
+ push_matrix
26
+
27
+ rotate frame_count / -180.0 * PI + i * PI / -1.5
28
+ line 0, 0, 120, 0
29
+
30
+ translate 120, 0
31
+ ellipse 0, 0, 10, 10
32
+ text_font @font, 22
33
+ text 'planet', 10, 0
34
+
35
+ rotate frame_count / -30.0 * PI
36
+ line 0, 0, 30, 0
37
+ text_font @font, 15
38
+ text 'moon', 32, 0
39
+
40
+ pop_matrix
41
+ end
42
+ end
43
+ end
44
+
45
+ Orbit.new :width => 450, :height => 450, :title => 'Orbit'
@@ -21,7 +21,7 @@ class Pointillism < Processing::App
21
21
  pointillize = map mouse_x, 0, width, 2, 18
22
22
  x, y = rand(@a.width), rand(@a.height)
23
23
  pixel = @a.get(x, y)
24
- fill pixel
24
+ fill pixel, 126
25
25
  ellipse x, y, pointillize, pointillize
26
26
  end
27
27
 
@@ -16,6 +16,7 @@ require 'ruby-processing'
16
16
  class Lens < Processing::App
17
17
 
18
18
  def setup
19
+ render_mode P2D
19
20
  @lens_d = 160
20
21
  @lens_list = []
21
22
  @xx, @yy, @dx, @dy = 0, 0, 3, 3
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: 1.0.3
4
+ version: 1.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeremy Ashkenas
@@ -12,15 +12,16 @@ authors:
12
12
  - Peter Krenn
13
13
  - Florian Jenett
14
14
  - Andreas Haller
15
+ - Juris Galang
15
16
  autorequire:
16
17
  bindir: bin
17
18
  cert_chain: []
18
19
 
19
- date: 2009-03-03 00:00:00 -05:00
20
+ date: 2009-03-26 00:00:00 -04:00
20
21
  default_executable: rp5
21
22
  dependencies: []
22
23
 
23
- description: "Ruby-Processing is a Ruby wrapper for the Processing code art framework. It's this thin little shim that squeezes between Processing and JRuby, passing along some neat goodies like: * Applet and Application exporting of your sketches. Hand them out to your party guests, ready-to-run. * Live Coding via JRuby's IRB. Loads in your sketch so you can futz with variables and remake methods on the fly. * A \"Control Panel\" library, so that you can easily create sliders, buttons, checkboxes and drop-down menus, and hook them into your sketch's instance variables. * \"Watch\" mode, where Ruby-Processing keeps an eye on your sketch and reloads it from scratch every time you make a change. A pretty nice REPL-ish way to work on your Processing sketches."
24
+ description: "Ruby-Processing is a Ruby wrapper for the Processing code art framework. It's this thin little shim that squeezes between Processing and JRuby, passing along some neat goodies like: * Applet and Application exporting of your sketches. Hand them out to your party guests, ready-to-run. * Live Coding via JRuby's IRB. Loads in your sketch so you can futz with variables and remake methods on the fly. * Bare sketches. Write your Ruby-Processing sketches without having to define a class. Without defining methods, even. * A \"Control Panel\" library, so that you can easily create sliders, buttons, checkboxes and drop-down menus, and hook them into your sketch's instance variables. * \"Watch\" mode, where Ruby-Processing keeps an eye on your sketch and reloads it from scratch every time you make a change. A pretty nice REPL-ish way to work on your Processing sketches."
24
25
  email: jeremy@ashkenas.com
25
26
  executables:
26
27
  - rp5
@@ -35,6 +36,10 @@ files:
35
36
  - lib/core
36
37
  - lib/core/core.jar
37
38
  - lib/core/jruby-complete.jar
39
+ - lib/patches
40
+ - lib/patches/JRubyApplet.diff
41
+ - lib/patches/PApplet.diff
42
+ - lib/patches/PATCHES.txt
38
43
  - lib/ruby-processing
39
44
  - lib/ruby-processing/app.rb
40
45
  - lib/ruby-processing/exporters
@@ -77,6 +82,7 @@ files:
77
82
  - lib/templates/application/run.erb
78
83
  - lib/templates/application/run.exe
79
84
  - lib/templates/create
85
+ - lib/templates/create/bare_sketch.rb.erb
80
86
  - lib/templates/create/blank_sketch.rb.erb
81
87
  - library/boids
82
88
  - library/boids/boids.rb
@@ -114,12 +120,6 @@ files:
114
120
  - library/net/library
115
121
  - library/net/library/net.jar
116
122
  - library/opengl
117
- - library/opengl/bin
118
- - library/opengl/bin/processing
119
- - library/opengl/bin/processing/opengl
120
- - library/opengl/bin/processing/opengl/PGraphicsOpenGL$ImageCache.class
121
- - library/opengl/bin/processing/opengl/PGraphicsOpenGL$TessCallback.class
122
- - library/opengl/bin/processing/opengl/PGraphicsOpenGL.class
123
123
  - library/opengl/library
124
124
  - library/opengl/library/export.txt
125
125
  - library/opengl/library/gluegen-rt-natives-linux-amd64.jar
@@ -152,10 +152,6 @@ files:
152
152
  - library/opengl/library/libjogl_cg.so
153
153
  - library/opengl/library/opengl.jar
154
154
  - library/pdf
155
- - library/pdf/bin
156
- - library/pdf/bin/processing
157
- - library/pdf/bin/processing/pdf
158
- - library/pdf/bin/processing/pdf/PGraphicsPDF.class
159
155
  - library/pdf/library
160
156
  - library/pdf/library/itext.jar
161
157
  - library/pdf/library/pdf.jar
@@ -312,6 +308,27 @@ files:
312
308
  - samples/learning_processing/chapter_16
313
309
  - samples/learning_processing/chapter_16/01_display_video.rb
314
310
  - samples/learning_processing/chapter_16/02_manipulate_video_image.rb
311
+ - samples/learning_processing/chapter_16/03_adjust_video_brightness.rb
312
+ - samples/learning_processing/chapter_17
313
+ - samples/learning_processing/chapter_17/01_simple_displaying_text.rb
314
+ - samples/learning_processing/chapter_17/02_text_align.rb
315
+ - samples/learning_processing/chapter_17/03_scrolling_headlines.rb
316
+ - samples/learning_processing/chapter_17/04_text_mirror.rb
317
+ - samples/learning_processing/chapter_17/05_rotating_text.rb
318
+ - samples/learning_processing/chapter_17/06_text_breaking_up.rb
319
+ - samples/learning_processing/chapter_17/07_boxes_along_a_curve.rb
320
+ - samples/learning_processing/chapter_17/08_characters_along_a_curve.rb
321
+ - samples/learning_processing/chapter_17/data
322
+ - samples/learning_processing/chapter_17/data/ArialMT-16.vlw
323
+ - samples/learning_processing/chapter_17/data/Courier-Bold-20.vlw
324
+ - samples/learning_processing/chapter_18
325
+ - samples/learning_processing/chapter_18/01_user_input.rb
326
+ - samples/learning_processing/chapter_18/02_graphing_comma_separated_numbers_from_a_text_file.rb
327
+ - samples/learning_processing/chapter_18/03_creating_object_from_a_text_file.rb
328
+ - samples/learning_processing/chapter_18/data
329
+ - samples/learning_processing/chapter_18/data/data-1.txt
330
+ - samples/learning_processing/chapter_18/data/data-2.txt
331
+ - samples/orbit.rb
315
332
  - samples/processing_app
316
333
  - samples/processing_app/3D
317
334
  - samples/processing_app/3D/camera