local perr = require("util").perr local function load_p1(fname) local file,err = fs.open(fname,"r") perr(err,"fs.open") local imgf = file.readAll() --print(img) assert(imgf:sub(1,2) == "P1","only P1 images are supported at the moment") local width,height, cur = imgf:match("%s*(%d+)%s*(%d+)%s*()",3) assert(width,"couldn't find image header") local img=setmetatable({},{__index=function(t,k) if type(k) ~= "number" then return nil end local r = {} rawset(t,k,r) return r end}) -- img[y][x]. 1,1 is top left for row=1,height do for col =1,width do local val,ncur = imgf:match("(%d+)%s*()",cur) cur = ncur img[row][col] = tonumber(val) end end img.width=width img.height=height return img end return load_p1