Sha256: 5d4647432b1c351b54bc8f0daf0fb740f7abfaf67b0c89e9ca3bddeb2f1f1a07

Contents?: true

Size: 1.03 KB

Versions: 18

Compression:

Stored size: 1.03 KB

Contents

module Fusuma
  # vector data
  class Swipe
    BASE_THERESHOLD = 20
    BASE_INTERVAL   = 0.5

    def initialize(x, y)
      @x = x
      @y = y
    end
    attr_reader :x, :y

    def direction
      return x > 0 ? 'right' : 'left' if x.abs > y.abs
      y > 0 ? 'down' : 'up'
    end

    def enough?
      MultiLogger.debug(x: x, y: y)
      enough_distance? && enough_interval? && self.class.touch_last_time
    end

    private

    def enough_distance?
      (x.abs > threshold) || (y.abs > threshold)
    end

    def enough_interval?
      return true if first_time?
      return true if (Time.now - self.class.last_time) > interval_time
      false
    end

    def first_time?
      self.class.last_time.nil?
    end

    def threshold
      @threshold ||= BASE_THERESHOLD * Config.threshold('swipe')
    end

    def interval_time
      @interval_time ||= BASE_INTERVAL * Config.interval('swipe')
    end

    class << self
      attr_reader :last_time

      def touch_last_time
        @last_time = Time.now
      end
    end
  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
fusuma-0.9.2 lib/fusuma/swipe.rb
fusuma-0.9.1 lib/fusuma/swipe.rb
fusuma-0.9.0 lib/fusuma/swipe.rb
fusuma-0.8.0 lib/fusuma/swipe.rb
fusuma-0.7.2 lib/fusuma/swipe.rb
fusuma-0.7.1 lib/fusuma/swipe.rb
fusuma-0.7.0 lib/fusuma/swipe.rb
fusuma-0.6.0 lib/fusuma/swipe.rb
fusuma-0.5.0 lib/fusuma/swipe.rb
fusuma-0.4.1 lib/fusuma/swipe.rb
fusuma-0.4.0 lib/fusuma/swipe.rb
fusuma-0.3.7 lib/fusuma/swipe.rb
fusuma-0.3.5 lib/fusuma/swipe.rb
fusuma-0.3.4 lib/fusuma/swipe.rb
fusuma-0.3.3 lib/fusuma/swipe.rb
fusuma-0.3.2 lib/fusuma/swipe.rb
fusuma-0.3.1 lib/fusuma/swipe.rb
fusuma-0.3.0 lib/fusuma/swipe.rb