Module:Sprite
Documentation for this module may be created at Module:Sprite/doc
local p = {}
local g = require("Module:Common")
function p.calcSpriteSheetPos(index, spriteSize, sheetSize)
local iconsOnRow = sheetSize / spriteSize
return {
top = -math.floor(index / iconsOnRow) * spriteSize,
left = -math.mod(index, iconsOnRow) * spriteSize
}
end
function p.makeSprite(image, index, spriteSize, sheetSize, link, title, align)
local output = "<span style=\"position: relative; height: "
output = output .. spriteSize .. "px; width: "
output = output .. spriteSize .. "px; overflow: hidden; display: inline-block; vertical-align: "
output = output .. (align or "middle") .. ";\"><span style=\"position: absolute; height: "
output = output .. sheetSize .. "px; width: " .. sheetSize .. "px;"
local spritePos = p.calcSpriteSheetPos(index, spriteSize, sheetSize)
if spritePos.top ~= 0 then
output = output .. "top: " .. spritePos.top .. "px;"
end
output = output .. "left: " .. spritePos.left .. "px;\">[[File:" .. image
if g.isGiven(link) then
output = output .. "|link=" .. link
end
if g.isGiven(title) then
output = output .. "|" .. title
end
output = output .. "]]</span></span>"
return output
end
function p.main(frame)
local frame, args = g.getFrameAndArgs(frame)
if not (g.isGiven(args.pos) and tonumber(args.pos)) then
args.pos = 1
end
if not (g.isGiven(args.size) and tonumber(args.size)) then
args.size = 16
end
if not (g.isGiven(args.sheetsize) and tonumber(args.sheetsize)) then
args.sheetsize = 256
end
return p.makeSprite(args.image, tonumber(args.pos) - 1, args.size,
args.sheetsize, args.link, args.title, args.align)
end
return p