UNPKG

@litecanvas/plugin-pixel-font

Version:

Plugin to let you render a pixel font to emulate retro vibes in your Litecanvas projects.

3 lines (2 loc) 6.78 kB
(()=>{var F=[[24,60,60,24,24,,24],[54,54,,,,,,],[54,54,127,54,127,54,54],[12,62,3,30,48,31,12],[,99,51,24,12,102,99],[28,54,28,110,59,51,110],[6,6,3,,,,,],[24,12,6,6,6,12,24],[6,12,24,24,24,12,6],[,102,60,255,60,102,,],[,12,12,63,12,12,,],[,,,,,12,12,6],[,,,63,,,,],[,,,,,12,12],[96,48,24,12,6,3,1],[62,99,115,123,111,103,62],[12,14,12,12,12,12,63],[30,51,48,28,6,51,63],[30,51,48,28,48,51,30],[56,60,54,51,127,48,120],[63,3,31,48,48,51,30],[28,6,3,31,51,51,30],[63,51,48,24,12,12,12],[30,51,51,30,51,51,30],[30,51,51,62,48,24,14],[,12,12,,,12,12],[,12,12,,,12,12,6],[24,12,6,3,6,12,24],[,,63,,,63,,],[6,12,24,48,24,12,6],[30,51,48,24,12,,12],[62,99,123,123,123,3,30],[12,30,51,51,63,51,51],[63,102,102,62,102,102,63],[60,102,3,3,3,102,60],[31,54,102,102,102,54,31],[127,70,22,30,22,70,127],[127,70,22,30,22,6,15],[60,102,3,3,115,102,124],[51,51,51,63,51,51,51],[30,12,12,12,12,12,30],[120,48,48,48,51,51,30],[103,102,54,30,54,102,103],[15,6,6,6,70,102,127],[99,119,127,127,107,99,99],[99,103,111,123,115,99,99],[28,54,99,99,99,54,28],[63,102,102,62,6,6,15],[30,51,51,51,59,30,56],[63,102,102,62,54,102,103],[30,51,7,14,56,51,30],[63,45,12,12,12,12,30],[51,51,51,51,51,51,63],[51,51,51,51,51,30,12],[99,99,99,107,127,119,99],[99,99,54,28,28,54,99],[51,51,51,30,12,12,30],[127,99,49,24,76,102,127],[30,6,6,6,6,6,30],[3,6,12,24,48,96,64],[30,24,24,24,24,24,30],[8,28,54,99,,,,],[,,,,,,,255],[12,12,24,,,,,],[,,30,48,62,51,110],[7,6,6,62,102,102,59],[,,30,51,3,51,30],[56,48,48,62,51,51,110],[,,30,51,63,3,30],[28,54,6,15,6,6,15],[,,110,51,51,62,48,31],[7,6,54,110,102,102,103],[12,,14,12,12,12,30],[48,,48,48,48,51,51,30],[7,6,102,54,30,54,103],[14,12,12,12,12,12,30],[,,51,127,127,107,99],[,,31,51,51,51,51],[,,30,51,51,51,30],[,,59,102,102,62,6,15],[,,110,51,51,62,48,120],[,,59,110,102,6,15],[,,62,3,30,48,31],[8,12,62,12,12,44,24],[,,51,51,51,51,110],[,,51,51,51,30,12],[,,99,107,127,127,54],[,,99,54,28,54,99],[,,51,51,51,62,48,31],[,,63,25,12,38,63],[56,12,12,7,12,12,56],[24,24,24,,24,24,24],[7,12,12,56,12,12,7],[110,59,,,,,,]],C=(e,s,l=3)=>{for(let x=0;x<8;x++)for(let a=0;a<8;a++)(s[x]|0)&1<<a&&e.rectfill(a,x,1,1,l)},v={id:"basic",chars:F,first:33,w:8,h:8,render:C};var S=[[34,32,32],[85,0,0],[87,87,80],[99,103,32],[84,33,80],[99,101,96],[34,0,0],[33,17,32],[36,68,32],[82,80,0],[2,114,0],[0,0,33],[0,112,0],[0,0,16],[68,33,16],[117,85,112],[50,34,112],[116,113,112],[116,116,112],[85,116,64],[113,116,112],[113,117,112],[116,68,64],[117,117,112],[117,116,112],[0,32,32],[0,32,33],[66,18,64],[7,7,0],[18,66,16],[116,96,32],[37,81,96],[37,117,80],[53,53,48],[97,17,96],[53,85,48],[113,49,112],[113,49,16],[97,85,96],[85,117,80],[114,34,112],[68,69,32],[85,53,80],[17,17,112],[87,117,80],[117,85,80],[37,85,32],[117,113,16],[101,83,96],[53,53,80],[97,116,48],[114,34,32],[85,85,112],[85,82,32],[85,119,80],[85,37,80],[85,34,32],[116,33,112],[98,34,96],[17,36,64],[50,34,48],[37,0,0],[0,0,112],[18,0,0],[6,85,96],[19,85,48],[6,17,96],[70,85,96],[2,83,96],[66,114,32],[2,86,66],[17,53,80],[2,2,32],[2,2,33],[21,53,80],[34,34,64],[5,117,80],[3,85,80],[2,85,32],[3,85,49],[6,85,100],[2,81,16],[6,20,48],[39,34,64],[5,85,96],[5,82,32],[5,87,80],[5,34,80],[5,86,66],[7,65,112],[98,18,96],[34,34,32],[50,66,48],[3,96,0]],O=(e,s,l=3)=>{for(let x=0;x<6;x++)for(let a=0;a<4;a++){let f=~~(x/2);(x%2?s[f]&15:s[f]>>4)&1<<a&&e.rectfill(a,x,1,1,l)}},h={id:"mini",chars:S,first:33,w:4,h:6,render:O};var M=[[4,4,4,4,4,,4,,],[10,10,10,,,,,,],[,10,31,10,10,31,10,,],[4,30,5,14,20,15,4,,],[17,17,8,4,2,17,17,,],[6,9,9,30,9,9,22,,],[4,4,4,,,,,,],[8,4,4,4,4,4,8,,],[2,4,4,4,4,4,2,,],[,4,21,14,21,4,,,],[,4,4,31,4,4,,,],[,,,,,4,4,2],[,,,31,,,,,],[,,,,,4,4,,],[16,16,8,4,2,1,1,,],[14,17,25,21,19,17,14,,],[4,6,4,4,4,4,31,,],[14,17,16,8,4,2,31,,],[14,17,16,12,16,17,14,,],[18,18,17,31,16,16,16,,],[31,1,15,16,16,17,14,,],[14,1,1,15,17,17,14,,],[31,16,16,8,4,4,4,,],[14,17,17,14,17,17,14,,],[14,17,17,30,16,17,14,,],[,4,4,,,4,4,,],[,4,4,,,4,4,2],[,24,6,1,6,24,,,],[,,31,,31,,,,],[,3,12,16,12,3,,,],[14,17,16,8,4,,4,,],[14,25,21,21,25,1,14,,],[14,17,17,17,31,17,17,,],[15,17,17,15,17,17,15,,],[14,17,1,1,1,17,14,,],[15,17,17,17,17,17,15,,],[31,1,1,15,1,1,31,,],[31,1,1,15,1,1,1,,],[14,17,1,29,17,17,14,,],[17,17,17,31,17,17,17,,],[31,4,4,4,4,4,31,,],[16,16,16,16,17,17,14,,],[17,9,5,3,5,9,17,,],[1,1,1,1,1,1,31,,],[17,27,21,17,17,17,17,,],[17,17,19,21,25,17,17,,],[14,17,17,17,17,17,14,,],[15,17,17,15,1,1,1,,],[14,17,17,17,17,17,14,24],[15,17,17,15,17,17,17,,],[14,17,1,14,16,17,14,,],[31,4,4,4,4,4,4,,],[17,17,17,17,17,17,14,,],[17,17,17,17,10,10,4,,],[17,17,17,17,21,27,17,,],[17,17,10,4,10,17,17,,],[17,17,10,4,4,4,4,,],[31,16,8,4,2,1,31,,],[12,4,4,4,4,4,12,,],[1,1,2,4,8,16,16,,],[6,4,4,4,4,4,6,,],[4,10,17,,,,,,],[,,,,,,31,,],[2,4,,,,,,,],[,,30,17,17,17,30,,],[1,1,15,17,17,17,15,,],[,,14,17,1,17,14,,],[16,16,30,17,17,17,30,,],[,,14,17,31,1,14,,],[12,18,2,15,2,2,2,,],[,,30,17,17,17,30,16,14],[1,1,15,17,17,17,17,,],[4,,6,4,4,4,31,,],[16,,24,16,16,16,16,17,14],[1,1,17,9,7,9,17,,],[3,2,2,2,2,2,28,,],[,,15,21,21,21,21,,],[,,15,17,17,17,17,,],[,,14,17,17,17,14,,],[,,15,17,17,17,15,1,1],[,,30,17,17,17,30,16,16],[,,13,19,1,1,1,,],[,,30,1,14,16,15,,],[2,2,15,2,2,2,28,,],[,,17,17,17,17,30,,],[,,17,17,17,10,4,,],[,,17,17,21,21,10,,],[,,17,10,4,10,17,,],[,,17,17,17,17,30,16,14],[,,31,8,4,2,31,,],[8,4,4,2,4,4,8,,],[4,4,4,4,4,4,4,,],[2,4,4,8,4,4,2,,],[,,18,13,,,,,]],g={id:"basic",chars:M,first:33,w:6,h:9,render:(e,s,l=3)=>{for(let x=0;x<9;x++)for(let a=0;a<6;a++)(s[x]|0)&1<<a&&e.rectfill(a,x,1,1,l)}};var k=plugin=(e,{cache:s=!0}={})=>{if(e.stat(12)==null)throw"Plugin Pixel Font requires Litecanvas v0.99 or later";let l=e.text,x=e.textsize,a=e.textalign,f=e.textfont,u=s?new Map:null,o=1,r=null,N=t=>{o=~~Math.round(t)},z=()=>console.warn("[litecanvas/plugin-pixel-font] textalign() has not yet been implemented for pixel fonts"),y=(t,n,i,c=3)=>{e.push(),e.translate(t,n),e.scale(o),r.render(e,i,c),e.pop()},I=(t,n,i,c=3)=>{if(i+="",!o||!i.length)return;let p=o*r.w,A=o*(r.h||r.w),E=t;for(let b=0;b<i.length;b++){let w=i[b],_=w.charCodeAt();if(_===10){let m=e.stat(13)||1.2;n=n+m*r.h*o,t=E;continue}let d=r.chars[_-r.first];if(d)if(s){let m=[r.id,w,~~c,p,e.stat(12).join(",")].join(":");u.has(m)||u.set(m,e.paint(p,A,()=>{y(0,0,d,~~c)}));let T=u.get(m);e.image(t,n,T)}else y(t,n,d,c);t+=p}};if(s){let n=setInterval(()=>{u.clear()},6e4);e.listen("quit",()=>{clearInterval(n),u.clear()});let i=e.pal;e.def("pal",c=>(u.clear(),i(c)))}return{textfont:t=>{typeof t=="object"?(e.def("text",I),e.def("textsize",N),e.def("textalign",z),r=t,N(o||1)):(e.def("text",l),e.def("textsize",x),e.def("textalign",a),f(t))}}};window.pluginPixelFont=k;window.PIXEL_FONT_MINI=h;window.PIXEL_FONT_BASIC=v;window.PIXEL_FONT_MONOGRAM=g;})(); /*! Plugin Pixel Font for litecanvas by Luiz Bills | MIT Licensed */