From 585ffc91a4d968066e89c3fc3299ac9f16a8d472 Mon Sep 17 00:00:00 2001 From: David Capello Date: Thu, 18 Apr 2019 00:16:54 -0300 Subject: [PATCH] New tests to load/save Sprite/Image/Palette --- scripts/image.lua | 103 ++++++++++++++++++++++++++++---------------- scripts/palette.lua | 60 ++++++++++++++++++-------- scripts/sprite.lua | 23 ++++++++-- 3 files changed, 127 insertions(+), 59 deletions(-) diff --git a/scripts/image.lua b/scripts/image.lua index 7f3d21dbc..bd246f5d5 100644 --- a/scripts/image.lua +++ b/scripts/image.lua @@ -1,65 +1,94 @@ +-- Copyright (C) 2019 Igara Studio S.A. -- 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 +local rgba = app.pixelColor.rgba local a = Image(32, 64) assert(a.width == 32) assert(a.height == 64) assert(a.colorMode == ColorMode.RGB) -- RGB by default assert(a:isEmpty()) -assert(a:isPlain(pc.rgba(0, 0, 0, 0))) +assert(a:isPlain(rgba(0, 0, 0, 0))) assert(a:isPlain(0)) do - local b = Image(32, 64, ColorMode.INDEXED) - assert(b.width == 32) - assert(b.height == 64) - assert(b.colorMode == ColorMode.INDEXED) + local b = Image(32, 64, ColorMode.INDEXED) + assert(b.width == 32) + assert(b.height == 64) + assert(b.colorMode == ColorMode.INDEXED) + + local c = Image{ width=32, height=64, colorMode=ColorMode.INDEXED } + assert(c.width == 32) + assert(c.height == 64) + assert(c.colorMode == ColorMode.INDEXED) end -- Get/put RGBA pixels do - for y=0,a.height-1 do - for x=0,a.width-1 do - a:putPixel(x, y, pc.rgba(x, y, x+y, x-y)) - end - end - assert(not a:isEmpty()) + for y=0,a.height-1 do + for x=0,a.width-1 do + a:putPixel(x, y, rgba(x, y, x+y, x-y)) + end + end + assert(not a:isEmpty()) end -- Clone do - local c = a:clone() - assert(c.width == 32) - assert(c.height == 64) - assert(c.colorMode == ColorMode.RGB) + local c = Image(a) + local d = a:clone() + assert(c.width == 32) + assert(c.height == 64) + assert(c.colorMode == ColorMode.RGB) + assert(c.width == d.width) + assert(c.height == d.height) + assert(c.colorMode == d.colorMode) - -- Get RGB pixels - for y=0,c.height-1 do - for x=0,c.width-1 do - assert(c:getPixel(x, y) == pc.rgba(x, y, x+y, x-y)) - end - end + -- Get RGB pixels + for y=0,c.height-1 do + for x=0,c.width-1 do + local expectedColor = rgba(x, y, x+y, x-y) + assert(c:getPixel(x, y) == expectedColor) + assert(d:getPixel(x, y) == expectedColor) + end + end end -- Patch do - local spr = Sprite(256, 256) - local image = app.site.image - local copy = image:clone() - assert(image:getPixel(0, 0) == 0) - for y=0,copy.height-1 do - for x=0,copy.width-1 do - copy:putPixel(x, y, pc.rgba(255-x, 255-y, 0, 255)) - end - end - image:putImage(copy) - assert(image:getPixel(0, 0) == pc.rgba(255, 255, 0, 255)) - assert(image:getPixel(255, 255) == pc.rgba(0, 0, 0, 255)) - app.undo() - assert(image:getPixel(0, 0) == pc.rgba(0, 0, 0, 0)) - assert(image:getPixel(255, 255) == pc.rgba(0, 0, 0, 0)) + local spr = Sprite(256, 256) + local image = app.site.image + local copy = image:clone() + assert(image:getPixel(0, 0) == 0) + for y=0,copy.height-1 do + for x=0,copy.width-1 do + copy:putPixel(x, y, rgba(255-x, 255-y, 0, 255)) + end + end + image:putImage(copy) + assert(image:getPixel(0, 0) == rgba(255, 255, 0, 255)) + assert(image:getPixel(255, 255) == rgba(0, 0, 0, 255)) + app.undo() + assert(image:getPixel(0, 0) == rgba(0, 0, 0, 0)) + assert(image:getPixel(255, 255) == rgba(0, 0, 0, 0)) +end + +-- Load/Save +do + local a = Image{ fromFile="sprites/1empty3.aseprite" } + assert(a.width == 32) + assert(a.height == 32) + a:saveAs("_test_oneframe.png") + + local b = Image{ fromFile="_test_oneframe.png" } + assert(b.width == 32) + assert(b.height == 32) + for y=0,a.height-1 do + for x=0,a.width-1 do + assert(a:getPixel(x, y) == b:getPixel(x, y)) + end + end end diff --git a/scripts/palette.lua b/scripts/palette.lua index 1c715a9ec..51ce874b2 100644 --- a/scripts/palette.lua +++ b/scripts/palette.lua @@ -1,27 +1,51 @@ +-- Copyright (C) 2019 Igara Studio S.A. -- Copyright (C) 2018 David Capello -- -- This file is released under the terms of the MIT license. -- Read LICENSE.txt for more information. -local p = Palette() -assert(#p == 256) -for i = 0,#p-1 do - assert(p:getColor(i) == Color(0, 0, 0)) +do + local p = Palette() + assert(#p == 256) + for i = 0,#p-1 do + assert(p:getColor(i) == Color(0, 0, 0)) + end end -p = Palette(32) -assert(#p == 32) -for i = 0,#p-1 do - assert(p:getColor(i) == Color(0, 0, 0)) +do + local p = Palette(32) + assert(#p == 32) + for i = 0,#p-1 do + assert(p:getColor(i) == Color(0, 0, 0)) + end + + p:resize(4) + assert(#p == 4) + p:setColor(0, Color(255, 8, 32)) + p:setColor(1, Color(250, 4, 30)) + p:setColor(2, Color(240, 3, 20)) + p:setColor(3, Color(210, 2, 10)) + assert(p:getColor(0) == Color(255, 8, 32)) + assert(p:getColor(1) == Color(250, 4, 30)) + assert(p:getColor(2) == Color(240, 3, 20)) + assert(p:getColor(3) == Color(210, 2, 10)) end -p:resize(4) -assert(#p == 4) -p:setColor(0, Color(255, 8, 32)) -p:setColor(1, Color(250, 4, 30)) -p:setColor(2, Color(240, 3, 20)) -p:setColor(3, Color(210, 2, 10)) -assert(p:getColor(0) == Color(255, 8, 32)) -assert(p:getColor(1) == Color(250, 4, 30)) -assert(p:getColor(2) == Color(240, 3, 20)) -assert(p:getColor(3) == Color(210, 2, 10)) +-- Load/save +do + local p = Palette{ fromFile="sprites/abcd.aseprite" } + assert(#p == 5) + assert(p:getColor(0) == Color(0, 0, 0)) + assert(p:getColor(1) == Color(25, 0, 255)) + assert(p:getColor(2) == Color(255, 0, 0)) + assert(p:getColor(3) == Color(255, 255, 0)) + assert(p:getColor(4) == Color(0, 128, 0)) + + p:saveAs("_test_.gpl") + + local q = Palette{ fromFile="_test_.gpl" } + assert(#p == #q) + for i=0,#q-1 do + assert(p:getColor(i) == q:getColor(i)) + end +end diff --git a/scripts/sprite.lua b/scripts/sprite.lua index 6b470feeb..d275e511a 100644 --- a/scripts/sprite.lua +++ b/scripts/sprite.lua @@ -1,3 +1,4 @@ +-- Copyright (C) 2019 Igara Studio S.A. -- Copyright (C) 2018 David Capello -- -- This file is released under the terms of the MIT license. @@ -28,10 +29,22 @@ do assert(a.width == 8) assert(a.height == 10) - local b = Sprite(4, 4, ColorMode.INDEXED) + -- Test other Sprite() constructors + local b = Sprite(4, 8, ColorMode.INDEXED) assert(b.width == 4) - assert(b.height == 4) + assert(b.height == 8) assert(b.colorMode == ColorMode.INDEXED) + + local c = Sprite{ colorMode=ColorMode.INDEXED, width=10, height=20 } + assert(c.width == 10) + assert(c.height == 20) + assert(c.colorMode == ColorMode.INDEXED) + + local d = Sprite{ fromFile="sprites/abcd.aseprite" } + assert(#d.layers == 4) + assert(d.width == 32) + assert(d.height == 32) + assert(d.colorMode == ColorMode.INDEXED) end -- Transparent color @@ -63,7 +76,7 @@ do assert(a.palettes[1]:getColor(2) == Color(0, 0, 255)) end --- Flatten +-- Duplicate & Flatten do local a = Sprite(32, 32) @@ -71,6 +84,8 @@ do a:newLayer() assert(#a.layers == 3) - a:flatten() + local b = Sprite(a) -- Clone a + a:flatten() -- Flatten a assert(#a.layers == 1) + assert(#b.layers == 3) end