/* By ming, v3 */ EXT = window.EXT || {_initfunc: []}; EXT._initfunc.push(function(){ var addon = EXT.draw = {__proto__: null}; addon.lineLife = 25; var p = document.createElement("canvas"); p.id = "drawboard"; p.style = "position: absolute; top: 0; left: 0; z-index: 400; pointer-events: none;"; p.width = window.innerWidth; p.height = window.innerHeight; document.body.appendChild(p); var dbctx = p.getContext("2d"); var shifted = false; var clicking = false; $(document).on('mousedown', (e)=>{ if(e.shiftKey){ clicking = true; draw(); e.preventDefault(); }}); $(document).on('mouseup', (e)=>{ clicking = false; }); $(document).on('keyup keydown', (e)=>{ shifted = e.shiftKey; }); addon.enabled = true; addon.customColor = null; addon.ctx = dbctx; addon.onrefresh = []; addon.brushSize = 2; addon.mutes = []; addon.lines = []; addon.buf = [{n: "ldraw", v: 0}]; function resize(){ p.width = window.innerWidth; p.height = window.innerHeight; } window.addEventListener('resize', resize, false); addon.flushloop = setInterval(()=>{ var t = Date.now(); if(addon.buf.length != 1){ if(addon.buf.length>1) MPP.client.sendArray([{m: "n", t: t, n: addon.buf}]); addon.buf = [{n: "ldraw", v: 0}]; } }, 200); addon.onrefresh.push(function(t){ if(addon.lines.length){ dbctx.clearRect(0,0,window.innerWidth, window.innerHeight); for(var l = 0; l> 8; } while (ch); st = st.reverse(); for(var k=0;k255||y>255||x2>255||y2>255)return; var b = new ArrayBuffer(4); var dv = new DataView(b); dv.setUint8(0, x); dv.setUint8(1, y); dv.setUint8(2, x2); dv.setUint8(3, y2); var str = String.fromCharCode.apply(null, new Uint8Array(b)); var clr = color || addon.customColor || MPP.client.getOwnParticipant().color; addon.buf.push({n: str, v: Math.min(s||1, 5), d: parseInt(clr.slice(1), 16)}); parseLine(str, clr, Math.min(s||1, 5)); } addon.tohtml = function(c) { c = c.toString(16); return '#' + ('000000' + c).substring(c.length); }; MPP.client.on('n', (msg) => { if(msg.n[0].n == "ldraw" && addon.mutes.indexOf(MPP.client.findParticipantById(msg.p)._id) === -1){ msg.n.reduce(function(a, b){ if(b.n.length == 4){ var clr = (b.d !== undefined && addon.tohtml(b.d)) || MPP.client.findParticipantById(msg.p).color; parseLine(b.n, clr, Math.min(b.v,5)); } }); } }); MPP.client.on('c', ()=>{ addon.lines = [[0,0,0,0,0,0,"#0"]]; }); });