ruby-processing 1.0.1

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.
Files changed (220) hide show
  1. data/CHANGELOG +137 -0
  2. data/LICENSE +37 -0
  3. data/README +61 -0
  4. data/bin/rp5 +4 -0
  5. data/lib/core/core.jar +0 -0
  6. data/lib/core/jruby-complete.jar +0 -0
  7. data/lib/ruby-processing.rb +27 -0
  8. data/lib/ruby-processing/app.rb +358 -0
  9. data/lib/ruby-processing/exporters/applet_exporter.rb +75 -0
  10. data/lib/ruby-processing/exporters/application_exporter.rb +87 -0
  11. data/lib/ruby-processing/exporters/base_exporter.rb +133 -0
  12. data/lib/ruby-processing/exporters/creator.rb +46 -0
  13. data/lib/ruby-processing/helpers/string.rb +27 -0
  14. data/lib/ruby-processing/runner.rb +143 -0
  15. data/lib/ruby-processing/runners/base.rb +5 -0
  16. data/lib/ruby-processing/runners/live.rb +11 -0
  17. data/lib/ruby-processing/runners/run.rb +5 -0
  18. data/lib/ruby-processing/runners/watch.rb +42 -0
  19. data/lib/templates/applet/images/built_with.jpg +0 -0
  20. data/lib/templates/applet/images/ruby.jpg +0 -0
  21. data/lib/templates/applet/images/top.png +0 -0
  22. data/lib/templates/applet/index.html.erb +111 -0
  23. data/lib/templates/applet/library/library.txt +1 -0
  24. data/lib/templates/application/Contents/Info.plist.erb +58 -0
  25. data/lib/templates/application/Contents/MacOS/JavaApplicationStub +0 -0
  26. data/lib/templates/application/Contents/PkgInfo +1 -0
  27. data/lib/templates/application/Contents/Resources/sketch.icns +0 -0
  28. data/lib/templates/application/lib/MANIFEST.MF +3 -0
  29. data/lib/templates/application/lib/args.txt.erb +3 -0
  30. data/lib/templates/application/lib/library/library.txt +1 -0
  31. data/lib/templates/application/run.erb +4 -0
  32. data/lib/templates/application/run.exe +0 -0
  33. data/lib/templates/create/blank_sketch.rb.erb +15 -0
  34. data/library/boids/boids.rb +222 -0
  35. data/library/control_panel/control_panel.rb +149 -0
  36. data/library/dxf/bin/processing/dxf/RawDXF.class +0 -0
  37. data/library/dxf/dxfviewer.jar +0 -0
  38. data/library/dxf/library/dxf.jar +0 -0
  39. data/library/javascript/library/export.txt +6 -0
  40. data/library/javascript/library/javascript.jar +0 -0
  41. data/library/minim/library/jl1.0.jar +0 -0
  42. data/library/minim/library/jsminim.jar +0 -0
  43. data/library/minim/library/minim-spi.jar +0 -0
  44. data/library/minim/library/minim.jar +0 -0
  45. data/library/minim/library/mp3spi1.9.4.jar +0 -0
  46. data/library/minim/library/tritonus_aos.jar +0 -0
  47. data/library/minim/library/tritonus_share.jar +0 -0
  48. data/library/minim/license.txt +339 -0
  49. data/library/minim/version.txt +1 -0
  50. data/library/net/bin/processing/net/Client.class +0 -0
  51. data/library/net/bin/processing/net/Server.class +0 -0
  52. data/library/net/library/net.jar +0 -0
  53. data/library/opengl/bin/processing/opengl/PGraphicsOpenGL$ImageCache.class +0 -0
  54. data/library/opengl/bin/processing/opengl/PGraphicsOpenGL$TessCallback.class +0 -0
  55. data/library/opengl/bin/processing/opengl/PGraphicsOpenGL.class +0 -0
  56. data/library/opengl/library/export.txt +13 -0
  57. data/library/opengl/library/gluegen-rt-natives-linux-amd64.jar +0 -0
  58. data/library/opengl/library/gluegen-rt-natives-linux-i586.jar +0 -0
  59. data/library/opengl/library/gluegen-rt-natives-macosx-ppc.jar +0 -0
  60. data/library/opengl/library/gluegen-rt-natives-macosx-universal.jar +0 -0
  61. data/library/opengl/library/gluegen-rt-natives-windows-amd64.jar +0 -0
  62. data/library/opengl/library/gluegen-rt-natives-windows-i586.jar +0 -0
  63. data/library/opengl/library/gluegen-rt.dll +0 -0
  64. data/library/opengl/library/gluegen-rt.jar +0 -0
  65. data/library/opengl/library/gluegen-rt.jar.pack.gz +0 -0
  66. data/library/opengl/library/jogl-natives-linux-amd64.jar +0 -0
  67. data/library/opengl/library/jogl-natives-linux-i586.jar +0 -0
  68. data/library/opengl/library/jogl-natives-macosx-ppc.jar +0 -0
  69. data/library/opengl/library/jogl-natives-macosx-universal.jar +0 -0
  70. data/library/opengl/library/jogl-natives-windows-amd64.jar +0 -0
  71. data/library/opengl/library/jogl-natives-windows-i586.jar +0 -0
  72. data/library/opengl/library/jogl.dll +0 -0
  73. data/library/opengl/library/jogl.jar +0 -0
  74. data/library/opengl/library/jogl.jar.pack.gz +0 -0
  75. data/library/opengl/library/jogl_awt.dll +0 -0
  76. data/library/opengl/library/jogl_cg.dll +0 -0
  77. data/library/opengl/library/libgluegen-rt.jnilib +0 -0
  78. data/library/opengl/library/libgluegen-rt.so +0 -0
  79. data/library/opengl/library/libjogl.jnilib +0 -0
  80. data/library/opengl/library/libjogl.so +0 -0
  81. data/library/opengl/library/libjogl_awt.jnilib +0 -0
  82. data/library/opengl/library/libjogl_awt.so +0 -0
  83. data/library/opengl/library/libjogl_cg.jnilib +0 -0
  84. data/library/opengl/library/libjogl_cg.so +0 -0
  85. data/library/opengl/library/opengl.jar +0 -0
  86. data/library/pdf/bin/processing/pdf/PGraphicsPDF.class +0 -0
  87. data/library/pdf/library/itext.jar +0 -0
  88. data/library/pdf/library/pdf.jar +0 -0
  89. data/library/pdf/notes.txt +9 -0
  90. data/library/serial/bin/processing/serial/Serial.class +0 -0
  91. data/library/serial/library/RXTXcomm.jar +0 -0
  92. data/library/serial/library/export.txt +3 -0
  93. data/library/serial/library/librxtxSerial.jnilib +0 -0
  94. data/library/serial/library/librxtxSerial.so +0 -0
  95. data/library/serial/library/rxtxSerial.dll +0 -0
  96. data/library/serial/library/serial.jar +0 -0
  97. data/library/video/bin/processing/video/Capture.class +0 -0
  98. data/library/video/bin/processing/video/Movie.class +0 -0
  99. data/library/video/bin/processing/video/MovieMaker.class +0 -0
  100. data/library/video/library/video.jar +0 -0
  101. data/samples/animator.rb +47 -0
  102. data/samples/circle_collision.rb +213 -0
  103. data/samples/fern.rb +49 -0
  104. data/samples/flight_patterns.rb +64 -0
  105. data/samples/full_screen.rb +35 -0
  106. data/samples/getting_started.rb +43 -0
  107. data/samples/jwishy.rb +85 -0
  108. data/samples/kinetic_type.rb +100 -0
  109. data/samples/learning_processing/ABOUT +11 -0
  110. data/samples/learning_processing/chapter_01/1_stroke_and_fill.rb +34 -0
  111. data/samples/learning_processing/chapter_01/2_nofill.rb +25 -0
  112. data/samples/learning_processing/chapter_01/3_rgb_color.rb +31 -0
  113. data/samples/learning_processing/chapter_01/4_alpha_transparency.rb +36 -0
  114. data/samples/learning_processing/chapter_01/5_zoog.rb +37 -0
  115. data/samples/learning_processing/chapter_02/1_zoog_again.rb +39 -0
  116. data/samples/learning_processing/chapter_03/1_zoog_as_dynamic_sketch.rb +44 -0
  117. data/samples/learning_processing/chapter_03/2_mouse_x_and_mouse_y.rb +26 -0
  118. data/samples/learning_processing/chapter_03/3_zoog_as_dynamic_sketch_with_variation.rb +41 -0
  119. data/samples/learning_processing/chapter_03/4_drawing_a_continuous_line.rb +18 -0
  120. data/samples/learning_processing/chapter_03/5_mouse_pressed_and_key_pressed.rb +29 -0
  121. data/samples/learning_processing/chapter_03/6_interactive_zoog.rb +50 -0
  122. data/samples/learning_processing/chapter_04/1_variable_declaration.rb +24 -0
  123. data/samples/learning_processing/chapter_04/2_using_variables.rb +27 -0
  124. data/samples/learning_processing/chapter_04/3_varying_variables.rb +27 -0
  125. data/samples/learning_processing/chapter_04/4_many_variables.rb +38 -0
  126. data/samples/learning_processing/chapter_04/5_using_system_variables.rb +28 -0
  127. data/samples/learning_processing/chapter_04/6_ellipse_with_variables.rb +24 -0
  128. data/samples/learning_processing/chapter_04/7_filling_variables_with_random_values.rb +27 -0
  129. data/samples/learning_processing/chapter_04/8_variable_zoog.rb +50 -0
  130. data/samples/learning_processing/chapter_05/01_conditionals.rb +31 -0
  131. data/samples/learning_processing/chapter_05/02_more_conditionals.rb +38 -0
  132. data/samples/learning_processing/chapter_05/03_rollovers.rb +34 -0
  133. data/samples/learning_processing/chapter_05/04_hold_down_the_button.rb +33 -0
  134. data/samples/learning_processing/chapter_05/05_button_as_switch.rb +39 -0
  135. data/samples/learning_processing/chapter_05/06_bouncing_ball.rb +33 -0
  136. data/samples/learning_processing/chapter_05/07_bouncing_color.rb +37 -0
  137. data/samples/learning_processing/chapter_05/08_square_following_edge.rb +59 -0
  138. data/samples/learning_processing/chapter_05/09_simple_gravity.rb +43 -0
  139. data/samples/learning_processing/chapter_05/10_zoog_and_conditionals.rb +53 -0
  140. data/samples/learning_processing/chapter_06/01_many_lines.rb +29 -0
  141. data/samples/learning_processing/chapter_06/02_many_lines_with_variables.rb +53 -0
  142. data/samples/learning_processing/chapter_06/03_while_loop.rb +30 -0
  143. data/samples/learning_processing/chapter_06/04_infinite_loop.rb +25 -0
  144. data/samples/learning_processing/chapter_06/05_another_infinite_loop.rb +33 -0
  145. data/samples/learning_processing/chapter_06/06_legs_with_a_for_loop.rb +41 -0
  146. data/samples/learning_processing/chapter_06/07_local_variables.rb +39 -0
  147. data/samples/learning_processing/chapter_06/08_lines_one_at_a_time.rb +30 -0
  148. data/samples/learning_processing/chapter_06/09_simple_while_loop_with_interactivity.rb +41 -0
  149. data/samples/learning_processing/chapter_06/10_zoog_with_arms.rb +56 -0
  150. data/samples/learning_processing/chapter_06/11_multiple_zoogs.rb +46 -0
  151. data/samples/learning_processing/chapter_07/01_defining_a_function.rb +22 -0
  152. data/samples/learning_processing/chapter_07/02_calling_a_function.rb +22 -0
  153. data/samples/learning_processing/chapter_07/03_bouncing_ball_with_functions.rb +49 -0
  154. data/samples/learning_processing/chapter_07/04_function_returns_distance.rb +48 -0
  155. data/samples/learning_processing/chapter_07/05_zoog_with_functions.rb +71 -0
  156. data/samples/learning_processing/chapter_08/01_car_class_and_car_variable.rb +45 -0
  157. data/samples/learning_processing/chapter_08/02_two_car_objects.rb +60 -0
  158. data/samples/learning_processing/chapter_08/03_object_oriented_zoog.rb +81 -0
  159. data/samples/learning_processing/chapter_10/01_catcher.rb +35 -0
  160. data/samples/learning_processing/chapter_10/02_bouncing_ball.rb +44 -0
  161. data/samples/learning_processing/chapter_10/03_bouncing_balls_with_intersection.rb +69 -0
  162. data/samples/learning_processing/chapter_10/04_a_timer.rb +24 -0
  163. data/samples/learning_processing/chapter_10/05_object_oriented_timer.rb +42 -0
  164. data/samples/learning_processing/chapter_10/06_simple_raindrop.rb +23 -0
  165. data/samples/learning_processing/chapter_10/07_drops_one_at_a_time.rb +63 -0
  166. data/samples/learning_processing/chapter_13/02_random_number_distribution.rb +24 -0
  167. data/samples/learning_processing/chapter_13/03_probabilities.rb +33 -0
  168. data/samples/learning_processing/chapter_13/04_perlin_noise.rb +22 -0
  169. data/samples/learning_processing/chapter_13/06_oscillation.rb +29 -0
  170. data/samples/learning_processing/chapter_13/07_wave.rb +31 -0
  171. data/samples/learning_processing/chapter_13/08_recursion.rb +30 -0
  172. data/samples/learning_processing/chapter_13/09_two_dimensional_array.rb +21 -0
  173. data/samples/learning_processing/chapter_13/10_two_dimensional_array_with_objects.rb +54 -0
  174. data/samples/learning_processing/chapter_14/01_growing_rectangle.rb +26 -0
  175. data/samples/learning_processing/chapter_14/02_multiple_translations.rb +37 -0
  176. data/samples/learning_processing/chapter_14/03_depth_rectangle.rb +29 -0
  177. data/samples/learning_processing/chapter_14/04_pyramid_using_beingshape.rb +55 -0
  178. data/samples/learning_processing/chapter_14/05_rotate_rectangle_around_center.rb +28 -0
  179. data/samples/learning_processing/chapter_14/06_rotate_z.rb +24 -0
  180. data/samples/learning_processing/chapter_14/07_rotate_x.rb +24 -0
  181. data/samples/learning_processing/chapter_14/08_rotate_y.rb +24 -0
  182. data/samples/learning_processing/chapter_14/09_rotate_all.rb +24 -0
  183. data/samples/learning_processing/chapter_14/10_draw_pyramid.rb +59 -0
  184. data/samples/learning_processing/chapter_14/12_rotating_one_square.rb +25 -0
  185. data/samples/learning_processing/chapter_14/13_rotating_another_square.rb +25 -0
  186. data/samples/learning_processing/chapter_14/14_rotating_both_squares.rb +43 -0
  187. data/samples/learning_processing/chapter_14/15_rotating_many_things.rb +56 -0
  188. data/samples/learning_processing/chapter_14/16_simple_solar_system.rb +53 -0
  189. data/samples/learning_processing/chapter_14/17_nested_push_and_pop.rb +50 -0
  190. data/samples/learning_processing/chapter_14/18_object_oriented_solar_system.rb +69 -0
  191. data/samples/learning_processing/chapter_15/01_hello_world_image.rb +20 -0
  192. data/samples/learning_processing/chapter_15/02_image_sprite.rb +29 -0
  193. data/samples/learning_processing/chapter_15/03_swapping_images.rb +25 -0
  194. data/samples/learning_processing/chapter_15/04_image_sequence.rb +22 -0
  195. data/samples/learning_processing/chapter_15/05_setting_pixels.rb +19 -0
  196. data/samples/learning_processing/chapter_15/06_pixels_2d.rb +29 -0
  197. data/samples/learning_processing/chapter_15/07_image_pixels.rb +40 -0
  198. data/samples/learning_processing/chapter_15/08_image_brightness.rb +29 -0
  199. data/samples/learning_processing/chapter_15/09_flashlight_effect.rb +42 -0
  200. data/samples/learning_processing/chapter_15/10_brightness_threshold.rb +33 -0
  201. data/samples/learning_processing/chapter_15/11_brightness_threshold_with_filter.rb +20 -0
  202. data/samples/learning_processing/chapter_15/12_pixel_neighbour_differences.rb +43 -0
  203. data/samples/learning_processing/chapter_15/14_pointillism.rb +34 -0
  204. data/samples/learning_processing/chapter_15/15_2d_image_mapped_to_3d.rb +43 -0
  205. data/samples/learning_processing/chapter_15/data/animal0.jpg +0 -0
  206. data/samples/learning_processing/chapter_15/data/animal1.jpg +0 -0
  207. data/samples/learning_processing/chapter_15/data/animal2.jpg +0 -0
  208. data/samples/learning_processing/chapter_15/data/animal3.jpg +0 -0
  209. data/samples/learning_processing/chapter_15/data/animal4.jpg +0 -0
  210. data/samples/learning_processing/chapter_15/data/animal5.jpg +0 -0
  211. data/samples/learning_processing/chapter_15/data/animal6.jpg +0 -0
  212. data/samples/learning_processing/chapter_15/data/face.jpg +0 -0
  213. data/samples/learning_processing/chapter_15/data/mysummervacation.jpg +0 -0
  214. data/samples/learning_processing/chapter_15/data/sunflower.jpg +0 -0
  215. data/samples/learning_processing/chapter_16/01_display_video.rb +25 -0
  216. data/samples/learning_processing/chapter_16/02_manipulate_video_image.rb +24 -0
  217. data/samples/reflection.rb +26 -0
  218. data/samples/simple_buffer.rb +49 -0
  219. data/samples/tree.rb +83 -0
  220. metadata +348 -0
