mirror of https://github.com/aseprite/aseprite.git
				
				
				
			
		
			
	
	
		
			87 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Lua
		
	
	
	
		
		
			
		
	
	
			87 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Lua
		
	
	
	
| 
								 | 
							
								-- Copyright (C) 2020  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.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								dofile('./test_utils.lua')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								do
							 | 
						||
| 
								 | 
							
								  local s = Sprite(32, 32)
							 | 
						||
| 
								 | 
							
								  for i = 1,3 do s:newFrame() end
							 | 
						||
| 
								 | 
							
								  assert(#s.frames == 4)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  -- Layer a and b
							 | 
						||
| 
								 | 
							
								  local a = s.layers[1]
							 | 
						||
| 
								 | 
							
								  local b = s:newLayer()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  local ca = { s.cels[1],
							 | 
						||
| 
								 | 
							
								               s.cels[2],
							 | 
						||
| 
								 | 
							
								               s.cels[3] }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  local cb = { s:newCel(b, 1),
							 | 
						||
| 
								 | 
							
								               s:newCel(b, 2, Image(8, 8), 4, 4),
							 | 
						||
| 
								 | 
							
								               s:newCel(b, 3, Image(32, 10), 16, 10) }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  assert(cb[1].bounds == Rectangle(0, 0, 32, 32))
							 | 
						||
| 
								 | 
							
								  assert(cb[2].bounds == Rectangle(4, 4, 8, 8))
							 | 
						||
| 
								 | 
							
								  assert(cb[3].bounds == Rectangle(16, 10, 32, 10))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  -- Check how layer cels are updated when we delete a cel in the middle
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  assert(cb[1] == b.cels[1])
							 | 
						||
| 
								 | 
							
								  assert(cb[2] == b.cels[2])
							 | 
						||
| 
								 | 
							
								  assert(cb[3] == b.cels[3])
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  local i = 1
							 | 
						||
| 
								 | 
							
								  for k,v in ipairs(b.cels) do
							 | 
						||
| 
								 | 
							
								    assert(i == k)
							 | 
						||
| 
								 | 
							
								    assert(v == b.cels[k])
							 | 
						||
| 
								 | 
							
								    i = i+1
							 | 
						||
| 
								 | 
							
								  end
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  s:deleteCel(cb[2])
							 | 
						||
| 
								 | 
							
								  assert(cb[1] == b.cels[1])
							 | 
						||
| 
								 | 
							
								  assert(cb[3] == b.cels[2])
							 | 
						||
| 
								 | 
							
								end
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								-- Some extra tests of newCel() and deleteCel()
							 | 
						||
| 
								 | 
							
								do
							 | 
						||
| 
								 | 
							
								  local s = Sprite(4, 4, ColorMode.INDEXED)
							 | 
						||
| 
								 | 
							
								  local layer = app.activeLayer
							 | 
						||
| 
								 | 
							
								  app.bgColor = 0
							 | 
						||
| 
								 | 
							
								  app.command.BackgroundFromLayer()
							 | 
						||
| 
								 | 
							
								  expect_img(s.cels[1].image, { 0, 0, 0, 0,
							 | 
						||
| 
								 | 
							
								                                0, 0, 0, 0,
							 | 
						||
| 
								 | 
							
								                                0, 0, 0, 0,
							 | 
						||
| 
								 | 
							
								                                0, 0, 0, 0 })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  -- Crash in old versions undoing newCel() in a background layer
							 | 
						||
| 
								 | 
							
								  s:newCel(layer, 1)
							 | 
						||
| 
								 | 
							
								  app.undo()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  -- Check that newCel clears with bgColor in background layer
							 | 
						||
| 
								 | 
							
								  local img = Image(ImageSpec{ width=2, height=2,
							 | 
						||
| 
								 | 
							
								                               colorMode=ColorMode.INDEXED })
							 | 
						||
| 
								 | 
							
								  array_to_pixels({ 0, 1,
							 | 
						||
| 
								 | 
							
								                    2, 3 }, img)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  app.bgColor = Color(1) -- bgColor used to clear the background cel
							 | 
						||
| 
								 | 
							
								  s:newCel(layer, 1, img, Point(1, 1))
							 | 
						||
| 
								 | 
							
								  expect_img(s.cels[1].image, { 1, 1, 1, 1,
							 | 
						||
| 
								 | 
							
								                                1, 0, 1, 1,
							 | 
						||
| 
								 | 
							
								                                1, 2, 3, 1,
							 | 
						||
| 
								 | 
							
								                                1, 1, 1, 1 })
							 | 
						||
| 
								 | 
							
								  app.undo()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  -- Check deleteCel()
							 | 
						||
| 
								 | 
							
								  app.bgColor = Color(2)
							 | 
						||
| 
								 | 
							
								  s:deleteCel(layer, 1)
							 | 
						||
| 
								 | 
							
								  expect_img(s.cels[1].image, { 2, 2, 2, 2,
							 | 
						||
| 
								 | 
							
								                                2, 2, 2, 2,
							 | 
						||
| 
								 | 
							
								                                2, 2, 2, 2,
							 | 
						||
| 
								 | 
							
								                                2, 2, 2, 2 })
							 | 
						||
| 
								 | 
							
								  app.undo()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								end
							 |