mirror of https://github.com/aseprite/aseprite.git
				
				
				
			
		
			
				
	
	
		
			96 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Lua
		
	
	
	
			
		
		
	
	
			96 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Lua
		
	
	
	
| -- Copyright (C) 2018  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.
 | |
| 
 | |
| do
 | |
|   local a = Sprite(32, 32)
 | |
|   assert(#a.frames == 1)
 | |
|   assert(a.frames[1].frameNumber == 1)
 | |
|   assert(a.frames[1].duration == 0.1)
 | |
|   a.frames[1].duration = 0.2
 | |
|   assert(a.frames[1].duration == 0.2)
 | |
|   assert(a.layers[1]:cel(1) ~= nil)
 | |
| 
 | |
|   -- Sprite:newEmptyFrame()
 | |
|   local fr0 = a:newEmptyFrame()
 | |
|   assert(fr0.frameNumber == 2) -- returned the second frame
 | |
|   assert(#a.frames == 2)
 | |
|   assert(a.frames[1].frameNumber == 1)
 | |
|   assert(a.frames[2].frameNumber == 2)
 | |
|   assert(a.frames[1].duration == 0.2)
 | |
|   assert(a.frames[2].duration == 0.2) -- the duration is copied
 | |
|   assert(a.layers[1]:cel(1) ~= nil)
 | |
|   assert(a.layers[1]:cel(fr0) == nil) -- no cel
 | |
|   assert(fr0 == a.frames[2])
 | |
|   a:deleteFrame(fr0)
 | |
|   assert(#a.frames == 1)
 | |
| 
 | |
|   -- Sprite:newFrame() without arguments
 | |
|   local fr = a:newFrame()
 | |
|   assert(fr.frameNumber == 2) -- returned the second frame
 | |
|   assert(#a.frames == 2)
 | |
|   assert(a.frames[1].frameNumber == 1)
 | |
|   assert(a.frames[2].frameNumber == 2)
 | |
|   assert(a.frames[1].duration == 0.2)
 | |
|   assert(a.frames[2].duration == 0.2)
 | |
|   assert(fr == a.frames[2])
 | |
| 
 | |
|   fr.duration = 0.3
 | |
|   assert(a.frames[1].duration == 0.2)
 | |
|   assert(a.frames[2].duration == 0.3)
 | |
| 
 | |
|   local i = 1
 | |
|   for k,v in ipairs(a.frames) do
 | |
|     assert(i == k)
 | |
|     assert(v == a.frames[k])
 | |
|     i = i+1
 | |
|   end
 | |
| 
 | |
|   a:deleteFrame(1)
 | |
|   assert(#a.frames == 1)
 | |
|   assert(a.frames[1].duration == 0.3)
 | |
| 
 | |
|   -- TODO This is a big issue, if we add/delete frames, we don't
 | |
|   --      update frame objects, they are still pointing to the same frame
 | |
|   --      number, which could lead to confusion.
 | |
|   assert(fr.frameNumber == 2)
 | |
|   fr.duration = 1   -- This is a do nothing operation
 | |
| 
 | |
|   -- Sprite:newEmptyFrame(n)
 | |
|   local fr2 = a:newEmptyFrame(1)
 | |
|   assert(#a.frames == 2)
 | |
|   assert(fr2.frameNumber == 1) -- returned the first frame
 | |
|   print(a.frames[1].duration)
 | |
|   assert(a.frames[1].duration == 0.3) -- the duration is copied from the frame
 | |
|   assert(a.frames[2].duration == 0.3)
 | |
|   assert(fr2 == a.frames[1])
 | |
|   assert(a.layers[1]:cel(1) == nil)
 | |
|   assert(a.layers[1]:cel(2) ~= nil)
 | |
| 
 | |
|   -- Sprite:newFrame(n)
 | |
|   local fr3 = a:newFrame(2)
 | |
|   assert(#a.frames == 3)
 | |
|   assert(fr3.frameNumber == 2) -- returned the second frame
 | |
|   assert(a.frames[1].duration == 0.3)
 | |
|   assert(a.frames[2].duration == 0.3) -- copied duration from old frame 2
 | |
|   assert(a.frames[3].duration == 0.3)
 | |
|   local cel1 = a.layers[1]:cel(1)
 | |
|   local cel2 = a.layers[1]:cel(2)
 | |
|   local cel3 = a.layers[1]:cel(3)
 | |
|   assert(cel1 == nil)
 | |
|   assert(cel2 ~= nil)
 | |
|   assert(cel3 ~= nil)
 | |
|   print(cel2.image.spec.colorMode)
 | |
|   print(cel2.image.spec.width)
 | |
|   print(cel2.image.spec.height)
 | |
|   print(cel3.image.spec.colorMode)
 | |
|   print(cel3.image.spec.width)
 | |
|   print(cel3.image.spec.height)
 | |
|   assert(cel2.image.spec == cel3.image.spec)
 | |
|   assert(fr3.previous == a.frames[1])
 | |
|   assert(fr3 == a.frames[2])
 | |
|   assert(fr3.next == a.frames[3])
 | |
| end
 |