<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3ASandbox%2FWnt%2FSprite</id>
	<title>Module:Sandbox/Wnt/Sprite - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3ASandbox%2FWnt%2FSprite"/>
	<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sandbox/Wnt/Sprite&amp;action=history"/>
	<updated>2026-04-18T02:10:24Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://stockhub.co/index.php?title=Module:Sandbox/Wnt/Sprite&amp;diff=146424&amp;oldid=prev</id>
		<title>imported&gt;Pppery at 15:30, 18 September 2020</title>
		<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sandbox/Wnt/Sprite&amp;diff=146424&amp;oldid=prev"/>
		<updated>2020-09-18T15:30:28Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt; --- The purpose of this module is to show pieces of an image file instead of the whole image.&lt;br /&gt;
 --- One intended use is within other templates, such as a template to return flags of many&lt;br /&gt;
 --- countries, so that you need to load only ONE image to produce all the flags on the page&lt;br /&gt;
 --- This should produce - but is not actually known to - some increase in performance.&lt;br /&gt;
 --- It might also be useful for pulling out entries from very large tables of graphics, such&lt;br /&gt;
 --- as one character from a font.&lt;br /&gt;
&lt;br /&gt;
 --- This module accepts a filename, and uses Template:Sprite/filename (or parameter spritedefs)&lt;br /&gt;
 --- to identify sprites within the image at filename.&lt;br /&gt;
 --- it locates a given name for a sprite within the file and scales it to the desired width&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local p={}&lt;br /&gt;
&lt;br /&gt;
function spritedraw(left,right,top,bottom,name,imagewidth,spritewidth,scalewidth,float)&lt;br /&gt;
    if (left==nil or right==nil or top==nil or bottom==nil or name==nil or imagewidth==nil or spritewidth==nil or scalewidth==nil) then return tostring(left) .. tostring(right)..tostring(top)..tostring(bottom)..tostring(name)..tostring(imagewidth)..tostring(spritewidth)..tostring(scalewidth) end&lt;br /&gt;
    if float then float=&amp;quot;float:&amp;quot;..float..&amp;quot;;&amp;quot; else float=&amp;quot;&amp;quot; end&lt;br /&gt;
    local scale=scalewidth/spritewidth&lt;br /&gt;
    top=math.floor(top*scale)&lt;br /&gt;
    bottom=math.floor(bottom*scale)&lt;br /&gt;
    left=math.floor(left*scale)&lt;br /&gt;
    right=math.floor(right*scale)&lt;br /&gt;
    local scalestring=&amp;quot;&amp;quot;&lt;br /&gt;
    if scalewidth~=spritewidth then scalestring=math.floor(imagewidth*scale)..&amp;#039;px|&amp;#039; end&lt;br /&gt;
    output=&amp;#039;&amp;lt;div style=&amp;quot;position:relative;&amp;#039;..float..&amp;#039;width:&amp;#039;..scalewidth..&amp;#039;px;height:&amp;#039;..(bottom-top)..&amp;#039;px;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;position:absolute;&amp;#039;..float..&amp;#039;top:&amp;#039;..(-1*top)..&amp;#039;px;left:&amp;#039;..(-1*left)..&amp;#039;px;clip:rect(&amp;#039;..top..&amp;#039;px,&amp;#039;..right..&amp;#039;px,&amp;#039;..bottom..&amp;#039;px,&amp;#039;..left..&amp;#039;px);&amp;quot;&amp;gt;[[Image:Flag sprite demo.png|&amp;#039;..scalestring..&amp;#039;link=http://en.wikipedia.org/wiki/&amp;#039;..name..&amp;#039;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;#039;&lt;br /&gt;
          &lt;br /&gt;
    return output&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.sprite(frame)&lt;br /&gt;
   local args=frame.args&lt;br /&gt;
   local parent=frame.getParent(frame)&lt;br /&gt;
   local pargs=parent.args&lt;br /&gt;
   local imagewidth=args.imagewidth or pargs.imagewidth or 360&lt;br /&gt;
   local spritewidth=args.spritewidth or pargs.spritewidth or 120&lt;br /&gt;
   local scalewidth=args.width or pargs.width or 120&lt;br /&gt;
   local leftcol=0;local midcol=120;local rightcol=240&lt;br /&gt;
   local filename=args.filename or pargs.filename or &amp;quot;&amp;quot;&lt;br /&gt;
   if filename==&amp;quot;&amp;quot; then return &amp;quot;error: Sprite needs filename= parameter&amp;quot; end&lt;br /&gt;
   local spritedefs=args.spritedefs or pargs.spritedefs or (&amp;quot;Module:Sandbox/Wnt/Sprite/&amp;quot;..filename)&lt;br /&gt;
   local sfile=mw.loadData(spritedefs)&lt;br /&gt;
   local name=args[1] or pargs[1] or &amp;quot;0&amp;quot;&lt;br /&gt;
   local top,bottom,left,right&lt;br /&gt;
   local count=-4;debuglog=&amp;quot;&amp;quot;&lt;br /&gt;
   local float=args.float or pargs.float --string like &amp;quot;left&amp;quot;, &amp;quot;right&amp;quot;, or nil=no float&lt;br /&gt;
   repeat&lt;br /&gt;
      count=count+5&lt;br /&gt;
      local n=sfile[count];local l=sfile[count+1];local r=sfile[count+2];local t=sfile[count+3];local b=sfile[count+4]&lt;br /&gt;
      debuglog=&amp;quot;n&amp;quot;..tostring(n)..&amp;quot;l=&amp;quot;..tostring(l)..&amp;quot;r=&amp;quot; ..tostring(r)..&amp;quot;t=&amp;quot;..tostring(t)..&amp;quot;b=&amp;quot;..tostring(b)&lt;br /&gt;
      if not(n and l and r and t and b) then return &amp;quot;error: sprite not found&amp;quot;..debuglog end&lt;br /&gt;
      if n==name or count==tonumber(name) then top=tonumber(t);bottom=tonumber(b);left=tonumber(l);right=tonumber(r);break end&lt;br /&gt;
   until false&lt;br /&gt;
   if args.nowiki or pargs.nowiki then return frame:preprocess(&amp;quot;&amp;lt;nowiki&amp;gt;&amp;quot;..spritedraw(left,right,top,bottom,name,imagewidth,spritewidth,scalewidth,float)..&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;quot;) end&lt;br /&gt;
   return spritedraw(left,right,top,bottom,name,imagewidth,spritewidth,scalewidth,float)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;Pppery</name></author>
	</entry>
</feed>