Class: Petrinet::AnimatedGifBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/petrinet/animated_gif_builder.rb

Instance Method Summary collapse

Constructor Details

#initialize(net) ⇒ AnimatedGifBuilder

Returns a new instance of AnimatedGifBuilder.



3
4
5
# File 'lib/petrinet/animated_gif_builder.rb', line 3

def initialize(net)
  @net = net
end

Instance Method Details

#write(transition_names, gif_path) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/petrinet/animated_gif_builder.rb', line 7

def write(transition_names, gif_path)
  @image_number = 0
  Dir.mktmpdir('petrinet-animation') do |tmpdir|
    net = @net

    write_png(net, tmpdir)
    transition_names.each do |transition_name|
      firing = net.prefire(transition_name)
      write_png(firing, tmpdir)
      net = net.fire(transition_name)
      write_png(net, tmpdir)
    end

    STDOUT.write "🎬\n"
    `convert -delay 100 -loop 0 #{tmpdir}/*.png #{gif_path}`
  end
end