Module: Processing::HelperMethods
- Included in:
- App
- Defined in:
- lib/ruby-processing/helper_methods.rb
Defined Under Namespace
Classes: VersionError
Instance Method Summary collapse
-
#blend_color(c1, c2, mode) ⇒ Object
Uses PImage class method under hood.
-
#buffer(buf_width = width, buf_height = height, renderer = @render_mode) {|buf| ... } ⇒ Object
Nice block method to draw to a buffer.
- #color(*args) ⇒ Object
-
#dist(*args) ⇒ Object
explicitly provide ‘processing.org’ dist instance method.
-
#find_method(method_name) ⇒ Object
There’s just so many functions in Processing, Here’s a convenient way to look for them.
-
#frame_rate(fps = nil) ⇒ Object
frame_rate needs to support reading and writing.
-
#grid(cols, rows, col_size = 1, row_size = 1) ⇒ Object
A nice method to run a given block for a grid.
-
#java_self ⇒ Object
Provide a convenient handle for the Java-space version of self.
-
#key ⇒ Object
Fix java conversion problems getting the last key If it’s ASCII, return the character, otherwise the integer.
-
#key_pressed? ⇒ Boolean
Is a key pressed for this frame?.
-
#lerp_color(*args) ⇒ Object
lerp_color takes three or four arguments, in Java that’s two different methods, one regular and one static, so:.
-
#load_strings(file_or_url) ⇒ Object
Ensure that load_strings returns a real Ruby array.
-
#max(*args) ⇒ Object
explicitly provide ‘processing.org’ max instance method to return a float:- a, b and c need to be floats.
-
#min(*args) ⇒ Object
explicitly provide ‘processing.org’ min instance method to return a float:- a, b and c need to be floats.
-
#mouse_pressed? ⇒ Boolean
Is the mouse pressed for this frame?.
-
#proxy_java_fields ⇒ Object
Proxy over a list of Java declared fields that have the same name as some methods.
-
#save_strings(filename, strings) ⇒ Object
Writes an array of strings to a file, one line per string.
-
#set_sketch_path(spath = nil) ⇒ Object
By default, your sketch path is the folder that your sketch is in.
-
#sketch_path ⇒ Object
Get the sketch path.
-
#thread(&block) ⇒ Object
Overrides Processing convenience function thread, which takes a String arg (for a function) to more rubylike version, takes a block…
Instance Method Details
#blend_color(c1, c2, mode) ⇒ Object
Uses PImage class method under hood
79 80 81 |
# File 'lib/ruby-processing/helper_methods.rb', line 79 def blend_color(c1, c2, mode) Java::ProcessingCore::PImage.blendColor(c1, c2, mode) end |
#buffer(buf_width = width, buf_height = height, renderer = @render_mode) {|buf| ... } ⇒ Object
Nice block method to draw to a buffer. You can optionally pass it a width, a height, and a renderer. Takes care of starting and ending the draw for you.
14 15 16 17 18 19 20 |
# File 'lib/ruby-processing/helper_methods.rb', line 14 def buffer(buf_width = width, buf_height = height, renderer = @render_mode) buf = create_graphics(buf_width, buf_height, renderer) buf.begin_draw yield buf buf.end_draw buf end |
#color(*args) ⇒ Object
38 39 40 41 |
# File 'lib/ruby-processing/helper_methods.rb', line 38 def color(*args) return super(*args) unless args.length == 1 super(hex_color(args[0])) end |
#dist(*args) ⇒ Object
explicitly provide ‘processing.org’ dist instance method
68 69 70 71 72 73 74 75 76 |
# File 'lib/ruby-processing/helper_methods.rb', line 68 def dist(*args) len = args.length if len == 4 return dist2d(*args) elsif len == 6 return dist3d(*args) end fail ArgumentError, 'takes 4 or 6 parameters' end |
#find_method(method_name) ⇒ Object
There’s just so many functions in Processing, Here’s a convenient way to look for them.
85 86 87 88 |
# File 'lib/ruby-processing/helper_methods.rb', line 85 def find_method(method_name) reg = Regexp.new("#{method_name}", true) methods.sort.select { |meth| reg.match(meth) } end |
#frame_rate(fps = nil) ⇒ Object
frame_rate needs to support reading and writing
156 157 158 159 |
# File 'lib/ruby-processing/helper_methods.rb', line 156 def frame_rate(fps = nil) return @declared_fields['frameRate'].value(java_self) unless fps super(fps) end |
#grid(cols, rows, col_size = 1, row_size = 1) ⇒ Object
A nice method to run a given block for a grid. Lifted from action_coding/Nodebox.
24 25 26 27 28 29 30 |
# File 'lib/ruby-processing/helper_methods.rb', line 24 def grid(cols, rows, col_size = 1, row_size = 1) (0...cols * rows).map do |i| x = col_size * (i % cols) y = row_size * i.div(cols) yield x, y end end |
#java_self ⇒ Object
Provide a convenient handle for the Java-space version of self.
120 121 122 |
# File 'lib/ruby-processing/helper_methods.rb', line 120 def java_self @java_self ||= to_java(Java::ProcessingCore::PApplet) end |
#key ⇒ Object
Fix java conversion problems getting the last key If it’s ASCII, return the character, otherwise the integer
114 115 116 117 |
# File 'lib/ruby-processing/helper_methods.rb', line 114 def key int = @declared_fields['key'].value(java_self) int < 256 ? int.chr : int end |
#key_pressed? ⇒ Boolean
Is a key pressed for this frame?
167 168 169 |
# File 'lib/ruby-processing/helper_methods.rb', line 167 def key_pressed? @declared_fields['keyPressed'].value(java_self) end |
#lerp_color(*args) ⇒ Object
lerp_color takes three or four arguments, in Java that’s two different methods, one regular and one static, so:
34 35 36 |
# File 'lib/ruby-processing/helper_methods.rb', line 34 def lerp_color(*args) args.length > 3 ? self.class.lerp_color(*args) : super(*args) end |
#load_strings(file_or_url) ⇒ Object
Ensure that load_strings returns a real Ruby array
145 146 147 |
# File 'lib/ruby-processing/helper_methods.rb', line 145 def load_strings(file_or_url) loadStrings(file_or_url).to_a end |
#max(*args) ⇒ Object
explicitly provide ‘processing.org’ max instance method to return a float:- a, b and c need to be floats
63 64 65 |
# File 'lib/ruby-processing/helper_methods.rb', line 63 def max(*args) args.max # { |a, b| a <=> b } optional block not reqd end |
#min(*args) ⇒ Object
explicitly provide ‘processing.org’ min instance method to return a float:- a, b and c need to be floats
56 57 58 |
# File 'lib/ruby-processing/helper_methods.rb', line 56 def min(*args) args.min # { |a,b| a <=> b } optional block not reqd end |
#mouse_pressed? ⇒ Boolean
Is the mouse pressed for this frame?
162 163 164 |
# File 'lib/ruby-processing/helper_methods.rb', line 162 def mouse_pressed? @declared_fields['mousePressed'].value(java_self) end |
#proxy_java_fields ⇒ Object
Proxy over a list of Java declared fields that have the same name as some methods. Add to this list as needed.
92 93 94 95 96 |
# File 'lib/ruby-processing/helper_methods.rb', line 92 def proxy_java_fields fields = %w(sketchPath key frameRate frame mousePressed keyPressed) methods = fields.map { |field| java_class.declared_field(field) } @declared_fields = Hash[fields.zip(methods)] end |
#save_strings(filename, strings) ⇒ Object
Writes an array of strings to a file, one line per string. This file is saved to the sketch’s data folder
151 152 153 |
# File 'lib/ruby-processing/helper_methods.rb', line 151 def save_strings(filename, strings) saveStrings(filename, [strings].flatten.to_java(:String)) end |
#set_sketch_path(spath = nil) ⇒ Object
By default, your sketch path is the folder that your sketch is in. If you’d like to do something fancy, feel free.
103 104 105 106 107 108 109 110 |
# File 'lib/ruby-processing/helper_methods.rb', line 103 def set_sketch_path(spath = nil) field = @declared_fields['sketchPath'] begin field.set_value(java_self, spath || SKETCH_ROOT) rescue TypeError fail VersionError, 'Use JRubyArt for processing-3.0' end end |
#sketch_path ⇒ Object
Get the sketch path
125 126 127 |
# File 'lib/ruby-processing/helper_methods.rb', line 125 def sketch_path @declared_fields['sketchPath'].value(java_self) end |
#thread(&block) ⇒ Object
Overrides Processing convenience function thread, which takes a String arg (for a function) to more rubylike version, takes a block…
45 46 47 48 49 50 51 |
# File 'lib/ruby-processing/helper_methods.rb', line 45 def thread(&block) if block_given? Thread.new(&block) else fail ArgumentError, 'thread must be called with a block', caller end end |