@@ -0,0 +1,64 @@
1
+ # Description:
2
+ # Flight Patterns is that ol' Euruko 2008 demo.
3
+
4
+ require 'ruby-processing'
5
+
6
+ class FlightPatterns < Processing::App
7
+ load_libraries 'boids', 'opengl'
8
+ include_package "processing.opengl" if library_loaded? "opengl"
9
+
10
+ def setup
11
+ library_loaded?(:opengl) ? setup_opengl : render_mode(P3D)
12
+ sphere_detail 8
13
+ color_mode RGB, 1.0
14
+ no_stroke
15
+ frame_rate 30
16
+ shininess 1.0
17
+ specular 0.3, 0.1, 0.1
18
+ emissive 0.03, 0.03, 0.1
19
+
20
+ @click = false
21
+ @flocks = []
22
+ 3.times do |i|
23
+ flock = Boids.flock 20, 0, 0, width, height
24
+ flock.goal width/2, height/2, 0
25
+ @flocks << flock
26
+ end
27
+ end
28
+
29
+ def setup_opengl
30
+ render_mode OPENGL
31
+ hint ENABLE_OPENGL_4X_SMOOTH
32
+ end
33
+
34
+ def mouse_pressed
35
+ @click = !@click
36
+ end
37
+
38
+ def draw
39
+ background 0.05
40
+ ambient_light 0.01, 0.01, 0.01
41
+ light_specular 0.4, 0.2, 0.2
42
+ point_light 1.0, 1.0, 1.0, mouse_x, mouse_y, 190
43
+ @flocks.each_with_index do |flock, i|
44
+ flock.goal mouse_x, mouse_y, 0, @flee
45
+ flock.update(:goal => 185, :limit => 13.5)
46
+ for boid in flock do
47
+ r = 20 + (boid.z * 0.15)
48
+ alpha = 0.5 + (boid.z * 0.01)
49
+ case i
50
+ when 0 then fill 0.55, 0.35, 0.35
51
+ when 1 then fill 0.35, 0.55, 0.35
52
+ when 2 then fill 0.35, 0.35, 0.55
53
+ end
54
+ push_matrix
55
+ translate boid.x-r/2, boid.y-r/2, boid.z-r/2
56
+ @click ? sphere(r/2) : oval(0, 0, r, r)
57
+ pop_matrix
58
+ end
59
+ end
60
+ end
61
+
62
+ end
63
+
64
+ FlightPatterns.new(:title => "Flight Patterns", :width => 1100, :height => 800, :full_screen => true)
@@ -0,0 +1,35 @@
1
+ # Description:
2
+ # This full-screen demo can demonstrate the kinds of speedups
3
+ # that are possible with OpenGL-accelerated rendering. If you
4
+ # have the OpenGL library installed, you'll get *much*
5
+ # smoother and faster drawing.
6
+
7
+ require 'ruby-processing'
8
+
9
+ class FullScreen < Processing::App
10
+ load_library :opengl
11
+
12
+ def setup
13
+ library_loaded?(:opengl) ? render_mode(OPENGL) : render_mode(P3D)
14
+ no_stroke
15
+ end
16
+
17
+ def draw
18
+ lights
19
+ background 0
20
+ fill 120, 160, 220
21
+ (width/100).times do |x|
22
+ (height/100).times do |y|
23
+ new_x, new_y = x * 100, y * 100
24
+ push_matrix
25
+ translate new_x + 50, new_y + 50
26
+ rotate_y(((mouse_x.to_f + new_x) / width) * Math::PI)
27
+ rotate_x(((mouse_y.to_f + new_y) / height) * Math::PI)
28
+ box 90
29
+ pop_matrix
30
+ end
31
+ end
32
+ end
33
+ end
34
+
35
+ FullScreen.new(:full_screen => true, :title => "Full Screen", :width => 600, :height => 600)
@@ -0,0 +1,43 @@
1
+ # So, let's get started: The first thing you may notice is
2
+ # that there is a bunch more code around the edges here
3
+ # than in vanilla Processing sketches. Ruby-Processing
4
+ # doesn't perform any special code munging or pre-processing,
5
+ # so what you see here is *just Ruby* taking advantage
6
+ # of the Processing library.
7
+
8
+ # Hence, this line, which loads in Processing.
9
+ require 'ruby-processing'
10
+
11
+ # Here we begin to define the Sketch by making it a
12
+ # Processing App.
13
+ class SampleApplication < Processing::App
14
+
15
+ # Now we define a setup method, for code that gets
16
+ # run one time when the app is started.
17
+ def setup
18
+ background 0
19
+ no_stroke
20
+ smooth
21
+ @rotation = 0
22
+ end
23
+
24
+ # And the draw method which will be called repeatedly.
25
+ # Delete this if you don't need animation.
26
+ def draw
27
+ fill 0, 20
28
+ rect 0, 0, width, height
29
+
30
+ translate width/2, height/2
31
+ rotate @rotation
32
+
33
+ fill 255
34
+ ellipse 0, -60, 20, 20
35
+
36
+ @rotation += 0.1
37
+ end
38
+
39
+ end
40
+
41
+ # Now that the sketch is defined, we can start one up.
42
+ # The following line does this, passing in the title, width, and height.
43
+ SampleApplication.new(:width => 200, :height => 200, :title => "SampleApplication")
data/samples/jwishy.rb ADDED
@@ -0,0 +1,85 @@
1
+ # This one has a long lineage:
2
+ # It was originally adapted to Shoes in Ruby,
3
+ # from a Python example for Nodebox, and then, now
4
+ # to Ruby-Processing.
5
+
6
+ # For fun, try running it via jirb, and
7
+ # playing with the attr_accessors, as
8
+ # well as the background.
9
+
10
+ # This example now demonstrates the use of the control_panel.
11
+
12
+ # -- omygawshkenas
13
+
14
+ require 'ruby-processing'
15
+
16
+ class Sketch < Processing::App
17
+ load_libraries :control_panel, :net
18
+
19
+ attr_accessor :x_wiggle, :y_wiggle, :magnitude, :bluish
20
+
21
+ def setup
22
+ control_panel do |c|
23
+ c.slider :bluish, 0.0..1.0
24
+ c.slider :alpha, 0.0..1.0
25
+ c.checkbox :go_big
26
+ c.button :reset
27
+ end
28
+
29
+ @x_wiggle, @y_wiggle = 10.0, 0
30
+ @magnitude = 8.15
31
+ @bluish = 0.9
32
+ @background = [0.06, 0.03, 0.18]
33
+ @alpha = 1.0
34
+ color_mode RGB, 1
35
+ smooth
36
+ end
37
+
38
+ def background=(*args)
39
+ @background = args.flatten
40
+ end
41
+
42
+ def draw_background
43
+ @background[3] = @alpha
44
+ fill *@background if @background[0]
45
+ rect 0, 0, width, height
46
+ end
47
+
48
+ def reset
49
+ @y_wiggle = 0
50
+ end
51
+
52
+ def draw
53
+ draw_background
54
+
55
+ # Seed the random numbers for consistent placement from frame to frame
56
+ srand(0)
57
+ horiz, vert, mag = @x_wiggle, @y_wiggle, @magnitude
58
+
59
+ if @go_big
60
+ mag *= 2
61
+ vert /= 2
62
+ end
63
+
64
+ blu = bluish
65
+ x, y = (self.width / 2), -27
66
+ c = 0.0
67
+
68
+ 64.times do |i|
69
+ x += cos(horiz)*mag
70
+ y += log10(vert)*mag + sin(vert) * 2
71
+ fill(sin(@y_wiggle + c), rand * 0.2, rand * blu, 0.5)
72
+ s = 42 + cos(vert) * 17
73
+ oval(x-s/2, y-s/2, s, s)
74
+ vert += rand * 0.25
75
+ horiz += rand * 0.25
76
+ c += 0.1
77
+ end
78
+
79
+ @x_wiggle += 0.05
80
+ @y_wiggle += 0.1
81
+ end
82
+ end
83
+
84
+ # Try setting full screen to true.
85
+ Sketch.new(:width => 600, :height => 600, :title => "WishyWorm", :full_screen => false)
@@ -0,0 +1,100 @@
1
+ # From the Processing Examples
2
+ # by Zach Lieberman
3
+ # Ruby version thanks to Nick Sieger
4
+
5
+ require 'ruby-processing'
6
+
7
+ class KineticType < Processing::App
8
+ load_library :opengl
9
+
10
+ WORDS = ["sometimes it's like", "the lines of text", "are so happy", "that they want to dance",
11
+ "or leave the page or jump", "can you blame them?", "living on the page like that",
12
+ "waiting to be read..."]
13
+
14
+ def setup
15
+ library_loaded?(:opengl) ? render_mode(OPENGL) : render_mode(P3D)
16
+
17
+ frame_rate 30
18
+
19
+ # Array of line objects
20
+ @lns = [];
21
+
22
+ # Try to create the font from scratch.
23
+ hint(ENABLE_NATIVE_FONTS)
24
+ f = create_font("Monospaced", 66)
25
+ text_font f, 1.0
26
+
27
+ # White type, black background
28
+ fill 255
29
+
30
+ # Creating the line objects
31
+ i = -1
32
+ @lines = WORDS.map do |ln|
33
+ i += 1
34
+ Line.new self, ln, 0, i * 70, f
35
+ end
36
+ end
37
+
38
+ def draw
39
+ background 0
40
+
41
+ translate (width / 2.0) - 350, (height / 2.0) - 240, -450
42
+ rotateY 0.3
43
+
44
+ # Now animate every line object & draw it...
45
+ @lines.each_with_index do |line,i|
46
+ f1 = sin((i + 1.0) * (millis() / 10000.0) * TWO_PI)
47
+ f2 = sin((8.0 - i) * (millis() / 10000.0) * TWO_PI)
48
+ push_matrix
49
+ translate 0.0, line.ypos, 0.0
50
+ 0.upto(line.letters.length - 1) do |j|
51
+ if j != 0
52
+ translate(text_width(line.letters[j - 1].char)*75, 0.0, 0.0)
53
+ end
54
+ rotate_y(f1 * 0.035 * f2)
55
+ push_matrix
56
+ scale(75.0, 75.0, 75.0)
57
+ text(line.letters[j].char, 0.0, 0.0)
58
+ pop_matrix
59
+ end
60
+ pop_matrix
61
+ end
62
+ rescue => e
63
+ puts e.to_s, *e.backtrace
64
+ raise e
65
+ end
66
+
67
+ # Any class inheriting from this app object
68
+ # can use all the plain Processing calls.
69
+ class AppObject
70
+ attr_accessor :app
71
+ def method_missing(meth, *args, &block)
72
+ app.send(meth, *args, &block)
73
+ end
74
+ end
75
+
76
+ class Line < AppObject
77
+ attr_accessor :string, :xpos, :ypos, :highlight_num,
78
+ :font, :speed, :curl_in_x, :letters
79
+
80
+ def initialize(app, s, i, j, bagelfont)
81
+ @app, @string, @xpos, @ypos, @font = app, s, i, j, bagelfont
82
+ @letters = []
83
+ f1 = 0.0
84
+ s.each_byte do |c|
85
+ f1 += text_width c
86
+ @letters << Letter.new(c, f1, 0.0)
87
+ end
88
+ @curl_in_x = 0.1
89
+ end
90
+ end
91
+
92
+ class Letter
93
+ attr_accessor :char, :x, :y
94
+ def initialize(c, x, y)
95
+ @char, @x, @y = c, x, y
96
+ end
97
+ end
98
+ end
99
+
100
+ KineticType.new :width => 200, :height => 200, :title => "Kinetic Type"
@@ -0,0 +1,11 @@
1
+ "Learning Processing" is a 2008 book that serves as a gentle
2
+ introduction to the theory and practice of programming. It
3
+ works by introducing code concepts over the course of 23
4
+ chapters, and creating a series of examples that build on
5
+ the sketches that you write over the course of the book.
6
+
7
+ "Learning Processing" is written by Daniel Shiffman of the
8
+ ITP in New York City.
9
+
10
+ More information about the book can be found at:
11
+ http://www.learningprocessing.com/
@@ -0,0 +1,34 @@
1
+ # So, let's get started: The first thing you may notice is
2
+ # that there is a bunch more code around the edges here
3
+ # than in the Learning Processing example. Ruby-Processing
4
+ # doesn't perform any special munging or pre-processing,
5
+ # so what you see here is *just Ruby* taking advantage
6
+ # of the Processing library.
7
+
8
+ # Hence, this line, which loads in Processing.
9
+ require 'ruby-processing'
10
+
11
+ # Here we begin to define the Sketch by making it a
12
+ # Processing App.
13
+ class StrokeAndFill < Processing::App
14
+
15
+ # Now we define a setup method, for code that gets
16
+ # run one time when the app is started.
17
+ def setup
18
+ background 255
19
+ stroke 0
20
+ fill 150
21
+ rect 50, 50, 75, 100
22
+ end
23
+
24
+ # And the draw method has nothing inside of it.
25
+ # If it did, the code inside would be run repeatedly.
26
+ def draw
27
+
28
+ end
29
+
30
+ end
31
+
32
+ # Now that the sketch is defined, we can start one up.
33
+ # The following line does this, passing in the title, width, and height.
34
+ StrokeAndFill.new :title => "Stroke And Fill", :width => 200, :height => 200
@@ -0,0 +1,25 @@
1
+ require 'ruby-processing'
2
+
3
+ class NofillApp < Processing::App
4
+
5
+ def setup
6
+ smooth
7
+ background 255
8
+ # In Ruby, methods and variables are under_scored instead of camelCased
9
+ no_fill
10
+ stroke 0
11
+ # You might notice that there are no parenthesis or semicolons.
12
+ # That's because they're optional.
13
+ ellipse 60, 60, 100, 100
14
+ # This line works too:
15
+ ellipse(60, 60, 100, 100);
16
+ end
17
+
18
+ def draw
19
+
20
+ end
21
+
22
+ end
23
+
24
+ # The names of classes are still camel cased.
25
+ NofillApp.new :title => "Nofill", :width => 200, :height => 200
@@ -0,0 +1,31 @@
1
+ require 'ruby-processing'
2
+
3
+ # RGB color is specified by intensity of red, then green, then blue.
4
+ class RgbColor < Processing::App
5
+
6
+ def setup
7
+ smooth
8
+
9
+ background 255
10
+ no_stroke
11
+
12
+ # Bright red
13
+ fill 255, 0, 0
14
+ ellipse 20, 20, 16, 16
15
+
16
+ # Dark red
17
+ fill 127, 0, 0
18
+ ellipse 40, 20, 16, 16
19
+
20
+ # Pink
21
+ fill 255, 200, 200
22
+ ellipse 60, 20, 16, 16
23
+ end
24
+
25
+ def draw
26
+
27
+ end
28
+
29
+ end
30
+
31
+ RgbColor.new :title => "Rgb Color", :width => 200, :height => 200
@@ -0,0 +1,36 @@
1
+ require 'ruby-processing'
2
+
3
+ class AlphaTransparency < Processing::App
4
+
5
+ def setup
6
+ background 0
7
+ no_stroke
8
+
9
+ # No fourth argument means 100% opacity
10
+ fill 0, 0, 255
11
+ rect 0, 0, 100, 200
12
+
13
+ # 255 means 100% opacity
14
+ fill 255, 0, 0, 255
15
+ rect 0, 0, 200, 40
16
+
17
+ # 75% opacity
18
+ fill 255, 0, 0, 191
19
+ rect 0, 50, 200, 40
20
+
21
+ # 55% opacity
22
+ fill 200, 0, 0, 127
23
+ rect 0, 100, 200, 40
24
+
25
+ # 25% opacity
26
+ fill 255, 0, 0, 63
27
+ rect 0, 150, 200, 40
28
+ end
29
+
30
+ def draw
31
+
32
+ end
33
+
34
+ end
35
+
36
+ AlphaTransparency.new :title => "Alpha Transparency", :width => 200, :height => 200