Class: Zui::Animation

Inherits:
Object
  • Object
show all
Defined in:
lib/zui/animation.rb

Constant Summary collapse

EASINGS =
%w[linear in_quad out_quad in_out_quad in_cubic out_cubic in_out_cubic
in_back out_back in_out_back in_elastic out_elastic in_out_elastic
in_bounce out_bounce in_out_bounce].freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(duration: 200, easing: :in_out_quad, delay: 0) ⇒ Animation

Returns a new instance of Animation.

Raises:

  • (ArgumentError)


11
12
13
14
15
16
17
18
# File 'lib/zui/animation.rb', line 11

def initialize(duration: 200, easing: :in_out_quad, delay: 0)
  @duration = Integer(duration)
  @delay = Integer(delay)
  @easing = easing.to_s
  raise ArgumentError, "animation duration must be between 0 and 60 seconds" unless (0..60_000).cover?(@duration)
  raise ArgumentError, "animation delay must be between 0 and 60 seconds" unless (0..60_000).cover?(@delay)
  raise ArgumentError, "unsupported easing: #{@easing}" unless EASINGS.include?(@easing)
end

Instance Attribute Details

#delayObject (readonly)

Returns the value of attribute delay.



9
10
11
# File 'lib/zui/animation.rb', line 9

def delay
  @delay
end

#durationObject (readonly)

Returns the value of attribute duration.



9
10
11
# File 'lib/zui/animation.rb', line 9

def duration
  @duration
end

#easingObject (readonly)

Returns the value of attribute easing.



9
10
11
# File 'lib/zui/animation.rb', line 9

def easing
  @easing
end

Instance Method Details

#to_hObject



20
21
22
# File 'lib/zui/animation.rb', line 20

def to_h
  { "duration" => duration, "easing" => easing, "delay" => delay }
end