Bureaucrats, emailconfirmed, Interface administrators, staff, Administrators, translation-admin, translator, Widget editors
154
edits
(Removed bug that resulted in using the wrong sprite if the name was unkown and setPosition calculating the right position and changing the css accordingly but storing it wrong internaly (of by 1)) |
No edit summary |
||
Line 37: | Line 37: | ||
autoScale = settings.autoscale, | autoScale = settings.autoscale, | ||
} | } | ||
setmetatable( | setmetatable(self.__settings, {__index=defaultSettings}) | ||
end | end | ||
Line 76: | Line 60: | ||
function Sprite:setPosition(pos) | function Sprite:setPosition(pos) | ||
self.__settings.pos = pos or self.__settings.pos | |||
return self | |||
end | |||
function Sprite:SetScale(scale) | |||
self.__settings.scale = scale | |||
return self | |||
end | |||
function Sprite:SetSize(size) | |||
self.__settings.scale = size / self.__settings.size | |||
return self | |||
end | |||
function Sprite:calculateStyles() | |||
styles = {} | |||
function append(key, value) styles[#styles+1]=key .. ": " .. value return table end | |||
local settings = self.__settings | local settings = self.__settings | ||
local | append ("background-size", settings.sheetWidth * settings.scale .. 'px auto') | ||
local t = settings.size * settings.scale .. 'px' | |||
append ("height", t) | |||
append ("width", t) | |||
append ("vertical-align", settings.align) | |||
local pos = self.__settings.pos - 1 | |||
local left = pos % settings.tiles * settings.size * settings.scale | local left = pos % settings.tiles * settings.size * settings.scale | ||
local top = math.floor( pos / settings.tiles ) * settings.size * settings.scale | local top = math.floor( pos / settings.tiles ) * settings.size * settings.scale | ||
append("background-position", '-' .. left .. 'px -' .. top .. 'px') | |||
return table.concat( styles, "; " ) | |||
end | end | ||
Line 101: | Line 108: | ||
sprite:addClass(source.settings.classname) | sprite:addClass(source.settings.classname) | ||
sprite:cssText( self:calculateStyles() ) | |||
sprite:cssText( | |||
return sprite | return sprite |
edits