Amqp-processing is a project mainly written in Ruby, based on the MIT license.
Ruby-Processing, Internet-enabled.
h1. AMQP-Processing
Ruby-Processing, Internet-enabled.
!https://github.com/jaymcgavren/amqp-processing/raw/master/amqp-processing.jpg(OS X, Windows, and Linux machines, all displaying the same sketch via amqp-processing)!
h1. Installation
Install JRuby, if you haven't done so already. This is most easily done with "rvm":http://rvm.beginrescueend.com/ :
$ bash < <( curl http://rvm.beginrescueend.com/releases/rvm-install-head ) $ rvm install jruby
Then switch to your JRuby environment, and install the AMQP-Processing gem:
$ rvm use jruby $ gem install amqp-processing
h1. Connecting to a Server
Once installation is complete, the "amqpp" executable should be available in your $PATH. Run it like so:
$ amqpp
Where server_address is the address of an AMQP server (like RabbitMQ). You can provide a port number as a second argument if the server isn't using the standard AMQP port (5672).
h1. Drawing
When the prompt appears, call Processing::App methods on the proxy object stored in $client. The call will be duplicated on all clients currently connected to the server.
>> $client.stroke 100, 255, 50, 128 => nil >> $client.oval 100, 100, 300, 200 => nil
Here are a few basic method calls:
#Draw an opaque yellow line around shapes, 10 pixels wide. red, green, blue, alpha = 128, 128, 0, 255 $client.stroke(red, green, blue, alpha) $client.stroke_width 10 #Fill shapes with semi-transparent purple. red, green, blue, alpha = 255, 0, 255, 128 $client.fill(red, green, blue, alpha) #Draw shapes. x, y = 200, 100 width, height = 400, 300 $client.rect(x, y, width, height) $client.oval(x, y, width, height)
You can find more examples to get you started here:
"Samples from the Ruby-Processing project":https://github.com/jashkenas/ruby-processing/tree/master/samples/processing_app/basics
The full Processing API is supported; you can read up on the various methods here:
"API reference at processing.org":http://processing.org/reference/
You can call your local Processing::App directly (without sending the call to other clients) via $client.app. In this example, oval() would be sent over the wire, but mouse_x() and mouse_y() would not:
loop do x = $client.app.mouse_x y = $client.app.mouse_y $client.oval(x, y, 100, 100) end
If you don't want to prepend "$client" to everything, you can switch to the client's context in IRB:
>> irb $client >> oval 99, 99, 99, 99
h1. Copyright
Copyright (c) 2010-2011 Jay McGavren. Released under the MIT license. See the LICENSE file for details.