Skip to content

Instantly share code, notes, and snippets.

@SkyTheCoder
Created September 10, 2013 17:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save SkyTheCoder/365be6cc449546cb51c5 to your computer and use it in GitHub Desktop.
Save SkyTheCoder/365be6cc449546cb51c5 to your computer and use it in GitHub Desktop.
--# ColorTray
ColorTray = class()
-- ColorTray
-- ver. 1.0
-- offers a set of predefined colors.
-- ====================
function ColorTray:init(x1, y1, x2, y2, clr)
local x, y, w, h, i
self.frame = Frame(x1, y1, x2, y2)
self.clr = clr
self.pots = {}
self.clrs = {}
h = y2 - y1 - 5
w = ((x2 - x1) - 10) / 4
for i = 1,4 do
x = i * w - w + 7
self.pots[i] = Frame(x, h - w, x + w - 5, h - 5)
self.pots[i + 4] = Frame(x, h - w * 2, x + w - 5, h - w - 5)
self.pots[i + 8] = Frame(x, h - w * 3, x + w - 5, h - w * 2 - 5)
self.pots[i + 12] = Frame(x, h - w * 4, x + w - 5,
h - w * 3 - 5)
end
self.clrs[1] = color(255, 255, 255, 255)
self.clrs[2] = color(255, 0, 0, 255)
self.clrs[3] = color(255, 128, 0, 255)
self.clrs[4] = color(255, 255, 0, 255)
self.clrs[5] = color(128, 255, 0, 255)
self.clrs[6] = color(0, 255, 0, 255)
self.clrs[7] = color(0, 255, 128, 255)
self.clrs[8] = color(0, 255, 255, 255)
self.clrs[9] = color(0, 128, 255, 255)
self.clrs[10] = color(0, 0, 255, 255)
self.clrs[11] = color(128, 0, 255, 255)
self.clrs[12] = color(255, 0, 255, 255)
self.clrs[13] = color(255, 0, 128, 255)
self.clrs[14] = color(127, 127, 127, 255)
self.clrs[15] = color(0, 0, 0, 255)
self.clrs[16] = color(0, 0, 0, 0)
x = self.frame:width() / 2
self.sample = Frame(x - 45, 5, x + 45, 55)
end
function ColorTray:draw()
pushStyle()
pushMatrix()
fill(50, 50, 50, 255)
self.frame:draw()
translate(self.frame.x1, self.frame.y1)
for i=1,16 do
fill(self.clrs[i])
self.pots[i]:draw()
end
strokeWidth(1)
stroke(224, 131, 133, 255)
fill(0, 0, 0, 255)
self.pots[16]:draw()
line(self.pots[16].x1 + 2, self.pots[16].y1 + 2,
self.pots[16].x2 - 2, self.pots[16].y2 - 2)
line(self.pots[16].x1 + 2, self.pots[16].y2 - 2,
self.pots[16].x2 - 2, self.pots[16].y1 + 2)
line(self.sample.x1, self.sample.y1, self.sample.x2, self.sample.y2)
line(self.sample.x1, self.sample.y2, self.sample.x2, self.sample.y1)
fill(self.clr.r, self.clr.g, self.clr.b, self.clr.a)
self.sample:draw()
popMatrix()
popStyle()
end
function ColorTray:touched(touch)
if touch.state == BEGAN then
tt = Ttouch(touch)
tt:translate(self.frame.x1, self.frame.y1)
for i=1,16 do
if self.pots[i]:touched(tt) then
self.clr = self.clrs[i]
return true
end
end
end
return false
end
--# EditGrid
EditGrid = class()
-- Editgrid
-- ver. 1.0
-- handles 8-bit style drawing duties for Spritely
-- ====================
function EditGrid:init(x1, y1, x2, y2)
self.frame = Frame(x1, y1, x2, y2)
self.cx = 0
self.cy = 0
self.clr = color(255, 255, 255, 255)
self.img = image(16, 16)
self.img2 = image(16, 16)
end
function EditGrid:draw()
local cw, cy, c, x, y
cw = (self.frame.x2 - self.frame.x1) / self.img.width
cy = (self.frame.y2 - self.frame.y1) / self.img.height
pushStyle()
stroke(127, 127, 127, 255)
strokeWidth(1)
fill(0, 0, 0, 255)
self.frame:draw()
rectMode(CORNER)
c = color(0, 0, 0, 255)
sprite(self.img, self.frame:midx(), self.frame:midy(),
self.frame:width(), self.frame:height())
for x = 1, self.img.width do
line(math.floor(x * cw + self.frame.x1 + 0.5), self.frame.y1,
math.floor(x * cw + self.frame.x1 + 0.5), self.frame.y2)
end
for y = 1, self.img.height do
line(self.frame.x1, math.floor(self.frame.y2 - cy * y + 0.5),
self.frame.x2, math.floor(self.frame.y2 - cy * y + 0.5))
end
popStyle()
end
function EditGrid:touched(touch)
local cx, cy, cw, x, y
if touch.state == BEGAN or touch.state == MOVING then
if self.frame:touched(touch) then
x = touch.x - self.frame.x1
y = touch.y - self.frame.y1
cw = (self.frame.x2 - self.frame.x1) / self.img.width
x = math.floor(x / cw) + 1
y = math.floor(y / cw) + 1
if x < 1 then x = 1 end
if x > self.img.width then x = self.img.width end
if y < 1 then y = 1 end
if y > self.img.height then y = self.img.height end
self.cx = x
self.cy = y
return true
end
end
return false
end
function EditGrid:pencil()
self.img:set(self.cx, self.cy, self.clr)
end
function EditGrid:getPix()
return self.img:get(self.cx, self.cy)
end
function EditGrid:getString()
local s, gy, r, g, b, a
c = color(0, 0, 0, 255)
s = "local img = image("..self.img.width..", "..self.img.height..")\n"
for x = 1, self.img.width do
for y = 1, self.img.height do
r,g,b,a = self.img:get(x,y)
if a > 0 then
s=s.."img:set("..x..","..y..","
..r..","..g..","
..b..","..a..")\n"
end
end
end
s=s.."return img"
return(s)
end
function EditGrid:setImage(img)
self.img = img:copy()
self.px = self.img.width
self.py = self.img.height
end
function EditGrid:fillnil(r, g, b, a)
local x, y, c
c = color(r,g,b,a)
for x = 1, self.img.width do
for y = 1, self.img.height do
r, g, b, a = self.img:get(x, y)
if a == 0 then
self.img:set(x, y, c)
end
end
end
self:updateImage()
end
function EditGrid:fillall(r, g, b, a)
local x, y, c
c = color(r,g,b,a)
for x = 1, self.img.width do
for y = 1, self.img.height do
self.img:set(x, y, c)
end
end
end
function EditGrid:testPix(x, y, c, img)
local r, g, b, a
test =false
if x >= 1 and x <= img.width then
if y >= 1 and y <= img.height then
r, g, b, a = img:get(x, y)
if a == c.a and b == c.b and g == c.g and r == c.r then
test = true
end
end
end
return test
end
function EditGrid:floodFill()
local x, y, c, i, spots, timg
local spot = {}
img = self.img:copy()
-- find the color that was touched
r, g, b, a = img:get(self.cx, self.cy)
c = color(r, g, b, a)
-- if touched = color to use, then exit
if c == self.clr then
return nil
end
-- use the initial location as first candidate spot
spots = 1
spot[1] = vec2(self.cx, self.cy)
img:set(spot[1].x, spot[1].y, self.clr)
oldspots = 1
searching = true
-- keep going until there are no new spots found
while searching do
for i = 1, oldspots do
-- find candidates
x = spot[i].x
y = spot[i].y
-- check down
if self:testPix(x, y - 1, c, img) then
img:set(x, y - 1, self.clr)
spots = spots + 1
spot[spots] = vec2(x, y - 1)
end
-- check left
if self:testPix(x - 1, y, c, img) then
img:set(x - 1, y, self.clr)
spots = spots + 1
spot[spots] = vec2(x - 1, y)
end
-- check right
if self:testPix(x + 1, y, c, img) then
img:set(x + 1, y, self.clr)
spots = spots + 1
spot[spots] = vec2(x + 1, y)
end
-- check up
if self:testPix(x, y + 1, c, img) then
img:set(x, y + 1, self.clr)
spots = spots + 1
spot[spots] = vec2(x, y + 1)
end
end
if spots > 1024 then
searching = false
end
if spots == oldspots then -- no new pixels to change found
searching = false
end
oldspots = spots
end
spot = nil
self.img = img:copy()
end
function EditGrid:flipHorizontal()
local x, y, timg
timg = image(self.img.width, self.img.height)
for x = 1, self.img.width do
for y = 1, self.img.height do
r, g, b, a = self.img:get(self.img.width - x + 1, y)
c = color(r, g, b, a)
timg:set(x, y, c)
end
end
self.img = timg:copy()
end
function EditGrid:flipVertical()
local x, y, r, g, b, a, c, timg
timg = self.img:copy()
for x = 1, self.img.width do
for y = 1, self.img.height do
r, g, b, a = self.img:get(x, self.img.height - y + 1)
c = color(r, g, b, a)
timg:set(x, y, c)
end
end
self.img = timg:copy()
end
function EditGrid:rotate()
local x, y, r, g, b, a, c, timg
timg = self.img:copy()
for x = 1, self.img.width do
for y = 1, self.img.height do
r, g, b, a = self.img:get(y, self.img.width - x + 1)
c = color(r, g, b, a)
timg:set(x, y, c)
end
end
self.img = timg:copy()
end
function EditGrid:blur(nils)
local x, y, timg, count, r, g, b, a, ir, ig, ib, ia
timg = self.img:copy()
for x = 1, self.img.width do
for y = 1, self.img.height do
count = 0
r = 0
g = 0
b = 0
a = 0
if x > 1 then
ir, ig, ib, ia = self.img:get(x - 1, y)
if nils or ia > 0 then
count = count + 1
r = r + ir
g = g + ig
b = b + ib
a = a + ia
end
end
if x > 1 and y > 1 then
ir, ig, ib, ia = self.img:get(x - 1, y - 1)
if nils or ia > 0 then
count = count + 1
r = r + ir
g = g + ig
b = b + ib
a = a + ia
end
end
if y > 1 then
ir, ig, ib, ia = self.img:get(x, y - 1)
if nils or ia > 0 then
count = count + 1
r = r + ir
g = g + ig
b = b + ib
a = a + ia
end
end
if x < self.img.width and y > 1 then
ir, ig, ib, ia = self.img:get(x + 1, y - 1)
if nils or ia > 0 then
count = count + 1
r = r + ir
g = g + ig
b = b + ib
a = a + ia
end
end
if x < self.img.width then
ir, ig, ib, ia = self.img:get(x + 1, y)
if nils or ia > 0 then
count = count + 1
r = r + ir
g = g + ig
b = b + ib
a = a + ia
end
end
if x < self.img.width and y < self.img.height then
ir, ig, ib, ia = self.img:get(x + 1, y + 1)
if nils or ia > 0 then
count = count + 1
r = r + ir
g = g + ig
b = b + ib
a = a + ia
end
end
if y < self.img.height then
ir, ig, ib, ia = self.img:get(x, y + 1)
if nils or ia > 0 then
count = count + 1
r = r + ir
g = g + ig
b = b + ib
a = a + ia
end
end
if x > 1 and y < self.img.height then
ir, ig, ib, ia = self.img:get(x - 1, y + 1)
if nils or ia > 0 then
count = count + 1
r = r + ir
g = g + ig
b = b + ib
a = a + ia
end
end
ir, ig, ib, ia = self.img:get(x, y)
if count > 0 then
r = (r / count) * .3 + ir * 0.7
g = (g / count) * .3 + ig * 0.7
b = (b / count) * .3 + ib * 0.7
a = (a / count) * .3 + ia * 0.7
c = color(r,g,b,a)
timg:set(x, y, c)
end
end
end
self.img = timg:copy()
end
function EditGrid:invert()
local x, y, r, g, b, a
for x = 1, self.img.width do
for y = 1, self.img.height do
r, g, b, a = self.img:get(x, y)
if a > 0 then
r = 255 - r
g = 255 - g
b = 255 - b
c = color(r, g, b, a)
self.img:set(x, y, c)
end
end
end
end
--# Frame
Frame = class()
-- Frame
-- ver. 1.0
-- a simple rectangle for holding controls.
-- ====================
function Frame:init(x1, y1, x2, y2)
self.x1 = x1
self.x2 = x2
self.y1 = y1
self.y2 = y2
end
function Frame:inset(dx, dy)
self.x1 = self.x1 + dx
self.x2 = self.x2 - dx
self.y1 = self.y1 + dy
self.y2 = self.y2 - dy
end
function Frame:offset(dx, dy)
self.x1 = self.x1 + dx
self.x2 = self.x2 + dx
self.y1 = self.y1 + dy
self.y2 = self.y2 + dy
end
function Frame:draw()
pushStyle()
rectMode(CORNERS)
rect(self.x1, self.y1, self.x2, self.y2)
popStyle()
end
function Frame:gloss(baseclr)
local i, t, r, g, b, y
pushStyle()
if baseclr == nil then baseclr = color(194, 194, 194, 255) end
fill(baseclr)
rectMode(CORNERS)
rect(self.x1, self.y1, self.x2, self.y2)
r = baseclr.r
g = baseclr.g
b = baseclr.b
for i = 1 , self:height() / 2 do
r = r - 1
g = g - 1
b = b - 1
stroke(r, g, b, 255)
y = (self.y1 + self.y2) / 2
line(self.x1, y + i, self.x2, y + i)
line(self.x1, y - i, self.x2, y - i)
end
popStyle()
end
function Frame:shade(base, step)
pushStyle()
strokeWidth(1)
for y = self.y1, self.y2 do
i = self.y2 - y
stroke(base - i * step, base - i * step, base - i * step, 255)
line(self.x1, y, self.x2, y)
end
popStyle()
end
function Frame:touched(touch)
if touch.x >= self.x1 and touch.x <= self.x2 then
if touch.y >= self.y1 and touch.y <= self.y2 then
return true
end
end
return false
end
function Frame:ptIn(x, y)
if x >= self.x1 and x <= self.x2 then
if y >= self.y1 and y <= self.y2 then
return true
end
end
return false
end
function Frame:width()
return self.x2 - self.x1
end
function Frame:height()
return self.y2 - self.y1
end
function Frame:midx()
return (self.x1 + self.x2) / 2
end
function Frame:midy()
return (self.y1 + self.y2) / 2
end
--# IconButton
IconButton = class()
-- IconButton
-- ver. 1.0
-- a simple control that replicates the iparameter slider
-- ====================
function IconButton:init(x1, y1, x2, y2, img)
self.frame = Frame(x1, y1, x2, y2)
self.img = img
end
function IconButton:draw()
local x, y
fill(52, 52, 52, 255)
self.frame:draw()
x = (self.frame.x1 + self.frame.x2) / 2
y = (self.frame.y1 + self.frame.y2) / 2
sprite(self.img, x, y)
end
function IconButton:touched(touch)
if self.frame:touched(touch) then
return true
end
return false
end
--# IconImages
IconImages = class()
-- IconImages
-- ver. 1.0
-- images used in Spritely
-- ====================
function IconImages:getPencil()
local img = image(24, 24)
img:set(2,4,242,189,74,255)
img:set(2,3,127,127,127,255)
img:set(2,2,127,127,127,255)
img:set(3,6,242,189,74,255)
img:set(3,5,214,171,94,255)
img:set(3,4,214,171,94,255)
img:set(3,3,214,171,94,255)
img:set(3,2,127,127,127,255)
img:set(4,7,205,194,0,255)
img:set(4,6,240,224,0,255)
img:set(4,5,214,171,94,255)
img:set(4,4,214,171,94,255)
img:set(4,3,214,171,94,255)
img:set(4,2,214,171,94,255)
img:set(5,8,205,194,0,255)
img:set(5,7,240,224,0,255)
img:set(5,6,240,224,0,255)
img:set(5,5,240,224,0,255)
img:set(5,4,214,171,94,255)
img:set(5,3,214,171,94,255)
img:set(6,9,205,194,0,255)
img:set(6,8,240,224,0,255)
img:set(6,7,240,224,0,255)
img:set(6,6,205,194,0,255)
img:set(6,5,240,224,0,255)
img:set(6,4,240,224,0,255)
img:set(6,3,242,189,74,255)
img:set(7,10,205,194,0,255)
img:set(7,9,240,224,0,255)
img:set(7,8,240,224,0,255)
img:set(7,7,205,194,0,255)
img:set(7,6,224,216,0,255)
img:set(7,5,224,216,0,255)
img:set(7,4,255,255,0,255)
img:set(8,11,205,194,0,255)
img:set(8,10,224,216,0,255)
img:set(8,9,240,224,0,255)
img:set(8,8,205,194,0,255)
img:set(8,7,224,216,0,255)
img:set(8,6,224,216,0,255)
img:set(8,5,255,255,0,255)
img:set(9,12,205,194,0,255)
img:set(9,11,224,216,0,255)
img:set(9,10,240,224,0,255)
img:set(9,9,205,194,0,255)
img:set(9,8,224,216,0,255)
img:set(9,7,224,216,0,255)
img:set(9,6,255,255,0,255)
img:set(10,13,205,194,0,255)
img:set(10,12,240,224,0,255)
img:set(10,11,224,216,0,255)
img:set(10,10,205,194,0,255)
img:set(10,9,224,216,0,255)
img:set(10,8,224,216,0,255)
img:set(10,7,255,255,0,255)
img:set(11,14,205,194,0,255)
img:set(11,13,224,216,0,255)
img:set(11,12,240,224,0,255)
img:set(11,11,205,194,0,255)
img:set(11,10,224,216,0,255)
img:set(11,9,224,216,0,255)
img:set(11,8,255,255,0,255)
img:set(12,15,205,194,0,255)
img:set(12,14,224,216,0,255)
img:set(12,13,240,224,0,255)
img:set(12,12,205,194,0,255)
img:set(12,11,224,216,0,255)
img:set(12,10,224,216,0,255)
img:set(12,9,255,255,0,255)
img:set(13,16,205,194,0,255)
img:set(13,15,224,216,0,255)
img:set(13,14,224,216,0,255)
img:set(13,13,205,194,0,255)
img:set(13,12,224,216,0,255)
img:set(13,11,224,216,0,255)
img:set(13,10,255,255,0,255)
img:set(14,17,205,194,0,255)
img:set(14,16,240,224,0,255)
img:set(14,15,224,216,0,255)
img:set(14,14,205,194,0,255)
img:set(14,13,224,216,0,255)
img:set(14,12,224,216,0,255)
img:set(14,11,255,255,0,255)
img:set(15,18,156,142,151,255)
img:set(15,17,240,224,0,255)
img:set(15,16,240,224,0,255)
img:set(15,15,205,194,0,255)
img:set(15,14,224,216,0,255)
img:set(15,13,224,216,0,255)
img:set(15,12,255,255,0,255)
img:set(16,19,156,142,151,255)
img:set(16,18,156,142,151,255)
img:set(16,17,156,142,151,255)
img:set(16,16,240,224,0,255)
img:set(16,15,224,216,0,255)
img:set(16,14,224,216,0,255)
img:set(16,13,255,255,0,255)
img:set(17,20,127,127,127,255)
img:set(17,19,127,127,127,255)
img:set(17,18,156,142,151,255)
img:set(17,17,156,142,151,255)
img:set(17,16,156,142,151,255)
img:set(17,15,224,216,0,255)
img:set(17,14,255,255,0,255)
img:set(18,21,156,142,151,255)
img:set(18,20,156,142,151,255)
img:set(18,19,127,127,127,255)
img:set(18,18,127,127,127,255)
img:set(18,17,156,142,151,255)
img:set(18,16,156,142,151,255)
img:set(18,15,156,142,151,255)
img:set(19,22,213,118,101,255)
img:set(19,21,213,118,101,255)
img:set(19,20,156,142,151,255)
img:set(19,19,156,142,151,255)
img:set(19,18,127,127,127,255)
img:set(19,17,127,127,127,255)
img:set(19,16,156,142,151,255)
img:set(20,23,213,118,101,255)
img:set(20,22,213,118,101,255)
img:set(20,21,213,118,101,255)
img:set(20,20,213,118,101,255)
img:set(20,19,156,142,151,255)
img:set(20,18,156,142,151,255)
img:set(20,17,127,127,127,255)
img:set(21,23,213,118,101,255)
img:set(21,22,213,118,101,255)
img:set(21,21,213,118,101,255)
img:set(21,20,213,118,101,255)
img:set(21,19,213,118,101,255)
img:set(21,18,156,142,151,255)
img:set(22,23,213,118,101,255)
img:set(22,22,213,118,101,255)
img:set(22,21,213,118,101,255)
img:set(22,20,213,118,101,255)
img:set(22,19,213,118,101,255)
img:set(23,22,213,118,101,255)
img:set(23,21,213,118,101,255)
img:set(23,20,213,118,101,255)
return img
end
function IconImages:getGreenDot()
local img = image(8, 8)
img:set(1,6,0,224,0,255)
img:set(1,5,0,224,0,255)
img:set(1,4,0,224,0,255)
img:set(1,3,0,224,0,255)
img:set(2,7,0,224,0,255)
img:set(2,6,0,224,0,255)
img:set(2,5,0,255,128,255)
img:set(2,4,255,255,255,255)
img:set(2,3,0,224,0,255)
img:set(2,2,0,224,0,255)
img:set(3,8,0,224,0,255)
img:set(3,7,0,224,0,255)
img:set(3,6,0,224,0,255)
img:set(3,5,0,224,0,255)
img:set(3,4,0,255,128,255)
img:set(3,3,255,255,255,255)
img:set(3,2,0,224,0,255)
img:set(3,1,0,224,0,255)
img:set(4,8,0,224,0,255)
img:set(4,7,0,224,0,255)
img:set(4,6,0,224,0,255)
img:set(4,5,0,224,0,255)
img:set(4,4,0,255,128,255)
img:set(4,3,255,255,255,255)
img:set(4,2,0,255,128,255)
img:set(4,1,0,224,0,255)
img:set(5,8,0,224,0,255)
img:set(5,7,0,224,0,255)
img:set(5,6,0,224,0,255)
img:set(5,5,0,255,128,255)
img:set(5,4,255,255,255,255)
img:set(5,3,0,255,128,255)
img:set(5,2,0,224,0,255)
img:set(5,1,0,224,0,255)
img:set(6,8,0,224,0,255)
img:set(6,7,0,224,0,255)
img:set(6,6,0,255,128,255)
img:set(6,5,255,255,255,255)
img:set(6,4,0,255,128,255)
img:set(6,3,0,224,0,255)
img:set(6,2,0,224,0,255)
img:set(6,1,0,224,0,255)
img:set(7,7,0,224,0,255)
img:set(7,6,255,255,255,255)
img:set(7,5,0,255,128,255)
img:set(7,4,0,224,0,255)
img:set(7,3,0,224,0,255)
img:set(7,2,0,224,0,255)
img:set(8,6,0,224,0,255)
img:set(8,5,0,224,0,255)
img:set(8,4,0,224,0,255)
img:set(8,3,0,224,0,255)
return img
end
function IconImages:getDropper()
local img = image(24, 24)
img:set(2,3,127,127,127,255)
img:set(3,4,127,127,127,255)
img:set(3,2,127,127,127,255)
img:set(4,6,174,162,185,255)
img:set(4,5,255,255,255,255)
img:set(4,4,127,127,127,255)
img:set(4,3,127,127,127,255)
img:set(5,7,174,162,185,255)
img:set(5,6,255,255,255,255)
img:set(5,5,127,127,127,255)
img:set(5,4,127,127,127,255)
img:set(6,8,174,162,185,255)
img:set(6,7,255,255,255,255)
img:set(6,6,127,127,127,255)
img:set(6,5,127,127,127,255)
img:set(6,4,174,162,185,255)
img:set(7,9,174,162,185,255)
img:set(7,8,255,255,255,255)
img:set(7,7,127,127,127,255)
img:set(7,6,127,127,127,255)
img:set(7,5,174,162,185,255)
img:set(8,10,174,162,185,255)
img:set(8,9,255,255,255,255)
img:set(8,8,127,127,127,255)
img:set(8,7,127,127,127,255)
img:set(8,6,174,162,185,255)
img:set(9,11,174,162,185,255)
img:set(9,10,255,255,255,255)
img:set(9,9,127,127,127,255)
img:set(9,8,127,127,127,255)
img:set(9,7,174,162,185,255)
img:set(10,12,174,162,185,255)
img:set(10,11,255,255,255,255)
img:set(10,10,127,127,127,255)
img:set(10,9,127,127,127,255)
img:set(10,8,174,162,185,255)
img:set(11,13,174,162,185,255)
img:set(11,12,255,255,255,255)
img:set(11,11,127,127,127,255)
img:set(11,10,127,127,127,255)
img:set(11,9,174,162,185,255)
img:set(12,14,174,162,185,255)
img:set(12,13,255,255,255,255)
img:set(12,12,127,127,127,255)
img:set(12,11,127,127,127,255)
img:set(12,10,174,162,185,255)
img:set(13,15,174,162,185,255)
img:set(13,14,255,255,255,255)
img:set(13,13,127,127,127,255)
img:set(13,12,127,127,127,255)
img:set(13,11,174,162,185,255)
img:set(14,16,174,162,185,255)
img:set(14,15,255,255,255,255)
img:set(14,14,127,127,127,255)
img:set(14,13,127,127,127,255)
img:set(14,12,174,162,185,255)
img:set(15,17,174,162,185,255)
img:set(15,16,255,255,255,255)
img:set(15,15,127,127,127,255)
img:set(15,14,127,127,127,255)
img:set(15,13,174,162,185,255)
img:set(16,18,255,151,153,255)
img:set(16,17,255,255,255,255)
img:set(16,16,127,127,127,255)
img:set(16,15,127,127,127,255)
img:set(16,14,174,162,185,255)
img:set(17,22,233,165,156,255)
img:set(17,21,233,165,156,255)
img:set(17,20,233,165,156,255)
img:set(17,19,233,165,156,255)
img:set(17,18,255,151,153,255)
img:set(17,17,255,151,153,255)
img:set(17,16,127,127,127,255)
img:set(17,15,174,162,185,255)
img:set(18,23,233,165,156,255)
img:set(18,22,233,165,156,255)
img:set(18,21,233,165,156,255)
img:set(18,20,233,165,156,255)
img:set(18,19,233,142,140,255)
img:set(18,18,255,127,136,255)
img:set(18,17,255,151,153,255)
img:set(18,16,255,151,153,255)
img:set(19,24,233,158,158,255)
img:set(19,23,233,165,156,255)
img:set(19,22,233,142,140,255)
img:set(19,21,233,142,140,255)
img:set(19,20,233,142,140,255)
img:set(19,19,233,142,140,255)
img:set(19,18,233,123,123,255)
img:set(19,17,225,109,98,255)
img:set(20,24,233,165,156,255)
img:set(20,23,233,165,156,255)
img:set(20,22,233,142,140,255)
img:set(20,21,233,142,140,255)
img:set(20,20,233,142,140,255)
img:set(20,19,233,142,140,255)
img:set(20,18,233,123,123,255)
img:set(20,17,225,109,98,255)
img:set(21,24,233,165,156,255)
img:set(21,23,233,142,140,255)
img:set(21,22,233,142,140,255)
img:set(21,21,233,142,140,255)
img:set(21,20,233,142,140,255)
img:set(21,19,233,123,123,255)
img:set(21,18,233,123,123,255)
img:set(21,17,233,96,89,255)
img:set(22,24,233,165,156,255)
img:set(22,23,233,142,140,255)
img:set(22,22,233,142,140,255)
img:set(22,21,233,142,140,255)
img:set(22,20,233,123,123,255)
img:set(22,19,233,123,123,255)
img:set(22,18,225,109,98,255)
img:set(22,17,233,96,89,255)
img:set(23,24,233,158,158,255)
img:set(23,23,233,142,140,255)
img:set(23,22,233,142,140,255)
img:set(23,21,233,123,123,255)
img:set(23,20,225,109,98,255)
img:set(23,19,225,109,98,255)
img:set(23,18,233,96,89,255)
img:set(24,23,233,158,158,255)
img:set(24,22,233,123,123,255)
img:set(24,21,225,109,98,255)
img:set(24,20,225,109,98,255)
img:set(24,19,233,96,89,255)
return img
end
function IconImages:getBucket()
local img = image(24, 24)
img:set(2,14,67,63,60,255)
img:set(2,13,0,0,216,255)
img:set(2,12,0,0,216,255)
img:set(2,11,0,0,216,255)
img:set(2,10,0,0,216,255)
img:set(2,9,0,0,216,255)
img:set(2,8,0,0,216,255)
img:set(2,7,0,0,216,255)
img:set(2,6,0,0,216,255)
img:set(2,5,0,0,180,255)
img:set(2,3,0,0,180,255)
img:set(2,2,0,0,180,255)
img:set(3,16,67,63,60,255)
img:set(3,15,67,63,60,255)
img:set(3,14,0,0,255,255)
img:set(3,13,0,0,255,255)
img:set(3,12,0,0,255,255)
img:set(3,11,0,0,255,255)
img:set(3,10,0,0,255,255)
img:set(3,9,0,0,255,255)
img:set(3,8,0,0,255,255)
img:set(3,7,0,0,180,255)
img:set(4,17,67,63,60,255)
img:set(4,16,127,127,127,255)
img:set(4,15,0,0,255,255)
img:set(4,14,0,0,255,255)
img:set(4,13,0,0,216,255)
img:set(4,12,67,63,60,255)
img:set(4,11,72,74,74,255)
img:set(5,18,67,63,60,255)
img:set(5,17,89,85,87,255)
img:set(5,16,0,0,255,255)
img:set(5,15,0,128,255,255)
img:set(5,14,0,0,216,255)
img:set(5,13,67,63,60,255)
img:set(5,12,89,85,87,255)
img:set(5,11,72,74,74,255)
img:set(5,10,72,74,74,255)
img:set(6,19,67,63,60,255)
img:set(6,18,89,85,87,255)
img:set(6,17,0,0,255,255)
img:set(6,16,0,128,255,255)
img:set(6,15,0,0,216,255)
img:set(6,14,0,0,216,255)
img:set(6,13,67,63,60,255)
img:set(6,12,89,85,87,255)
img:set(6,11,89,85,87,255)
img:set(6,10,72,74,74,255)
img:set(6,9,72,74,74,255)
img:set(7,20,67,63,60,255)
img:set(7,19,89,85,87,255)
img:set(7,18,89,85,87,255)
img:set(7,17,0,128,255,255)
img:set(7,16,0,0,255,255)
img:set(7,15,0,0,216,255)
img:set(7,14,67,63,60,255)
img:set(7,13,103,105,103,255)
img:set(7,12,89,85,87,255)
img:set(7,11,89,85,87,255)
img:set(7,10,89,85,87,255)
img:set(7,9,98,85,87,255)
img:set(7,8,72,74,74,255)
img:set(8,21,67,63,60,255)
img:set(8,20,89,85,87,255)
img:set(8,19,89,85,87,255)
img:set(8,18,89,85,87,255)
img:set(8,17,0,128,255,255)
img:set(8,16,0,0,216,255)
img:set(8,15,67,63,60,255)
img:set(8,14,116,112,118,255)
img:set(8,13,103,105,103,255)
img:set(8,12,103,105,103,255)
img:set(8,11,89,85,87,255)
img:set(8,10,89,85,87,255)
img:set(8,9,89,85,87,255)
img:set(8,8,89,85,87,255)
img:set(8,7,72,74,74,255)
img:set(9,22,67,63,60,255)
img:set(9,21,89,85,87,255)
img:set(9,20,89,85,87,255)
img:set(9,19,89,85,87,255)
img:set(9,18,89,85,87,255)
img:set(9,17,0,0,216,255)
img:set(9,16,67,63,60,255)
img:set(9,15,116,112,118,255)
img:set(9,14,116,112,118,255)
img:set(9,13,103,105,103,255)
img:set(9,12,103,105,103,255)
img:set(9,11,103,105,103,255)
img:set(9,10,94,91,94,255)
img:set(9,9,89,85,87,255)
img:set(9,8,89,85,87,255)
img:set(9,7,72,74,74,255)
img:set(9,6,72,74,74,255)
img:set(10,22,67,63,60,255)
img:set(10,21,89,85,87,255)
img:set(10,20,89,85,87,255)
img:set(10,19,89,85,87,255)
img:set(10,18,89,85,87,255)
img:set(10,17,67,63,60,255)
img:set(10,16,127,127,127,255)
img:set(10,15,116,112,118,255)
img:set(10,14,116,112,118,255)
img:set(10,13,116,112,118,255)
img:set(10,12,103,105,103,255)
img:set(10,11,103,105,103,255)
img:set(10,10,103,105,103,255)
img:set(10,9,94,91,94,255)
img:set(10,8,89,85,87,255)
img:set(10,7,89,85,87,255)
img:set(10,6,72,74,74,255)
img:set(10,5,72,74,74,255)
img:set(11,23,67,63,60,255)
img:set(11,22,89,85,87,255)
img:set(11,21,89,85,87,255)
img:set(11,20,89,85,87,255)
img:set(11,19,89,85,87,255)
img:set(11,18,67,63,60,255)
img:set(11,17,136,131,131,255)
img:set(11,16,136,131,131,255)
img:set(11,15,127,127,127,255)
img:set(11,14,127,127,127,255)
img:set(11,13,116,112,118,255)
img:set(11,12,116,112,118,255)
img:set(11,11,103,105,103,255)
img:set(11,10,103,105,103,255)
img:set(11,9,103,105,103,255)
img:set(11,8,94,91,94,255)
img:set(11,7,89,85,87,255)
img:set(11,6,89,85,87,255)
img:set(11,5,72,74,74,255)
img:set(11,4,72,74,74,255)
img:set(12,23,67,63,60,255)
img:set(12,22,89,85,87,255)
img:set(12,21,89,85,87,255)
img:set(12,20,67,63,60,255)
img:set(12,19,67,63,60,255)
img:set(12,18,136,131,131,255)
img:set(12,17,136,131,131,255)
img:set(12,16,136,131,131,255)
img:set(12,15,127,127,127,255)
img:set(12,14,127,127,127,255)
img:set(12,13,116,112,118,255)
img:set(12,12,116,112,118,255)
img:set(12,11,103,105,103,255)
img:set(12,10,103,105,103,255)
img:set(12,9,103,105,103,255)
img:set(12,8,103,105,103,255)
img:set(12,7,89,85,87,255)
img:set(12,6,89,85,87,255)
img:set(12,5,89,85,87,255)
img:set(12,4,72,74,74,255)
img:set(12,3,72,74,74,255)
img:set(13,23,67,63,60,255)
img:set(13,22,67,63,60,255)
img:set(13,21,67,63,60,255)
img:set(13,20,145,145,145,255)
img:set(13,19,145,145,145,255)
img:set(13,18,145,145,145,255)
img:set(13,17,136,131,131,255)
img:set(13,16,136,131,131,255)
img:set(13,15,136,131,131,255)
img:set(13,14,127,127,127,255)
img:set(13,13,127,127,127,255)
img:set(13,12,127,127,127,255)
img:set(13,11,116,112,118,255)
img:set(13,10,116,112,118,255)
img:set(13,9,103,105,103,255)
img:set(13,8,103,105,103,255)
img:set(13,7,103,105,103,255)
img:set(13,6,89,85,87,255)
img:set(13,5,89,85,87,255)
img:set(13,4,89,85,87,255)
img:set(13,3,72,74,74,255)
img:set(14,22,180,176,180,255)
img:set(14,21,163,163,163,255)
img:set(14,20,163,163,163,255)
img:set(14,19,145,145,145,255)
img:set(14,18,145,145,145,255)
img:set(14,17,136,131,131,255)
img:set(14,16,136,131,131,255)
img:set(14,15,136,131,131,255)
img:set(14,14,136,131,131,255)
img:set(14,13,136,131,131,255)
img:set(14,12,127,127,127,255)
img:set(14,11,127,127,127,255)
img:set(14,10,116,112,118,255)
img:set(14,9,116,112,118,255)
img:set(14,8,103,105,103,255)
img:set(14,7,103,105,103,255)
img:set(14,6,103,105,103,255)
img:set(14,5,94,91,94,255)
img:set(14,4,89,85,87,255)
img:set(14,3,89,85,87,255)
img:set(14,2,67,63,60,255)
img:set(15,21,180,176,180,255)
img:set(15,20,163,163,163,255)
img:set(15,19,163,163,163,255)
img:set(15,18,145,145,145,255)
img:set(15,17,145,145,145,255)
img:set(15,16,136,131,131,255)
img:set(15,15,136,131,131,255)
img:set(15,14,136,131,131,255)
img:set(15,13,136,131,131,255)
img:set(15,12,127,127,127,255)
img:set(15,11,127,127,127,255)
img:set(15,10,127,127,127,255)
img:set(15,9,116,112,118,255)
img:set(15,8,116,112,118,255)
img:set(15,7,103,105,103,255)
img:set(15,6,103,105,103,255)
img:set(15,5,94,91,94,255)
img:set(15,4,89,85,87,255)
img:set(15,3,89,85,87,255)
img:set(15,2,67,63,60,255)
img:set(16,20,180,176,180,255)
img:set(16,19,163,163,163,255)
img:set(16,18,145,145,145,255)
img:set(16,17,145,145,145,255)
img:set(16,16,145,145,145,255)
img:set(16,15,136,131,131,255)
img:set(16,14,136,131,131,255)
img:set(16,13,136,131,131,255)
img:set(16,12,136,131,131,255)
img:set(16,11,127,127,127,255)
img:set(16,10,127,127,127,255)
img:set(16,9,127,127,127,255)
img:set(16,8,116,112,118,255)
img:set(16,7,116,112,118,255)
img:set(16,6,103,105,103,255)
img:set(16,5,103,105,103,255)
img:set(16,4,94,91,94,255)
img:set(16,3,67,63,60,255)
img:set(17,19,180,176,180,255)
img:set(17,18,163,163,163,255)
img:set(17,17,145,145,145,255)
img:set(17,16,145,145,145,255)
img:set(17,15,145,145,145,255)
img:set(17,14,136,131,131,255)
img:set(17,13,136,131,131,255)
img:set(17,12,136,131,131,255)
img:set(17,11,127,127,127,255)
img:set(17,10,127,127,127,255)
img:set(17,9,127,127,127,255)
img:set(17,8,116,112,118,255)
img:set(17,7,116,112,118,255)
img:set(17,6,116,112,118,255)
img:set(17,5,103,105,103,255)
img:set(17,4,103,105,103,255)
img:set(17,3,67,63,60,255)
img:set(18,18,180,176,180,255)
img:set(18,17,163,163,163,255)
img:set(18,16,145,145,145,255)
img:set(18,15,145,145,145,255)
img:set(18,14,145,145,145,255)
img:set(18,13,136,131,131,255)
img:set(18,12,136,131,131,255)
img:set(18,11,136,131,131,255)
img:set(18,10,136,131,131,255)
img:set(18,9,127,127,127,255)
img:set(18,8,127,127,127,255)
img:set(18,7,127,127,127,255)
img:set(18,6,116,112,118,255)
img:set(18,5,103,105,103,255)
img:set(18,4,67,63,60,255)
img:set(19,17,180,176,180,255)
img:set(19,16,163,163,163,255)
img:set(19,15,145,145,145,255)
img:set(19,14,145,145,145,255)
img:set(19,13,145,145,145,255)
img:set(19,12,136,131,131,255)
img:set(19,11,136,131,131,255)
img:set(19,10,136,131,131,255)
img:set(19,9,136,131,131,255)
img:set(19,8,127,127,127,255)
img:set(19,7,127,127,127,255)
img:set(19,6,127,127,127,255)
img:set(19,5,67,63,60,255)
img:set(20,16,180,176,180,255)
img:set(20,15,163,163,163,255)
img:set(20,14,145,145,145,255)
img:set(20,13,145,145,145,255)
img:set(20,12,145,145,145,255)
img:set(20,11,136,131,131,255)
img:set(20,10,136,131,131,255)
img:set(20,9,136,131,131,255)
img:set(20,8,136,131,131,255)
img:set(20,7,127,127,127,255)
img:set(20,6,67,63,60,255)
img:set(21,15,180,176,180,255)
img:set(21,14,163,163,163,255)
img:set(21,13,145,145,145,255)
img:set(21,12,145,145,145,255)
img:set(21,11,145,145,145,255)
img:set(21,10,136,131,131,255)
img:set(21,9,136,131,131,255)
img:set(21,8,127,127,127,255)
img:set(21,7,67,63,60,255)
img:set(22,14,180,176,180,255)
img:set(22,13,163,163,163,255)
img:set(22,12,145,145,145,255)
img:set(22,11,145,145,145,255)
img:set(22,10,136,131,131,255)
img:set(22,9,136,131,131,255)
img:set(22,8,67,63,60,255)
img:set(23,13,180,176,180,255)
img:set(23,12,163,163,163,255)
img:set(23,11,145,145,145,255)
img:set(23,10,67,63,60,255)
img:set(23,9,67,63,60,255)
img:set(24,12,67,63,60,255)
img:set(24,11,67,63,60,255)
return img
end
function IconImages:getEraser()
local img = image(24, 24)
img:set(3,9,189,0,183,255)
img:set(3,8,189,0,183,255)
img:set(3,7,189,0,183,255)
img:set(3,6,189,0,183,255)
img:set(3,5,189,0,183,255)
img:set(4,10,189,0,183,255)
img:set(4,9,189,0,183,255)
img:set(4,8,198,85,162,255)
img:set(4,7,198,85,162,255)
img:set(4,6,198,85,162,255)
img:set(4,5,198,85,162,255)
img:set(4,4,189,0,183,255)
img:set(5,11,189,0,183,255)
img:set(5,10,222,0,220,255)
img:set(5,9,189,0,183,255)
img:set(5,8,198,85,162,255)
img:set(5,7,198,85,162,255)
img:set(5,6,198,85,162,255)
img:set(5,5,198,85,162,255)
img:set(5,4,189,0,183,255)
img:set(6,12,189,0,183,255)
img:set(6,11,255,0,255,255)
img:set(6,10,222,0,220,255)
img:set(6,9,222,0,220,255)
img:set(6,8,189,0,183,255)
img:set(6,7,198,85,162,255)
img:set(6,6,198,85,162,255)
img:set(6,5,198,85,162,255)
img:set(6,4,198,85,162,255)
img:set(6,3,189,0,183,255)
img:set(7,13,189,0,183,255)
img:set(7,12,255,0,255,255)
img:set(7,11,222,0,220,255)
img:set(7,10,222,0,220,255)
img:set(7,9,222,0,220,255)
img:set(7,8,189,0,183,255)
img:set(7,7,198,85,162,255)
img:set(7,6,198,85,162,255)
img:set(7,5,198,85,162,255)
img:set(7,4,198,85,162,255)
img:set(7,3,189,0,183,255)
img:set(8,14,189,0,183,255)
img:set(8,13,255,0,255,255)
img:set(8,12,222,0,220,255)
img:set(8,11,222,0,220,255)
img:set(8,10,222,0,220,255)
img:set(8,9,222,0,220,255)
img:set(8,8,189,0,183,255)
img:set(8,7,198,85,162,255)
img:set(8,6,198,85,162,255)
img:set(8,5,198,85,162,255)
img:set(8,4,198,85,162,255)
img:set(8,3,189,0,183,255)
img:set(9,15,129,114,96,255)
img:set(9,14,222,0,220,255)
img:set(9,13,222,0,220,255)
img:set(9,12,222,0,220,255)
img:set(9,11,222,0,220,255)
img:set(9,10,222,0,220,255)
img:set(9,9,222,0,220,255)
img:set(9,8,222,0,220,255)
img:set(9,7,189,0,183,255)
img:set(9,6,198,85,162,255)
img:set(9,5,198,85,162,255)
img:set(9,4,198,85,162,255)
img:set(9,3,189,0,183,255)
img:set(9,2,189,0,183,255)
img:set(10,16,129,114,96,255)
img:set(10,15,198,189,173,255)
img:set(10,14,222,0,220,255)
img:set(10,13,222,0,220,255)
img:set(10,12,222,0,220,255)
img:set(10,11,222,0,220,255)
img:set(10,10,222,0,220,255)
img:set(10,9,222,0,220,255)
img:set(10,8,222,0,220,255)
img:set(10,7,189,0,183,255)
img:set(10,6,198,85,162,255)
img:set(10,5,198,85,162,255)
img:set(10,4,198,85,162,255)
img:set(10,3,198,85,162,255)
img:set(10,2,189,0,183,255)
img:set(11,17,129,114,96,255)
img:set(11,16,214,218,209,255)
img:set(11,15,198,189,173,255)
img:set(11,14,198,189,173,255)
img:set(11,13,222,0,220,255)
img:set(11,12,222,0,220,255)
img:set(11,11,222,0,220,255)
img:set(11,10,222,0,220,255)
img:set(11,9,222,0,220,255)
img:set(11,8,222,0,220,255)
img:set(11,7,189,0,183,255)
img:set(11,6,198,85,162,255)
img:set(11,5,198,85,162,255)
img:set(11,4,198,85,162,255)
img:set(11,3,198,85,162,255)
img:set(11,2,189,0,183,255)
img:set(12,18,129,114,96,255)
img:set(12,17,214,218,209,255)
img:set(12,16,198,189,173,255)
img:set(12,15,198,189,173,255)
img:set(12,14,198,189,173,255)
img:set(12,13,222,0,220,255)
img:set(12,12,222,0,220,255)
img:set(12,11,222,0,220,255)
img:set(12,10,222,0,220,255)
img:set(12,9,222,0,220,255)
img:set(12,8,222,0,220,255)
img:set(12,7,222,0,220,255)
img:set(12,6,189,0,183,255)
img:set(12,5,198,85,162,255)
img:set(12,4,198,85,162,255)
img:set(12,3,198,85,162,255)
img:set(12,2,198,85,162,255)
img:set(12,1,189,0,183,255)
img:set(13,19,129,114,96,255)
img:set(13,18,214,218,209,255)
img:set(13,17,198,189,173,255)
img:set(13,16,198,189,173,255)
img:set(13,15,198,189,173,255)
img:set(13,14,198,189,173,255)
img:set(13,13,222,0,220,255)
img:set(13,12,222,0,220,255)
img:set(13,11,222,0,220,255)
img:set(13,10,222,0,220,255)
img:set(13,9,222,0,220,255)
img:set(13,8,222,0,220,255)
img:set(13,7,222,0,220,255)
img:set(13,6,189,0,183,255)
img:set(13,5,198,85,162,255)
img:set(13,4,198,85,162,255)
img:set(13,3,198,85,162,255)
img:set(13,2,198,85,162,255)
img:set(13,1,189,0,183,255)
img:set(14,20,129,114,96,255)
img:set(14,19,214,218,209,255)
img:set(14,18,198,189,173,255)
img:set(14,17,198,189,173,255)
img:set(14,16,198,189,173,255)
img:set(14,15,198,189,173,255)
img:set(14,14,198,189,173,255)
img:set(14,13,198,189,173,255)
img:set(14,12,222,0,220,255)
img:set(14,11,222,0,220,255)
img:set(14,10,222,0,220,255)
img:set(14,9,222,0,220,255)
img:set(14,8,222,0,220,255)
img:set(14,7,222,0,220,255)
img:set(14,6,189,0,183,255)
img:set(14,5,189,0,183,255)
img:set(14,4,189,0,183,255)
img:set(14,3,189,0,183,255)
img:set(14,2,189,0,183,255)
img:set(14,1,189,0,183,255)
img:set(15,20,129,114,96,255)
img:set(15,19,198,189,173,255)
img:set(15,18,198,189,173,255)
img:set(15,17,198,189,173,255)
img:set(15,16,198,189,173,255)
img:set(15,15,198,189,173,255)
img:set(15,14,198,189,173,255)
img:set(15,13,198,189,173,255)
img:set(15,12,222,0,220,255)
img:set(15,11,222,0,220,255)
img:set(15,10,222,0,220,255)
img:set(15,9,222,0,220,255)
img:set(15,8,222,0,220,255)
img:set(15,7,189,0,183,255)
img:set(15,6,183,81,162,255)
img:set(15,5,183,81,162,255)
img:set(15,4,183,81,162,255)
img:set(15,3,183,81,162,255)
img:set(15,2,189,0,183,255)
img:set(16,19,129,114,96,255)
img:set(16,18,198,189,173,255)
img:set(16,17,198,189,173,255)
img:set(16,16,198,189,173,255)
img:set(16,15,198,189,173,255)
img:set(16,14,198,189,173,255)
img:set(16,13,198,189,173,255)
img:set(16,12,222,0,220,255)
img:set(16,11,222,0,220,255)
img:set(16,10,222,0,220,255)
img:set(16,9,222,0,220,255)
img:set(16,8,189,0,183,255)
img:set(16,7,183,81,162,255)
img:set(16,6,183,81,162,255)
img:set(16,5,183,81,162,255)
img:set(16,4,183,81,162,255)
img:set(16,3,189,0,183,255)
img:set(17,19,129,114,96,255)
img:set(17,18,198,189,173,255)
img:set(17,17,198,189,173,255)
img:set(17,16,198,189,173,255)
img:set(17,15,198,189,173,255)
img:set(17,14,198,189,173,255)
img:set(17,13,198,189,173,255)
img:set(17,12,198,189,173,255)
img:set(17,11,222,0,220,255)
img:set(17,10,222,0,220,255)
img:set(17,9,189,0,183,255)
img:set(17,8,183,81,162,255)
img:set(17,7,183,81,162,255)
img:set(17,6,183,81,162,255)
img:set(17,5,183,81,162,255)
img:set(17,4,189,0,183,255)
img:set(18,18,129,114,96,255)
img:set(18,17,198,189,173,255)
img:set(18,16,198,189,173,255)
img:set(18,15,198,189,173,255)
img:set(18,14,198,189,173,255)
img:set(18,13,198,189,173,255)
img:set(18,12,198,189,173,255)
img:set(18,11,222,0,220,255)
img:set(18,10,189,0,183,255)
img:set(18,9,183,81,162,255)
img:set(18,8,183,81,162,255)
img:set(18,7,183,81,162,255)
img:set(18,6,183,81,162,255)
img:set(18,5,189,0,183,255)
img:set(19,18,129,114,96,255)
img:set(19,17,198,189,173,255)
img:set(19,16,198,189,173,255)
img:set(19,15,198,189,173,255)
img:set(19,14,198,189,173,255)
img:set(19,13,198,189,173,255)
img:set(19,12,198,189,173,255)
img:set(19,11,129,114,96,255)
img:set(19,10,183,81,162,255)
img:set(19,9,183,81,162,255)
img:set(19,8,183,81,162,255)
img:set(19,7,183,81,162,255)
img:set(19,6,189,0,183,255)
img:set(20,18,129,114,96,255)
img:set(20,17,198,189,173,255)
img:set(20,16,198,189,173,255)
img:set(20,15,198,189,173,255)
img:set(20,14,198,189,173,255)
img:set(20,13,198,189,173,255)
img:set(20,12,129,114,96,255)
img:set(20,11,171,160,153,255)
img:set(20,10,171,160,153,255)
img:set(20,9,171,160,153,255)
img:set(20,8,171,160,153,255)
img:set(20,7,129,114,96,255)
img:set(21,17,129,114,96,255)
img:set(21,16,198,189,173,255)
img:set(21,15,198,189,173,255)
img:set(21,14,198,189,173,255)
img:set(21,13,129,114,96,255)
img:set(21,12,171,160,153,255)
img:set(21,11,171,160,153,255)
img:set(21,10,171,160,153,255)
img:set(21,9,171,160,153,255)
img:set(21,8,129,114,96,255)
img:set(22,17,129,114,96,255)
img:set(22,16,198,189,173,255)
img:set(22,15,198,189,173,255)
img:set(22,14,129,114,96,255)
img:set(22,13,171,160,153,255)
img:set(22,12,171,160,153,255)
img:set(22,11,171,160,153,255)
img:set(22,10,171,160,153,255)
img:set(22,9,129,114,96,255)
img:set(23,16,129,114,96,255)
img:set(23,15,129,114,96,255)
img:set(23,14,171,160,153,255)
img:set(23,13,171,160,153,255)
img:set(23,12,171,160,153,255)
img:set(23,11,171,160,153,255)
img:set(23,10,129,114,96,255)
img:set(24,15,129,114,96,255)
img:set(24,14,129,114,96,255)
img:set(24,13,129,114,96,255)
img:set(24,12,129,114,96,255)
img:set(24,11,129,114,96,255)
return img
end
function IconImages:getPage()
local img = image(24, 24)
img:set(4,23,255,255,255,255)
img:set(4,22,255,255,255,255)
img:set(4,21,255,255,255,255)
img:set(4,20,255,255,255,255)
img:set(4,19,255,255,255,255)
img:set(4,18,255,255,255,255)
img:set(4,17,249,247,244,244)
img:set(4,16,255,255,255,255)
img:set(4,15,255,255,255,255)
img:set(4,14,255,255,255,255)
img:set(4,13,255,255,255,255)
img:set(4,12,255,255,255,255)
img:set(4,11,255,255,255,255)
img:set(4,10,255,255,255,255)
img:set(4,9,255,255,255,255)
img:set(4,8,255,255,255,255)
img:set(4,7,255,255,255,255)
img:set(4,6,255,255,255,255)
img:set(4,5,255,255,255,255)
img:set(4,4,255,255,255,255)
img:set(4,3,255,255,255,255)
img:set(5,23,255,255,255,255)
img:set(5,22,255,249,249,249)
img:set(5,21,183,182,180,255)
img:set(5,20,240,240,233,255)
img:set(5,19,255,249,249,249)
img:set(5,18,183,182,180,255)
img:set(5,17,255,249,249,249)
img:set(5,16,255,249,249,249)
img:set(5,15,255,249,249,249)
img:set(5,14,183,182,180,255)
img:set(5,13,183,182,180,255)
img:set(5,12,255,249,249,249)
img:set(5,11,183,182,180,255)
img:set(5,10,255,249,249,249)
img:set(5,9,249,247,244,244)
img:set(5,8,183,182,180,255)
img:set(5,7,183,182,180,255)
img:set(5,6,255,249,249,249)
img:set(5,5,183,182,180,255)
img:set(5,4,183,182,180,255)
img:set(5,3,255,255,255,255)
img:set(6,23,255,255,255,255)
img:set(6,22,255,255,255,255)
img:set(6,21,255,249,249,249)
img:set(6,20,255,249,249,249)
img:set(6,19,255,249,249,249)
img:set(6,18,255,249,249,249)
img:set(6,17,194,182,169,255)
img:set(6,16,255,249,249,249)
img:set(6,15,255,249,249,249)
img:set(6,14,255,249,249,249)
img:set(6,13,255,249,249,249)
img:set(6,12,255,249,249,249)
img:set(6,11,255,249,249,249)
img:set(6,10,183,182,180,255)
img:set(6,9,255,249,249,249)
img:set(6,8,255,249,249,249)
img:set(6,7,183,182,180,255)
img:set(6,6,255,249,249,249)
img:set(6,5,255,249,249,249)
img:set(6,4,255,249,249,249)
img:set(6,3,255,255,255,255)
img:set(7,23,255,255,255,255)
img:set(7,22,255,249,249,249)
img:set(7,21,183,182,180,255)
img:set(7,20,224,225,227,244)
img:set(7,19,255,249,249,249)
img:set(7,18,255,249,249,249)
img:set(7,17,255,249,249,249)
img:set(7,16,255,249,249,249)
img:set(7,15,255,249,249,249)
img:set(7,14,183,182,180,255)
img:set(7,13,255,249,249,249)
img:set(7,12,249,247,244,244)
img:set(7,11,255,249,249,249)
img:set(7,10,255,249,249,249)
img:set(7,9,249,247,244,244)
img:set(7,8,255,249,249,249)
img:set(7,7,255,249,249,249)
img:set(7,6,255,249,249,249)
img:set(7,5,255,249,249,249)
img:set(7,4,183,182,180,255)
img:set(7,3,249,247,244,244)
img:set(8,23,255,255,255,255)
img:set(8,22,255,255,255,255)
img:set(8,21,255,249,249,249)
img:set(8,20,255,249,249,249)
img:set(8,19,255,249,249,249)
img:set(8,18,183,182,180,255)
img:set(8,17,255,249,249,249)
img:set(8,16,255,249,249,249)
img:set(8,15,249,247,244,244)
img:set(8,14,249,247,244,244)
img:set(8,13,183,182,180,255)
img:set(8,12,255,249,249,249)
img:set(8,11,183,182,180,255)
img:set(8,10,249,247,244,244)
img:set(8,9,249,247,244,244)
img:set(8,8,183,182,180,255)
img:set(8,7,183,182,180,255)
img:set(8,6,255,249,249,249)
img:set(8,5,255,249,249,249)
img:set(8,4,255,249,249,249)
img:set(8,3,255,255,255,255)
img:set(9,23,255,255,255,255)
img:set(9,22,255,255,255,255)
img:set(9,21,194,182,169,255)
img:set(9,20,240,240,233,255)
img:set(9,19,255,255,255,255)
img:set(9,18,194,182,169,255)
img:set(9,17,183,182,180,255)
img:set(9,16,249,247,244,244)
img:set(9,15,249,247,244,244)
img:set(9,14,255,249,249,249)
img:set(9,13,255,249,249,249)
img:set(9,12,255,249,249,249)
img:set(9,11,249,247,244,244)
img:set(9,10,255,249,249,249)
img:set(9,9,255,249,249,249)
img:set(9,8,249,247,244,244)
img:set(9,7,255,249,249,249)
img:set(9,6,249,247,244,244)
img:set(9,5,183,182,180,255)
img:set(9,4,183,182,180,255)
img:set(9,3,255,255,255,255)
img:set(10,23,255,255,255,255)
img:set(10,22,255,255,255,255)
img:set(10,21,240,240,233,255)
img:set(10,20,249,247,244,244)
img:set(10,19,255,249,249,249)
img:set(10,18,255,249,249,249)
img:set(10,17,255,249,249,249)
img:set(10,16,255,249,249,249)
img:set(10,15,224,225,227,244)
img:set(10,14,183,182,180,255)
img:set(10,13,249,247,244,244)
img:set(10,12,249,247,244,244)
img:set(10,11,255,249,249,249)
img:set(10,10,183,182,180,255)
img:set(10,9,224,225,227,244)
img:set(10,8,183,182,180,255)
img:set(10,7,255,249,249,249)
img:set(10,6,249,247,244,244)
img:set(10,5,224,225,227,244)
img:set(10,4,255,249,249,249)
img:set(10,3,249,247,244,244)
img:set(11,23,255,255,255,255)
img:set(11,22,255,255,255,255)
img:set(11,21,255,249,249,249)
img:set(11,20,224,225,227,244)
img:set(11,19,255,249,249,249)
img:set(11,18,183,182,180,255)
img:set(11,17,240,240,233,255)
img:set(11,16,249,247,244,244)
img:set(11,15,249,247,244,244)
img:set(11,14,183,182,180,255)
img:set(11,13,183,182,180,255)
img:set(11,12,255,249,249,249)
img:set(11,11,255,249,249,249)
img:set(11,10,255,249,249,249)
img:set(11,9,249,247,244,244)
img:set(11,8,255,249,249,249)
img:set(11,7,255,249,249,249)
img:set(11,6,249,247,244,244)
img:set(11,5,183,182,180,255)
img:set(11,4,255,249,249,249)
img:set(11,3,249,247,244,244)
img:set(12,23,255,255,255,255)
img:set(12,22,255,255,255,255)
img:set(12,21,183,182,180,255)
img:set(12,20,240,240,233,255)
img:set(12,19,255,249,249,249)
img:set(12,18,255,249,249,249)
img:set(12,17,183,182,180,255)
img:set(12,16,255,249,249,249)
img:set(12,15,255,249,249,249)
img:set(12,14,249,247,244,244)
img:set(12,13,255,249,249,249)
img:set(12,12,255,249,249,249)
img:set(12,11,183,182,180,255)
img:set(12,10,183,182,180,255)
img:set(12,9,255,249,249,249)
img:set(12,8,183,182,180,255)
img:set(12,7,183,182,180,255)
img:set(12,6,255,249,249,249)
img:set(12,5,255,249,249,249)
img:set(12,4,255,249,249,249)
img:set(12,3,255,255,255,255)
img:set(13,23,255,255,255,255)
img:set(13,22,255,255,255,255)
img:set(13,21,255,249,249,249)
img:set(13,20,255,249,249,249)
img:set(13,19,255,249,249,249)
img:set(13,18,255,249,249,249)
img:set(13,17,249,247,244,244)
img:set(13,16,255,249,249,249)
img:set(13,15,224,225,227,244)
img:set(13,14,183,182,180,255)
img:set(13,13,183,182,180,255)
img:set(13,12,255,249,249,249)
img:set(13,11,249,247,244,244)
img:set(13,10,255,249,249,249)
img:set(13,9,249,247,244,244)
img:set(13,8,249,247,244,244)
img:set(13,7,224,225,227,244)
img:set(13,6,255,249,249,249)
img:set(13,5,183,182,180,255)
img:set(13,4,183,182,180,255)
img:set(13,3,249,247,244,244)
img:set(14,23,255,255,255,255)
img:set(14,22,255,255,255,255)
img:set(14,21,255,249,249,249)
img:set(14,20,183,182,180,255)
img:set(14,19,255,249,249,249)
img:set(14,18,240,240,233,255)
img:set(14,17,183,182,180,255)
img:set(14,16,255,249,249,249)
img:set(14,15,255,249,249,249)
img:set(14,14,255,249,249,249)
img:set(14,13,183,182,180,255)
img:set(14,12,255,249,249,249)
img:set(14,11,183,182,180,255)
img:set(14,10,249,247,244,244)
img:set(14,9,255,249,249,249)
img:set(14,8,183,182,180,255)
img:set(14,7,255,249,249,249)
img:set(14,6,249,247,244,244)
img:set(14,5,255,249,249,249)
img:set(14,4,255,249,249,249)
img:set(14,3,255,255,255,255)
img:set(15,23,255,255,255,255)
img:set(15,22,249,247,244,244)
img:set(15,21,240,240,233,255)
img:set(15,20,224,225,227,244)
img:set(15,19,255,249,249,249)
img:set(15,18,249,247,244,244)
img:set(15,17,255,249,249,249)
img:set(15,16,255,249,249,249)
img:set(15,15,255,249,249,249)
img:set(15,14,249,247,244,244)
img:set(15,13,255,255,255,255)
img:set(15,12,255,249,249,249)
img:set(15,11,183,182,180,255)
img:set(15,10,183,182,180,255)
img:set(15,9,255,249,249,249)
img:set(15,8,183,182,180,255)
img:set(15,7,183,182,180,255)
img:set(15,6,255,249,249,249)
img:set(15,5,183,182,180,255)
img:set(15,4,183,182,180,255)
img:set(15,3,249,247,244,244)
img:set(16,23,127,127,127,255)
img:set(16,22,127,127,127,255)
img:set(16,21,127,127,127,255)
img:set(16,20,127,127,127,255)
img:set(16,19,127,127,127,255)
img:set(16,18,127,127,127,255)
img:set(16,17,127,127,127,255)
img:set(16,16,255,249,249,249)
img:set(16,15,249,247,244,244)
img:set(16,14,183,182,180,255)
img:set(16,13,255,249,249,249)
img:set(16,12,255,249,249,249)
img:set(16,11,255,249,249,249)
img:set(16,10,255,249,249,249)
img:set(16,9,255,249,249,249)
img:set(16,8,255,249,249,249)
img:set(16,7,255,249,249,249)
img:set(16,6,255,249,249,249)
img:set(16,5,183,182,180,255)
img:set(16,4,255,249,249,249)
img:set(16,3,249,247,244,244)
img:set(17,22,127,127,127,255)
img:set(17,21,240,240,233,255)
img:set(17,20,240,240,233,255)
img:set(17,19,255,249,249,249)
img:set(17,18,255,249,249,249)
img:set(17,17,127,127,127,255)
img:set(17,16,255,249,249,249)
img:set(17,15,255,249,249,249)
img:set(17,14,183,182,180,255)
img:set(17,13,183,182,180,255)
img:set(17,12,255,249,249,249)
img:set(17,11,183,182,180,255)
img:set(17,10,183,182,180,255)
img:set(17,9,255,249,249,249)
img:set(17,8,183,182,180,255)
img:set(17,7,183,182,180,255)
img:set(17,6,255,249,249,249)
img:set(17,5,255,249,249,249)
img:set(17,4,255,249,249,249)
img:set(17,3,255,255,255,255)
img:set(18,21,127,127,127,255)
img:set(18,20,240,240,233,255)
img:set(18,19,255,249,249,249)
img:set(18,18,240,240,233,255)
img:set(18,17,127,127,127,255)
img:set(18,16,255,249,249,249)
img:set(18,15,255,249,249,249)
img:set(18,14,255,249,249,249)
img:set(18,13,255,249,249,249)
img:set(18,12,255,249,249,249)
img:set(18,11,255,249,249,249)
img:set(18,10,224,225,227,244)
img:set(18,9,255,249,249,249)
img:set(18,8,255,249,249,249)
img:set(18,7,249,247,244,244)
img:set(18,6,255,249,249,249)
img:set(18,5,183,182,180,255)
img:set(18,4,183,182,180,255)
img:set(18,3,249,247,244,244)
img:set(19,20,127,127,127,255)
img:set(19,19,240,240,233,255)
img:set(19,18,255,249,249,249)
img:set(19,17,127,127,127,255)
img:set(19,16,249,247,244,244)
img:set(19,15,255,249,249,249)
img:set(19,14,183,182,180,255)
img:set(19,13,183,182,180,255)
img:set(19,12,255,249,249,249)
img:set(19,11,183,182,180,255)
img:set(19,10,249,247,244,244)
img:set(19,9,249,247,244,244)
img:set(19,8,183,182,180,255)
img:set(19,7,183,182,180,255)
img:set(19,6,224,225,227,244)
img:set(19,5,255,249,249,249)
img:set(19,4,255,249,249,249)
img:set(19,3,249,247,244,244)
img:set(20,19,127,127,127,255)
img:set(20,18,240,240,233,255)
img:set(20,17,127,127,127,255)
img:set(20,16,255,249,249,249)
img:set(20,15,255,249,249,249)
img:set(20,14,255,249,249,249)
img:set(20,13,183,182,180,255)
img:set(20,12,249,247,244,244)
img:set(20,11,183,182,180,255)
img:set(20,10,183,182,180,255)
img:set(20,9,249,247,244,244)
img:set(20,8,255,249,249,249)
img:set(20,7,183,182,180,255)
img:set(20,6,249,247,244,244)
img:set(20,5,183,182,180,255)
img:set(20,4,183,182,180,255)
img:set(20,3,255,255,255,255)
img:set(21,18,127,127,127,255)
img:set(21,17,127,127,127,255)
img:set(21,16,255,255,255,255)
img:set(21,15,255,255,255,255)
img:set(21,14,255,255,255,255)
img:set(21,13,255,255,255,255)
img:set(21,12,255,249,249,249)
img:set(21,11,255,249,249,249)
img:set(21,10,255,249,249,249)
img:set(21,9,255,249,249,249)
img:set(21,8,255,249,249,249)
img:set(21,7,249,247,244,244)
img:set(21,6,249,247,244,244)
img:set(21,5,255,255,255,255)
img:set(21,4,255,255,255,255)
img:set(21,3,255,255,255,255)
return img
end
function IconImages:getArrows()
local img = image(24, 24)
img:set(3,20,171,255,176,255)
img:set(3,19,171,255,176,255)
img:set(3,18,171,255,176,255)
img:set(3,17,171,255,176,255)
img:set(3,16,171,255,176,255)
img:set(3,7,171,178,255,255)
img:set(4,20,171,255,176,255)
img:set(4,19,171,255,176,255)
img:set(4,18,171,255,176,255)
img:set(4,17,171,255,176,255)
img:set(4,16,171,255,176,255)
img:set(4,8,171,178,255,255)
img:set(4,7,171,178,255,255)
img:set(4,6,171,178,255,255)
img:set(5,20,171,255,176,255)
img:set(5,19,171,255,176,255)
img:set(5,18,171,255,176,255)
img:set(5,17,171,255,176,255)
img:set(5,16,171,255,176,255)
img:set(5,9,171,178,255,255)
img:set(5,8,171,178,255,255)
img:set(5,7,171,178,255,255)
img:set(5,6,171,178,255,255)
img:set(5,5,171,178,255,255)
img:set(6,20,171,255,176,255)
img:set(6,19,171,255,176,255)
img:set(6,18,171,255,176,255)
img:set(6,17,171,255,176,255)
img:set(6,16,171,255,176,255)
img:set(6,10,171,178,255,255)
img:set(6,9,171,178,255,255)
img:set(6,8,171,178,255,255)
img:set(6,7,171,178,255,255)
img:set(6,6,171,178,255,255)
img:set(6,5,171,178,255,255)
img:set(6,4,171,178,255,255)
img:set(7,20,171,255,176,255)
img:set(7,19,171,255,176,255)
img:set(7,18,171,255,176,255)
img:set(7,17,171,255,176,255)
img:set(7,16,171,255,176,255)
img:set(7,11,171,178,255,255)
img:set(7,10,171,178,255,255)
img:set(7,9,171,178,255,255)
img:set(7,8,171,178,255,255)
img:set(7,7,171,178,255,255)
img:set(7,6,171,178,255,255)
img:set(7,5,171,178,255,255)
img:set(7,4,171,178,255,255)
img:set(7,3,171,178,255,255)
img:set(8,20,171,255,176,255)
img:set(8,19,171,255,176,255)
img:set(8,18,171,255,176,255)
img:set(8,17,171,255,176,255)
img:set(8,16,171,255,176,255)
img:set(8,12,171,178,255,255)
img:set(8,11,171,178,255,255)
img:set(8,10,171,178,255,255)
img:set(8,9,171,178,255,255)
img:set(8,8,171,178,255,255)
img:set(8,7,171,178,255,255)
img:set(8,6,171,178,255,255)
img:set(8,5,171,178,255,255)
img:set(8,4,171,178,255,255)
img:set(8,3,171,178,255,255)
img:set(8,2,171,178,255,255)
img:set(9,20,171,255,176,255)
img:set(9,19,171,255,176,255)
img:set(9,18,171,255,176,255)
img:set(9,17,171,255,176,255)
img:set(9,16,171,255,176,255)
img:set(9,9,171,178,255,255)
img:set(9,8,171,178,255,255)
img:set(9,7,171,178,255,255)
img:set(9,6,171,178,255,255)
img:set(9,5,171,178,255,255)
img:set(10,20,171,255,176,255)
img:set(10,19,171,255,176,255)
img:set(10,18,171,255,176,255)
img:set(10,17,171,255,176,255)
img:set(10,16,171,255,176,255)
img:set(10,9,171,178,255,255)
img:set(10,8,171,178,255,255)
img:set(10,7,171,178,255,255)
img:set(10,6,171,178,255,255)
img:set(10,5,171,178,255,255)
img:set(11,20,171,255,176,255)
img:set(11,19,171,255,176,255)
img:set(11,18,171,255,176,255)
img:set(11,17,171,255,176,255)
img:set(11,16,171,255,176,255)
img:set(11,9,171,178,255,255)
img:set(11,8,171,178,255,255)
img:set(11,7,171,178,255,255)
img:set(11,6,171,178,255,255)
img:set(11,5,171,178,255,255)
img:set(12,20,171,255,176,255)
img:set(12,19,171,255,176,255)
img:set(12,18,171,255,176,255)
img:set(12,17,171,255,176,255)
img:set(12,16,171,255,176,255)
img:set(12,9,171,178,255,255)
img:set(12,8,171,178,255,255)
img:set(12,7,171,178,255,255)
img:set(12,6,171,178,255,255)
img:set(12,5,171,178,255,255)
img:set(13,20,171,255,176,255)
img:set(13,19,171,255,176,255)
img:set(13,18,171,255,176,255)
img:set(13,17,171,255,176,255)
img:set(13,16,171,255,176,255)
img:set(13,9,171,178,255,255)
img:set(13,8,171,178,255,255)
img:set(13,7,171,178,255,255)
img:set(13,6,171,178,255,255)
img:set(13,5,171,178,255,255)
img:set(14,20,171,255,176,255)
img:set(14,19,171,255,176,255)
img:set(14,18,171,255,176,255)
img:set(14,17,171,255,176,255)
img:set(14,16,171,255,176,255)
img:set(14,9,171,178,255,255)
img:set(14,8,171,178,255,255)
img:set(14,7,171,178,255,255)
img:set(14,6,171,178,255,255)
img:set(14,5,171,178,255,255)
img:set(15,20,171,255,176,255)
img:set(15,19,171,255,176,255)
img:set(15,18,171,255,176,255)
img:set(15,17,171,255,176,255)
img:set(15,16,171,255,176,255)
img:set(15,9,171,178,255,255)
img:set(15,8,171,178,255,255)
img:set(15,7,171,178,255,255)
img:set(15,6,171,178,255,255)
img:set(15,5,171,178,255,255)
img:set(16,20,171,255,176,255)
img:set(16,19,171,255,176,255)
img:set(16,18,171,255,176,255)
img:set(16,17,171,255,176,255)
img:set(16,16,171,255,176,255)
img:set(16,9,171,178,255,255)
img:set(16,8,171,178,255,255)
img:set(16,7,171,178,255,255)
img:set(16,6,171,178,255,255)
img:set(16,5,171,178,255,255)
img:set(17,23,171,255,176,255)
img:set(17,22,171,255,176,255)
img:set(17,21,171,255,176,255)
img:set(17,20,171,255,176,255)
img:set(17,19,171,255,176,255)
img:set(17,18,171,255,176,255)
img:set(17,17,171,255,176,255)
img:set(17,16,171,255,176,255)
img:set(17,15,171,255,176,255)
img:set(17,14,171,255,176,255)
img:set(17,13,171,255,176,255)
img:set(17,9,171,178,255,255)
img:set(17,8,171,178,255,255)
img:set(17,7,171,178,255,255)
img:set(17,6,171,178,255,255)
img:set(17,5,171,178,255,255)
img:set(18,22,171,255,176,255)
img:set(18,21,171,255,176,255)
img:set(18,20,171,255,176,255)
img:set(18,19,171,255,176,255)
img:set(18,18,171,255,176,255)
img:set(18,17,171,255,176,255)
img:set(18,16,171,255,176,255)
img:set(18,15,171,255,176,255)
img:set(18,14,171,255,176,255)
img:set(18,9,171,178,255,255)
img:set(18,8,171,178,255,255)
img:set(18,7,171,178,255,255)
img:set(18,6,171,178,255,255)
img:set(18,5,171,178,255,255)
img:set(19,21,171,255,176,255)
img:set(19,20,171,255,176,255)
img:set(19,19,171,255,176,255)
img:set(19,18,171,255,176,255)
img:set(19,17,171,255,176,255)
img:set(19,16,171,255,176,255)
img:set(19,15,171,255,176,255)
img:set(19,9,171,178,255,255)
img:set(19,8,171,178,255,255)
img:set(19,7,171,178,255,255)
img:set(19,6,171,178,255,255)
img:set(19,5,171,178,255,255)
img:set(20,20,171,255,176,255)
img:set(20,19,171,255,176,255)
img:set(20,18,171,255,176,255)
img:set(20,17,171,255,176,255)
img:set(20,16,171,255,176,255)
img:set(20,9,171,178,255,255)
img:set(20,8,171,178,255,255)
img:set(20,7,171,178,255,255)
img:set(20,6,171,178,255,255)
img:set(20,5,171,178,255,255)
img:set(21,19,171,255,176,255)
img:set(21,18,171,255,176,255)
img:set(21,17,171,255,176,255)
img:set(21,9,171,178,255,255)
img:set(21,8,171,178,255,255)
img:set(21,7,171,178,255,255)
img:set(21,6,171,178,255,255)
img:set(21,5,171,178,255,255)
img:set(22,18,171,255,176,255)
img:set(22,9,171,178,255,255)
img:set(22,8,171,178,255,255)
img:set(22,7,171,178,255,255)
img:set(22,6,171,178,255,255)
img:set(22,5,171,178,255,255)
return img
end
function IconImages:getUpDown()
local img = image(24, 24)
img:set(2,15,103,214,118,255)
img:set(3,16,103,214,118,255)
img:set(3,15,103,214,118,255)
img:set(4,17,103,214,118,255)
img:set(4,16,103,214,118,255)
img:set(4,15,103,214,118,255)
img:set(5,18,103,214,118,255)
img:set(5,17,103,214,118,255)
img:set(5,16,103,214,118,255)
img:set(5,15,103,214,118,255)
img:set(6,19,103,214,118,255)
img:set(6,18,103,214,118,255)
img:set(6,17,103,214,118,255)
img:set(6,16,103,214,118,255)
img:set(6,15,103,214,118,255)
img:set(6,14,103,214,118,255)
img:set(6,13,103,214,118,255)
img:set(6,12,103,214,118,255)
img:set(6,11,103,214,118,255)
img:set(6,10,103,214,118,255)
img:set(6,9,103,214,118,255)
img:set(6,8,103,214,118,255)
img:set(6,7,103,214,118,255)
img:set(6,6,103,214,118,255)
img:set(6,5,103,214,118,255)
img:set(6,4,103,214,118,255)
img:set(6,3,103,214,118,255)
img:set(7,20,103,214,118,255)
img:set(7,19,103,214,118,255)
img:set(7,18,103,214,118,255)
img:set(7,17,103,214,118,255)
img:set(7,16,103,214,118,255)
img:set(7,15,103,214,118,255)
img:set(7,14,103,214,118,255)
img:set(7,13,103,214,118,255)
img:set(7,12,103,214,118,255)
img:set(7,11,103,214,118,255)
img:set(7,10,103,214,118,255)
img:set(7,9,103,214,118,255)
img:set(7,8,103,214,118,255)
img:set(7,7,103,214,118,255)
img:set(7,6,103,214,118,255)
img:set(7,5,103,214,118,255)
img:set(7,4,103,214,118,255)
img:set(7,3,103,214,118,255)
img:set(8,21,103,214,118,255)
img:set(8,20,103,214,118,255)
img:set(8,19,103,214,118,255)
img:set(8,18,103,214,118,255)
img:set(8,17,103,214,118,255)
img:set(8,16,103,214,118,255)
img:set(8,15,103,214,118,255)
img:set(8,14,103,214,118,255)
img:set(8,13,103,214,118,255)
img:set(8,12,103,214,118,255)
img:set(8,11,103,214,118,255)
img:set(8,10,103,214,118,255)
img:set(8,9,103,214,118,255)
img:set(8,8,103,214,118,255)
img:set(8,7,103,214,118,255)
img:set(8,6,103,214,118,255)
img:set(8,5,103,214,118,255)
img:set(8,4,103,214,118,255)
img:set(8,3,103,214,118,255)
img:set(9,20,103,214,118,255)
img:set(9,19,103,214,118,255)
img:set(9,18,103,214,118,255)
img:set(9,17,103,214,118,255)
img:set(9,16,103,214,118,255)
img:set(9,15,103,214,118,255)
img:set(9,14,103,214,118,255)
img:set(9,13,103,214,118,255)
img:set(9,12,103,214,118,255)
img:set(9,11,103,214,118,255)
img:set(9,10,103,214,118,255)
img:set(9,9,103,214,118,255)
img:set(9,8,103,214,118,255)
img:set(9,7,103,214,118,255)
img:set(9,6,103,214,118,255)
img:set(9,5,103,214,118,255)
img:set(9,4,103,214,118,255)
img:set(9,3,103,214,118,255)
img:set(10,19,103,214,118,255)
img:set(10,18,103,214,118,255)
img:set(10,17,103,214,118,255)
img:set(10,16,103,214,118,255)
img:set(10,15,103,214,118,255)
img:set(10,14,103,214,118,255)
img:set(10,13,103,214,118,255)
img:set(10,12,103,214,118,255)
img:set(10,11,103,214,118,255)
img:set(10,10,103,214,118,255)
img:set(10,9,103,214,118,255)
img:set(10,8,103,214,118,255)
img:set(10,7,103,214,118,255)
img:set(10,6,103,214,118,255)
img:set(10,5,103,214,118,255)
img:set(10,4,103,214,118,255)
img:set(10,3,103,214,118,255)
img:set(11,18,103,214,118,255)
img:set(11,17,103,214,118,255)
img:set(11,16,103,214,118,255)
img:set(11,15,103,214,118,255)
img:set(12,17,103,214,118,255)
img:set(12,16,103,214,118,255)
img:set(12,15,103,214,118,255)
img:set(13,16,103,214,118,255)
img:set(13,15,103,214,118,255)
img:set(13,8,125,187,255,255)
img:set(14,15,103,214,118,255)
img:set(14,8,125,187,255,255)
img:set(14,7,125,187,255,255)
img:set(15,8,125,187,255,255)
img:set(15,7,125,187,255,255)
img:set(15,6,125,187,255,255)
img:set(16,21,125,187,255,255)
img:set(16,20,125,187,255,255)
img:set(16,19,125,187,255,255)
img:set(16,18,125,187,255,255)
img:set(16,17,125,187,255,255)
img:set(16,16,125,187,255,255)
img:set(16,15,125,187,255,255)
img:set(16,14,125,187,255,255)
img:set(16,13,125,187,255,255)
img:set(16,12,125,187,255,255)
img:set(16,11,125,187,255,255)
img:set(16,10,125,187,255,255)
img:set(16,9,125,187,255,255)
img:set(16,8,125,187,255,255)
img:set(16,7,125,187,255,255)
img:set(16,6,125,187,255,255)
img:set(16,5,125,187,255,255)
img:set(17,21,125,187,255,255)
img:set(17,20,125,187,255,255)
img:set(17,19,125,187,255,255)
img:set(17,18,125,187,255,255)
img:set(17,17,125,187,255,255)
img:set(17,16,125,187,255,255)
img:set(17,15,125,187,255,255)
img:set(17,14,125,187,255,255)
img:set(17,13,125,187,255,255)
img:set(17,12,125,187,255,255)
img:set(17,11,125,187,255,255)
img:set(17,10,125,187,255,255)
img:set(17,9,125,187,255,255)
img:set(17,8,125,187,255,255)
img:set(17,7,125,187,255,255)
img:set(17,6,125,187,255,255)
img:set(17,5,125,187,255,255)
img:set(17,4,125,187,255,255)
img:set(18,21,125,187,255,255)
img:set(18,20,125,187,255,255)
img:set(18,19,125,187,255,255)
img:set(18,18,125,187,255,255)
img:set(18,17,125,187,255,255)
img:set(18,16,125,187,255,255)
img:set(18,15,125,187,255,255)
img:set(18,14,125,187,255,255)
img:set(18,13,125,187,255,255)
img:set(18,12,125,187,255,255)
img:set(18,11,125,187,255,255)
img:set(18,10,125,187,255,255)
img:set(18,9,125,187,255,255)
img:set(18,8,125,187,255,255)
img:set(18,7,125,187,255,255)
img:set(18,6,125,187,255,255)
img:set(18,5,125,187,255,255)
img:set(18,4,125,187,255,255)
img:set(18,3,125,187,255,255)
img:set(19,21,125,187,255,255)
img:set(19,20,125,187,255,255)
img:set(19,19,125,187,255,255)
img:set(19,18,125,187,255,255)
img:set(19,17,125,187,255,255)
img:set(19,16,125,187,255,255)
img:set(19,15,125,187,255,255)
img:set(19,14,125,187,255,255)
img:set(19,13,125,187,255,255)
img:set(19,12,125,187,255,255)
img:set(19,11,125,187,255,255)
img:set(19,10,125,187,255,255)
img:set(19,9,125,187,255,255)
img:set(19,8,125,187,255,255)
img:set(19,7,125,187,255,255)
img:set(19,6,125,187,255,255)
img:set(19,5,125,187,255,255)
img:set(19,4,125,187,255,255)
img:set(20,21,125,187,255,255)
img:set(20,20,125,187,255,255)
img:set(20,19,125,187,255,255)
img:set(20,18,125,187,255,255)
img:set(20,17,125,187,255,255)
img:set(20,16,125,187,255,255)
img:set(20,15,125,187,255,255)
img:set(20,14,125,187,255,255)
img:set(20,13,125,187,255,255)
img:set(20,12,125,187,255,255)
img:set(20,11,125,187,255,255)
img:set(20,10,125,187,255,255)
img:set(20,9,125,187,255,255)
img:set(20,8,125,187,255,255)
img:set(20,7,125,187,255,255)
img:set(20,6,125,187,255,255)
img:set(20,5,125,187,255,255)
img:set(21,8,125,187,255,255)
img:set(21,7,125,187,255,255)
img:set(21,6,125,187,255,255)
img:set(22,8,125,187,255,255)
img:set(22,7,125,187,255,255)
img:set(23,8,125,187,255,255)
return img
end
function IconImages:getBlur()
local img = image(24, 24)
img:set(1,24,0,42,0,10)
img:set(1,23,0,44,0,11)
img:set(1,22,1,50,1,12)
img:set(1,21,5,58,5,14)
img:set(1,20,14,67,14,15)
img:set(1,19,29,81,29,16)
img:set(1,18,47,96,48,17)
img:set(1,17,59,107,64,18)
img:set(1,16,60,105,71,18)
img:set(1,15,52,94,72,17)
img:set(1,14,38,75,69,17)
img:set(1,13,23,53,66,16)
img:set(1,12,11,31,62,16)
img:set(1,11,4,16,61,16)
img:set(1,10,1,6,60,16)
img:set(1,9,0,2,60,16)
img:set(1,8,0,0,59,16)
img:set(1,7,0,0,58,16)
img:set(1,6,0,0,54,15)
img:set(1,5,0,0,47,13)
img:set(1,4,0,0,37,10)
img:set(1,3,0,0,27,7)
img:set(1,2,0,0,17,4)
img:set(1,1,0,0,13,3)
img:set(2,24,0,52,0,13)
img:set(2,23,0,56,0,14)
img:set(2,22,1,65,1,16)
img:set(2,21,4,75,4,18)
img:set(2,20,11,86,12,20)
img:set(2,19,24,98,25,21)
img:set(2,18,40,111,42,22)
img:set(2,17,51,119,57,23)
img:set(2,16,54,119,69,23)
img:set(2,15,48,109,76,23)
img:set(2,14,36,90,80,22)
img:set(2,13,21,64,81,22)
img:set(2,12,10,38,81,22)
img:set(2,11,3,19,81,22)
img:set(2,10,1,8,81,22)
img:set(2,9,0,2,81,22)
img:set(2,8,0,0,80,22)
img:set(2,7,0,0,78,21)
img:set(2,6,0,0,72,20)
img:set(2,5,0,0,62,17)
img:set(2,4,0,0,48,13)
img:set(2,3,0,0,32,9)
img:set(2,2,0,0,20,5)
img:set(2,1,0,0,14,4)
img:set(3,24,0,71,0,18)
img:set(3,23,0,81,0,20)
img:set(3,22,0,98,0,25)
img:set(3,21,3,115,3,29)
img:set(3,20,7,127,8,31)
img:set(3,19,16,136,16,33)
img:set(3,18,25,144,28,34)
img:set(3,17,34,150,44,34)
img:set(3,16,39,151,62,35)
img:set(3,15,38,143,84,35)
img:set(3,14,28,121,102,35)
img:set(3,13,17,89,115,35)
img:set(3,12,8,54,123,35)
img:set(3,11,3,27,126,36)
img:set(3,10,0,10,127,36)
img:set(3,9,0,3,127,36)
img:set(3,8,0,0,126,36)
img:set(3,7,0,0,122,34)
img:set(3,6,0,0,112,31)
img:set(3,5,0,0,95,26)
img:set(3,4,0,0,70,19)
img:set(3,3,0,0,44,12)
img:set(3,2,0,0,25,7)
img:set(3,1,0,0,17,4)
img:set(4,24,0,93,0,23)
img:set(4,23,0,107,0,27)
img:set(4,22,0,135,0,34)
img:set(4,21,1,159,1,41)
img:set(4,20,4,174,4,45)
img:set(4,19,8,182,9,48)
img:set(4,18,13,187,17,49)
img:set(4,17,18,190,31,50)
img:set(4,16,23,190,56,51)
img:set(4,15,23,181,90,51)
img:set(4,14,18,156,126,52)
img:set(4,13,11,117,153,52)
img:set(4,12,5,72,170,53)
img:set(4,11,2,35,177,53)
img:set(4,10,0,14,179,53)
img:set(4,9,0,4,179,53)
img:set(4,8,0,1,178,52)
img:set(4,7,0,0,172,49)
img:set(4,6,0,0,157,44)
img:set(4,5,0,0,131,36)
img:set(4,4,0,0,93,26)
img:set(4,3,0,0,56,15)
img:set(4,2,0,0,30,8)
img:set(4,1,0,0,20,5)
img:set(5,24,0,109,0,27)
img:set(5,23,0,127,0,32)
img:set(5,22,0,162,0,42)
img:set(5,21,0,193,0,51)
img:set(5,20,1,211,1,58)
img:set(5,19,3,218,4,63)
img:set(5,18,5,222,10,66)
img:set(5,17,8,223,24,67)
img:set(5,16,10,221,52,68)
img:set(5,15,11,210,94,69)
img:set(5,14,9,183,143,70)
img:set(5,13,6,138,182,70)
img:set(5,12,2,86,205,71)
img:set(5,11,1,42,215,71)
img:set(5,10,0,16,219,71)
img:set(5,9,0,5,219,70)
img:set(5,8,0,1,217,67)
img:set(5,7,0,0,210,62)
img:set(5,6,0,0,191,55)
img:set(5,5,0,0,157,44)
img:set(5,4,0,0,111,31)
img:set(5,3,0,0,66,18)
img:set(5,2,0,0,34,9)
img:set(5,1,0,0,22,6)
img:set(6,24,0,118,0,30)
img:set(6,23,0,138,0,36)
img:set(6,22,0,177,0,47)
img:set(6,21,0,211,0,58)
img:set(6,20,0,231,0,68)
img:set(6,19,1,239,2,76)
img:set(6,18,2,242,7,82)
img:set(6,17,3,242,21,86)
img:set(6,16,4,238,50,87)
img:set(6,15,4,226,97,88)
img:set(6,14,3,197,151,89)
img:set(6,13,2,150,197,89)
img:set(6,12,1,93,225,90)
img:set(6,11,0,46,237,90)
img:set(6,10,0,18,241,88)
img:set(6,9,0,5,241,85)
img:set(6,8,0,1,239,80)
img:set(6,7,0,0,230,73)
img:set(6,6,0,0,210,62)
img:set(6,5,0,0,171,49)
img:set(6,4,0,0,120,34)
img:set(6,3,0,0,71,19)
img:set(6,2,0,0,37,10)
img:set(6,1,0,0,23,6)
img:set(7,24,0,122,0,31)
img:set(7,23,0,143,0,37)
img:set(7,22,0,183,0,49)
img:set(7,21,0,218,0,63)
img:set(7,20,0,239,0,76)
img:set(7,19,1,248,1,89)
img:set(7,18,1,250,6,98)
img:set(7,17,1,250,19,105)
img:set(7,16,2,246,49,108)
img:set(7,15,2,233,97,110)
img:set(7,14,2,203,155,111)
img:set(7,13,1,154,203,111)
img:set(7,12,1,97,232,111)
img:set(7,11,1,48,245,109)
img:set(7,10,0,19,249,106)
img:set(7,9,0,5,250,100)
img:set(7,8,0,1,247,91)
img:set(7,7,0,0,239,80)
img:set(7,6,0,0,217,67)
img:set(7,5,0,0,177,52)
img:set(7,4,0,0,124,35)
img:set(7,3,0,0,73,20)
img:set(7,2,0,0,38,10)
img:set(7,1,0,0,24,6)
img:set(8,24,2,123,0,31)
img:set(8,23,2,144,0,38)
img:set(8,22,2,185,0,50)
img:set(8,21,2,220,0,66)
img:set(8,20,2,241,0,82)
img:set(8,19,3,250,1,98)
img:set(8,18,3,253,6,112)
img:set(8,17,3,252,19,123)
img:set(8,16,3,248,49,130)
img:set(8,15,4,235,98,135)
img:set(8,14,4,205,156,137)
img:set(8,13,4,156,205,137)
img:set(8,12,4,98,234,134)
img:set(8,11,3,49,248,130)
img:set(8,10,3,19,252,123)
img:set(8,9,3,5,252,113)
img:set(8,8,3,1,250,100)
img:set(8,7,2,0,241,85)
img:set(8,6,2,0,219,69)
img:set(8,5,2,0,179,53)
img:set(8,4,1,0,125,35)
img:set(8,3,1,0,73,20)
img:set(8,2,0,0,38,10)
img:set(8,1,0,0,24,6)
img:set(9,24,6,123,0,31)
img:set(9,23,6,145,0,38)
img:set(9,22,7,185,0,51)
img:set(9,21,9,221,0,67)
img:set(9,20,9,242,0,85)
img:set(9,19,10,251,1,104)
img:set(9,18,10,253,5,122)
img:set(9,17,11,253,19,139)
img:set(9,16,12,248,48,152)
img:set(9,15,13,235,97,162)
img:set(9,14,13,205,155,166)
img:set(9,13,13,156,204,166)
img:set(9,12,13,98,234,161)
img:set(9,11,12,49,247,152)
img:set(9,10,11,19,251,138)
img:set(9,9,10,5,252,122)
img:set(9,8,10,1,249,105)
img:set(9,7,9,0,240,88)
img:set(9,6,8,0,218,71)
img:set(9,5,7,0,178,53)
img:set(9,4,5,0,125,35)
img:set(9,3,3,0,73,20)
img:set(9,2,2,0,38,10)
img:set(9,1,1,0,24,6)
img:set(10,24,15,123,0,31)
img:set(10,23,16,145,0,37)
img:set(10,22,20,185,0,51)
img:set(10,21,23,221,0,67)
img:set(10,20,26,242,0,86)
img:set(10,19,27,251,1,107)
img:set(10,18,28,253,5,129)
img:set(10,17,29,253,18,152)
img:set(10,16,31,248,47,173)
img:set(10,15,34,234,95,188)
img:set(10,14,36,204,153,196)
img:set(10,13,36,155,201,196)
img:set(10,12,34,97,230,188)
img:set(10,11,31,48,243,172)
img:set(10,10,29,19,247,151)
img:set(10,9,28,5,247,129)
img:set(10,8,27,1,245,108)
img:set(10,7,26,0,236,89)
img:set(10,6,23,0,215,70)
img:set(10,5,19,0,175,52)
img:set(10,4,14,0,122,35)
img:set(10,3,8,0,72,20)
img:set(10,2,5,0,37,10)
img:set(10,1,3,0,23,6)
img:set(11,24,30,123,0,31)
img:set(11,23,34,145,0,37)
img:set(11,22,43,185,0,50)
img:set(11,21,51,221,0,67)
img:set(11,20,56,242,0,86)
img:set(11,19,58,251,1,108)
img:set(11,18,59,253,5,133)
img:set(11,17,61,252,17,160)
img:set(11,16,65,247,44,188)
img:set(11,15,71,232,90,208)
img:set(11,14,75,202,144,219)
img:set(11,13,75,152,190,218)
img:set(11,12,71,95,218,208)
img:set(11,11,65,47,230,187)
img:set(11,10,61,18,234,159)
img:set(11,9,59,5,234,132)
img:set(11,8,58,1,232,108)
img:set(11,7,55,0,224,87)
img:set(11,6,50,0,203,69)
img:set(11,5,41,0,166,51)
img:set(11,4,29,0,115,34)
img:set(11,3,17,0,67,19)
img:set(11,2,9,0,34,10)
img:set(11,1,6,0,21,6)
img:set(12,24,50,123,0,30)
img:set(12,23,59,145,0,36)
img:set(12,22,75,185,0,49)
img:set(12,21,89,221,0,66)
img:set(12,20,98,242,0,85)
img:set(12,19,101,251,1,108)
img:set(12,18,103,253,4,134)
img:set(12,17,106,251,15,164)
img:set(12,16,111,244,39,195)
img:set(12,15,119,228,79,218)
img:set(12,14,126,195,126,230)
img:set(12,13,126,146,166,230)
img:set(12,12,119,90,190,217)
img:set(12,11,111,44,201,193)
img:set(12,10,106,17,204,162)
img:set(12,9,103,5,204,132)
img:set(12,8,101,1,203,107)
img:set(12,7,98,0,195,86)
img:set(12,6,89,0,178,67)
img:set(12,5,72,0,145,50)
img:set(12,4,51,0,100,33)
img:set(12,3,30,0,58,19)
img:set(12,2,15,0,29,10)
img:set(12,1,10,0,18,6)
img:set(13,24,73,123,0,30)
img:set(13,23,86,145,0,36)
img:set(13,22,110,185,0,49)
img:set(13,21,132,221,0,66)
img:set(13,20,145,242,0,85)
img:set(13,19,150,251,0,107)
img:set(13,18,152,252,3,134)
img:set(13,17,155,249,11,164)
img:set(13,16,161,240,29,195)
img:set(13,15,168,220,60,218)
img:set(13,14,175,185,96,230)
img:set(13,13,175,136,126,229)
img:set(13,12,168,83,144,216)
img:set(13,11,161,40,153,191)
img:set(13,10,155,15,155,160)
img:set(13,9,152,4,156,129)
img:set(13,8,150,1,154,104)
img:set(13,7,144,0,149,84)
img:set(13,6,131,0,135,67)
img:set(13,5,107,0,110,50)
img:set(13,4,75,0,76,33)
img:set(13,3,44,0,45,19)
img:set(13,2,22,0,23,10)
img:set(13,1,14,0,14,6)
img:set(14,24,93,123,0,30)
img:set(14,23,110,145,0,36)
img:set(14,22,142,185,0,49)
img:set(14,21,170,221,0,66)
img:set(14,20,187,242,0,85)
img:set(14,19,193,251,0,107)
img:set(14,18,196,252,2,132)
img:set(14,17,198,248,7,160)
img:set(14,16,202,235,19,187)
img:set(14,15,208,211,38,207)
img:set(14,14,212,172,60,217)
img:set(14,13,212,123,79,216)
img:set(14,12,208,74,90,203)
img:set(14,11,202,36,95,181)
img:set(14,10,198,13,97,152)
img:set(14,9,196,4,97,124)
img:set(14,8,193,1,96,102)
img:set(14,7,186,0,93,83)
img:set(14,6,169,0,84,67)
img:set(14,5,138,0,69,51)
img:set(14,4,96,0,49,34)
img:set(14,3,56,0,29,19)
img:set(14,2,28,0,15,10)
img:set(14,1,18,0,9,6)
img:set(15,24,108,123,0,30)
img:set(15,23,128,145,0,36)
img:set(15,22,165,185,0,50)
img:set(15,21,197,221,0,66)
img:set(15,20,216,242,0,85)
img:set(15,19,224,250,0,106)
img:set(15,18,227,251,1,129)
img:set(15,17,228,246,4,151)
img:set(15,16,231,231,10,172)
img:set(15,15,234,203,19,186)
img:set(15,14,236,162,29,192)
img:set(15,13,236,112,39,190)
img:set(15,12,234,66,44,180)
img:set(15,11,231,32,47,162)
img:set(15,10,228,12,48,139)
img:set(15,9,227,3,48,117)
img:set(15,8,224,0,48,99)
img:set(15,7,216,0,46,83)
img:set(15,6,196,0,42,68)
img:set(15,5,160,0,34,52)
img:set(15,4,111,0,25,35)
img:set(15,3,65,0,15,20)
img:set(15,2,33,0,8,10)
img:set(15,1,21,0,5,6)
img:set(16,24,117,123,0,30)
img:set(16,23,138,145,0,37)
img:set(16,22,177,185,0,50)
img:set(16,21,212,221,0,66)
img:set(16,20,232,242,0,84)
img:set(16,19,241,250,0,103)
img:set(16,18,244,251,0,122)
img:set(16,17,245,245,1,138)
img:set(16,16,246,229,4,151)
img:set(16,15,247,199,7,159)
img:set(16,14,247,155,11,161)
img:set(16,13,247,106,15,158)
img:set(16,12,247,61,17,151)
img:set(16,11,246,29,18,139)
img:set(16,10,245,11,19,124)
img:set(16,9,244,3,19,109)
img:set(16,8,241,0,19,95)
img:set(16,7,232,0,18,82)
img:set(16,6,211,0,16,68)
img:set(16,5,172,0,13,52)
img:set(16,4,120,0,10,35)
img:set(16,3,70,0,6,20)
img:set(16,2,36,0,3,10)
img:set(16,1,23,0,2,6)
img:set(17,24,121,123,0,30)
img:set(17,23,142,144,0,36)
img:set(17,22,182,185,0,49)
img:set(17,21,218,220,0,65)
img:set(17,20,239,241,0,81)
img:set(17,19,247,250,0,97)
img:set(17,18,250,250,0,111)
img:set(17,17,251,244,0,121)
img:set(17,16,251,227,1,128)
img:set(17,15,251,196,2,131)
img:set(17,14,252,152,3,130)
img:set(17,13,252,103,4,128)
img:set(17,12,251,59,5,123)
img:set(17,11,251,28,5,117)
img:set(17,10,251,10,5,109)
img:set(17,9,250,3,5,100)
img:set(17,8,247,0,5,90)
img:set(17,7,238,0,5,79)
img:set(17,6,217,0,5,67)
img:set(17,5,177,0,4,52)
img:set(17,4,124,0,3,35)
img:set(17,3,72,0,2,20)
img:set(17,2,37,0,1,10)
img:set(17,1,23,0,1,6)
img:set(18,24,121,122,0,30)
img:set(18,23,142,143,0,36)
img:set(18,22,182,183,0,48)
img:set(18,21,218,218,0,62)
img:set(18,20,238,239,0,75)
img:set(18,19,247,247,0,87)
img:set(18,18,250,247,0,97)
img:set(18,17,250,241,0,103)
img:set(18,16,250,224,0,106)
img:set(18,15,250,193,0,106)
img:set(18,14,250,150,0,105)
img:set(18,13,250,101,1,103)
img:set(18,12,250,58,1,100)
img:set(18,11,250,27,1,98)
img:set(18,10,250,10,1,95)
img:set(18,9,250,3,1,90)
img:set(18,8,247,0,1,84)
img:set(18,7,238,0,1,76)
img:set(18,6,216,0,1,65)
img:set(18,5,177,0,1,51)
img:set(18,4,124,0,0,35)
img:set(18,3,73,0,0,20)
img:set(18,2,37,0,0,10)
img:set(18,1,24,0,0,6)
img:set(19,24,118,118,0,29)
img:set(19,23,138,138,0,34)
img:set(19,22,177,177,0,45)
img:set(19,21,211,211,0,57)
img:set(19,20,231,231,0,67)
img:set(19,19,239,238,0,75)
img:set(19,18,241,238,0,81)
img:set(19,17,242,232,0,84)
img:set(19,16,242,216,0,85)
img:set(19,15,242,186,0,84)
img:set(19,14,242,144,0,83)
img:set(19,13,242,98,0,83)
img:set(19,12,242,55,0,82)
img:set(19,11,242,26,0,82)
img:set(19,10,242,9,0,81)
img:set(19,9,241,2,0,79)
img:set(19,8,239,0,0,76)
img:set(19,7,230,0,0,70)
img:set(19,6,210,0,0,62)
img:set(19,5,171,0,0,49)
img:set(19,4,120,0,0,34)
img:set(19,3,71,0,0,20)
img:set(19,2,36,0,0,10)
img:set(19,1,23,0,0,6)
img:set(20,24,108,109,0,27)
img:set(20,23,127,127,0,31)
img:set(20,22,162,162,0,41)
img:set(20,21,193,193,0,50)
img:set(20,20,210,210,0,57)
img:set(20,19,217,216,0,61)
img:set(20,18,219,217,0,64)
img:set(20,17,220,211,0,66)
img:set(20,16,220,196,0,66)
img:set(20,15,220,169,0,65)
img:set(20,14,220,131,0,65)
img:set(20,13,220,89,0,65)
img:set(20,12,220,50,0,66)
img:set(20,11,220,23,0,67)
img:set(20,10,220,8,0,68)
img:set(20,9,219,2,0,67)
img:set(20,8,217,0,0,65)
img:set(20,7,210,0,0,62)
img:set(20,6,191,0,0,55)
img:set(20,5,157,0,0,45)
img:set(20,4,111,0,0,31)
img:set(20,3,66,0,0,18)
img:set(20,2,34,0,0,9)
img:set(20,1,22,0,0,6)
img:set(21,24,93,93,0,23)
img:set(21,23,107,107,0,26)
img:set(21,22,135,135,0,33)
img:set(21,21,158,158,0,40)
img:set(21,20,172,172,0,44)
img:set(21,19,178,177,0,47)
img:set(21,18,179,177,0,48)
img:set(21,17,180,172,0,48)
img:set(21,16,180,160,0,48)
img:set(21,15,180,138,0,48)
img:set(21,14,180,107,0,48)
img:set(21,13,180,72,0,49)
img:set(21,12,180,41,0,50)
img:set(21,11,180,19,0,52)
img:set(21,10,180,7,0,52)
img:set(21,9,179,2,0,52)
img:set(21,8,178,0,0,51)
img:set(21,7,172,0,0,49)
img:set(21,6,157,0,0,45)
img:set(21,5,131,0,0,37)
img:set(21,4,93,0,0,26)
img:set(21,3,56,0,0,16)
img:set(21,2,30,0,0,8)
img:set(21,1,20,0,0,5)
img:set(22,24,71,71,0,17)
img:set(22,23,81,81,0,20)
img:set(22,22,98,98,0,24)
img:set(22,21,113,113,0,28)
img:set(22,20,122,122,0,30)
img:set(22,19,126,126,0,32)
img:set(22,18,127,125,0,32)
img:set(22,17,128,122,0,32)
img:set(22,16,128,113,0,32)
img:set(22,15,128,97,0,32)
img:set(22,14,128,76,0,32)
img:set(22,13,128,51,0,33)
img:set(22,12,128,30,0,34)
img:set(22,11,128,14,0,35)
img:set(22,10,128,5,0,36)
img:set(22,9,127,1,0,36)
img:set(22,8,126,0,0,36)
img:set(22,7,122,0,0,34)
img:set(22,6,112,0,0,32)
img:set(22,5,95,0,0,26)
img:set(22,4,70,0,0,19)
img:set(22,3,44,0,0,12)
img:set(22,2,25,0,0,7)
img:set(22,1,17,0,0,4)
img:set(23,24,52,52,0,12)
img:set(23,23,56,56,0,13)
img:set(23,22,65,65,0,16)
img:set(23,21,73,73,0,18)
img:set(23,20,78,78,0,19)
img:set(23,19,80,80,0,20)
img:set(23,18,81,80,0,20)
img:set(23,17,81,77,0,20)
img:set(23,16,81,71,0,20)
img:set(23,15,81,62,0,20)
img:set(23,14,81,48,0,20)
img:set(23,13,81,33,0,21)
img:set(23,12,81,19,0,21)
img:set(23,11,81,9,0,22)
img:set(23,10,81,4,0,22)
img:set(23,9,81,1,0,23)
img:set(23,8,80,0,0,22)
img:set(23,7,78,0,0,22)
img:set(23,6,72,0,0,20)
img:set(23,5,62,0,0,17)
img:set(23,4,48,0,0,13)
img:set(23,3,32,0,0,9)
img:set(23,2,20,0,0,5)
img:set(23,1,14,0,0,4)
img:set(24,24,42,42,0,10)
img:set(24,23,44,44,0,11)
img:set(24,22,49,49,0,12)
img:set(24,21,54,54,0,13)
img:set(24,20,58,58,0,14)
img:set(24,19,59,59,0,14)
img:set(24,18,60,59,0,15)
img:set(24,17,60,57,0,15)
img:set(24,16,60,52,0,14)
img:set(24,15,60,45,0,14)
img:set(24,14,60,35,0,15)
img:set(24,13,60,25,0,15)
img:set(24,12,60,15,0,16)
img:set(24,11,60,7,0,16)
img:set(24,10,60,3,0,16)
img:set(24,9,60,1,0,17)
img:set(24,8,59,0,0,16)
img:set(24,7,58,0,0,16)
img:set(24,6,54,0,0,15)
img:set(24,5,47,0,0,13)
img:set(24,4,37,0,0,10)
img:set(24,3,27,0,0,7)
img:set(24,2,17,0,0,5)
img:set(24,1,13,0,0,3)
return img
end
function IconImages:getInvert()
local img = image(24, 24)
img:set(2,23,127,127,127,255)
img:set(2,22,127,127,127,255)
img:set(2,21,127,127,127,255)
img:set(2,20,127,127,127,255)
img:set(2,19,127,127,127,255)
img:set(2,18,127,127,127,255)
img:set(2,17,127,127,127,255)
img:set(2,16,127,127,127,255)
img:set(2,15,127,127,127,255)
img:set(2,14,127,127,127,255)
img:set(2,13,127,127,127,255)
img:set(2,12,127,127,127,255)
img:set(2,11,127,127,127,255)
img:set(2,10,127,127,127,255)
img:set(2,9,127,127,127,255)
img:set(2,8,127,127,127,255)
img:set(2,7,127,127,127,255)
img:set(2,6,127,127,127,255)
img:set(2,5,127,127,127,255)
img:set(2,4,127,127,127,255)
img:set(2,3,127,127,127,255)
img:set(2,2,127,127,127,255)
img:set(3,23,127,127,127,255)
img:set(3,3,127,127,127,255)
img:set(3,2,127,127,127,255)
img:set(4,23,127,127,127,255)
img:set(4,4,127,127,127,255)
img:set(4,3,255,255,255,255)
img:set(4,2,127,127,127,255)
img:set(5,23,127,127,127,255)
img:set(5,20,128,255,0,255)
img:set(5,19,0,255,0,255)
img:set(5,18,0,255,0,255)
img:set(5,17,0,255,0,255)
img:set(5,16,0,255,0,255)
img:set(5,15,0,255,0,255)
img:set(5,14,0,255,0,255)
img:set(5,5,127,127,127,255)
img:set(5,4,255,255,255,255)
img:set(5,3,255,255,255,255)
img:set(5,2,127,127,127,255)
img:set(6,23,127,127,127,255)
img:set(6,20,128,255,0,255)
img:set(6,19,0,255,0,255)
img:set(6,18,0,255,0,255)
img:set(6,17,0,255,0,255)
img:set(6,16,0,255,0,255)
img:set(6,15,0,255,0,255)
img:set(6,14,0,255,0,255)
img:set(6,6,127,127,127,255)
img:set(6,5,255,255,255,255)
img:set(6,4,255,255,255,255)
img:set(6,3,255,255,255,255)
img:set(6,2,127,127,127,255)
img:set(7,23,127,127,127,255)
img:set(7,20,128,255,0,255)
img:set(7,19,0,255,0,255)
img:set(7,18,0,255,0,255)
img:set(7,17,0,255,0,255)
img:set(7,16,0,255,0,255)
img:set(7,15,0,255,0,255)
img:set(7,14,0,255,0,255)
img:set(7,7,127,127,127,255)
img:set(7,6,255,255,255,255)
img:set(7,5,255,255,255,255)
img:set(7,4,255,255,255,255)
img:set(7,3,255,255,255,255)
img:set(7,2,127,127,127,255)
img:set(8,23,127,127,127,255)
img:set(8,20,128,255,0,255)
img:set(8,19,0,255,0,255)
img:set(8,18,0,255,0,255)
img:set(8,17,0,255,0,255)
img:set(8,16,0,255,0,255)
img:set(8,15,0,255,0,255)
img:set(8,14,0,255,0,255)
img:set(8,8,127,127,127,255)
img:set(8,7,255,255,255,255)
img:set(8,6,255,255,255,255)
img:set(8,5,255,255,255,255)
img:set(8,4,255,255,255,255)
img:set(8,3,255,255,255,255)
img:set(8,2,127,127,127,255)
img:set(9,23,127,127,127,255)
img:set(9,20,128,255,0,255)
img:set(9,19,0,255,0,255)
img:set(9,18,0,255,0,255)
img:set(9,17,0,255,0,255)
img:set(9,16,0,255,0,255)
img:set(9,15,0,255,0,255)
img:set(9,14,0,255,0,255)
img:set(9,9,127,127,127,255)
img:set(9,8,255,255,255,255)
img:set(9,7,255,255,255,255)
img:set(9,6,255,255,255,255)
img:set(9,5,255,255,255,255)
img:set(9,4,255,255,255,255)
img:set(9,3,255,255,255,255)
img:set(9,2,127,127,127,255)
img:set(10,23,127,127,127,255)
img:set(10,20,128,255,0,255)
img:set(10,19,0,255,0,255)
img:set(10,18,0,255,0,255)
img:set(10,17,0,255,0,255)
img:set(10,16,0,255,0,255)
img:set(10,15,0,255,0,255)
img:set(10,14,0,255,0,255)
img:set(10,10,127,127,127,255)
img:set(10,9,255,255,255,255)
img:set(10,8,255,255,255,255)
img:set(10,7,255,255,255,255)
img:set(10,6,255,255,255,255)
img:set(10,5,255,255,255,255)
img:set(10,4,255,255,255,255)
img:set(10,3,255,255,255,255)
img:set(10,2,127,127,127,255)
img:set(11,23,127,127,127,255)
img:set(11,20,128,255,0,255)
img:set(11,19,128,255,0,255)
img:set(11,18,128,255,0,255)
img:set(11,17,128,255,0,255)
img:set(11,16,128,255,0,255)
img:set(11,15,128,255,0,255)
img:set(11,14,128,255,0,255)
img:set(11,11,127,127,127,255)
img:set(11,10,255,255,255,255)
img:set(11,9,255,255,255,255)
img:set(11,8,255,255,255,255)
img:set(11,7,255,255,255,255)
img:set(11,6,255,255,255,255)
img:set(11,5,255,255,255,255)
img:set(11,4,255,255,255,255)
img:set(11,3,255,255,255,255)
img:set(11,2,127,127,127,255)
img:set(12,23,127,127,127,255)
img:set(12,12,127,127,127,255)
img:set(12,11,255,255,255,255)
img:set(12,10,255,255,255,255)
img:set(12,9,255,255,255,255)
img:set(12,8,255,255,255,255)
img:set(12,7,255,255,255,255)
img:set(12,6,255,255,255,255)
img:set(12,5,255,255,255,255)
img:set(12,4,255,255,255,255)
img:set(12,3,255,255,255,255)
img:set(12,2,127,127,127,255)
img:set(13,23,127,127,127,255)
img:set(13,13,127,127,127,255)
img:set(13,12,255,255,255,255)
img:set(13,11,255,255,255,255)
img:set(13,10,255,255,255,255)
img:set(13,9,255,255,255,255)
img:set(13,8,255,255,255,255)
img:set(13,7,255,255,255,255)
img:set(13,6,255,255,255,255)
img:set(13,5,255,255,255,255)
img:set(13,4,255,255,255,255)
img:set(13,3,255,255,255,255)
img:set(13,2,127,127,127,255)
img:set(14,23,127,127,127,255)
img:set(14,14,127,127,127,255)
img:set(14,13,255,255,255,255)
img:set(14,12,255,255,255,255)
img:set(14,11,255,255,255,255)
img:set(14,10,255,0,0,255)
img:set(14,9,255,0,0,255)
img:set(14,8,255,0,0,255)
img:set(14,7,255,0,0,255)
img:set(14,6,255,0,0,255)
img:set(14,5,255,0,0,255)
img:set(14,4,255,0,0,255)
img:set(14,3,255,255,255,255)
img:set(14,2,127,127,127,255)
img:set(15,23,127,127,127,255)
img:set(15,15,127,127,127,255)
img:set(15,14,255,255,255,255)
img:set(15,13,255,255,255,255)
img:set(15,12,255,255,255,255)
img:set(15,11,255,255,255,255)
img:set(15,10,255,0,0,255)
img:set(15,9,255,0,0,255)
img:set(15,8,255,0,0,255)
img:set(15,7,255,0,0,255)
img:set(15,6,255,0,0,255)
img:set(15,5,255,0,0,255)
img:set(15,4,255,0,0,255)
img:set(15,3,255,255,255,255)
img:set(15,2,127,127,127,255)
img:set(16,23,127,127,127,255)
img:set(16,16,127,127,127,255)
img:set(16,15,255,255,255,255)
img:set(16,14,255,255,255,255)
img:set(16,13,255,255,255,255)
img:set(16,12,255,255,255,255)
img:set(16,11,255,255,255,255)
img:set(16,10,255,0,0,255)
img:set(16,9,255,0,0,255)
img:set(16,8,255,0,0,255)
img:set(16,7,255,0,0,255)
img:set(16,6,255,0,0,255)
img:set(16,5,255,0,0,255)
img:set(16,4,255,0,0,255)
img:set(16,3,255,255,255,255)
img:set(16,2,127,127,127,255)
img:set(17,23,127,127,127,255)
img:set(17,17,127,127,127,255)
img:set(17,16,255,255,255,255)
img:set(17,15,255,255,255,255)
img:set(17,14,255,255,255,255)
img:set(17,13,255,255,255,255)
img:set(17,12,255,255,255,255)
img:set(17,11,255,255,255,255)
img:set(17,10,255,0,0,255)
img:set(17,9,255,0,0,255)
img:set(17,8,255,0,0,255)
img:set(17,7,255,0,0,255)
img:set(17,6,255,0,0,255)
img:set(17,5,255,0,0,255)
img:set(17,4,255,0,0,255)
img:set(17,3,255,255,255,255)
img:set(17,2,127,127,127,255)
img:set(18,23,127,127,127,255)
img:set(18,18,127,127,127,255)
img:set(18,17,255,255,255,255)
img:set(18,16,255,255,255,255)
img:set(18,15,255,255,255,255)
img:set(18,14,255,255,255,255)
img:set(18,13,255,255,255,255)
img:set(18,12,255,255,255,255)
img:set(18,11,255,255,255,255)
img:set(18,10,255,0,0,255)
img:set(18,9,255,0,0,255)
img:set(18,8,255,0,0,255)
img:set(18,7,255,0,0,255)
img:set(18,6,255,0,0,255)
img:set(18,5,255,0,0,255)
img:set(18,4,255,0,0,255)
img:set(18,3,255,255,255,255)
img:set(18,2,127,127,127,255)
img:set(19,23,127,127,127,255)
img:set(19,19,127,127,127,255)
img:set(19,18,255,255,255,255)
img:set(19,17,255,255,255,255)
img:set(19,16,255,255,255,255)
img:set(19,15,255,255,255,255)
img:set(19,14,255,255,255,255)
img:set(19,13,255,255,255,255)
img:set(19,12,255,255,255,255)
img:set(19,11,255,255,255,255)
img:set(19,10,255,0,0,255)
img:set(19,9,255,0,0,255)
img:set(19,8,255,0,0,255)
img:set(19,7,255,0,0,255)
img:set(19,6,255,0,0,255)
img:set(19,5,255,0,0,255)
img:set(19,4,255,0,0,255)
img:set(19,3,255,255,255,255)
img:set(19,2,127,127,127,255)
img:set(20,23,127,127,127,255)
img:set(20,20,127,127,127,255)
img:set(20,19,255,255,255,255)
img:set(20,18,255,255,255,255)
img:set(20,17,255,255,255,255)
img:set(20,16,255,255,255,255)
img:set(20,15,255,255,255,255)
img:set(20,14,255,255,255,255)
img:set(20,13,255,255,255,255)
img:set(20,12,255,255,255,255)
img:set(20,11,255,255,255,255)
img:set(20,10,255,0,0,255)
img:set(20,9,255,0,0,255)
img:set(20,8,255,0,0,255)
img:set(20,7,255,0,0,255)
img:set(20,6,255,0,0,255)
img:set(20,5,255,0,0,255)
img:set(20,4,255,0,0,255)
img:set(20,3,255,255,255,255)
img:set(20,2,127,127,127,255)
img:set(21,23,127,127,127,255)
img:set(21,21,127,127,127,255)
img:set(21,20,255,255,255,255)
img:set(21,19,255,255,255,255)
img:set(21,18,255,255,255,255)
img:set(21,17,255,255,255,255)
img:set(21,16,255,255,255,255)
img:set(21,15,255,255,255,255)
img:set(21,14,255,255,255,255)
img:set(21,13,255,255,255,255)
img:set(21,12,255,255,255,255)
img:set(21,11,255,255,255,255)
img:set(21,10,255,255,255,255)
img:set(21,9,255,255,255,255)
img:set(21,8,255,255,255,255)
img:set(21,7,255,255,255,255)
img:set(21,6,255,255,255,255)
img:set(21,5,255,255,255,255)
img:set(21,4,255,255,255,255)
img:set(21,3,255,255,255,255)
img:set(21,2,127,127,127,255)
img:set(22,23,127,127,127,255)
img:set(22,22,127,127,127,255)
img:set(22,21,255,255,255,255)
img:set(22,20,255,255,255,255)
img:set(22,19,255,255,255,255)
img:set(22,18,255,255,255,255)
img:set(22,17,255,255,255,255)
img:set(22,16,255,255,255,255)
img:set(22,15,255,255,255,255)
img:set(22,14,255,255,255,255)
img:set(22,13,255,255,255,255)
img:set(22,12,255,255,255,255)
img:set(22,11,255,255,255,255)
img:set(22,10,255,255,255,255)
img:set(22,9,255,255,255,255)
img:set(22,8,255,255,255,255)
img:set(22,7,255,255,255,255)
img:set(22,6,255,255,255,255)
img:set(22,5,255,255,255,255)
img:set(22,4,255,255,255,255)
img:set(22,3,255,255,255,255)
img:set(22,2,127,127,127,255)
img:set(23,23,127,127,127,255)
img:set(23,22,127,127,127,255)
img:set(23,21,127,127,127,255)
img:set(23,20,127,127,127,255)
img:set(23,19,127,127,127,255)
img:set(23,18,127,127,127,255)
img:set(23,17,127,127,127,255)
img:set(23,16,127,127,127,255)
img:set(23,15,127,127,127,255)
img:set(23,14,127,127,127,255)
img:set(23,13,127,127,127,255)
img:set(23,12,127,127,127,255)
img:set(23,11,127,127,127,255)
img:set(23,10,127,127,127,255)
img:set(23,9,127,127,127,255)
img:set(23,8,127,127,127,255)
img:set(23,7,127,127,127,255)
img:set(23,6,127,127,127,255)
img:set(23,5,127,127,127,255)
img:set(23,4,127,127,127,255)
img:set(23,3,127,127,127,255)
img:set(23,2,127,127,127,255)
return img
end
function IconImages:getRotate()
local img = image(24, 24)
img:set(4,14,0,182,136,255)
img:set(4,13,0,182,136,255)
img:set(4,12,0,182,136,255)
img:set(4,11,0,182,136,255)
img:set(4,10,0,182,136,255)
img:set(4,9,0,182,136,255)
img:set(4,8,0,182,136,255)
img:set(4,7,0,182,136,255)
img:set(4,6,0,182,136,255)
img:set(4,5,0,182,136,255)
img:set(4,4,0,182,136,255)
img:set(5,16,0,182,136,255)
img:set(5,15,0,182,136,255)
img:set(5,14,0,182,136,255)
img:set(5,13,0,182,136,255)
img:set(5,12,0,182,136,255)
img:set(5,11,0,182,136,255)
img:set(5,10,0,182,136,255)
img:set(5,9,0,182,136,255)
img:set(5,8,0,182,136,255)
img:set(5,7,0,182,136,255)
img:set(5,6,0,182,136,255)
img:set(5,5,0,182,136,255)
img:set(5,4,0,182,136,255)
img:set(6,17,0,182,136,255)
img:set(6,16,0,182,136,255)
img:set(6,15,0,182,136,255)
img:set(6,14,0,182,136,255)
img:set(6,13,0,182,136,255)
img:set(6,12,0,182,136,255)
img:set(6,11,0,182,136,255)
img:set(6,10,0,182,136,255)
img:set(6,9,0,182,136,255)
img:set(6,8,0,182,136,255)
img:set(6,7,0,182,136,255)
img:set(6,6,0,182,136,255)
img:set(6,5,0,182,136,255)
img:set(6,4,0,182,136,255)
img:set(7,18,0,182,136,255)
img:set(7,17,0,182,136,255)
img:set(7,16,0,182,136,255)
img:set(7,15,0,182,136,255)
img:set(7,14,0,182,136,255)
img:set(7,13,0,182,136,255)
img:set(7,12,0,182,136,255)
img:set(7,11,0,182,136,255)
img:set(7,10,0,182,136,255)
img:set(7,9,0,182,136,255)
img:set(7,8,0,182,136,255)
img:set(7,7,0,182,136,255)
img:set(7,6,0,182,136,255)
img:set(7,5,0,182,136,255)
img:set(7,4,0,182,136,255)
img:set(8,18,0,182,136,255)
img:set(8,17,0,182,136,255)
img:set(8,16,0,182,136,255)
img:set(8,15,0,182,136,255)
img:set(8,14,0,182,136,255)
img:set(8,13,0,182,136,255)
img:set(8,12,0,182,136,255)
img:set(8,11,0,182,136,255)
img:set(8,10,0,182,136,255)
img:set(8,9,0,182,136,255)
img:set(8,8,0,182,136,255)
img:set(8,7,0,182,136,255)
img:set(8,6,0,182,136,255)
img:set(8,5,0,182,136,255)
img:set(8,4,0,182,136,255)
img:set(9,19,0,182,136,255)
img:set(9,18,0,182,136,255)
img:set(9,17,0,182,136,255)
img:set(9,16,0,182,136,255)
img:set(9,15,0,182,136,255)
img:set(9,14,0,182,136,255)
img:set(10,19,0,182,136,255)
img:set(10,18,0,182,136,255)
img:set(10,17,0,182,136,255)
img:set(10,16,0,182,136,255)
img:set(10,15,0,182,136,255)
img:set(11,19,0,182,136,255)
img:set(11,18,0,182,136,255)
img:set(11,17,0,182,136,255)
img:set(11,16,0,182,136,255)
img:set(11,15,0,182,136,255)
img:set(12,19,0,182,136,255)
img:set(12,18,0,182,136,255)
img:set(12,17,0,182,136,255)
img:set(12,16,0,182,136,255)
img:set(12,15,0,182,136,255)
img:set(13,19,0,182,136,255)
img:set(13,18,0,182,136,255)
img:set(13,17,0,182,136,255)
img:set(13,16,0,182,136,255)
img:set(13,15,0,182,136,255)
img:set(14,19,0,182,136,255)
img:set(14,18,0,182,136,255)
img:set(14,17,0,182,136,255)
img:set(14,16,0,182,136,255)
img:set(14,15,0,182,136,255)
img:set(15,19,0,182,136,255)
img:set(15,18,0,182,136,255)
img:set(15,17,0,182,136,255)
img:set(15,16,0,182,136,255)
img:set(15,15,0,182,136,255)
img:set(16,19,0,182,136,255)
img:set(16,18,0,182,136,255)
img:set(16,17,0,182,136,255)
img:set(16,16,0,182,136,255)
img:set(16,15,0,182,136,255)
img:set(17,22,0,182,136,255)
img:set(17,21,0,182,136,255)
img:set(17,20,0,182,136,255)
img:set(17,19,0,182,136,255)
img:set(17,18,0,182,136,255)
img:set(17,17,0,182,136,255)
img:set(17,16,0,182,136,255)
img:set(17,15,0,182,136,255)
img:set(17,14,0,182,136,255)
img:set(17,13,0,182,136,255)
img:set(17,12,0,182,136,255)
img:set(18,21,0,182,136,255)
img:set(18,20,0,182,136,255)
img:set(18,19,0,182,136,255)
img:set(18,18,0,182,136,255)
img:set(18,17,0,182,136,255)
img:set(18,16,0,182,136,255)
img:set(18,15,0,182,136,255)
img:set(18,14,0,182,136,255)
img:set(18,13,0,182,136,255)
img:set(19,20,0,182,136,255)
img:set(19,19,0,182,136,255)
img:set(19,18,0,182,136,255)
img:set(19,17,0,182,136,255)
img:set(19,16,0,182,136,255)
img:set(19,15,0,182,136,255)
img:set(19,14,0,182,136,255)
img:set(20,19,0,182,136,255)
img:set(20,18,0,182,136,255)
img:set(20,17,0,182,136,255)
img:set(20,16,0,182,136,255)
img:set(20,15,0,182,136,255)
img:set(21,18,0,182,136,255)
img:set(21,17,0,182,136,255)
img:set(21,16,0,182,136,255)
img:set(22,17,0,182,136,255)
return img
end
function IconImages:getInvert()
local img = image(24, 24)
img:set(2,23,127,127,127,255)
img:set(2,22,127,127,127,255)
img:set(2,21,127,127,127,255)
img:set(2,20,127,127,127,255)
img:set(2,19,127,127,127,255)
img:set(2,18,127,127,127,255)
img:set(2,17,127,127,127,255)
img:set(2,16,127,127,127,255)
img:set(2,15,127,127,127,255)
img:set(2,14,127,127,127,255)
img:set(2,13,127,127,127,255)
img:set(2,12,127,127,127,255)
img:set(2,11,127,127,127,255)
img:set(2,10,127,127,127,255)
img:set(2,9,127,127,127,255)
img:set(2,8,127,127,127,255)
img:set(2,7,127,127,127,255)
img:set(2,6,127,127,127,255)
img:set(2,5,127,127,127,255)
img:set(2,4,127,127,127,255)
img:set(2,3,127,127,127,255)
img:set(2,2,127,127,127,255)
img:set(3,23,127,127,127,255)
img:set(3,3,127,127,127,255)
img:set(3,2,127,127,127,255)
img:set(4,23,127,127,127,255)
img:set(4,4,127,127,127,255)
img:set(4,3,255,255,255,255)
img:set(4,2,127,127,127,255)
img:set(5,23,127,127,127,255)
img:set(5,20,128,255,0,255)
img:set(5,19,0,255,0,255)
img:set(5,18,0,255,0,255)
img:set(5,17,0,255,0,255)
img:set(5,16,0,255,0,255)
img:set(5,15,0,255,0,255)
img:set(5,14,0,255,0,255)
img:set(5,5,127,127,127,255)
img:set(5,4,255,255,255,255)
img:set(5,3,255,255,255,255)
img:set(5,2,127,127,127,255)
img:set(6,23,127,127,127,255)
img:set(6,20,128,255,0,255)
img:set(6,19,0,255,0,255)
img:set(6,18,0,255,0,255)
img:set(6,17,0,255,0,255)
img:set(6,16,0,255,0,255)
img:set(6,15,0,255,0,255)
img:set(6,14,0,255,0,255)
img:set(6,6,127,127,127,255)
img:set(6,5,255,255,255,255)
img:set(6,4,255,255,255,255)
img:set(6,3,255,255,255,255)
img:set(6,2,127,127,127,255)
img:set(7,23,127,127,127,255)
img:set(7,20,128,255,0,255)
img:set(7,19,0,255,0,255)
img:set(7,18,0,255,0,255)
img:set(7,17,0,255,0,255)
img:set(7,16,0,255,0,255)
img:set(7,15,0,255,0,255)
img:set(7,14,0,255,0,255)
img:set(7,7,127,127,127,255)
img:set(7,6,255,255,255,255)
img:set(7,5,255,255,255,255)
img:set(7,4,255,255,255,255)
img:set(7,3,255,255,255,255)
img:set(7,2,127,127,127,255)
img:set(8,23,127,127,127,255)
img:set(8,20,128,255,0,255)
img:set(8,19,0,255,0,255)
img:set(8,18,0,255,0,255)
img:set(8,17,0,255,0,255)
img:set(8,16,0,255,0,255)
img:set(8,15,0,255,0,255)
img:set(8,14,0,255,0,255)
img:set(8,8,127,127,127,255)
img:set(8,7,255,255,255,255)
img:set(8,6,255,255,255,255)
img:set(8,5,255,255,255,255)
img:set(8,4,255,255,255,255)
img:set(8,3,255,255,255,255)
img:set(8,2,127,127,127,255)
img:set(9,23,127,127,127,255)
img:set(9,20,128,255,0,255)
img:set(9,19,0,255,0,255)
img:set(9,18,0,255,0,255)
img:set(9,17,0,255,0,255)
img:set(9,16,0,255,0,255)
img:set(9,15,0,255,0,255)
img:set(9,14,0,255,0,255)
img:set(9,9,127,127,127,255)
img:set(9,8,255,255,255,255)
img:set(9,7,255,255,255,255)
img:set(9,6,255,255,255,255)
img:set(9,5,255,255,255,255)
img:set(9,4,255,255,255,255)
img:set(9,3,255,255,255,255)
img:set(9,2,127,127,127,255)
img:set(10,23,127,127,127,255)
img:set(10,20,128,255,0,255)
img:set(10,19,0,255,0,255)
img:set(10,18,0,255,0,255)
img:set(10,17,0,255,0,255)
img:set(10,16,0,255,0,255)
img:set(10,15,0,255,0,255)
img:set(10,14,0,255,0,255)
img:set(10,10,127,127,127,255)
img:set(10,9,255,255,255,255)
img:set(10,8,255,255,255,255)
img:set(10,7,255,255,255,255)
img:set(10,6,255,255,255,255)
img:set(10,5,255,255,255,255)
img:set(10,4,255,255,255,255)
img:set(10,3,255,255,255,255)
img:set(10,2,127,127,127,255)
img:set(11,23,127,127,127,255)
img:set(11,20,128,255,0,255)
img:set(11,19,128,255,0,255)
img:set(11,18,128,255,0,255)
img:set(11,17,128,255,0,255)
img:set(11,16,128,255,0,255)
img:set(11,15,128,255,0,255)
img:set(11,14,128,255,0,255)
img:set(11,11,127,127,127,255)
img:set(11,10,255,255,255,255)
img:set(11,9,255,255,255,255)
img:set(11,8,255,255,255,255)
img:set(11,7,255,255,255,255)
img:set(11,6,255,255,255,255)
img:set(11,5,255,255,255,255)
img:set(11,4,255,255,255,255)
img:set(11,3,255,255,255,255)
img:set(11,2,127,127,127,255)
img:set(12,23,127,127,127,255)
img:set(12,12,127,127,127,255)
img:set(12,11,255,255,255,255)
img:set(12,10,255,255,255,255)
img:set(12,9,255,255,255,255)
img:set(12,8,255,255,255,255)
img:set(12,7,255,255,255,255)
img:set(12,6,255,255,255,255)
img:set(12,5,255,255,255,255)
img:set(12,4,255,255,255,255)
img:set(12,3,255,255,255,255)
img:set(12,2,127,127,127,255)
img:set(13,23,127,127,127,255)
img:set(13,13,127,127,127,255)
img:set(13,12,255,255,255,255)
img:set(13,11,255,255,255,255)
img:set(13,10,255,255,255,255)
img:set(13,9,255,255,255,255)
img:set(13,8,255,255,255,255)
img:set(13,7,255,255,255,255)
img:set(13,6,255,255,255,255)
img:set(13,5,255,255,255,255)
img:set(13,4,255,255,255,255)
img:set(13,3,255,255,255,255)
img:set(13,2,127,127,127,255)
img:set(14,23,127,127,127,255)
img:set(14,14,127,127,127,255)
img:set(14,13,255,255,255,255)
img:set(14,12,255,255,255,255)
img:set(14,11,255,255,255,255)
img:set(14,10,255,0,0,255)
img:set(14,9,255,0,0,255)
img:set(14,8,255,0,0,255)
img:set(14,7,255,0,0,255)
img:set(14,6,255,0,0,255)
img:set(14,5,255,0,0,255)
img:set(14,4,255,0,0,255)
img:set(14,3,255,255,255,255)
img:set(14,2,127,127,127,255)
img:set(15,23,127,127,127,255)
img:set(15,15,127,127,127,255)
img:set(15,14,255,255,255,255)
img:set(15,13,255,255,255,255)
img:set(15,12,255,255,255,255)
img:set(15,11,255,255,255,255)
img:set(15,10,255,0,0,255)
img:set(15,9,255,0,0,255)
img:set(15,8,255,0,0,255)
img:set(15,7,255,0,0,255)
img:set(15,6,255,0,0,255)
img:set(15,5,255,0,0,255)
img:set(15,4,255,0,0,255)
img:set(15,3,255,255,255,255)
img:set(15,2,127,127,127,255)
img:set(16,23,127,127,127,255)
img:set(16,16,127,127,127,255)
img:set(16,15,255,255,255,255)
img:set(16,14,255,255,255,255)
img:set(16,13,255,255,255,255)
img:set(16,12,255,255,255,255)
img:set(16,11,255,255,255,255)
img:set(16,10,255,0,0,255)
img:set(16,9,255,0,0,255)
img:set(16,8,255,0,0,255)
img:set(16,7,255,0,0,255)
img:set(16,6,255,0,0,255)
img:set(16,5,255,0,0,255)
img:set(16,4,255,0,0,255)
img:set(16,3,255,255,255,255)
img:set(16,2,127,127,127,255)
img:set(17,23,127,127,127,255)
img:set(17,17,127,127,127,255)
img:set(17,16,255,255,255,255)
img:set(17,15,255,255,255,255)
img:set(17,14,255,255,255,255)
img:set(17,13,255,255,255,255)
img:set(17,12,255,255,255,255)
img:set(17,11,255,255,255,255)
img:set(17,10,255,0,0,255)
img:set(17,9,255,0,0,255)
img:set(17,8,255,0,0,255)
img:set(17,7,255,0,0,255)
img:set(17,6,255,0,0,255)
img:set(17,5,255,0,0,255)
img:set(17,4,255,0,0,255)
img:set(17,3,255,255,255,255)
img:set(17,2,127,127,127,255)
img:set(18,23,127,127,127,255)
img:set(18,18,127,127,127,255)
img:set(18,17,255,255,255,255)
img:set(18,16,255,255,255,255)
img:set(18,15,255,255,255,255)
img:set(18,14,255,255,255,255)
img:set(18,13,255,255,255,255)
img:set(18,12,255,255,255,255)
img:set(18,11,255,255,255,255)
img:set(18,10,255,0,0,255)
img:set(18,9,255,0,0,255)
img:set(18,8,255,0,0,255)
img:set(18,7,255,0,0,255)
img:set(18,6,255,0,0,255)
img:set(18,5,255,0,0,255)
img:set(18,4,255,0,0,255)
img:set(18,3,255,255,255,255)
img:set(18,2,127,127,127,255)
img:set(19,23,127,127,127,255)
img:set(19,19,127,127,127,255)
img:set(19,18,255,255,255,255)
img:set(19,17,255,255,255,255)
img:set(19,16,255,255,255,255)
img:set(19,15,255,255,255,255)
img:set(19,14,255,255,255,255)
img:set(19,13,255,255,255,255)
img:set(19,12,255,255,255,255)
img:set(19,11,255,255,255,255)
img:set(19,10,255,0,0,255)
img:set(19,9,255,0,0,255)
img:set(19,8,255,0,0,255)
img:set(19,7,255,0,0,255)
img:set(19,6,255,0,0,255)
img:set(19,5,255,0,0,255)
img:set(19,4,255,0,0,255)
img:set(19,3,255,255,255,255)
img:set(19,2,127,127,127,255)
img:set(20,23,127,127,127,255)
img:set(20,20,127,127,127,255)
img:set(20,19,255,255,255,255)
img:set(20,18,255,255,255,255)
img:set(20,17,255,255,255,255)
img:set(20,16,255,255,255,255)
img:set(20,15,255,255,255,255)
img:set(20,14,255,255,255,255)
img:set(20,13,255,255,255,255)
img:set(20,12,255,255,255,255)
img:set(20,11,255,255,255,255)
img:set(20,10,255,0,0,255)
img:set(20,9,255,0,0,255)
img:set(20,8,255,0,0,255)
img:set(20,7,255,0,0,255)
img:set(20,6,255,0,0,255)
img:set(20,5,255,0,0,255)
img:set(20,4,255,0,0,255)
img:set(20,3,255,255,255,255)
img:set(20,2,127,127,127,255)
img:set(21,23,127,127,127,255)
img:set(21,21,127,127,127,255)
img:set(21,20,255,255,255,255)
img:set(21,19,255,255,255,255)
img:set(21,18,255,255,255,255)
img:set(21,17,255,255,255,255)
img:set(21,16,255,255,255,255)
img:set(21,15,255,255,255,255)
img:set(21,14,255,255,255,255)
img:set(21,13,255,255,255,255)
img:set(21,12,255,255,255,255)
img:set(21,11,255,255,255,255)
img:set(21,10,255,255,255,255)
img:set(21,9,255,255,255,255)
img:set(21,8,255,255,255,255)
img:set(21,7,255,255,255,255)
img:set(21,6,255,255,255,255)
img:set(21,5,255,255,255,255)
img:set(21,4,255,255,255,255)
img:set(21,3,255,255,255,255)
img:set(21,2,127,127,127,255)
img:set(22,23,127,127,127,255)
img:set(22,22,127,127,127,255)
img:set(22,21,255,255,255,255)
img:set(22,20,255,255,255,255)
img:set(22,19,255,255,255,255)
img:set(22,18,255,255,255,255)
img:set(22,17,255,255,255,255)
img:set(22,16,255,255,255,255)
img:set(22,15,255,255,255,255)
img:set(22,14,255,255,255,255)
img:set(22,13,255,255,255,255)
img:set(22,12,255,255,255,255)
img:set(22,11,255,255,255,255)
img:set(22,10,255,255,255,255)
img:set(22,9,255,255,255,255)
img:set(22,8,255,255,255,255)
img:set(22,7,255,255,255,255)
img:set(22,6,255,255,255,255)
img:set(22,5,255,255,255,255)
img:set(22,4,255,255,255,255)
img:set(22,3,255,255,255,255)
img:set(22,2,127,127,127,255)
img:set(23,23,127,127,127,255)
img:set(23,22,127,127,127,255)
img:set(23,21,127,127,127,255)
img:set(23,20,127,127,127,255)
img:set(23,19,127,127,127,255)
img:set(23,18,127,127,127,255)
img:set(23,17,127,127,127,255)
img:set(23,16,127,127,127,255)
img:set(23,15,127,127,127,255)
img:set(23,14,127,127,127,255)
img:set(23,13,127,127,127,255)
img:set(23,12,127,127,127,255)
img:set(23,11,127,127,127,255)
img:set(23,10,127,127,127,255)
img:set(23,9,127,127,127,255)
img:set(23,8,127,127,127,255)
img:set(23,7,127,127,127,255)
img:set(23,6,127,127,127,255)
img:set(23,5,127,127,127,255)
img:set(23,4,127,127,127,255)
img:set(23,3,127,127,127,255)
img:set(23,2,127,127,127,255)
return img
end
--# InfoScreen
InfoScreen = class()
-- InfoScreen
-- ver. 1.0
-- a blank slate for displaying help information.
-- ====================
function InfoScreen:init(screen)
self.screen = screen
self.frame = Frame(30, 80, WIDTH - 30, HEIGHT - 100)
end
function InfoScreen:draw()
-- fill most of the screen
pushStyle()
f = Frame(20, 70, WIDTH - 20, HEIGHT - 50)
fill(36, 36, 36, 255)
stroke(203, 203, 203, 255)
f:draw()
f = Frame(30, 80, WIDTH - 30, HEIGHT - 100)
fill(255, 255, 255, 255)
f:draw()
fill(230, 230, 230, 255)
ellipse(WIDTH / 2, HEIGHT / 2, 300)
fill(0, 0, 0, 255)
font("Baskerville-BoldItalic")
textAlign(CENTER)
fontSize(256)
fill(255, 255, 255, 255)
text("i", WIDTH / 2, HEIGHT / 2)
-- text setup
fill(0, 0, 0, 255)
font("Futura-Medium")
textAlign(CENTER)
fontSize(18)
textMode(CORNER)
textAlign(LEFT)
textWrapWidth(WIDTH - 70)
if self.screen == 1 then
text("Spritely is designed to help you create small images for use in your Codea projects.", 40, HEIGHT - 150)
text("To create a new image touch the '+' symbol at the top of the screen, then use the keyboard to name your image.", 40, HEIGHT-220)
text("If you need to rename an image, tap and hold on the image and a pop-up menu will appear. you can also use this menu to make copies of an image.", 40, HEIGHT-300)
text("To delete images, tap the Edit button then select the inages to be deleted.", 40, HEIGHT - 350)
text("Tap any image to edit.", 40, HEIGHT - 400)
text("To use an image in you project, you can tap the Print Icon on the edit screen to display the code which draws the image. Copy & paste this text into your application and you have an image ready to use with the Sprite function. It is also possible to use the image directly from global storage, or to copy it into storage dedicated to your project. A special class called SpritelyLoader is included in this project to help move images to your project. See the comments at the top of that class for more details.", 40, HEIGHT - 570)
else
text("The sliders on the left can be used to alter the size of the image, or to gain fine control over the current drawing color.", 40, HEIGHT - 150)
text("The color tray provides a set of pre-defined colors. Select these and look at the sliders to see how each color is defined.", 40, HEIGHT-220)
sprite(pencil, 55, HEIGHT - 255)
text("Edit pixel by pixel.", 85, HEIGHT - 270)
sprite(dropper, self.frame:midx() - 25, HEIGHT - 255)
text("Select colors by tapping the image.",
self.frame:midx(), HEIGHT-270)
sprite(bucket, 55, HEIGHT - 325)
text("Fill areas with color.", 85, HEIGHT - 340)
sprite(eraser, self.frame:midx() - 25, HEIGHT - 325)
text("Clear the whole image.",
self.frame:midx(), HEIGHT-340)
sprite(page, 55, HEIGHT - 395)
text("Display code for image.", 85, HEIGHT - 410)
sprite(arrows, self.frame:midx() - 25, HEIGHT - 395)
text("Flip image horizontally.",
self.frame:midx(), HEIGHT-410)
sprite(updown, 55, HEIGHT - 465)
text("Flip image vertically.", 85, HEIGHT - 480)
sprite(blur, self.frame:midx() - 25, HEIGHT - 465)
text("Blur image.",
self.frame:midx(), HEIGHT-480)
sprite(invert, 55, HEIGHT - 535)
text("Invert image.", 85, HEIGHT - 550)
sprite(rotateimg, self.frame:midx() - 25, HEIGHT - 535)
text("Rotate image.",
self.frame:midx(), HEIGHT-550)
end
popStyle()
end
--# LoadScreen
LoadScreen = class()
-- LoadScreen
-- ver. 1.0
-- a screen for loading and saving images
-- ====================
NORMALMODE = 0
EDITMODE = 1
SELECTMODE = 2
RENAMEMODE = 3
POPMODE = 4
function LoadScreen:init()
self.icons = {}
self.current = 0
self.count = 0
self.poptarget = 0
self.globalmode = false
self:loadImages() -- load existing images
self.timer = ElapsedTime -- timer for image touch
self.isVisible = true -- show the loading screen?
self.mode = NORMALMODE
self.state = nil -- last touch state
self.editBtn = TextButton(WIDTH - 110, HEIGHT - 35, "Edit")
self.doneBtn = TextButton(WIDTH - 120, HEIGHT - 35, "Done")
self.doneBtn.clr = color(44, 105, 175, 255)
self.delBtn = TextButton(WIDTH - 220, HEIGHT - 35, "Delete")
self.tb = TextBox(WIDTH / 2 - 100, HEIGHT - 250, 200, "temp")
self.cols = math.floor(WIDTH / 120)
self.screenwidth = 0
end
function LoadScreen:loadImages()
-- read existing images based on keys
local keys, k, s, i, img
self.count = 0
keys = readGlobalData("SpritelyKeys")
if keys ~= nil then
-- keys are a comma-delimited list
for k in string.gmatch(keys,"([^,]+)") do
self.count = self.count + 1
s = readGlobalData(k)
if string.len(s) < 12 then
img = image(16, 16)
else
createImage = loadstring(readGlobalData(k))
img = createImage()
end
self.icons[self.count] = SImage(k, img)
end
end
end
function saveStr(img)
local x, y, r, g, b, a
if img == nil then
return false
end
s = "local img = image("..img.width..", "..img.height..")\n"
for x = 1, img.width do
for y = 1, img.height do
r, g, b, a = img:get(x,y)
if a > 0 then
s=s.."img:set("..x..","..y..","
..r..","..g..","
..b..","..a..")\n"
end
end
end
s=s.."return img"
return(s)
end
function LoadScreen:setUpPopMenu(x, y)
p = PopMenu(x + 20, y - 30)
p.items[1]="Copy image"
p.items[2]="Rename image"
self.mode = POPMODE
self.poptarget = self.current
end
function LoadScreen:reorient()
self.screenwidth = WIDTH
menubar.y1 = HEIGHT - 40
menubar.x2 = WIDTH
menubar.y2 = HEIGHT
infoframe = Frame(WIDTH - 40, HEIGHT - 40, WIDTH, HEIGHT)
self.cols = math.floor(WIDTH / 120)
for i = 1, self.count do
row = math.floor(i / (self.cols + 0.1))
col = i - (row * self.cols) - 1
x = col * 120 + 50
y = HEIGHT - row * 135 - 180
self.icons[i].frame = Frame(x, y, x + 70, y + 80)
end
self.editBtn = TextButton(WIDTH - 110, HEIGHT - 35, "Edit")
self.doneBtn = TextButton(WIDTH - 120, HEIGHT - 35, "Done")
self.doneBtn.clr = color(44, 105, 175, 255)
self.delBtn = TextButton(WIDTH - 210, HEIGHT - 35, "Delete")
self.tb.x = WIDTH / 2 - 100
self.tb.y = HEIGHT - 250
info.frame = Frame(30, 80, WIDTH - 30, HEIGHT - 100)
end
function LoadScreen:draw()
local t, x, y, i
if WIDTH ~= self.screenwidth then
self:reorient()
end
-- menubar
menubar:shade(100, 1)
font("Futura-Medium")
textAlign(CENTER)
fontSize(24)
fill(255, 255, 255, 255)
if self.mode == NORMALMODE then
text("+", 40, HEIGHT - 15)
end
--fontSize(18)
text("Spritely", WIDTH / 2, HEIGHT - 15)
fill(50, 50, 50, 255)
ellipse(WIDTH - 25, HEIGHT - 20, 32)
font("Baskerville-BoldItalic")
textAlign(CENTER)
fontSize(24)
fill(255, 255, 255, 255)
text("i", WIDTH - 25, HEIGHT - 20)
--sprite(infoicon, WIDTH - 25, HEIGHT - 17)
fill(255, 255, 255, 255)
stroke(61, 61, 111, 255)
fill(52, 84, 112, 255)
rect(0, 0, WIDTH, HEIGHT - 41)
-- draw images
sprite("SpaceCute:Background", 1121, HEIGHT - 412)
sprite("SpaceCute:Background", 374, HEIGHT - 412)
if HEIGHT > 1000 then
pushMatrix()
rotate(180)
sprite("SpaceCute:Background", -374, HEIGHT - 888)
sprite("SpaceCute:Background", -1121, HEIGHT - 888)
popMatrix()
end
for i = 1, self.count do
self.icons[i]:draw()
t = self.icons[i].name
fill(255, 255, 255, 255)
font("Arial-BoldMT")
fontSize(16)
if string.len(t) > 10 then
t = string.sub(t, 1, 7).."..."
end
text(t, self.icons[i].frame:midx(), self.icons[i].frame.y1 - 12)
t = self.icons[i].img.width.."x"..self.icons[i].img.height
font("HelveticaNeue-Bold")
fontSize(14)
fill(222, 222, 222, 255)
text(t, self.icons[i].frame:midx(), self.icons[i].frame.y1 - 28)
end
font("Verdana")
fontSize(16)
fill(245, 245, 245, 255)
if self.mode == SELECTMODE then
text("Select images to delete.", WIDTH/2, HEIGHT - 55)
self.doneBtn:draw()
self.delBtn:draw()
elseif self.mode==NORMALMODE or self.mode == POPMODE then
text("Tap to edit. Touch and hold to rename or copy.",
WIDTH/2, HEIGHT - 55)
self.editBtn:draw()
fill(255, 255, 255, 255)
if self.count == 0 then
aframe = Frame(10, HEIGHT - 140, 210, HEIGHT - 90)
aframe:gloss()
fill(0, 0, 0, 255)
text("Create new image.", 105, HEIGHT - 110)
stroke(45, 45, 45, 255)
strokeWidth(5)
line(40, HEIGHT-45, 40, HEIGHT-85)
line(40, HEIGHT-45, 45, HEIGHT-55)
line(40, HEIGHT-45, 35, HEIGHT-55)
end
if self.mode == POPMODE then
p:draw()
end
elseif self.mode==EDITMODE or self.mode == RENAMEMODE then
self:drawEdit()
end
info.screen = 1
end
function LoadScreen:deleteSelected()
local i, d, s, k
s = ""
k = ""
for i = 1, self.count do
if not self.icons[i].sel then
if string.len(k) == 0 then
k = self.icons[i].name
else
k = k..","..self.icons[i].name
end
else
saveGlobalData(self.icons[i].name, "")
end
self.icons[i].sel = false
end
saveGlobalData("SpritelyKeys", k)
self:loadImages()
self.screenwidth = 0
self.mode = NORMALMODE
end
function LoadScreen:drawEdit()
local i, img, k
for i = 1, 40 do
stroke(100 - i, 100 - i, 100 - i, 255)
line(0, HEIGHT - i, WIDTH, HEIGHT - i)
end
fill(127, 127, 127, 255)
rect(0, 0, WIDTH, HEIGHT - 40)
fill(255, 255, 255, 255)
text("Name Image", WIDTH / 2, HEIGHT - 15)
showKeyboard()
self.doneBtn:draw()
self.tb:draw()
fill(255, 255, 255, 255)
rect(WIDTH / 2 - 42, HEIGHT - 200, 85, 110)
img = self.icons[self.current].img
sprite(img, WIDTH / 2, HEIGHT - 200 + img.height * 2,
img.width * 2, img.height * 2)
end
function LoadScreen:findImage(touch)
local i
for i = 1, self.count do
if self.icons[i].frame:touched(touch) then
self.current = i
return i
end
end
return nil
end
function LoadScreen:saveImages()
local k, s, i
k = self.icons[1].name
for i = 2, self.count do
k = k..","..self.icons[i].name
end
saveGlobalData("SpritelyKeys", k)
for i = 1, self.count do
k = self.icons[i].name
s = saveStr(self.icons[i].img)
saveGlobalData(k, s)
end
end
function LoadScreen:save()
if self.mode == EDITMODE then
-- add a new image
self.mode = NORMALMODE
self.icons[self.current].name = self.tb.text
self:saveImages()
elseif self.mode == RENAMEMODE then
-- rename an image
self.mode = NORMALMODE
--s = saveStr(self.selectedimg)
self.icons[self.current].name = self.tb.text
self:saveImages()
end
hideKeyboard()
end
function LoadScreen:checkForPopup(tt)
local i
i = self:findImage(tt)
if i ~= nil then
self.current = i
self.tb.text=self.icons[self.current].name
self:setUpPopMenu(self.icons[i].frame.x1,
self.icons[i].frame.y1)
self.mode = POPMODE
end
end
function LoadScreen:handleNormal(tt)
local i
if self.editBtn:touched(tt) then
self.mode = SELECTMODE
elseif tt.x < 65 and tt.y > HEIGHT - 40 then
self.count = self.count + 1
k = "Spritely"..self.count+1
img = image(16,16)
self.icons[self.count] = SImage(k, img)
self.current = self.count
self.tb.text = k
self.screenwidth=0
self.mode=EDITMODE
else
-- look for selected image
i = self:findImage(tt)
if i ~= nil then
self.current = i
self.tb.text=self.icons[self.current].name
self.isVisible = false
end
end
end
function LoadScreen:handleSelect(tt)
local i
i = self:findImage(tt)
if i ~= nil then
self.icons[i].sel = not self.icons[i].sel
return true
end
if self.doneBtn:touched(tt) then
self.mode = NORMALMODE
for i=1,self.count do
self.icons[i].sel = false
end
return true
end
if self.delBtn:touched(tt) then
self:deleteSelected()
return true
end
return false
end
function LoadScreen:handleEdit(tt)
if self.doneBtn:touched(tt) and
string.len(self.tb.text) > 0 then
self:save()
return true
end
end
function LoadScreen:handlePop(tt)
local i
i = p:touched(tt)
if i == nil then
self.mode = NORMALMODE
elseif i == 1 then
self.count = self.count + 1
k = "Copy of "..self.icons[self.poptarget].name
img = self.icons[self.poptarget].img:copy()
self.icons[self.count] = SImage(k, img)
self.current = self.count
self.tb.text = k
self.screenwidth = 0
self.mode=EDITMODE
elseif i == 2 then
self.mode = EDITMODE
end
end
function LoadScreen:touched(tt)
if self.mode == NORMALMODE then
self:handleNormal(tt)
elseif self.mode == SELECTMODE then
self:handleSelect(tt)
elseif self.mode == EDITMODE then
self:handleEdit(tt)
elseif self.mode == POPMODE then
self:handlePop(tt)
end
if self.mode > 4 then
self.mode = NORMALMODE
end
if infoframe:touched(tt) then
showinfo = true
end
end
--# Main
-- Spritely II
-- ver. 1.0
-- a simple image editor for Codea 1.3
-- ===================================
function setup()
displayMode(FULLSCREEN)
oldstate = nil
drawmode = 1
fromloaded = false
-- text setup
font("Futura-Medium")
textAlign(CENTER)
fontSize(24)
-- framing elements for UI
menubar = Frame(0, HEIGHT - 40, WIDTH, HEIGHT)
editframe = Frame(200, 50, 860, HEIGHT - 55)
buttonframe = Frame(865, 50, WIDTH - 5, HEIGHT - 55)
editgrid = EditGrid(205, 55, 855, 705)
editgrid.clr = color(255, 255, 255, 255)
colortray = ColorTray(10, 135, 190, 300, color(255,255,255,255))
smallpanel = SmallPanel(WIDTH - 150, 55, WIDTH - 10, 350)
sliderframe = Frame(5, 50, 195, HEIGHT - 55)
clrframe = Frame(60, 330, 140, 410)
sizesld = Slider(20, HEIGHT - 110, 180,
HEIGHT - 80, 8, 64, 16, "Size")
-- color & size sliders
sizesld = Slider(5, 240, 180, 280, 8, 32, 16, "Size")
redsld = Slider(5, 170, 180, 210, 0, 255, 255, "Red")
greensld = Slider(5, 120, 180, 160, 0, 255, 255, "Green")
bluesld = Slider(5, 70, 180, 110, 0, 255, 255, "Blue")
alphasld = Slider(5, 20, 180, 60, 0, 255, 255, "Alpha")
-- text buttons
imagesBtn = TextButton(10, HEIGHT - 35, "Images")
fullBtn = TextButton(10, 10, "Close output")
undoBtn = TextButton(WIDTH - 70, HEIGHT - 35, "Undo")
-- icon button images
ii = IconImages()
pencil = ii:getPencil()
greendot = ii:getGreenDot()
dropper = ii:getDropper()
bucket = ii:getBucket()
eraser = ii:getEraser()
page = ii:getPage()
arrows = ii:getArrows()
updown = ii:getUpDown()
blur = ii:getBlur()
rotateimg = ii:getRotate()
invert = ii:getInvert()
-- icon buttons
drawBtn = IconButton(5, 155, 45, 195, pencil)
dropperBtn = IconButton(55, 155, 95, 195, dropper)
fillBtn = IconButton(105, 155, 145, 195, bucket)
clearBtn = IconButton(5, 105, 45, 145, eraser)
printBtn = IconButton(55, 105, 95, 145,page)
mirrorBtn = IconButton(105, 105, 145, 145,arrows)
flipBtn = IconButton(5, 55, 45, 95,updown)
blurBtn = IconButton(55, 55, 95, 95, blur)
invertBtn = IconButton(105, 55, 145, 95, invert)
rotateBtn = IconButton(5, 5, 45, 45, rotateimg)
loadscreen = LoadScreen()
info = InfoScreen()
fullscreen = true
showload = true
currentimg = nil
showinfo = false
oldheight = 0
tt = Ttouch(CurrentTouch)
end
function printImage()
--print(editgrid:getString())
parameter.clear()
parameter.text("Name", "Documents:" .. loadscreen.icons[loadscreen.current].name)
parameter.action("Save", function()
f = loadstring(editgrid:getString())
if pcall(f) then
print("Saving image...")
saveImage(Name, f())
if readImage(Name) ~= nil then
print("Image saved!")
alert("Image saved!")
parameter.clear()
displayMode(FULLSCREEN)
fullscreen = true
else
print("Error saving image! Invalid name?")
alert("Error saving image! Invalid name?")
printImage()
end
else
print("Error saving image!")
alert("Error saving image!")
end
end)
parameter.action("Cancel", function()
alert("Canceled saving image!")
displayMode(FULLSCREEN)
fullscreen = true
parameter.clear()
end)
alert([[
Choose a name for
your image and
press Save to
save it to your
spritepacks, or
Cancel if you
don't want to
save.
]])
displayMode(STANDARD)
fullscreen = false
end
function drawSliderPanel()
fill(50, 50, 50, 255)
sliderframe:draw()
pushMatrix()
translate(sliderframe.x1, sliderframe.y1)
sizesld:draw()
redsld:draw()
bluesld:draw()
greensld:draw()
alphasld:draw()
stroke(201, 201, 201, 255)
line(20, 230, sliderframe:width() - 20, 230)
popMatrix()
end
function drawButtons()
fill(50, 50, 50, 255)
buttonframe:draw()
pushMatrix()
translate(buttonframe.x1, buttonframe.y1)
drawBtn:draw()
fillBtn:draw()
clearBtn:draw()
dropperBtn:draw()
printBtn:draw()
flipBtn:draw()
blurBtn:draw()
invertBtn:draw()
mirrorBtn:draw()
rotateBtn:draw()
if drawmode == 1 then
sprite(greendot, drawBtn.frame.x1 + 6, drawBtn.frame.y1 +33)
end
if drawmode == 2 then
sprite(greendot, fillBtn.frame.x1 + 6, fillBtn.frame.y1 + 33)
end
if drawmode == 3 then
sprite(greendot, dropperBtn.frame.x1+6, dropperBtn.frame.y1+33)
end
popMatrix()
undoBtn:draw()
end
function keyboard(key)
if showload and
(loadscreen.mode == EDITMODE or loadscreen.mode == RENAMEMODE) then
if key ~= nil then
if string.byte(key) == 10 then
loadscreen:save()
else
if string.byte(key) ~= 44 then -- filter out commas
loadscreen.tb:acceptKey(key)
end
end
end
end
end
function loadImage(name)
local cx, cy, gy, img, r, b, g, a
createImage = loadstring(readGlobalData(name))
img = createImage()
sizesld.val = img.width
editgrid:setImage(img)
editgrid.img2 = editgrid.img:copy()
end
function drawEditPanel()
local w
editframe:draw()
w = editframe:width() - 10
editgrid.frame = Frame(editframe.x1 + 5, editframe.y2 - w,
editframe.x2 - 5, editframe.y2 - 5)
editgrid:draw()
end
function reorient()
menubar = Frame(0, HEIGHT - 40, WIDTH, HEIGHT)
sliderframe = Frame(5, HEIGHT - 345, 195, HEIGHT - 45)
stroke(196, 196, 196, 255)
strokeWidth(1)
if HEIGHT < 1000 then
-- framing elements for UI / lanscape
colortray = ColorTray(5, 50, 195, 300, colortray.clr)
buttonframe = Frame(WIDTH - 155, HEIGHT - 250,
WIDTH - 5, HEIGHT - 45)
smallpanel = SmallPanel(WIDTH - 155, 50, WIDTH - 5, 345)
editframe = Frame(200, 50, WIDTH - 160, HEIGHT - 45)
else
-- framing elements for UI / Portrait
buttonframe = Frame(5, HEIGHT - 550, 195, HEIGHT - 350)
colortray= ColorTray(5, HEIGHT - 800, 195,
HEIGHT - 555, colortray.clr)
smallpanel = SmallPanel(5, 50, 195, HEIGHT - 805)
editframe = Frame(200, 50, WIDTH - 5, HEIGHT - 45)
end
imagesBtn = TextButton(10, HEIGHT - 35, "Images")
fullBtn = TextButton(10, 10, "Close output")
undoBtn = TextButton(WIDTH - 125, HEIGHT - 35, "Undo")
infoframe = Frame(WIDTH - 40, HEIGHT - 40, WIDTH, HEIGHT)
end
function drawMain()
local i, s
if HEIGHT ~= oldheight then reorient() end
oldheight = HEIGHT
-- title bar
menubar:shade(128, 1)
sprite("SpaceCute:Background", 1121, HEIGHT - 412)
sprite("SpaceCute:Background", 374, HEIGHT - 412)
if HEIGHT > 1000 then
pushMatrix()
rotate(180)
sprite("SpaceCute:Background", -374, HEIGHT - 888)
sprite("SpaceCute:Background", -1121, HEIGHT - 888)
popMatrix()
end
s = loadscreen.icons[loadscreen.current].name
img = loadscreen.icons[loadscreen.current].img
editframe.img = img
font("Futura-Medium")
textAlign(CENTER)
fontSize(24)
fill(255, 255, 255, 255)
text(s, WIDTH / 2, HEIGHT - 15)
-- control panels
drawSliderPanel()
drawButtons()
colortray:draw()
smallpanel:draw(editgrid:getString())
-- edit grid
drawEditPanel()
drawButtons(WIDTH - 160, HEIGHT - 350)
imagesBtn:draw()
if not fullscreen then
fullBtn:draw()
end
stroke(126, 126, 126, 255)
fill(50, 50, 50, 255)
ellipse(WIDTH - 25, HEIGHT - 20, 32)
font("Baskerville-BoldItalic")
textAlign(CENTER)
fontSize(24)
fill(255, 255, 255, 255)
text("i", WIDTH - 25, HEIGHT - 20)
info.screen = 2
end
function setSliders(r, g, b, a)
redsld.val = r
greensld.val = g
bluesld.val = b
alphasld.val = a
end
function sliderPanelTouched(touch)
local img, x, y
tt = Ttouch(touch)
tt:translate(sliderframe.x1, sliderframe.y1)
if sizesld:touched(tt) then
img = image(sizesld.val, sizesld.val)
for x = 1, editgrid.img.width do
for y = 1, editgrid.img.height do
r, g, b, a = editgrid.img:get(x, y)
c = color(r, g, b, a)
if x <= sizesld.val then
if y <= sizesld.val then
img:set(x, y, c)
end
end
end
end
editgrid.img= img:copy()
end
redsld:touched(tt)
bluesld:touched(tt)
greensld:touched(tt)
alphasld:touched(tt)
editgrid.clr = color(redsld.val, greensld.val,
bluesld.val, alphasld.val)
colortray.clr = editgrid.clr
end
function buttonPanelTouched(touch)
tt = Ttouch(touch)
sound(SOUND_HIT, 33733)
tt:translate(buttonframe.x1, buttonframe.y1)
if drawBtn:touched(tt) then
drawmode = 1
end
if dropperBtn:touched(tt) then
drawmode = 3
end
if fillBtn:touched(tt) and touch.state == BEGAN then
drawmode = 2
end
if clearBtn:touched(tt) then
editgrid:fillall(redsld.val, greensld.val, bluesld.val,
alphasld.val)
end
if printBtn:touched(tt) then
printImage()
end
if mirrorBtn:touched(tt) then
editgrid:flipHorizontal()
end
if flipBtn:touched(tt) then
editgrid:flipVertical()
end
if rotateBtn:touched(tt) then
editgrid:rotate()
end
if blurBtn:touched(tt) then
editgrid:blur(false)
end
if invertBtn:touched(tt) then
editgrid:invert()
end
if fullBtn:touched(tt) and not fullscreen then
displayMode(FULLSCREEN)
fullscreen = true
end
end
function touchMain(touch)
local i, s, c, k
if imagesBtn:touched(touch) then
-- save current image
loadscreen.mode = NORMALMODE
loadscreen.timer = ElapsedTime
s = editgrid:getString()
k = loadscreen.icons[loadscreen.current].name
saveGlobalData(k, s)
loadscreen:loadImages()
c = editgrid.clr
setSliders(c.r, c.g, c.b, c.a)
loadscreen.isVisible = true
loadscreen.screenwidth = 0
loadscreen.mode = 5
end
if editgrid:touched(touch) then
if drawmode == 1 then
editgrid:pencil()
elseif drawmode == 2 then
editgrid:floodFill()
elseif drawmode == 3 then
r,g,b,a= editgrid:getPix()
c=color(r,g,b,a)
if c ~= nil then
editgrid.clr = c
colortray.clr = c
setSliders(c.r, c.g, c.b, c.a)
end
end
end
if colortray:touched(touch) then
editgrid.clr = colortray.clr
c = editgrid.clr
setSliders(c.r, c.g, c.b, c.a)
end
if sliderframe:touched(touch) then
sliderPanelTouched(touch)
end
if touch.state == BEGAN and touch.state ~= oldstate then
if infoframe:touched(touch) then
showinfo = true
end
if undoBtn:touched(touch) then
editgrid.img = editgrid.img2:copy()
sizesld.val = editgrid.px
end
if fullBtn:touched(touch) and not fullscreen then
displayMode(FULLSCREEN)
fullscreen = true
end
if buttonframe:touched(touch) then
buttonPanelTouched(touch)
end
end
end
function draw()
local a, k
background(73, 108, 162, 255)
noSmooth()
-- screen to display
if loadscreen.isVisible then
loadscreen:draw()
else
drawMain()
end
if showinfo then
info:draw()
end
-- handle touches
if CurrentTouch.state == BEGAN and tt.state ~= CurrentTouch.state then
loadscreen.timer = ElapsedTime
end
tt = Ttouch(CurrentTouch)
if tt.state ~= ENDED and ElapsedTime > loadscreen.timer + 1 then
if loadscreen.isVisible and loadscreen.mode == NORMALMODE then
loadscreen:checkForPopup(tt)
end
end
if tt.state == ENDED and tt.state ~= oldstate then
if showinfo then
if info.frame:touched(tt) then
showinfo = false
end
elseif loadscreen.isVisible then
loadscreen:touched(tt)
if not loadscreen.isVisible then
-- transition from loadscreen to main
loadscreen.screenwidth = 0
screenwidth = 0
k = loadscreen.icons[loadscreen.current].name
loadImage(k)
loadscreen.isVisible = false
editgrid.clr = color(255, 255, 255, 255)
colortray.clr = editgrid.clr
drawmode = 1
end
end
elseif not loadscreen.isVisible and not showinfo then
touchMain(tt)
end
oldstate = tt.state
end
--# PopMenu
PopMenu = class()
-- PopMenu
-- ver. 1.0
-- a control that provides a simple menu
-- ====================
function PopMenu:init(x, y)
self.x = x
self.y = y
self.items={}
self.frames = {}
end
function PopMenu:draw()
local h, w, x, i
pushStyle()
h = 10
w = 100
for i, item in ipairs(self.items) do
h = h + 60
if string.len(item) * 20 > w then
w = string.len(item) * 20
end
end
w = w + 20
fill(0, 0, 0, 255)
rect(self.x, self.y, w, h)
textAlign(CENTER)
for i, item in ipairs(self.items) do
self.frames[i] = Frame(self.x + 10, self.y + i * 60 - 50,
self.x + w - 10, self.y + i * 60 )
self.frames[i]:gloss(color(255, 255, 255, 255))
x = self.x + w / 2
text(item, x, self.y + i * 60 - 24)
end
popStyle()
end
function PopMenu:touched(touch)
local i
for i, frame in ipairs(self.frames) do
if frame:touched(touch) then
fill(255, 14, 0, 255)
frame:draw()
return i
end
end
return nil
end
--# SImage
SImage = class()
-- SImage
-- ver. 1.0
-- image with a name & frame for display in Spritely
-- ====================
function SImage:init(name, img)
self.frame = Frame(0,0,0,0)
self.name = name
self.img = img
self.sel = false
end
function SImage:draw()
local x, y
pushStyle()
fill(220, 220, 220, 33)
strokeWidth(3)
stroke(255, 255, 255, 58)
self.frame:draw()
sprite(self.img, self.frame:midx(), self.frame:midy())
x = self.frame.x1
y = self.frame.y1
fill(255, 27, 0, 255)
if self.sel then
strokeWidth(2)
stroke(0, 0, 0, 255)
ellipse(x + 10, y + 10, 20, 20)
stroke(206, 206, 209, 255)
strokeWidth(4)
line(x+5, y+5, x+15, y+15)
line(x+5, y+15, x+15, y+5)
end
popStyle()
end
--# Slider
Slider = class()
-- Slider
-- ver. 1.0
-- a control that replicates the iparameter slider
-- ====================
function Slider:init(x1, y1, x2, y2, min, max, val, name)
self.frame = Frame(x1, y1, x2, y2)
self.min = min
self.max = max
self.name = name
self.val = val
self.scale = ((x2 - x1) - 20) / (max - min)
end
function Slider:draw()
local x, y
pushStyle()
font("Futura-Medium")
textMode(CORNER)
fontSize(12)
y = (self.frame.y1 + self.frame.y2) / 2
stroke(127, 127, 127, 255)
strokeWidth(3)
line(self.frame.x1 + 10, y, self.frame.x2 - 10, y)
fill(38, 38, 38, 255)
strokeWidth(2)
x = self.scale * (self.val - self.min) + self.frame.x1 + 10
stroke(224, 224, 224, 255)
line(self.frame.x1 + 10, y, x, y)
ellipse(x, y, 15)
fill(189, 135, 18, 255)
textAlign(RIGHT)
text(self.val, self.frame.x2 - 30, y + 12)
textAlign(LEFT)
fill(216, 216, 216, 255)
text(self.name, self.frame.x1 + 10, y + 12)
popStyle()
end
function Slider:touched(touch)
local x
if touch.state == BEGAN or touch.state == MOVING then
if self.frame:touched(touch) then
x = touch.x - self.frame.x1 - 10
self.val = math.floor(x / self.scale) + self.min
if self.val < self.min then
self.val = self.min
elseif self.val > self.max then
self.val = self.max
end
return true
end
end
end
--# SmallPanel
SmallPanel = class()
-- SmallPanel
-- ver. 1.0
-- a handy grouping of controls for Spritely.
-- ====================
function SmallPanel:init(x1, y1, x2, y2)
self.frame = Frame(x1, y1, x2, y2)
end
function SmallPanel:draw(s)
local img, x, y
createImage = loadstring(s)
img = createImage()
pushStyle()
fontSize(12)
fill(52, 52, 52, 255)
self.frame:draw()
x = self.frame:midx()
y = self.frame.y2 - 32
sprite(img, x, y)
sprite(img, x, y - 80, img.width * 2, img.height * 2)
fill(255, 255, 255, 255)
textAlign(CENTER)
text("1x", x, y - 25)
text("2x", x, y - 120)
if self.frame:height() > 200 then
sprite(img, x, y - 190, img.width * 3, img.height * 3)
text("3x", x, y - 245)
end
popStyle()
end
function SmallPanel:touched(touch)
if self.frame:touched(touch) then
return true
end
return false
end
--# SpritelyLoader
SpritelyLoader = class()
-- SpriteLoader
-- ver. 1.0
-- moves data from global to project storage
-- ====================
-- This class takes data from global and dumps it into your project.
--
-- To use this class, create an instance in your project.
-- For example: aloader = SpritelyLoader()
--
-- This call will read both keys and images from the global Spritely
-- storage and copy them into your project space.
--
-- Once in the project data, load the saved string to
-- an image using it's key. For example:
--
-- createImage = loadstring( readProjectData("bob"))
-- anImage = createImage()
-- To display your images, you'll need to load them into
-- a sprite. The command looks like this
-- sprite(anImage, 100, 100, 32, 32)
-- Good luck!
function SpritelyLoader:init()
local keys, k, s
if readGlobalData("SpritelyKeys") == nil then
print("No Spritely data found.")
else
-- read global keys
keys = readGlobalData("SpritelyKeys")
saveProjectData("SpritelyKeys", keys)
print("Moving...")
for k in string.gmatch(keys,"([^,]+)") do
print(k)
s = readGlobalData(k)
saveProjectData(k, s)
end
print("Move complete.")
end
end
--# TextBox
TextBox = class()
-- TextBox
-- ver. 1.0
-- a control for basic string editing
-- ====================
function TextBox:init(x, y, w, s)
self.x = x
self.y = y
self.w = w
self.text = s
self.blink = ElapsedTime
self.blinkstate = true
end
function TextBox:draw()
local x, w, h
pushStyle()
pushMatrix()
font("Futura-Medium")
textMode(CENTER)
fontSize(18)
rectMode(CORNER)
strokeWidth(1)
stroke(0, 0, 0, 255)
fill(228, 228, 228, 255)
translate(self.x, self.y)
rect(0, 0, self.w, 24)
stroke(255, 255, 255, 255)
--noFill()
rect(2, 2, self.w - 4, 20)
fill(22, 22, 22, 255)
text(self.text, self.w / 2, 12)
w, h = textSize(self.text)
if self.blink < ElapsedTime - 0.3 then
self.blink = ElapsedTime
self.blinkstate = not self.blinkstate
end
if self.blinkstate then
strokeWidth(2)
stroke(45, 45, 45, 255)
x = self.w / 2 + w / 2 + 2
line(x, 3, x, 21)
end
popMatrix()
popStyle()
end
function TextBox:touched(touch)
-- move cursor? For the moment, touching a textbox has no function
end
function TextBox:acceptKey(k)
if k ~= nil then
if string.byte(k) == nil then
if string.len(self.text) > 0 then
self.text = string.sub(self.text,
1, string.len(self.text) - 1)
end
end
self.text = self.text..k
end
end
--# TextButton
TextButton = class()
-- TextButton
-- ver. 1.0
-- a control for displaying a simple button
-- ====================
function TextButton:init(x, y, s)
local w, h
pushStyle()
font("Futura-Medium")
textMode(CENTER)
fontSize(18)
w, h = textSize(s)
w = w + 15
h = h + 6
self.frame = Frame(x, y, x+w, y+h)
self.w = w
self.h = h
self.text = s
self.clr = color(62, 62, 62, 255)
popStyle()
end
function TextButton:draw()
pushStyle()
stroke(0, 0, 0, 255)
font("Arial-BoldMT")
textMode(CENTER)
fontSize(14)
fill(self.clr)
self.frame:gloss(self.clr, 1)
--self.frame:draw()i
fill(255, 255, 255, 255)
text(self.text, self.frame:midx(), self.frame:midy())
popStyle()
end
function TextButton:touched(touch)
return self.frame:touched(touch)
end
--# Ttouch
Ttouch = class()
-- Translatable Touch
-- ver. 1.0
-- maps fields of a touch but is easily modified.
-- ====================.
function Ttouch:init(touch)
self.x = touch.x
self.y = touch.y
self.state = touch.state
self.prevX = touch.prevX
self.prevY = touch.prevY
self.deltaX = touch.deltaX
self.deltaY = touch.deltaY
self.id = touch.id
self.tapCount = touch.tapCount
self.timer = 0
end
function Ttouch:translate(x, y)
self.x = self.x - x
self.y = self.y - y
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment