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
-
#constrain(amt, low, high) ⇒ Object
explicitly provide 'processing.org' constrain instance method to return a float:- amt, low and high need to be floats.
-
#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.
-
#map(value, start1, stop1, start2, stop2) ⇒ float
Explicitly provides 'processing.org' map instance method, in which value is mapped from range 1, to range 2 (NB: values are not clamped to range 1).
-
#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
99 100 101 |
# File 'lib/ruby-processing/helper_methods.rb', line 99 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 |
#constrain(amt, low, high) ⇒ Object
explicitly provide 'processing.org' constrain instance method to return a float:- amt, low and high need to be floats
94 95 96 |
# File 'lib/ruby-processing/helper_methods.rb', line 94 def constrain(amt, low, high) (low..high).clip(amt) end |
#dist(*args) ⇒ Object
explicitly provide 'processing.org' dist instance method
82 83 84 85 86 87 88 89 90 |
# File 'lib/ruby-processing/helper_methods.rb', line 82 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.
105 106 107 108 |
# File 'lib/ruby-processing/helper_methods.rb', line 105 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
176 177 178 179 |
# File 'lib/ruby-processing/helper_methods.rb', line 176 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.
140 141 142 |
# File 'lib/ruby-processing/helper_methods.rb', line 140 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
134 135 136 137 |
# File 'lib/ruby-processing/helper_methods.rb', line 134 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?
187 188 189 |
# File 'lib/ruby-processing/helper_methods.rb', line 187 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
165 166 167 |
# File 'lib/ruby-processing/helper_methods.rb', line 165 def load_strings(file_or_url) loadStrings(file_or_url).to_a end |
#map(value, start1, stop1, start2, stop2) ⇒ float
Explicitly provides 'processing.org' map instance method, in which value is mapped from range 1, to range 2 (NB: values are not clamped to range 1). It may be better to explicitly write your own interpolate function
61 62 63 64 |
# File 'lib/ruby-processing/helper_methods.rb', line 61 def map(value, start1, stop1, start2, stop2) start2 + (stop2 - start2) * ((value - start1).to_f / (stop1 - start1)) warn('map is deprecated use p5map or map1d instead') end |
#max(*args) ⇒ Object
explicitly provide 'processing.org' max instance method to return a float:- a, b and c need to be floats
77 78 79 |
# File 'lib/ruby-processing/helper_methods.rb', line 77 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
70 71 72 |
# File 'lib/ruby-processing/helper_methods.rb', line 70 def min(*args) args.min # { |a,b| a <=> b } optional block not reqd end |
#mouse_pressed? ⇒ Boolean
Is the mouse pressed for this frame?
182 183 184 |
# File 'lib/ruby-processing/helper_methods.rb', line 182 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.
112 113 114 115 116 |
# File 'lib/ruby-processing/helper_methods.rb', line 112 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
171 172 173 |
# File 'lib/ruby-processing/helper_methods.rb', line 171 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.
123 124 125 126 127 128 129 130 |
# File 'lib/ruby-processing/helper_methods.rb', line 123 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
145 146 147 |
# File 'lib/ruby-processing/helper_methods.rb', line 145 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 |