Module:Sprite: Difference between revisions
m Revert edits by MarkusRost (talk): Accidentally broke something |
m 91 revisions imported |
||
| (6 intermediate revisions by 3 users not shown) | |||
| Line 42: | Line 42: | ||
local styles = {} | local styles = {} | ||
-- for tint | |||
local classname = setting( 'classname' ) or mw.ustring.lower( setting( 'name' ):gsub( ' ', '-' ) ) .. '-sprite' | |||
local css_image = "background" | |||
if setting( 'formask' ) then | |||
classname = classname .. '-mask' | |||
css_image = "mask" | |||
end | end | ||
sprite:addClass( classname ) | |||
local class = setting( 'class' ) | local class = setting( 'class' ) | ||
if class then | if class then | ||
| Line 60: | Line 56: | ||
end | end | ||
local size = setting( 'size' ) | local width = setting( 'width' ) or setting( 'size' ) | ||
local height = setting( 'height' ) or setting( 'size' ) | |||
local sheetWidth = setting( 'sheetsize' ) | local sheetWidth = setting( 'sheetsize' ) | ||
local tiles = sheetWidth / | local tiles = sheetWidth / width | ||
local pos = setting( 'pos' ) - 1 | local pos = setting( 'pos' ) - 1 | ||
local scale = setting( 'scale' ) | local scale = setting( 'scale' ) | ||
| Line 68: | Line 65: | ||
if pos then | if pos then | ||
local left = pos % tiles * | local left = pos % tiles * width * scale | ||
local top = math.floor( pos / tiles ) * | local top = math.floor( pos / tiles ) * height * scale | ||
styles[#styles + 1] = ' | if css_image == 'mask' then | ||
styles[#styles + 1] = '-webkit-mask-position:-' .. left .. 'px -' .. top .. 'px' | |||
end | |||
styles[#styles + 1] = css_image .. '-position:-' .. left .. 'px -' .. top .. 'px' | |||
end | end | ||
if not autoScale and scale ~= defaultStyle.scale then | if not autoScale and scale ~= defaultStyle.scale then | ||
styles[#styles + 1] = ' | if css_image == 'mask' then | ||
styles[#styles + 1] = '-webkit-mask-size:' .. sheetWidth * scale .. 'px auto' | |||
end | |||
styles[#styles + 1] = css_image .. '-size:' .. sheetWidth * scale .. 'px auto' | |||
end | end | ||
if size ~= defaultStyle.size or ( not autoScale and scale ~= defaultStyle.scale ) then | if height ~= defaultStyle.size or width ~= defaultStyle.size or ( not autoScale and scale ~= defaultStyle.scale ) then | ||
styles[#styles + 1] = 'height:' .. | styles[#styles + 1] = 'height:' .. height * scale .. 'px' | ||
styles[#styles + 1] = 'width:' .. | styles[#styles + 1] = 'width:' .. width * scale .. 'px' | ||
end | end | ||
| Line 183: | Line 186: | ||
return p.sprite( args ) | return p.sprite( args ) | ||
end | end | ||
| Line 256: | Line 236: | ||
local dataTitle = mw.title.new( 'Module:' .. dataPage ) | local dataTitle = mw.title.new( 'Module:' .. dataPage ) | ||
-- Temporary until this is updated | -- Temporary until this is updated | ||
local spritesheet = data.settings.image or data.settings.name .. 'Sprite.png' | local spritesheet = data.settings.image or data.settings.name .. 'Sprite.png' | ||
local spriteTitle = mw.title.new( 'File:' .. spritesheet ) | local spriteTitle = mw.title.new( 'File:' .. spritesheet ) | ||
| Line 272: | Line 247: | ||
['data-spritesheet'] = spritesheet, | ['data-spritesheet'] = spritesheet, | ||
['data-spriteprotection'] = spriteProtection, | ['data-spriteprotection'] = spriteProtection, | ||
['data-refreshtext'] = mw.text.nowiki( '{{#invoke:sprite|doc|' .. dataPage .. '|refresh=1}}' ), | ['data-refreshtext'] = mw.text.nowiki( '{{#invoke:sprite|doc|' .. dataPage .. '|refresh=1}}' ), | ||
['data-settings'] = mw.text.jsonEncode( data.settings ), | ['data-settings'] = mw.text.jsonEncode( data.settings ), | ||
| Line 323: | Line 297: | ||
return '', '', tostring( body ) | return '', '', tostring( body ) | ||
end | end | ||
local styles = f: | local styles = f:extensionTag( 'templatestyles', '', { src = 'Sprite/doc.css' } ) | ||
return styles, spriteStyle, tostring( body ) | return styles, spriteStyle, tostring( body ) | ||
end | end | ||
return p | return p | ||