local image
image = sorcery.lib.class {
__concat = function(self,with) return self:blit(with) end;
__tostring = function(self) return self:render() end;
construct = function(file) return {
string = file;
atop = {};
fx = {};
render = function(self)
local str = ''
for _,i in pairs(self.atop) do
str = '(' .. i:render() .. ')^' .. str
end
local bracket = false
if str ~= '' then str = str .. '(' bracket = true end
str = str .. self.string
for _,e in pairs(self.fx) do
str = str .. '^[' .. e
-- be sure to escape ones that take arguments
-- correctly!
end
if bracket then str = str .. ')' end
return str
end;
blit = function(self, img)
if img then return image.change(self, {
atop = sorcery.lib.tbl.append(self.atop, {img})
}) else return self end
end;
multiply = function(self, color)
return image.change(self, {
fx = sorcery.lib.tbl.append(self.fx, {'multiply:' .. tostring(color)})
})
end;
colorize = function(self, color, ratio)
return image.change(self, {
fx = sorcery.lib.tbl.append(self.fx, {'colorize:' .. tostring(color) .. ':' .. ratio})
})
end;
fade = function(self, fac)
return image.change(self, {
fx = sorcery.lib.tbl.append(self.fx, {'opacity:' .. (255 - 255*fac)})
})
end;
transform = function(self, kind)
return image.change(self, {
fx = sorcery.lib.tbl.append(self.fx, {'transform' .. tostring(kind)})
})
end;
} end;
}
return image