aseprite/tests/scripts/image_iterator.lua
2022-10-25 15:30:38 -03:00

73 lines
1.5 KiB
Lua

-- Copyright (C) 2018 David Capello
--
-- This file is released under the terms of the MIT license.
-- Read LICENSE.txt for more information.
local pc = app.pixelColor
-- Iterate pixels
do
local spr = Sprite(2, 2)
local image = app.site.image
local colors = { pc.rgba(255, 0, 0, 255),
pc.rgba(0, 255, 0, 255),
pc.rgba(255, 0, 255, 255),
pc.rgba(255, 0, 255, 255) }
local xy = {
{ x=0, y=0 },
{ x=1, y=0 },
{ x=0, y=1 },
{ x=1, y=1 } }
local c = 1
for y=0,image.height-1 do
for x=0,image.width-1 do
image:putPixel(x, y, colors[c])
c = c+1
end
end
c = 1
for y=0,image.height-1 do
for x=0,image.width-1 do
assert(colors[c] == image:getPixel(x, y))
c = c+1
end
end
c = 1
for it in image:pixels() do
assert(colors[c] == it())
assert(xy[c].x == it.x)
assert(xy[c].y == it.y)
c = c+1
end
c = 0
for it in image:pixels{x=1, y=0, width=1, height=2} do
local i = 1 + it.y*2 + it.x
assert(colors[i] == it())
assert(xy[i].x == it.x)
assert(xy[i].y == it.y)
c = c + 1
end
assert(c == 2)
-- Iterating outside
for it in image:pixels{x=2, y=0, width=2, height=2} do
assert(false)
end
c = 1
for it in image:pixels() do
it(pc.rgba(255, 32*c, 0, 255))
c = c+1
end
c = 1
for it in image:pixels() do
assert(pc.rgba(255, 32*c, 0, 255) == it())
c = c+1
end
end