blob: 75b9647e1f00b80e06a870145e13e9393580f96c [file] [log] [blame]
# Feed this file to script/make-artificial.go
# This GIF image contains multiple "loop count" entries.
#
# The GIF89a specification doesn't discuss loop counts: it is an extension to
# the format. Neither the official spec nor unofficial documents (e.g.
# http://www.vurdalakov.net/misc/gif/netscape-looping-application-extension)
# state how to interpret having more than one of them: whether to accept the
# first, accept the last, reject the overall animated image as invalid, etc.
# Different spec-compliant decoders can choose different policies.
#
# Wuffs reports the most recent loop count seen, which may change over the
# course of stepping through the frames. Programs that use Wuffs may enforce
# their own policy (e.g. accept first, accept last, etc.) on top of that.
#
# Note also that the loop count as written in the GIF file format has "excludes"
# semantics: it is the number of times to repeat the animation excluding the
# initial play-through (and 0 means to loop forever). An "excludes" loop count
# of 3 means to play each animation frame 4 times. An absent loop count means to
# play each animation frame exactly once.
#
# Wuffs' API provides "includes" semantics, across all of its supported
# animation file formats. An "includes" loop count of 3 means to play each
# animation frame 3 times. There is no absent option. Wuffs' numbers and GIF's
# numbers will generally differ by 1 (other than the absent case, and both
# using 0 to mean forever).
make gif
header
image {
imageWidthHeight 2 2
palette {
0x00 0x00 0xFF
0x11 0x00 0xFF
0x22 0x00 0xFF
0x33 0x00 0xFF
}
}
frame {
frameLeftTopWidthHeight 0 0 1 1
}
lzw 2 0x00
frame {
frameLeftTopWidthHeight 0 0 1 1
}
lzw 2 0x00
loopCount 50
frame {
frameLeftTopWidthHeight 0 0 1 1
}
lzw 2 0x00
loopCount 30
frame {
frameLeftTopWidthHeight 0 0 1 1
}
lzw 2 0x00
loopCount 40
trailer