Hi. I’m working on a shading program for the way I shade objects and characters. Here is my code.
local dlg = Dialog { title = “Color Shading” }
dlg:color {
id = “color4”,
label = "Color 4: ",
color = Color(20, 149, 220, 255)
}
dlg:color {
id = “color9”,
label = "Color 9: ",
color = Color(11, 96, 143, 255)
}
dlg:button {
id = “enter”,
text = “Enter”,
onclick = function()
Shade()
dlg:close()
end
}
local cel = app.activeCel
assert(cel ~= nil and cel.image ~= nil)
local args = dlg.data
local image = cel.image
local color = Color(image:getPixel(x, y))
local toColor1 = args.color1
local toColor2 = args.color2
local toColor3 = args.color3
local toColor4 = args.color4
local toColor5 = args.color5
local toColor6 = args.color6
local toColor7 = args.color7
local toColor8 = args.color8
local toColor9 = args.color9
–From Color
local fromColor1 = args.color1
local fromColor2 = args.color2
local fromColor3 = args.color3
local fromColor4 = args.color4
local fromColor5 = args.color5
local fromColor6 = args.color6
local fromColor7 = args.color7
local fromColor8 = args.color8
local fromColor9 = args.color9
–Color Directions
local underIsBlank = false
local overIsBlank = false
local leftIsBlank = false
local rightIsBlank = false
local underIsColor1 = false
local overIsColor1 = false
local leftIsColor1 = false
local rightIsColor1 = false
local underIsColor2 = false
local overIsColor2 = false
local leftIsColor2 = false
local rightIsColor2 = false
local underIsColor3 = false
local overIsColor3 = false
local leftIsColor3 = false
local rightIsColor3 = false
local underIsColor4 = false
local overIsColor4 = false
local leftIsColor4 = false
local rightIsColor4 = false
local underIsColor5 = false
local overIsColor5 = false
local leftIsColor5 = false
local rightIsColor5 = false
local underIsColor6 = false
local overIsColor6 = false
local leftIsColor6 = false
local rightIsColor6 = false
local underIsColor7 = false
local overIsColor7 = false
local leftIsColor7 = false
local rightIsColor7 = false
local underIsColor8 = false
local overIsColor8 = false
local leftIsColor8 = false
local rightIsColor8 = false
local underIsColor9 = false
local overIsColor9 = false
local leftIsColor9 = false
local rightIsColor9 = false
–To Color Int
local toColorInt0 = 0
local toColorInt1 = 0
local toColorInt2 = 0
local toColorInt3 = 0
local toColorInt4 = 0
local toColorInt5 = 0
local toColorInt6 = 0
local toColorInt7 = 0
local toColorInt8 = 0
local toColorInt9 = 0
dlg:show { wait = false }
–Function Start
function Shade()
toColor1 = args.color1
toColor2 = args.color2
toColor3 = args.color3
toColor4 = args.color4
toColor5 = args.color5
toColor6 = args.color6
toColor7 = args.color7
toColor8 = args.color8
toColor9 = args.color9
--From Color
fromColor1 = args.color1
fromColor2 = args.color2
fromColor3 = args.color3
fromColor4 = args.color4
fromColor5 = args.color5
fromColor6 = args.color6
fromColor7 = args.color7
fromColor8 = args.color8
fromColor9 = args.color9
–To Color
if cel.sprite.colorMode == ColorMode.RGB then
toColorInt9 = toColor9.rgbaPixel
elseif cel.sprite.colorMode == ColorMode.GRAY then
toColorInt9 = toColor9.grayPixel
else
toColorInt9 = toColor9.index
end
for y = 0, cel.bounds.height - 1 do
for x = 0, cel.bounds.width - 1 do
color = Color(image:getPixel(x, y))
underIsBlank = false
if y == cel.bounds.height - 1 then
-- bottom of image
underIsBlank = true
elseif image.colorMode == ColorMode.INDEXED then
-- compare palette index
underIsBlank = image:getPixel(x, y + 1) == cel.sprite.transparentColor
else
-- image.colorMode is ColorMode.RGB or ColorMode.GRAY
underIsBlank = Color(image:getPixel(x, y + 1)).alpha == 0
end
if color == fromColor4 and underIsBlank then
image:drawPixel(x, y, toColorInt9)
end
end
end
end
I would like it so that when the color of the button is changed or set to a color, the (variable) color1’s value would change to that color.