Sha256: f562d16508d1e9d82048f9980e5b49947718492a71d395eb575f53283cdcd79d

Contents?: true

Size: 834 Bytes

Versions: 1

Compression:

Stored size: 834 Bytes

Contents

require_relative 'easing'
require_relative 'frameset'

module WhirledPeas
  module Animator
    class Producer
      def self.produce(consumer, refresh_rate)
        producer = new(consumer, refresh_rate)
        yield producer
        consumer.process
      end

      def initialize(consumer, refresh_rate)
        @consumer = consumer
        @refresh_rate = refresh_rate
      end

      def add_frame(name, duration: nil, args: {})
        frameset(duration || 1 / refresh_rate) do |fs|
          fs.add_frame(name, args)
        end
      end

      def frameset(duration, easing: :linear, effect: :in_out, &block)
        fs = Frameset.new((duration * refresh_rate).round, easing, effect)
        yield fs
        consumer.add_frameset(fs)
      end

      private

      attr_reader :consumer, :refresh_rate
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
whirled_peas-0.8.0 lib/whirled_peas/animator/producer.rb