UNPKG

mayo-gl

Version:

A light weight web 2D graphics library

2 lines (1 loc) 4.91 kB
(function(a,c){typeof exports=="object"&&typeof module!="undefined"?c(exports):typeof define=="function"&&define.amd?define(["exports"],c):(a=typeof globalThis!="undefined"?globalThis:a||self,c(a.MayoGL={}))})(this,function(a){"use strict";const c=class{constructor(t,i){return this.x=t,this.y=i,this}get(){return{x:this.x,y:this.y}}set(t,i){return this.x=t,this.y=i,this}add(t){return this.x+=t.get().x,this.y+=t.get().y,this}sub(t){return this.x-=t.get().x,this.y-=t.get().y,this}mul(t){return this.x*=t.get().x,this.y*=t.get().y,this}div(t){return this.x/=t.get().x,this.y/=t.get().y,this}};class u{constructor(t,i){this.canvas=t,this.width=i.width||t.width,this.height=i.height||t.height,this.canvas.width=this.width,this.canvas.height=this.height,this.alpha=i.alpha||!1,this.clearColor=i.clearColor||"#000000",this.ctx=this.canvas.getContext("2d",{alpha:this.alpha}),this.pixelSize=i.pixelSize||1,this.antiAlias=i.antiAlias||!1,this.ctx.imageSmoothingEnabled=this.antiAlias,this.cache={},this.clear(),this.loopFunc=()=>{},this.loopStarted=!1,this.delta=0,this.lastTime=Date.now(),this.mouse={x:0,y:0,down:!1,up:!0},this.canvas.addEventListener("mousedown",e=>{this.mouse.down=!0,this.mouse.up=!1,this.mouse.x=e.clientX,this.mouse.y=e.clientY}),this.canvas.addEventListener("mousemove",e=>{this.mouse.x=e.clientX,this.mouse.y=e.clientY}),this.canvas.addEventListener("mouseup",e=>{this.mouse.down=!1,this.mouse.up=!0})}loop(t){return this.loopFunc=t,this.loopStarted||this._loop(),this}_loop(){this.delta=(Date.now()-this.lastTime)/1e3,this.loopFunc(this,this.delta,this.canvas),this.lastTime=Date.now(),requestAnimationFrame(this._loop.bind(this))}color(...t){return"#"+t.map(i=>{let e=i.toString(16);return e.length==1?"0"+e:e}).join("")}clear(){return this.ctx.fillStyle=this.clearColor,this.ctx.clearRect(0,0,this.width,this.height),this.ctx.fillRect(0,0,this.width,this.height),this}draw(t,i){return this[t](i)}rect(t){let i=t.x||0,e=t.y||0,s=t.w||t.width||0,h=t.h||t.height||0,l=t.s||t.scale||t.size||1,r=t.color||t.c||t.fill||t.colour||"#000";return this.ctx.fillStyle=r,this.ctx.fillRect(i*this.pixelSize-s*l/2,e*this.pixelSize-h*l/2,s*this.pixelSize*l,h*this.pixelSize*l),this}circle(t){let i=t.x||0,e=t.y||0,s=t.r||t.radius||t.rad||t.radii||t.radii||0,h=t.s||t.scale||t.size||1,l=t.color||t.c||t.fill||t.colour||"#000";return this.ctx.fillStyle=l,this.ctx.beginPath(),this.ctx.arc(i*this.pixelSize,e*this.pixelSize,s*this.pixelSize*h,0,2*Math.PI),this.ctx.fill(),this}setPixel(t){let i=t.x||0,e=t.y||0,s=t.color||t.c||t.fill||t.colour||"#000";return this.ctx.fillStyle=s,this.ctx.fillRect(i*this.pixelSize,e*this.pixelSize,1*this.pixelSize,1*this.pixelSize),this}texture(t){let i=t.x||0,e=t.y||0,s=t.w||t.width||0,h=t.h||t.height||0,l=t.s||t.scale||t.size||1,r=t.i||t.img||t.image||t.texture||t.sprite||null;if(r==null)throw new Error("No image provided");this.ctx.drawImage(r,i*this.pixelSize-s*l/2,e*this.pixelSize-h*l/2,s*this.pixelSize*l,h*this.pixelSize*l)}line(t){let i=t.x1||t.x||0,e=t.y1||t.y||0,s=t.x2||0,h=t.y2||0,l=t.s||t.scale||t.size||1,r=t.w||t.width||1,y=t.color||t.c||t.fill||t.colour||"#000";return this.ctx.strokeStyle=y,this.ctx.lineWidth=r*this.pixelSize*l,this.ctx.beginPath(),this.ctx.moveTo(i*this.pixelSize,e*this.pixelSize),this.ctx.lineTo(s*this.pixelSize,h*this.pixelSize),this.ctx.stroke(),this}text(t){let i=t.x||0,e=t.y||0;t.s||t.scale||t.size;let s=t.t||t.text||t.string||t.str||t.str||"",h=t.color||t.c||t.fill||t.colour||"#000",l=t.font||"12px sans-serif";return this.ctx.fillStyle=h,this.ctx.font=l,this.ctx.fillText(s,i*this.pixelSize,e*this.pixelSize),this}polygon(t){let i=t.x||0,e=t.y||0,s=t.s||t.scale||t.size||1,h=t.points||t.p||t.vertices||t.vert||t.vertices||t.p||[],l=t.color||t.c||t.fill||t.colour||"#000";this.ctx.fillStyle=l,this.ctx.beginPath(),this.ctx.moveTo(i*this.pixelSize+h[0].x*this.pixelSize*s,e*this.pixelSize+h[0].y*this.pixelSize*s);for(let r=1;r<h.length;r++)this.ctx.lineTo(i*this.pixelSize+h[r].x*this.pixelSize*s,e*this.pixelSize+h[r].y*this.pixelSize*s);return this.ctx.closePath(),this.ctx.fill(),this}}const x=function(n){let t=new Image;return t.src=n,t},p=x,d=c,o=class extends u{setWidth(t){return this.width=t,this.canvas.width=t,this}setHeight(t){return this.height=t,this.canvas.height=t,this}resize(t,i){return this.setWidth(t),this.setHeight(i),this}setPixelSize(t){return this.pixelSize=t,this}setAlpha(t){return this.alpha=t,this.ctx.alpha=t,this}setClearColor(t){return this.clearColor=t,this}setCanvas(t){return this.canvas=t,this.ctx=t.getContext("2d",{alpha:this.alpha}),this}setContext(t){return this.ctx=t,this}setAntiAlias(t){return this.antiAlias=t,this.ctx.imageSmoothingEnabled=t,this}image(t){return x(t)}loadInCache(t,i){this.cache[i]=t}loadFromCache(t){return this.cache[t]}};a.MayoGL=o,a.MayoImage=p,a.Vector=d,Object.defineProperties(a,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});