aseprite/tests/scripts/merge_down_bugs.lua

71 lines
2.0 KiB
Lua

-- Copyright (C) 2019-2024 Igara Studio S.A.
--
-- This file is released under the terms of the MIT license.
-- Read LICENSE.txt for more information.
local red = Color{ r=255, g=0, b=0 }
local blue = Color{ r=0, g=0, b=255 }
-- Reproduces the bug reported in https://community.aseprite.org/t/2894
do
local s = Sprite(32, 32)
local a = s.layers[1]
app.useTool{ color=red, layer=a, points={ Point(2, 2) }}
local b = s:newLayer()
app.useTool{ color=blue, layer=b, points={ Point(1, 1) }}
a.isContinuous = true
b.isContinuous = true
app.command.NewFrame()
app.activeLayer = b
app.command.MergeDownLayer()
assert(#s.cels == 2)
assert(s.cels[1].image:isEqual(s.cels[2].image))
end
-- Checks that merge down accounts for z-index (issue #4468)
do
local s = Sprite(32, 32)
local a = s.layers[1]
app.useTool{ color=red, layer=a, points={ Point(1, 1) }}
local b = s:newLayer()
app.useTool{ color=blue, layer=b, points={ Point(1, 1) }}
a.cels[1].zIndex = 1
b.cels[1].zIndex = 0
local before = s.cels[1].image:clone()
app.activeLayer = b
app.command.MergeDownLayer()
local after = s.cels[1].image
assert(before:isEqual(after))
end
-- Check that linked cels are not broken (regression in issue #4685)
-- We create two layers, the bottom one with 4 linked frames, and the
-- top one with one cel at 2nd frame, when we merge them, the
-- resulting layer should have frame 1, 3, and 4 linked.
do
local s = Sprite(32, 32)
app.useTool{ color=Color(255, 0, 0), points={ {0,0}, {32,32} } }
app.layer.isContinuous = true
app.command.NewFrame{ content=cellinked }
app.command.NewFrame{ content=cellinked }
app.command.NewFrame{ content=cellinked }
s:newLayer()
app.frame = 2
app.useTool{ color=Color(0, 0, 255), points={ {32,0}, {0,32} } }
app.command.MergeDownLayer()
local cels = app.layer.cels
-- Check that frame 1, 3, and 4 have the same image (linked cels)
assert(cels[1].image ~= cels[2].image)
assert(cels[1].image == cels[3].image)
assert(cels[1].image == cels[4].image)
end