03-31-2025, 06:03 PM
I made a quick test of the new version, and now it seems to work 
Pixel Editor crashes if you click the button to load a png file but but then click cancel in the file dialog. You can check the length of the returned filename and abort if it's zero or wait with the abort until after you've tried loading the image:

Code:
#win32
visible dudeImage
set window "Test", 128, 120, false, 3
set redraw off
CreateAssets()
dude = [
x: (width(primary) - width(dudeImage))/2, y: 100 - height(dudeImage),
w: width(dudeImage), h: height(dudeImage),
dy: 0, onGround: false, baseCel: 0, frame: 0,
Update: function()
this.y = this.y + this.dy
this.dy = min(this.dy + 0.1, 3)
if this.y >= 100 - height(dudeImage)
this.onGround = true
this.dy = 0
endif
dx = 0
if keydown(KEY_LEFT)
this.baseCel = 2
dx = dx - 1
endif
if keydown(KEY_RIGHT)
this.baseCel = 0
dx = dx + 1
endif
this.x = this.x + dx
if dx this.frame = (this.frame + 0.12)%2
else this.frame = 0
if this.onGround and keydown(KEY_UP, true)
this.dy = -3
this.onGround = false
endif
endfunc,
Draw: function()
set color 255, 255, 255
draw image dudeImage, this.x, this.y, this.baseCel + this.frame
endfunc
]
while not keydown(KEY_ESCAPE, true)
dude.Update()
set color 64, 80, 128
cls
set color 255, 255, 255
draw line 0, 100, width(primary), 100
dude.Draw()
redraw
fwait 60
wend
function CreateAssets()
dudeImage = CreatePNG([[[ 1 , 1 ,[ 228 , 187 , 109 ]], [ 1 , 2 ,[ 228 , 187 , 109 ]], [ 1 , 3 ,[ 228 , 187 , 109 ]], [ 1 , 4 ,[ 228 , 187 , 109 ]], [ 1 , 5 ,[ 228 , 187 , 109 ]], [ 1 , 7 ,[ 255 , 0 , 0 ]], [ 1 , 8 ,[ 255 , 0 , 0 ]], [ 1 , 9 ,[ 255 , 0 , 0 ]], [ 1 , 10 ,[ 255 , 0 , 0 ]], [ 1 , 11 ,[ 0 , 0 , 255 ]], [ 1 , 12 ,[ 0 , 0 , 255 ]], [ 2 , 0 ,[ 228 , 187 , 109 ]], [ 2 , 1 ,[ 228 , 187 , 109 ]], [ 2 , 2 ,[ 228 , 187 , 109 ]], [ 2 , 3 ,[ 228 , 187 , 109 ]], [ 2 , 4 ,[ 228 , 187 , 109 ]],
[ 2 , 5 ,[ 228 , 187 , 109 ]], [ 2 , 6 ,[ 228 , 187 , 109 ]], [ 2 , 7 ,[ 255 , 0 , 0 ]], [ 2 , 8 ,[ 228 , 187 , 109 ]], [ 2 , 9 ,[ 228 , 187 , 109 ]], [ 2 , 10 ,[ 255 , 255 , 255 ]], [ 2 , 11 ,[ 255 , 255 , 255 ]], [ 2 , 12 ,[ 0 , 0 , 255 ]], [ 2 , 13 ,[ 0 , 0 , 255 ]], [ 2 , 14 ,[ 228 , 187 , 109 ]], [ 2 , 15 ,[ 228 , 187 , 109 ]], [ 3 , 0 ,[ 228 , 187 , 109 ]], [ 3 , 1 ,[ 255 , 255 , 255 ]], [ 3 , 2 ,[ 255 , 255 , 255 ]], [ 3 , 3 ,[ 255 , 255 , 255 ]], [ 3 , 4 ,[ 228 , 187 , 109 ]],
[ 3 , 5 ,[ 228 , 187 , 109 ]], [ 3 , 6 ,[ 228 , 187 , 109 ]], [ 3 , 7 ,[ 255 , 0 , 0 ]], [ 3 , 8 ,[ 228 , 187 , 109 ]], [ 3 , 9 ,[ 228 , 187 , 109 ]], [ 3 , 10 ,[ 255 , 255 , 255 ]], [ 3 , 11 ,[ 255 , 255 , 255 ]], [ 3 , 12 ,[ 0 , 0 , 255 ]], [ 3 , 13 ,[ 0 , 0 , 255 ]], [ 3 , 14 ,[ 228 , 187 , 109 ]], [ 3 , 15 ,[ 228 , 187 , 109 ]], [ 4 , 0 ,[ 228 , 187 , 109 ]], [ 4 , 1 ,[ 255 , 255 , 255 ]], [ 4 , 4 ,[ 228 , 187 , 109 ]], [ 4 , 5 ,[ 228 , 187 , 109 ]], [ 4 , 6 ,[ 228 , 187 , 109 ]],
[ 4 , 7 ,[ 255 , 0 , 0 ]], [ 4 , 8 ,[ 255 , 0 , 0 ]], [ 4 , 9 ,[ 255 , 0 , 0 ]], [ 4 , 10 ,[ 255 , 255 , 255 ]], [ 4 , 11 ,[ 255 , 255 , 255 ]], [ 4 , 12 ,[ 0 , 0 , 255 ]], [ 4 , 13 ,[ 0 , 0 , 255 ]], [ 4 , 14 ,[ 228 , 187 , 109 ]], [ 4 , 15 ,[ 228 , 187 , 109 ]], [ 5 , 1 ,[ 228 , 187 , 109 ]], [ 5 , 2 ,[ 228 , 187 , 109 ]], [ 5 , 3 ,[ 228 , 187 , 109 ]], [ 5 , 4 ,[ 228 , 187 , 109 ]], [ 5 , 5 ,[ 228 , 187 , 109 ]], [ 5 , 8 ,[ 255 , 0 , 0 ]], [ 5 , 9 ,[ 255 , 0 , 0 ]],
[ 5 , 10 ,[ 255 , 0 , 0 ]], [ 5 , 11 ,[ 0 , 0 , 255 ]], [ 5 , 12 ,[ 0 , 0 , 255 ]], [ 5 , 14 ,[ 228 , 187 , 109 ]], [ 5 , 15 ,[ 228 , 187 , 109 ]], [ 6 , 3 ,[ 228 , 187 , 109 ]], [ 6 , 4 ,[ 228 , 187 , 109 ]], [ 7 , 3 ,[ 228 , 187 , 109 ]], [ 7 , 4 ,[ 228 , 187 , 109 ]], [ 4 , 2 ,[ 0 , 0 , 255 ]], [ 4 , 3 ,[ 0 , 0 , 255 ]]],
[ [ 0 , 9 ,[ 255 , 255 , 255 ]], [ 0 , 10 ,[ 255 , 255 , 255 ]], [ 0 , 11 ,[ 228 , 187 , 109 ]], [ 0 , 12 ,[ 228 , 187 , 109 ]], [ 0 , 13 ,[ 228 , 187 , 109 ]], [ 0 , 14 ,[ 228 , 187 , 109 ]], [ 1 , 1 ,[ 228 , 187 , 109 ]], [ 1 , 2 ,[ 228 , 187 , 109 ]], [ 1 , 3 ,[ 228 , 187 , 109 ]], [ 1 , 4 ,[ 228 , 187 , 109 ]], [ 1 , 5 ,[ 228 , 187 , 109 ]], [ 1 , 7 ,[ 255 , 0 , 0 ]], [ 1 , 8 ,[ 255 , 0 , 0 ]], [ 1 , 9 ,[ 255 , 0 , 0 ]], [ 1 , 10 ,[ 255 , 0 , 0 ]], [ 1 , 11 ,[ 0 , 0 , 255 ]],
[ 1 , 12 ,[ 228 , 187 , 109 ]], [ 1 , 13 ,[ 228 , 187 , 109 ]], [ 1 , 14 ,[ 228 , 187 , 109 ]], [ 2 , 0 ,[ 228 , 187 , 109 ]], [ 2 , 1 ,[ 228 , 187 , 109 ]], [ 2 , 2 ,[ 228 , 187 , 109 ]], [ 2 , 3 ,[ 228 , 187 , 109 ]], [ 2 , 4 ,[ 228 , 187 , 109 ]], [ 2 , 5 ,[ 228 , 187 , 109 ]], [ 2 , 6 ,[ 228 , 187 , 109 ]], [ 2 , 7 ,[ 255 , 0 , 0 ]], [ 2 , 8 ,[ 255 , 0 , 0 ]], [ 2 , 9 ,[ 255 , 0 , 0 ]], [ 2 , 10 ,[ 255 , 0 , 0 ]], [ 2 , 11 ,[ 0 , 0 , 255 ]], [ 2 , 12 ,[ 0 , 0 , 255 ]],
[ 2 , 13 ,[ 0 , 0 , 255 ]], [ 3 , 0 ,[ 228 , 187 , 109 ]], [ 3 , 1 ,[ 255 , 255 , 255 ]], [ 3 , 2 ,[ 255 , 255 , 255 ]], [ 3 , 3 ,[ 255 , 255 , 255 ]], [ 3 , 4 ,[ 228 , 187 , 109 ]], [ 3 , 5 ,[ 228 , 187 , 109 ]], [ 3 , 6 ,[ 228 , 187 , 109 ]], [ 3 , 7 ,[ 255 , 0 , 0 ]], [ 3 , 8 ,[ 228 , 187 , 109 ]], [ 3 , 9 ,[ 228 , 187 , 109 ]], [ 3 , 10 ,[ 255 , 0 , 0 ]], [ 3 , 11 ,[ 0 , 0 , 255 ]], [ 3 , 12 ,[ 0 , 0 , 255 ]], [ 3 , 13 ,[ 0 , 0 , 255 ]], [ 4 , 0 ,[ 228 , 187 , 109 ]],
[ 4 , 1 ,[ 255 , 255 , 255 ]], [ 4 , 4 ,[ 228 , 187 , 109 ]], [ 4 , 5 ,[ 228 , 187 , 109 ]], [ 4 , 6 ,[ 228 , 187 , 109 ]], [ 4 , 7 ,[ 255 , 0 , 0 ]], [ 4 , 8 ,[ 228 , 187 , 109 ]], [ 4 , 9 ,[ 228 , 187 , 109 ]], [ 4 , 10 ,[ 255 , 0 , 0 ]], [ 4 , 11 ,[ 0 , 0 , 255 ]], [ 4 , 12 ,[ 0 , 0 , 255 ]], [ 4 , 13 ,[ 0 , 0 , 255 ]], [ 5 , 1 ,[ 228 , 187 , 109 ]], [ 5 , 2 ,[ 228 , 187 , 109 ]], [ 5 , 3 ,[ 228 , 187 , 109 ]], [ 5 , 4 ,[ 228 , 187 , 109 ]], [ 5 , 5 ,[ 228 , 187 , 109 ]],
[ 5 , 7 ,[ 255 , 255 , 255 ]], [ 5 , 8 ,[ 255 , 255 , 255 ]], [ 5 , 9 ,[ 255 , 255 , 255 ]], [ 5 , 10 ,[ 255 , 0 , 0 ]], [ 5 , 11 ,[ 0 , 0 , 255 ]], [ 5 , 12 ,[ 0 , 0 , 255 ]], [ 5 , 13 ,[ 0 , 0 , 255 ]], [ 6 , 3 ,[ 228 , 187 , 109 ]], [ 6 , 4 ,[ 228 , 187 , 109 ]], [ 6 , 7 ,[ 255 , 255 , 255 ]], [ 6 , 8 ,[ 255 , 255 , 255 ]], [ 6 , 9 ,[ 255 , 255 , 255 ]], [ 6 , 10 ,[ 228 , 187 , 109 ]], [ 6 , 11 ,[ 228 , 187 , 109 ]], [ 6 , 12 ,[ 228 , 187 , 109 ]], [ 6 , 13 ,[ 228 , 187 , 109 ]],
[ 7 , 3 ,[ 228 , 187 , 109 ]], [ 7 , 4 ,[ 228 , 187 , 109 ]], [ 7 , 10 ,[ 228 , 187 , 109 ]], [ 7 , 11 ,[ 228 , 187 , 109 ]], [ 7 , 12 ,[ 228 , 187 , 109 ]], [ 7 , 13 ,[ 228 , 187 , 109 ]], [ 4 , 2 ,[ 0 , 0 , 255 ]], [ 4 , 3 ,[ 0 , 0 , 255 ]]],
[ [ 0 , 3 ,[ 228 , 187 , 109 ]], [ 0 , 4 ,[ 228 , 187 , 109 ]], [ 1 , 3 ,[ 228 , 187 , 109 ]], [ 1 , 4 ,[ 228 , 187 , 109 ]], [ 2 , 1 ,[ 228 , 187 , 109 ]], [ 2 , 2 ,[ 228 , 187 , 109 ]], [ 2 , 3 ,[ 228 , 187 , 109 ]], [ 2 , 4 ,[ 228 , 187 , 109 ]], [ 2 , 5 ,[ 228 , 187 , 109 ]], [ 2 , 8 ,[ 255 , 0 , 0 ]], [ 2 , 9 ,[ 255 , 0 , 0 ]], [ 2 , 10 ,[ 255 , 0 , 0 ]], [ 2 , 11 ,[ 0 , 0 , 255 ]], [ 2 , 12 ,[ 0 , 0 , 255 ]], [ 2 , 14 ,[ 228 , 187 , 109 ]], [ 2 , 15 ,[ 228 , 187 , 109 ]],
[ 3 , 0 ,[ 228 , 187 , 109 ]], [ 3 , 1 ,[ 255 , 255 , 255 ]], [ 3 , 4 ,[ 228 , 187 , 109 ]], [ 3 , 5 ,[ 228 , 187 , 109 ]], [ 3 , 6 ,[ 228 , 187 , 109 ]], [ 3 , 7 ,[ 255 , 0 , 0 ]], [ 3 , 8 ,[ 255 , 0 , 0 ]], [ 3 , 9 ,[ 255 , 0 , 0 ]], [ 3 , 10 ,[ 255 , 255 , 255 ]], [ 3 , 11 ,[ 255 , 255 , 255 ]], [ 3 , 12 ,[ 0 , 0 , 255 ]], [ 3 , 13 ,[ 0 , 0 , 255 ]], [ 3 , 14 ,[ 228 , 187 , 109 ]], [ 3 , 15 ,[ 228 , 187 , 109 ]], [ 4 , 0 ,[ 228 , 187 , 109 ]], [ 4 , 1 ,[ 255 , 255 , 255 ]],
[ 4 , 2 ,[ 255 , 255 , 255 ]], [ 4 , 3 ,[ 255 , 255 , 255 ]], [ 4 , 4 ,[ 228 , 187 , 109 ]], [ 4 , 5 ,[ 228 , 187 , 109 ]], [ 4 , 6 ,[ 228 , 187 , 109 ]], [ 4 , 7 ,[ 255 , 0 , 0 ]], [ 4 , 8 ,[ 228 , 187 , 109 ]], [ 4 , 9 ,[ 228 , 187 , 109 ]], [ 4 , 10 ,[ 255 , 255 , 255 ]], [ 4 , 11 ,[ 255 , 255 , 255 ]], [ 4 , 12 ,[ 0 , 0 , 255 ]], [ 4 , 13 ,[ 0 , 0 , 255 ]], [ 4 , 14 ,[ 228 , 187 , 109 ]], [ 4 , 15 ,[ 228 , 187 , 109 ]], [ 5 , 0 ,[ 228 , 187 , 109 ]], [ 5 , 1 ,[ 228 , 187 , 109 ]],
[ 5 , 2 ,[ 228 , 187 , 109 ]], [ 5 , 3 ,[ 228 , 187 , 109 ]], [ 5 , 4 ,[ 228 , 187 , 109 ]], [ 5 , 5 ,[ 228 , 187 , 109 ]], [ 5 , 6 ,[ 228 , 187 , 109 ]], [ 5 , 7 ,[ 255 , 0 , 0 ]], [ 5 , 8 ,[ 228 , 187 , 109 ]], [ 5 , 9 ,[ 228 , 187 , 109 ]], [ 5 , 10 ,[ 255 , 255 , 255 ]], [ 5 , 11 ,[ 255 , 255 , 255 ]], [ 5 , 12 ,[ 0 , 0 , 255 ]], [ 5 , 13 ,[ 0 , 0 , 255 ]], [ 5 , 14 ,[ 228 , 187 , 109 ]], [ 5 , 15 ,[ 228 , 187 , 109 ]], [ 6 , 1 ,[ 228 , 187 , 109 ]], [ 6 , 2 ,[ 228 , 187 , 109 ]],
[ 6 , 3 ,[ 228 , 187 , 109 ]], [ 6 , 4 ,[ 228 , 187 , 109 ]], [ 6 , 5 ,[ 228 , 187 , 109 ]], [ 6 , 7 ,[ 255 , 0 , 0 ]], [ 6 , 8 ,[ 255 , 0 , 0 ]], [ 6 , 9 ,[ 255 , 0 , 0 ]], [ 6 , 10 ,[ 255 , 0 , 0 ]], [ 6 , 11 ,[ 0 , 0 , 255 ]], [ 6 , 12 ,[ 0 , 0 , 255 ]], [ 3 , 3 ,[ 0 , 0 , 255 ]], [ 3 , 2 ,[ 0 , 0 , 255 ]]],
[ [ 0 , 3 ,[ 228 , 187 , 109 ]], [ 0 , 4 ,[ 228 , 187 , 109 ]], [ 0 , 10 ,[ 228 , 187 , 109 ]], [ 0 , 11 ,[ 228 , 187 , 109 ]], [ 0 , 12 ,[ 228 , 187 , 109 ]], [ 0 , 13 ,[ 228 , 187 , 109 ]], [ 1 , 3 ,[ 228 , 187 , 109 ]], [ 1 , 4 ,[ 228 , 187 , 109 ]], [ 1 , 7 ,[ 255 , 255 , 255 ]], [ 1 , 8 ,[ 255 , 255 , 255 ]], [ 1 , 9 ,[ 255 , 255 , 255 ]], [ 1 , 10 ,[ 228 , 187 , 109 ]], [ 1 , 11 ,[ 228 , 187 , 109 ]], [ 1 , 12 ,[ 228 , 187 , 109 ]], [ 1 , 13 ,[ 228 , 187 , 109 ]], [ 2 , 1 ,[ 228 , 187 , 109 ]],
[ 2 , 2 ,[ 228 , 187 , 109 ]], [ 2 , 3 ,[ 228 , 187 , 109 ]], [ 2 , 4 ,[ 228 , 187 , 109 ]], [ 2 , 5 ,[ 228 , 187 , 109 ]], [ 2 , 7 ,[ 255 , 255 , 255 ]], [ 2 , 8 ,[ 255 , 255 , 255 ]], [ 2 , 9 ,[ 255 , 255 , 255 ]], [ 2 , 10 ,[ 255 , 0 , 0 ]], [ 2 , 11 ,[ 0 , 0 , 255 ]], [ 2 , 12 ,[ 0 , 0 , 255 ]], [ 2 , 13 ,[ 0 , 0 , 255 ]], [ 3 , 0 ,[ 228 , 187 , 109 ]], [ 3 , 1 ,[ 255 , 255 , 255 ]], [ 3 , 4 ,[ 228 , 187 , 109 ]], [ 3 , 5 ,[ 228 , 187 , 109 ]], [ 3 , 6 ,[ 228 , 187 , 109 ]],
[ 3 , 7 ,[ 255 , 0 , 0 ]], [ 3 , 8 ,[ 228 , 187 , 109 ]], [ 3 , 9 ,[ 228 , 187 , 109 ]], [ 3 , 10 ,[ 255 , 0 , 0 ]], [ 3 , 11 ,[ 0 , 0 , 255 ]], [ 3 , 12 ,[ 0 , 0 , 255 ]], [ 3 , 13 ,[ 0 , 0 , 255 ]], [ 4 , 0 ,[ 228 , 187 , 109 ]], [ 4 , 1 ,[ 255 , 255 , 255 ]], [ 4 , 2 ,[ 255 , 255 , 255 ]], [ 4 , 3 ,[ 255 , 255 , 255 ]], [ 4 , 4 ,[ 228 , 187 , 109 ]], [ 4 , 5 ,[ 228 , 187 , 109 ]], [ 4 , 6 ,[ 228 , 187 , 109 ]], [ 4 , 7 ,[ 255 , 0 , 0 ]], [ 4 , 8 ,[ 228 , 187 , 109 ]],
[ 4 , 9 ,[ 228 , 187 , 109 ]], [ 4 , 10 ,[ 255 , 0 , 0 ]], [ 4 , 11 ,[ 0 , 0 , 255 ]], [ 4 , 12 ,[ 0 , 0 , 255 ]], [ 4 , 13 ,[ 0 , 0 , 255 ]], [ 5 , 0 ,[ 228 , 187 , 109 ]], [ 5 , 1 ,[ 228 , 187 , 109 ]], [ 5 , 2 ,[ 228 , 187 , 109 ]], [ 5 , 3 ,[ 228 , 187 , 109 ]], [ 5 , 4 ,[ 228 , 187 , 109 ]], [ 5 , 5 ,[ 228 , 187 , 109 ]], [ 5 , 6 ,[ 228 , 187 , 109 ]], [ 5 , 7 ,[ 255 , 0 , 0 ]], [ 5 , 8 ,[ 255 , 0 , 0 ]], [ 5 , 9 ,[ 255 , 0 , 0 ]], [ 5 , 10 ,[ 255 , 0 , 0 ]],
[ 5 , 11 ,[ 0 , 0 , 255 ]], [ 5 , 12 ,[ 0 , 0 , 255 ]], [ 5 , 13 ,[ 0 , 0 , 255 ]], [ 6 , 1 ,[ 228 , 187 , 109 ]], [ 6 , 2 ,[ 228 , 187 , 109 ]], [ 6 , 3 ,[ 228 , 187 , 109 ]], [ 6 , 4 ,[ 228 , 187 , 109 ]], [ 6 , 5 ,[ 228 , 187 , 109 ]], [ 6 , 7 ,[ 255 , 0 , 0 ]], [ 6 , 8 ,[ 255 , 0 , 0 ]], [ 6 , 9 ,[ 255 , 0 , 0 ]], [ 6 , 10 ,[ 255 , 0 , 0 ]], [ 6 , 11 ,[ 0 , 0 , 255 ]], [ 6 , 12 ,[ 228 , 187 , 109 ]], [ 6 , 13 ,[ 228 , 187 , 109 ]], [ 6 , 14 ,[ 228 , 187 , 109 ]],
[ 7 , 9 ,[ 255 , 255 , 255 ]], [ 7 , 10 ,[ 255 , 255 , 255 ]], [ 7 , 11 ,[ 228 , 187 , 109 ]], [ 7 , 12 ,[ 228 , 187 , 109 ]], [ 7 , 13 ,[ 228 , 187 , 109 ]], [ 7 , 14 ,[ 228 , 187 , 109 ]], [ 3 , 2 ,[ 0 , 0 , 255 ]], [ 3 , 3 ,[ 0 , 0 , 255 ]]]],8,16)
set image grid dudeImage, 3, 2
set image colorkey dudeImage, 0, 0, 0
function CreatePNG(data,pixel_across,pixel_down)
images = sizeof(data)
if images = 1
frames_across = 1
frames_down = 1
else
frames_across = int(sqr(images)) + 1
frames_down = int(images / frames_across) + 1
endif
img = createimage( frames_across * pixel_across,frames_down * pixel_down)
set image img
x_adj = 0
y_adj = 0
for f = 0 to sizeof(data) - 1
for p = 0 to sizeof(data[f]) - 1
set color data[f][p][2][0],data[f][p][2][1],data[f][p][2][2]
set pixel data[f][p][0] + x_adj,data[f][p][1] + y_adj
if p = sizeof(data[f]) - 1
x_adj = x_adj + pixel_across
endif
if x_adj / pixel_across = frames_across
x_adj = 0
y_adj = y_adj + pixel_down
endif
next
next
set image primary
return img
endfunc
endfunc
Pixel Editor crashes if you click the button to load a png file but but then click cancel in the file dialog. You can check the length of the returned filename and abort if it's zero or wait with the abort until after you've tried loading the image:
Code:
function import_png()
png_imported = true
loaded_img = openfiledialog("png")
img = loadimage(loaded_img) ' returns an unset variable (null) on failure
if not typeof(img)
... abort
endif