2021-08-27 08:34:20 (UTC-03:00)
Marcel Rodrigues <marcelgmr@gmail.com>
gif: move binary I/O to bio.lua
diff --git a/bio.lua b/bio.lua index e47e7b7..4652f12 100644 --- a/bio.lua +++ b/bio.lua @@ -73,6 +73,11 @@ local function write_beu32(fp, n) write_beu16(fp, bit.band(n, 0xFFFF)) end +local function write_lei16(fp, n) + write_byte(fp, bit.band(n, 0xFF)) + write_byte(fp, bit.rshift(n, 8)) +end + local function write_bei16(fp, n) if n < 0 then n = n + 0x10000 @@ -164,5 +169,6 @@ return { read_beu16=read_beu16, read_beu32=read_beu32, read_lei16=read_lei16, read_lei32=read_lei32, read_bei16=read_bei16, read_bei32=read_bei32, read_led64=read_led64, write_byte=write_byte, write_beu16=write_beu16, - write_beu32=write_beu32, write_bei16=write_bei16, rice_r=rice_r, rice_w=rice_w + write_beu32=write_beu32, write_lei16=write_lei16, write_bei16=write_bei16, + rice_r=rice_r, rice_w=rice_w } diff --git a/gif.lua b/gif.lua index a388508..de18fc9 100644 --- a/gif.lua +++ b/gif.lua @@ -1,6 +1,7 @@ local ffi = require "ffi" local bit = require "bit" +local bio = require "bio" local surf = require "surf" local lzw = require "lzw" @@ -8,9 +9,7 @@ local bnot = bit.bnot local bor, band = bit.bor, bit.band local lshift, rshift = bit.lshift, bit.rshift -local function write_num(f, n) - f:write(string.char(band(n, 0xFF), rshift(n, 8))) -end +local write_num = bio.write_lei16 local function write_nums(f, ...) local nums = {...}