Merge 4422164ef7b8327c4715c9ab8e601659232494df into 53c415c93323a6432b28d43d3b38869a4e2f54fd

This commit is contained in:
Martín Capello 2025-03-11 17:23:31 -03:00 committed by GitHub
commit f1d7692187
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 68 additions and 1 deletions

View File

@ -1,5 +1,5 @@
// Aseprite
// Copyright (C) 2018-2024 Igara Studio S.A.
// Copyright (C) 2018-2025 Igara Studio S.A.
// Copyright (C) 2018 David Capello
//
// This program is distributed under the terms of
@ -247,6 +247,13 @@ int Layer_get_tileset(lua_State* L)
return 1;
}
int Layer_get_uuid(lua_State* L)
{
auto* layer = get_docobj<Layer>(L, 1);
push_obj(L, layer->uuid());
return 1;
}
int Layer_set_name(lua_State* L)
{
auto layer = get_docobj<Layer>(L, 1);
@ -446,6 +453,7 @@ const Property Layer_properties[] = {
{ "data", UserData_get_text<Layer>, UserData_set_text<Layer> },
{ "properties", UserData_get_properties<Layer>, UserData_set_properties<Layer> },
{ "tileset", Layer_get_tileset, Layer_set_tileset },
{ "uuid", Layer_get_uuid, nullptr },
{ nullptr, nullptr, nullptr }
};

View File

@ -1012,6 +1012,23 @@ int Sprite_set_tileManagementPlugin(lua_State* L)
return 0;
}
int Sprite_get_uuidsForLayers(lua_State* L)
{
auto* sprite = get_docobj<Sprite>(L, 1);
lua_pushboolean(L, sprite->uuidsForLayers());
return 1;
}
int Sprite_set_uuidsForLayers(lua_State* L)
{
auto* sprite = get_docobj<Sprite>(L, 1);
if (lua_isboolean(L, 2)) {
const bool value = lua_toboolean(L, 2);
sprite->setUuidsForLayers(value);
}
return 0;
}
const luaL_Reg Sprite_methods[] = {
{ "__eq", Sprite_eq },
{ "resize", Sprite_resize },
@ -1076,6 +1093,7 @@ const Property Sprite_properties[] = {
{ "pixelRatio", Sprite_get_pixelRatio, Sprite_set_pixelRatio },
{ "events", Sprite_get_events, nullptr },
{ "tileManagementPlugin", Sprite_get_tileManagementPlugin, Sprite_set_tileManagementPlugin },
{ "uuidsForLayers", Sprite_get_uuidsForLayers, Sprite_set_uuidsForLayers },
{ nullptr, nullptr, nullptr }
};

View File

@ -20,3 +20,44 @@ do
l.data = "Data"
assert(l.data == "Data")
end
-- Test layer uuid with uuidsForLayers enabled
do
local s = Sprite(32, 32)
local l = s.layers[1]
assert(s.uuidsForLayers == false)
local uuid = l.uuid
assert(uuid ~= nil)
s.uuidsForLayers = true
assert(s.uuidsForLayers == true)
s.filename = "_test_layer_uuid.aseprite"
app.command.SaveFile()
app.command.CloseFile()
app.command.OpenFile { filename = "_test_layer_uuid.aseprite" }
assert(app.sprite.uuidsForLayers == true)
assert(app.sprite.layers[1].uuid == uuid)
end
-- Test layer uuid with uuidsForLayers disabled
do
local s = Sprite(32, 32)
local l = s.layers[1]
assert(s.uuidsForLayers == false)
local uuid = l.uuid
assert(uuid ~= nil)
s.filename = "_test_layer_uuid_2.aseprite"
app.command.SaveFile()
app.command.CloseFile()
app.command.OpenFile { filename = "_test_layer_uuid_2.aseprite" }
assert(app.sprite.uuidsForLayers == false)
-- UUIDs are not equal because it was not saved due to uuidsForLayers being
-- disabled at the time of saving the file.
assert(app.sprite.layers[1].uuid ~= uuid)
end