From 622b02294a3cf7fff9855105c0916e2fe4b955b6 Mon Sep 17 00:00:00 2001 From: David Capello Date: Wed, 19 Apr 2023 13:41:11 -0300 Subject: [PATCH] [lua] Add short field names (fix #3815, fix #3816) --- src/app/script/app_object.cpp | 82 +++++++++++++++++------------- src/app/script/rectangle_class.cpp | 17 +++++-- src/app/script/size_class.cpp | 24 ++++++--- tests/LICENSE.txt | 2 +- tests/scripts/app_active.lua | 12 +++-- tests/scripts/paint_bucket.lua | 2 + tests/scripts/rectangle.lua | 16 ++++-- tests/scripts/size.lua | 12 +++-- tests/scripts/tag.lua | 4 +- 9 files changed, 113 insertions(+), 58 deletions(-) diff --git a/src/app/script/app_object.cpp b/src/app/script/app_object.cpp index a9b2ad070..048e5bee7 100644 --- a/src/app/script/app_object.cpp +++ b/src/app/script/app_object.cpp @@ -510,7 +510,7 @@ int App_get_uiScale(lua_State* L) return 1; } -int App_get_activeSprite(lua_State* L) +int App_get_sprite(lua_State* L) { app::Context* ctx = App::instance()->context(); Doc* doc = ctx->activeDocument(); @@ -521,7 +521,7 @@ int App_get_activeSprite(lua_State* L) return 1; } -int App_get_activeLayer(lua_State* L) +int App_get_layer(lua_State* L) { app::Context* ctx = App::instance()->context(); Site site = ctx->activeSite(); @@ -532,7 +532,7 @@ int App_get_activeLayer(lua_State* L) return 1; } -int App_get_activeFrame(lua_State* L) +int App_get_frame(lua_State* L) { app::Context* ctx = App::instance()->context(); Site site = ctx->activeSite(); @@ -543,7 +543,7 @@ int App_get_activeFrame(lua_State* L) return 1; } -int App_get_activeCel(lua_State* L) +int App_get_cel(lua_State* L) { app::Context* ctx = App::instance()->context(); Site site = ctx->activeSite(); @@ -554,7 +554,7 @@ int App_get_activeCel(lua_State* L) return 1; } -int App_get_activeImage(lua_State* L) +int App_get_image(lua_State* L) { app::Context* ctx = App::instance()->context(); Site site = ctx->activeSite(); @@ -565,7 +565,7 @@ int App_get_activeImage(lua_State* L) return 1; } -int App_get_activeTag(lua_State* L) +int App_get_tag(lua_State* L) { Tag* tag = nullptr; @@ -657,14 +657,14 @@ int App_get_apiVersion(lua_State* L) return 1; } -int App_get_activeTool(lua_State* L) +int App_get_tool(lua_State* L) { tools::Tool* tool = App::instance()->activeToolManager()->activeTool(); push_tool(L, tool); return 1; } -int App_get_activeBrush(lua_State* L) +int App_get_brush(lua_State* L) { #if ENABLE_UI App* app = App::instance(); @@ -688,7 +688,7 @@ int App_get_defaultPalette(lua_State* L) return 1; } -int App_set_activeSprite(lua_State* L) +int App_set_sprite(lua_State* L) { auto sprite = get_docobj(L, 2); app::Context* ctx = App::instance()->context(); @@ -697,7 +697,7 @@ int App_set_activeSprite(lua_State* L) return 0; } -int App_set_activeLayer(lua_State* L) +int App_set_layer(lua_State* L) { auto layer = get_docobj(L, 2); app::Context* ctx = App::instance()->context(); @@ -705,7 +705,7 @@ int App_set_activeLayer(lua_State* L) return 0; } -int App_set_activeFrame(lua_State* L) +int App_set_frame(lua_State* L) { const doc::frame_t frame = get_frame_number_from_arg(L, 2); app::Context* ctx = App::instance()->context(); @@ -713,7 +713,7 @@ int App_set_activeFrame(lua_State* L) return 0; } -int App_set_activeCel(lua_State* L) +int App_set_cel(lua_State* L) { const auto cel = get_docobj(L, 2); app::Context* ctx = App::instance()->context(); @@ -722,7 +722,7 @@ int App_set_activeCel(lua_State* L) return 0; } -int App_set_activeImage(lua_State* L) +int App_set_image(lua_State* L) { const auto cel = get_image_cel_from_arg(L, 2); if (!cel) @@ -734,14 +734,14 @@ int App_set_activeImage(lua_State* L) return 0; } -int App_set_activeTool(lua_State* L) +int App_set_tool(lua_State* L) { if (auto tool = get_tool_from_arg(L, 2)) App::instance()->activeToolManager()->setSelectedTool(tool); return 0; } -int App_set_activeBrush(lua_State* L) +int App_set_brush(lua_State* L) { #if ENABLE_UI if (auto brush = get_brush_from_arg(L, 2)) { @@ -773,27 +773,39 @@ const luaL_Reg App_methods[] = { }; const Property App_properties[] = { - { "activeSprite", App_get_activeSprite, App_set_activeSprite }, - { "activeLayer", App_get_activeLayer, App_set_activeLayer }, - { "activeFrame", App_get_activeFrame, App_set_activeFrame }, - { "activeCel", App_get_activeCel, App_set_activeCel }, - { "activeImage", App_get_activeImage, App_set_activeImage }, - { "activeTag", App_get_activeTag, nullptr }, - { "activeTool", App_get_activeTool, App_set_activeTool }, - { "activeBrush", App_get_activeBrush, App_set_activeBrush }, - { "sprites", App_get_sprites, nullptr }, - { "fgColor", App_get_fgColor, App_set_fgColor }, - { "bgColor", App_get_bgColor, App_set_bgColor }, - { "version", App_get_version, nullptr }, - { "apiVersion", App_get_apiVersion, nullptr }, - { "site", App_get_site, nullptr }, - { "range", App_get_range, nullptr }, - { "isUIAvailable", App_get_isUIAvailable, nullptr }, + // Deprecated longer fields + { "activeSprite", App_get_sprite, App_set_sprite }, + { "activeLayer", App_get_layer, App_set_layer }, + { "activeFrame", App_get_frame, App_set_frame }, + { "activeCel", App_get_cel, App_set_cel }, + { "activeImage", App_get_image, App_set_image }, + { "activeTag", App_get_tag, nullptr }, + { "activeTool", App_get_tool, App_set_tool }, + { "activeBrush", App_get_brush, App_set_brush }, + + // New shorter fields + { "sprite", App_get_sprite, App_set_sprite }, + { "layer", App_get_layer, App_set_layer }, + { "frame", App_get_frame, App_set_frame }, + { "cel", App_get_cel, App_set_cel }, + { "image", App_get_image, App_set_image }, + { "tag", App_get_tag, nullptr }, + { "tool", App_get_tool, App_set_tool }, + { "brush", App_get_brush, App_set_brush }, + + { "sprites", App_get_sprites, nullptr }, + { "fgColor", App_get_fgColor, App_set_fgColor }, + { "bgColor", App_get_bgColor, App_set_bgColor }, + { "version", App_get_version, nullptr }, + { "apiVersion", App_get_apiVersion, nullptr }, + { "site", App_get_site, nullptr }, + { "range", App_get_range, nullptr }, + { "isUIAvailable", App_get_isUIAvailable, nullptr }, { "defaultPalette", App_get_defaultPalette, App_set_defaultPalette }, - { "events", App_get_events, nullptr }, - { "theme", App_get_theme, nullptr }, - { "uiScale", App_get_uiScale, nullptr }, - { nullptr, nullptr, nullptr } + { "events", App_get_events, nullptr }, + { "theme", App_get_theme, nullptr }, + { "uiScale", App_get_uiScale, nullptr }, + { nullptr, nullptr, nullptr } }; } // anonymous namespace diff --git a/src/app/script/rectangle_class.cpp b/src/app/script/rectangle_class.cpp index ea4c28824..d9e98e060 100644 --- a/src/app/script/rectangle_class.cpp +++ b/src/app/script/rectangle_class.cpp @@ -1,5 +1,5 @@ // Aseprite -// Copyright (C) 2019-2022 Igara Studio S.A. +// Copyright (C) 2019-2023 Igara Studio S.A. // Copyright (C) 2017-2018 David Capello // // This program is distributed under the terms of @@ -30,11 +30,18 @@ gfx::Rect Rectangle_new(lua_State* L, int index) // Convert { x, y, width, height } into a Rectangle else if (lua_istable(L, index)) { gfx::Rect rc(0, 0, 0, 0); - const int type = lua_getfield(L, index, "x"); + int type = lua_getfield(L, index, "x"); if (VALID_LUATYPE(type)) { lua_getfield(L, index, "y"); - lua_getfield(L, index, "width"); - lua_getfield(L, index, "height"); + type = lua_getfield(L, index, "width"); + if (VALID_LUATYPE(type)) { + lua_getfield(L, index, "height"); + } + else { + lua_pop(L, 1); + lua_getfield(L, index, "w"); + lua_getfield(L, index, "h"); + } rc.x = lua_tointeger(L, -4); rc.y = lua_tointeger(L, -3); rc.w = lua_tointeger(L, -2); @@ -244,6 +251,8 @@ const luaL_Reg Rectangle_methods[] = { const Property Rectangle_properties[] = { { "x", Rectangle_get_x, Rectangle_set_x }, { "y", Rectangle_get_y, Rectangle_set_y }, + { "w", Rectangle_get_width, Rectangle_set_width }, + { "h", Rectangle_get_height, Rectangle_set_height }, { "width", Rectangle_get_width, Rectangle_set_width }, { "height", Rectangle_get_height, Rectangle_set_height }, { "origin", Rectangle_get_origin, Rectangle_set_origin }, diff --git a/src/app/script/size_class.cpp b/src/app/script/size_class.cpp index ae6af00ff..986de3e18 100644 --- a/src/app/script/size_class.cpp +++ b/src/app/script/size_class.cpp @@ -29,7 +29,7 @@ gfx::Size Size_new(lua_State* L, int index) } // Convert {x=int,y=int} or {int,int} into a Size else if (lua_istable(L, index)) { - const int type = lua_getfield(L, index, "width"); + int type = lua_getfield(L, index, "width"); if (VALID_LUATYPE(type)) { lua_getfield(L, index, "height"); sz.w = lua_tointeger(L, -2); @@ -38,11 +38,21 @@ gfx::Size Size_new(lua_State* L, int index) } else { lua_pop(L, 1); - lua_geti(L, index, 1); - lua_geti(L, index, 2); - sz.w = lua_tointeger(L, -2); - sz.h = lua_tointeger(L, -1); - lua_pop(L, 2); + type = lua_getfield(L, index, "w"); + if (VALID_LUATYPE(type)) { + lua_getfield(L, index, "h"); + sz.w = lua_tointeger(L, -2); + sz.h = lua_tointeger(L, -1); + lua_pop(L, 2); + } + else { + lua_pop(L, 1); + lua_geti(L, index, 1); + lua_geti(L, index, 2); + sz.w = lua_tointeger(L, -2); + sz.h = lua_tointeger(L, -1); + lua_pop(L, 2); + } } } else { @@ -211,6 +221,8 @@ const luaL_Reg Size_methods[] = { }; const Property Size_properties[] = { + { "w", Size_get_width, Size_set_width }, + { "h", Size_get_height, Size_set_height }, { "width", Size_get_width, Size_set_width }, { "height", Size_get_height, Size_set_height }, { nullptr, nullptr, nullptr } diff --git a/tests/LICENSE.txt b/tests/LICENSE.txt index 7d9e58083..b84b88f3f 100644 --- a/tests/LICENSE.txt +++ b/tests/LICENSE.txt @@ -1,4 +1,4 @@ -Copyright (c) 2018-2022 Igara Studio S.A. +Copyright (c) 2018-2023 Igara Studio S.A. Copyright (c) 2018 David Capello Permission is hereby granted, free of charge, to any person obtaining diff --git a/tests/scripts/app_active.lua b/tests/scripts/app_active.lua index c01eb15d9..e0f077dd7 100644 --- a/tests/scripts/app_active.lua +++ b/tests/scripts/app_active.lua @@ -1,11 +1,13 @@ --- Copyright (C) 2018-2019 Igara Studio S.A. +-- Copyright (C) 2018-2023 Igara Studio S.A. -- -- This file is released under the terms of the MIT license. -- Read LICENSE.txt for more information. local s = Sprite(32, 64) +assert(s == app.sprite) assert(s == app.activeSprite) assert(s == app.site.sprite) +assert(s == app.frame.sprite) assert(s == app.activeFrame.sprite) assert(s == app.site.frame.sprite) assert(1 == app.activeFrame.frameNumber) @@ -13,13 +15,15 @@ assert(1 == app.site.frame.frameNumber) assert(1 == app.site.frameNumber) assert(0.100 == app.activeFrame.duration) -- Default frame duration assert(0.100 == app.site.frame.duration) +assert(s == app.layer.sprite) assert(s == app.activeLayer.sprite) assert(s == app.site.layer.sprite) +assert(s == app.cel.sprite) assert(s == app.activeCel.sprite) assert(s == app.site.cel.sprite) -app.activeFrame.duration = 0.8 +app.frame.duration = 0.8 app.command.NewFrame() -assert(2 == app.activeFrame.frameNumber) -assert(0.8 == app.activeFrame.duration) -- Copy frame duration of previous frame +assert(2 == app.frame.frameNumber) +assert(0.8 == app.frame.duration) -- Copy frame duration of previous frame diff --git a/tests/scripts/paint_bucket.lua b/tests/scripts/paint_bucket.lua index 52276f617..cc573fd59 100644 --- a/tests/scripts/paint_bucket.lua +++ b/tests/scripts/paint_bucket.lua @@ -6,6 +6,8 @@ dofile('./test_utils.lua') app.activeTool = 'paint_bucket' +assert(app.tool.id == 'paint_bucket') +assert(app.brush.type == BrushType.CIRCLE) assert(app.activeTool.id == 'paint_bucket') assert(app.activeBrush.type == BrushType.CIRCLE) assert(app.activeBrush.size == 1) diff --git a/tests/scripts/rectangle.lua b/tests/scripts/rectangle.lua index 4fea5a986..dbe6e7797 100644 --- a/tests/scripts/rectangle.lua +++ b/tests/scripts/rectangle.lua @@ -1,4 +1,4 @@ --- Copyright (C) 2019-2022 Igara Studio S.A. +-- Copyright (C) 2019-2023 Igara Studio S.A. -- Copyright (C) 2018 David Capello -- -- This file is released under the terms of the MIT license. @@ -14,7 +14,9 @@ assert(rc.isEmpty) rc = Rectangle(1, 2, 3, 4) assert(rc.x == 1) assert(rc.y == 2) -assert(rc.width == 3) +assert(rc.w == 3) -- Short w/h form +assert(rc.h == 4) +assert(rc.width == 3) -- Long width/height form assert(rc.height == 4) assert(rc.origin == Point(1, 2)) assert(rc.size == Size(3, 4)) @@ -54,11 +56,17 @@ assert(rc.y == 3) assert(rc.width == 4) assert(rc.height == 5) +rc = Rectangle{x=0, y=1, w=2, h=3} +assert(rc.x == 0) +assert(rc.y == 1) +assert(rc.w == 2) +assert(rc.h == 3) + rc = Rectangle{6, 7, 8, 9} assert(rc.x == 6) assert(rc.y == 7) -assert(rc.width == 8) -assert(rc.height == 9) +assert(rc.w == 8) +assert(rc.h == 9) rc = Rectangle(Point(2, 3), Size(4, 5)) assert(rc.x == 2) diff --git a/tests/scripts/size.lua b/tests/scripts/size.lua index c84429f7d..418bba112 100644 --- a/tests/scripts/size.lua +++ b/tests/scripts/size.lua @@ -9,7 +9,9 @@ assert(sz.width == 0) assert(sz.height == 0) sz = Size(3, 4) -assert(sz.width == 3) +assert(sz.w == 3) -- Short w/h form +assert(sz.h == 4) +assert(sz.width == 3) -- Long width/height form assert(sz.height == 4) assert("Size{ width=3, height=4 }" == tostring(sz)) @@ -26,9 +28,13 @@ sz = Size{width=10, height=20} assert(sz.width == 10) assert(sz.height == 20) +sz = Size{w=30, h=40} +assert(sz.width == 30) +assert(sz.height == 40) + sz = Size{45, 25} -assert(sz.width == 45) -assert(sz.height == 25) +assert(sz.w == 45) +assert(sz.h == 25) sz = -sz assert(sz.width == -45) diff --git a/tests/scripts/tag.lua b/tests/scripts/tag.lua index 2d38fd881..3f59da55c 100644 --- a/tests/scripts/tag.lua +++ b/tests/scripts/tag.lua @@ -1,4 +1,4 @@ --- Copyright (C) 2020 Igara Studio S.A. +-- Copyright (C) 2020-2023 Igara Studio S.A. -- Copyright (C) 2018 David Capello -- -- This file is released under the terms of the MIT license. @@ -15,6 +15,8 @@ do assert(a.toFrame.frameNumber == 8) assert(a.frames == 8) + assert(app.tag == a) + a.fromFrame = 2 a.toFrame = 5 assert(a.fromFrame.frameNumber == 2)