Module: Interactive
- Defined in:
- lib/interactive.rb
Instance Attribute Summary collapse
-
#basis ⇒ Object
readonly
Returns the value of attribute basis.
-
#index ⇒ Object
readonly
Returns the value of attribute index.
-
#screen ⇒ Object
readonly
Returns the value of attribute screen.
Class Method Summary collapse
Instance Method Summary collapse
Instance Attribute Details
#basis ⇒ Object (readonly)
Returns the value of attribute basis.
4 5 6 |
# File 'lib/interactive.rb', line 4 def basis @basis end |
#index ⇒ Object (readonly)
Returns the value of attribute index.
4 5 6 |
# File 'lib/interactive.rb', line 4 def index @index end |
#screen ⇒ Object (readonly)
Returns the value of attribute screen.
4 5 6 |
# File 'lib/interactive.rb', line 4 def screen @screen end |
Class Method Details
.included(base) ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/interactive.rb', line 5 def self.included(base) base.class_eval do alias :old_setup :setup alias :old_draw :draw def setup old_setup @cache = Cache.new(self).refresh @index = @screen.build end def draw old_draw @screen.join = false @old_points ||= [] @points_to_highlight ||= [] @cache.restore if @old_points.count > 0 @points_to_highlight.each do |p| @highlight_block.call(p[:original], p[:mapped], @screen) if @highlight_block @screen.draw_crosshairs(p[:original]) end @old_points = @points_to_highlight end end end |
Instance Method Details
#mouseMoved(p) ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/interactive.rb', line 31 def mouseMoved(p) p = {:x => p.getX(), :y => p.getY()} @old_points ||= [] @points_to_highlight ||= [] original_point = @screen.original(p) closest_point = @index.nearest([original_point[:x], original_point[:y]]) closest = @screen.points[closest_point[:id]] return if closest.nil? closest_onscreen_point = @screen.transformed(closest) distance = (closest_onscreen_point[:x] - p[:x])**2 + (closest_onscreen_point[:y] - p[:y])**2 if distance > 14.0 @points_to_highlight = [] redraw return end @points_to_highlight = [{:original => closest, :mapped => closest_onscreen_point}] @screen.write(closest) redraw end |