forked from ax1x0/Bookmarklets
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMouse light
1 lines (1 loc) · 2.37 KB
/
Mouse light
1
javascript:krazete:var style=document.createElement("style"),canvas=(document.body.appendChild(style),document.createElement("canvas")),context=(canvas.id="canvas",document.body.appendChild(canvas),canvas.getContext("2d"));function outlineBounds(){context.clearRect(0,0,window.innerWidth,window.innerHeight),context.beginPath(),Array.from(document.querySelectorAll("*")).map(function(t){return t.getBoundingClientRect()}).filter(function(t){var n=window.scrollY<t.bottom||t.top<window.scrollY+window.innerHeight,t=window.scrollX<t.right||t.left<window.scrollX+window.innerWidth;return n&&t}).forEach(function(t){context.rect(t.left,t.top,t.right-t.left,t.bottom-t.top)}),context.stroke()}function fillBounds(){context.clearRect(0,0,window.innerWidth,window.innerHeight),context.fillStyle="#00000011",Array.from(document.querySelectorAll("*")).map(function(t){return t.getBoundingClientRect()}).filter(function(t){var n=window.scrollY<t.bottom||t.top<window.scrollY+window.innerHeight,t=window.scrollX<t.right||t.left<window.scrollX+window.innerWidth;return n&&t}).forEach(function(t){context.fillRect(t.left,t.top,t.right-t.left,t.bottom-t.top)})}function resizeCanvas(){style.innerHTML=%60#canvas { position: fixed; left: 0; top: 0; width: 100%25; height: 100%25; z-index: 9999; pointer-events: none; }%60,canvas.width=window.innerWidth,canvas.height=window.innerHeight,fillBounds()}resizeCanvas(),window.addEventListener("scroll",fillBounds),window.addEventListener("resize",resizeCanvas);var pixelSize=8,halfPixel=Math.floor(pixelSize/2);function drawPixel(t,n,e,i,o,r){context.fillStyle="rgba("+[e,i,o,r].join(", ")+")",context.fillRect(t-halfPixel,n-halfPixel,pixelSize,pixelSize)}function distanceSquared(t,n){var e=n.x-t.x,n=n.y-t.y;return e*e+n*n}function main(t){fillBounds();var n=context.getImageData(0,0,context.canvas.width,context.canvas.height).data;context.clearRect(0,0,context.canvas.width,context.canvas.height);for(var e=0;e<context.canvas.width;e+=pixelSize)for(var i=0;i<context.canvas.height;i+=pixelSize){var o={x:e,y:i},r=1/distanceSquared(o,t),a=0,l=255,c=255,o=1/distanceSquared(o,{x:window.innerWidth-t.x,y:window.innerHeight-t.y}),d=255,w=0,s=0,h=r+o,a=Math.floor((a*r+d*o)/h),d=Math.floor((l*r+w*o)/h),l=Math.floor((c*r+s*o)/h);1e-6<h&&(w=256*h*(256-n[4*(e+i*window.innerWidth)+3]),drawPixel(e,i,Math.floor(a*w),Math.floor(d*w),Math.floor(l*w),1-w))}}window.addEventListener("mousemove",main);