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 |