login

<     >

2021-04-24 14:16:02 (UTC-03:00)

Marcel Rodrigues <marcelgmr@gmail.com>

GIF: add support for looping

diff --git a/gif.lua b/gif.lua
index eded668..a388508 100644
--- a/gif.lua
+++ b/gif.lua
@@ -48,11 +48,20 @@ local function new_gifout(f, w, h, colors)
         f:write(string.char(0, 0, 0)) -- fill unused colors as black
         i = i + 1
     end
-    -- TODO: write Netscape Application Extension (loop) here
     self.n = 0 -- # of frames added
     return self
 end
 
+function GIFout:set_loop(n)
+    n = n or 0
+    self.f:write("!")
+    self.f:write(string.char(0xFF, 0x0B))
+    self.f:write("NETSCAPE2.0")
+    self.f:write(string.char(0x03, 0x01))
+    write_num(self.f, n)
+    self.f:write(string.char(0))
+end
+
 function GIFout:set_delay(d)
     self.f:write("!")
     self.f:write(string.char(0xF9, 0x04, 0x04))