When i try to perform operations on a screenshot I get crash or broken behaviour. I will send individual operations with code to reproduce in the following messages. @dave
invertedImage
When I try to invert screenshot - game crashes.
local gfx <const> = playdate.graphics
image = gfx.image.new(400, 240, gfx.kColorWhite)
gfx.lockFocus(image)
gfx.setColor(gfx.kColorBlack)
gfx.fillRect(175, 95, 50, 50)
gfx.unlockFocus()
local myInputHandlers = {
AButtonDown = function()
image = image:invertedImage()
end,
BButtonDown = function ()
image = playdate.graphics.getDisplayImage()
end,
}
playdate.inputHandlers.push(myInputHandlers)
function playdate.update()
image:draw(0,0)
end
Steps to reproduce:
- Click A to be sure that inverting normal image works
- Click B to create screenshot
- Click A to invert screenshot to recieve crash
You also can change line image = image:invertedImage()
to something = image:invertedImage()
. In this case game will crash on second inverting
1 Like
setMaskImage
Applying mask on screenshot creates your nightmare monster. It feels like lines has offset because mask or screenshot think that it has differend width.
local gfx <const> = playdate.graphics
mask = gfx.image.new(400, 240, gfx.kColorWhite)
gfx.lockFocus(mask)
gfx.setColor(gfx.kColorBlack)
gfx.fillRect(1, 1, 398, 238)
gfx.unlockFocus()
image = mask:copy()
local myInputHandlers = {
AButtonDown = function()
image:setMaskImage(mask)
end,
BButtonDown = function ()
image = playdate.graphics.getDisplayImage()
end,
}
playdate.inputHandlers.push(myInputHandlers)
function playdate.update()
gfx.clear(gfx.kColorWhite)
image:draw(0,0)
end
Steps to reproduce:
- Click A to see what shound happen when mask is applied to normal image
- Restart game
- Click B to create screenshot
- Click A to create masterpiece
1 Like
I didn't get a fix for this in to 1.4 (still checking whether it seems safe to change the framebuffer to 50-byte alignment), but as a workaround until this is fixed you can replace image = gfx.getDisplayImage()
with
image = gfx.image.new(400,240,gfx.kColorWhite)
gfx.lockFocus(image)
playdate.graphics.getDisplayImage():draw(0,0)
gfx.unlockFocus()
1 Like