79 lines
1.8 KiB
Lua
79 lines
1.8 KiB
Lua
local sprite = app.editor.sprite
|
|
local cel = app.cel
|
|
|
|
if sprite.selection.isEmpty then
|
|
print("You need to select something sorry")
|
|
return
|
|
end
|
|
|
|
local diag = Dialog{
|
|
title = "Flip Displacement Map"
|
|
}
|
|
|
|
diag:check{
|
|
id = "horizontal",
|
|
label = "flip horizontal?"
|
|
}
|
|
|
|
diag:check{
|
|
id = "vertical",
|
|
label = "flip vertical?"
|
|
}
|
|
|
|
diag:button{
|
|
text = "ok",
|
|
focus = true,
|
|
onclick = function(ev)
|
|
local horizontal = diag.data["horizontal"]
|
|
local vertical = diag.data["vertical"]
|
|
|
|
local selection = sprite.selection
|
|
local image = cel.image:clone()
|
|
|
|
for x = 0, selection.bounds.width - 1 do
|
|
for y = 0, selection.bounds.height - 1 do
|
|
local xSel = x + selection.origin.x
|
|
local ySel = y + selection.origin.y
|
|
|
|
local xImg = xSel - cel.position.x
|
|
local yImg = ySel - cel.position.y
|
|
|
|
if xImg < 0 or xImg >= image.width or yImg < 0 or yImg >= image.height then
|
|
goto continue
|
|
end
|
|
|
|
local imgValue = image:getPixel(xImg, yImg)
|
|
local color = Color(imgValue)
|
|
|
|
if horizontal then
|
|
color.red = 128 + -(color.red - 128)
|
|
end
|
|
|
|
if vertical then
|
|
color.green = 128 + -(color.green - 128)
|
|
end
|
|
|
|
image:drawPixel(
|
|
xImg,
|
|
yImg,
|
|
app.pixelColor.rgba(color.red, color.green, color.blue, color.alpha))
|
|
|
|
::continue::
|
|
end
|
|
end
|
|
|
|
cel.image = image
|
|
|
|
diag:close()
|
|
end
|
|
}
|
|
|
|
diag:button{
|
|
text = "cancel",
|
|
onclick = function(ev)
|
|
diag:close()
|
|
end
|
|
}
|
|
|
|
diag:show()
|