Module:Sprite: Difference between revisions
No edit summary |
m 91 revisions imported |
||
| (12 intermediate revisions by 6 users not shown) | |||
| Line 36: | Line 36: | ||
local sprite = mw.html.create( 'span' ):addClass( 'sprite' ) | local sprite = mw.html.create( 'span' ):addClass( 'sprite' ) | ||
-- mw.html's css method performs very slow escaping, which doubles the time it takes | -- mw.html's css method performs very slow escaping, which doubles the time it takes | ||
| Line 43: | 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 61: | 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 69: | 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 94: | Line 96: | ||
local spriteText | local spriteText | ||
if text then | if text then | ||
root = mw.html.create( 'span' ):addClass( 'nowrap' ) | if not args['wrap'] then | ||
root = mw.html.create( 'span' ):addClass( 'nowrap' ) | |||
end | |||
spriteText = mw.html.create( 'span' ):addClass( 'sprite-text' ):wikitext( text ) | spriteText = mw.html.create( 'span' ):addClass( 'sprite-text' ):wikitext( text ) | ||
end | end | ||
| Line 147: | Line 151: | ||
local disallowCats = args.nocat or title.isTalkPage or title.nsText:find( '^User' ) | local disallowCats = args.nocat or title.isTalkPage or title.nsText:find( '^User' ) | ||
if idData then | if idData then | ||
if idData.deprecated | if idData.deprecated then | ||
args.class = ( args.class or '' ) .. ' sprite-deprecated' | |||
if not disallowCats then | |||
categories[#categories + 1] = f:expandTemplate{ title = 'Translation category', args = { 'Pages using deprecated sprite names', project = 0 } } | |||
end | |||
end | end | ||
| Line 179: | Line 186: | ||
return p.sprite( args ) | return p.sprite( args ) | ||
end | end | ||
| Line 246: | 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 262: | 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 313: | 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 | ||