123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- -- love.image
- --------------------------------------------------------------------------------
- --------------------------------------------------------------------------------
- ------------------------------------OBJECTS-------------------------------------
- --------------------------------------------------------------------------------
- --------------------------------------------------------------------------------
- -- CompressedImageData (love.image.newCompressedImageData)
- love.test.image.CompressedImageData = function(test)
- -- create obj
- local idata = love.image.newCompressedData('resources/love.dxt1')
- test:assertObject(idata)
- -- check string + size
- test:assertNotEquals(nil, idata:getString(), 'check data string')
- test:assertEquals(2744, idata:getSize(), 'check data size')
- -- check img dimensions
- local iw, ih = idata:getDimensions()
- test:assertEquals(64, iw, 'check image dimension w')
- test:assertEquals(64, ih, 'check image dimension h')
- test:assertEquals(64, idata:getWidth(), 'check image direct w')
- test:assertEquals(64, idata:getHeight(), 'check image direct h')
- -- check format
- test:assertEquals('DXT1', idata:getFormat(), 'check image format')
- -- check mipmap count
- test:assertEquals(7, idata:getMipmapCount(), 'check mipmap count')
- -- check linear
- test:assertFalse(idata:isLinear(), 'check not linear')
- idata:setLinear(true)
- test:assertTrue(idata:isLinear(), 'check now linear')
- end
- -- ImageData (love.image.newImageData)
- love.test.image.ImageData = function(test)
- -- create obj
- local idata = love.image.newImageData('resources/love.png')
- test:assertObject(idata)
- -- check string + size
- test:assertNotEquals(nil, idata:getString(), 'check data string')
- test:assertEquals(16384, idata:getSize(), 'check data size')
- -- check img dimensions
- local iw, ih = idata:getDimensions()
- test:assertEquals(64, iw, 'check image dimension w')
- test:assertEquals(64, ih, 'check image dimension h')
- test:assertEquals(64, idata:getWidth(), 'check image direct w')
- test:assertEquals(64, idata:getHeight(), 'check image direct h')
- -- check format
- test:assertEquals('rgba8', idata:getFormat(), 'check image format')
-
- -- manipulate image data so white heart is black
- local mapdata = function(x, y, r, g, b, a)
- if r == 1 and g == 1 and b == 1 then
- r = 0; g = 0; b = 0
- end
- return r, g, b, a
- end
- idata:mapPixel(mapdata, 0, 0, 64, 64)
- local r1, g1, b1 = idata:getPixel(25, 25)
- test:assertEquals(0, r1+g1+b1, 'check mapped black')
- -- map some other data into the idata
- local idata2 = love.image.newImageData('resources/loveinv.png')
- idata:paste(idata2, 0, 0, 0, 0)
- r1, g1, b1 = idata:getPixel(25, 25)
- test:assertEquals(3, r1+g1+b1, 'check back to white')
- -- set pixels directly
- idata:setPixel(25, 25, 1, 0, 0, 1)
- local r2, g2, b2 = idata:getPixel(25, 25)
- test:assertEquals(1, r2+g2+b2, 'check set to red')
- -- check encoding to an image (png)
- idata:encode('png', 'test-encode.png')
- local read1 = love.filesystem.openFile('test-encode.png', 'r')
- test:assertNotNil(read1)
- love.filesystem.remove('test-encode.png')
- -- check encoding to an image (exr)
- local edata = love.image.newImageData(100, 100, 'r16f')
- edata:encode('exr', 'test-encode.exr')
- local read2 = love.filesystem.openFile('test-encode.exr', 'r')
- test:assertNotNil(read2)
- love.filesystem.remove('test-encode.exr')
- -- check linear
- test:assertFalse(idata:isLinear(), 'check not linear')
- idata:setLinear(true)
- test:assertTrue(idata:isLinear(), 'check now linear')
- end
- --------------------------------------------------------------------------------
- --------------------------------------------------------------------------------
- ------------------------------------METHODS-------------------------------------
- --------------------------------------------------------------------------------
- --------------------------------------------------------------------------------
- -- love.image.isCompressed
- -- @NOTE really we need to test each of the files listed here:
- -- https://love2d.org/wiki/CompressedImageFormat
- -- also need to be platform dependent (e.g. dxt not suppored on phones)
- love.test.image.isCompressed = function(test)
- test:assertTrue(love.image.isCompressed('resources/love.dxt1'),
- 'check dxt1 valid compressed image')
- end
- -- love.image.newCompressedData
- -- @NOTE this is just basic nil checking, objs have their own test method
- love.test.image.newCompressedData = function(test)
- test:assertObject(love.image.newCompressedData('resources/love.dxt1'))
- end
- -- love.image.newImageData
- -- @NOTE this is just basic nil checking, objs have their own test method
- love.test.image.newImageData = function(test)
- test:assertObject(love.image.newImageData('resources/love.png'))
- test:assertObject(love.image.newImageData(16, 16, 'rgba8', nil))
- end
|