Sha256: 2099f404c31c0ac5124b1e07d871f52f5af9340f3dfd03786d222ffdfaf38cb0
Contents?: true
Size: 1.61 KB
Versions: 4
Compression:
Stored size: 1.61 KB
Contents
# frozen_string_literal: true require_relative './buffer.rb' module Fusuma module Plugin module Buffers # manage events and generate command class GestureBuffer < Buffer DEFAULT_SOURCE = 'libinput_gesture_parser' # @param event [Event] def buffer(event) # TODO: buffering events into buffer plugins # - gesture event buffer # - window event buffer # - other event buffer return if event&.tag != source return if event.record.type != :gesture @events.push(event) clear unless updating? end # @param attr [Symbol] # @return [Float] def sum_attrs(attr) @events.map { |gesture_event| gesture_event.record.direction[attr].to_f } .inject(:+) end # @param attr [Symbol] # @return [Float] def avg_attrs(attr) sum_attrs(attr).to_f / @events.length end # return [Integer] def finger @events.last.record.finger.to_i end # @example # event_buffer.gesture # => 'swipe' # @return [String] def gesture @events.last.record.gesture end def empty? @events.empty? end def select_by_events return enum_for(:select) unless block_given? events = @events.select { |event| yield event } self.class.new events end private def updating? return true unless @events.last.record.status =~ /begin|end/ end end end end end
Version data entries
4 entries across 4 versions & 1 rubygems