summaryrefslogtreecommitdiff
path: root/img/load_pnm_old.lua
blob: 60cac8a92fde806a126591db3ffd73b90cfedc8e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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