Module:Sprite: Difference between revisions
Allow separate height and width |
m rebase dev changes onto prod |
||
| 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 71: | Line 67: | ||
local left = pos % tiles * width * scale | local left = pos % tiles * width * scale | ||
local top = math.floor( pos / tiles ) * height * scale | 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 height ~= defaultStyle.size or width ~= 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 | ||
| Line 184: | Line 186: | ||
return p.sprite( args ) | return p.sprite( args ) | ||
end | end | ||
| Line 257: | 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 273: | 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 324: | 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 | ||