skycons.min.js 8.07 KB
/* Skycons Animated Weather Icons 
https://github.com/darkskyapp/skycons */
(function(e){"use strict";function u(e,t,n,r){e.beginPath();e.arc(t,n,r,0,s,false);e.fill()}function a(e,t,n,r,i){e.beginPath();e.moveTo(t,n);e.lineTo(r,i);e.stroke()}function f(e,t,n,r,i,o,a,f){var l=Math.cos(t*s),c=Math.sin(t*s);f-=a;u(e,n-c*i,r+l*o+f*.5,a+(1-l*.5)*f)}function l(e,t,n,r,i,s,o,u){var a;for(a=5;a--;)f(e,t+a/5,n,r,i,s,o,u)}function c(e,t,n,r,i,s,o){t/=3e4;var u=i*.21,a=i*.12,f=i*.24,c=i*.28;e.fillStyle=o;l(e,t,n,r,u,a,f,c);e.globalCompositeOperation="destination-out";l(e,t,n,r,u,a,f-s,c-s);e.globalCompositeOperation="source-over"}function h(e,t,n,r,i,o,u){t/=12e4;var f=i*.25-o*.5,l=i*.32+o*.5,c=i*.5-o*.5,h,p,d,v;e.strokeStyle=u;e.lineWidth=o;e.lineCap="round";e.lineJoin="round";e.beginPath();e.arc(n,r,f,0,s,false);e.stroke();for(h=8;h--;){p=(t+h/8)*s;d=Math.cos(p);v=Math.sin(p);a(e,n+d*l,r+v*l,n+d*c,r+v*c)}}function p(e,t,n,r,i,u,a){t/=15e3;var f=i*.29-u*.5,l=i*.05,c=Math.cos(t*s),h=c*s/-16;e.strokeStyle=a;e.lineWidth=u;e.lineCap="round";e.lineJoin="round";n+=c*l;e.beginPath();e.arc(n,r,f,h+s/8,h+s*7/8,false);e.arc(n+Math.cos(h)*f*o,r+Math.sin(h)*f*o,f,h+s*5/8,h+s*3/8,true);e.closePath();e.stroke()}function d(e,t,n,r,i,o,u){t/=1350;var a=i*.16,f=s*11/12,l=s*7/12,c,h,p,d;e.fillStyle=u;for(c=4;c--;){h=(t+c/4)%1;p=n+(c-1.5)/1.5*(c===1||c===2?-1:1)*a;d=r+h*h*i;e.beginPath();e.moveTo(p,d-o*1.5);e.arc(p,d,o*.75,f,l,false);e.fill()}}function v(e,t,n,r,i,o,u){t/=750;var f=i*.1875,l=s*11/12,c=s*7/12,h,p,d,v;e.strokeStyle=u;e.lineWidth=o*.5;e.lineCap="round";e.lineJoin="round";for(h=4;h--;){p=(t+h/4)%1;d=Math.floor(n+(h-1.5)/1.5*(h===1||h===2?-1:1)*f)+.5;v=r+p*i;a(e,d,v-o*1.5,d,v+o*1.5)}}function m(e,t,n,r,i,o,u){t/=3e3;var f=i*.16,l=o*.75,c=t*s*.7,h=Math.cos(c)*l,p=Math.sin(c)*l,d=c+s/3,v=Math.cos(d)*l,m=Math.sin(d)*l,g=c+s*2/3,y=Math.cos(g)*l,b=Math.sin(g)*l,w,E,S,x;e.strokeStyle=u;e.lineWidth=o*.5;e.lineCap="round";e.lineJoin="round";for(w=4;w--;){E=(t+w/4)%1;S=n+Math.sin((E+w/4)*s)*f;x=r+E*i;a(e,S-h,x-p,S+h,x+p);a(e,S-v,x-m,S+v,x+m);a(e,S-y,x-b,S+y,x+b)}}function g(e,t,n,r,i,s,o){t/=3e4;var u=i*.21,a=i*.06,f=i*.21,c=i*.28;e.fillStyle=o;l(e,t,n,r,u,a,f,c);e.globalCompositeOperation="destination-out";l(e,t,n,r,u,a,f-s,c-s);e.globalCompositeOperation="source-over"}function w(e,t,n,r,i,o,u){var a=i/8,f=a/3,l=2*f,c=t%1*s,h=Math.cos(c),p=Math.sin(c);e.fillStyle=u;e.strokeStyle=u;e.lineWidth=o;e.lineCap="round";e.lineJoin="round";e.beginPath();e.arc(n,r,a,c,c+Math.PI,false);e.arc(n-f*h,r-f*p,l,c+Math.PI,c,false);e.arc(n+l*h,r+l*p,f,c+Math.PI,c,true);e.globalCompositeOperation="destination-out";e.fill();e.globalCompositeOperation="source-over";e.stroke()}function E(e,t,n,r,i,s,o,u,a){t/=2500;var f=y[o],l=(t+o-b[o].start)%u,c=(t+o-b[o].end)%u,h=(t+o)%u,p,d,v,m;e.strokeStyle=a;e.lineWidth=s;e.lineCap="round";e.lineJoin="round";if(l<1){e.beginPath();l*=f.length/2-1;p=Math.floor(l);l-=p;p*=2;p+=2;e.moveTo(n+(f[p-2]*(1-l)+f[p]*l)*i,r+(f[p-1]*(1-l)+f[p+1]*l)*i);if(c<1){c*=f.length/2-1;d=Math.floor(c);c-=d;d*=2;d+=2;for(m=p;m!==d;m+=2)e.lineTo(n+f[m]*i,r+f[m+1]*i);e.lineTo(n+(f[d-2]*(1-c)+f[d]*c)*i,r+(f[d-1]*(1-c)+f[d+1]*c)*i)}else for(m=p;m!==f.length;m+=2)e.lineTo(n+f[m]*i,r+f[m+1]*i);e.stroke()}else if(c<1){e.beginPath();c*=f.length/2-1;d=Math.floor(c);c-=d;d*=2;d+=2;e.moveTo(n+f[0]*i,r+f[1]*i);for(m=2;m!==d;m+=2)e.lineTo(n+f[m]*i,r+f[m+1]*i);e.lineTo(n+(f[d-2]*(1-c)+f[d]*c)*i,r+(f[d-1]*(1-c)+f[d+1]*c)*i);e.stroke()}if(h<1){h*=f.length/2-1;v=Math.floor(h);h-=v;v*=2;v+=2;w(e,t,n+(f[v-2]*(1-h)+f[v]*h)*i,r+(f[v-1]*(1-h)+f[v+1]*h)*i,i,s,a)}}var t,n;(function(){var r=e.requestAnimationFrame||e.webkitRequestAnimationFrame||e.mozRequestAnimationFrame||e.oRequestAnimationFrame||e.msRequestAnimationFrame,i=e.cancelAnimationFrame||e.webkitCancelAnimationFrame||e.mozCancelAnimationFrame||e.oCancelAnimationFrame||e.msCancelAnimationFrame;if(r&&i){t=function(e,t){function i(){n.value=r(i);e()}var n={value:null};i();return n};n=function(e){i(e.value)}}else{t=setInterval;n=clearInterval}})();var r=500,i=.08,s=2*Math.PI,o=2/Math.sqrt(2);var y=[[-.75,-.18,-.7219,-.1527,-.6971,-.1225,-.6739,-.091,-.6516,-.0588,-.6298,-.0262,-.6083,.0065,-.5868,.0396,-.5643,.0731,-.5372,.1041,-.5033,.1259,-.4662,.1406,-.4275,.1493,-.3881,.153,-.3487,.1526,-.3095,.1488,-.2708,.1421,-.2319,.1342,-.1943,.1217,-.16,.1025,-.129,.0785,-.1012,.0509,-.0764,.0206,-.0547,-.012,-.0378,-.0472,-.0324,-.0857,-.0389,-.1241,-.0546,-.1599,-.0814,-.1876,-.1193,-.1964,-.1582,-.1935,-.1931,-.1769,-.2157,-.1453,-.229,-.1085,-.2327,-.0697,-.224,-.0317,-.2064,.0033,-.1853,.0362,-.1613,.0672,-.135,.0961,-.1051,.1213,-.0706,.1397,-.0332,.1512,.0053,.158,.0442,.1624,.0833,.1636,.1224,.1615,.1613,.1565,.1999,.15,.2378,.1402,.2749,.1279,.3118,.1147,.3487,.1015,.3858,.0892,.4236,.0787,.4621,.0715,.5012,.0702,.5398,.0766,.5768,.089,.6123,.1055,.6466,.1244,.6805,.144,.7147,.163,.75,.18],[-.75,0,-.7033,.0195,-.6569,.0399,-.6104,.06,-.5634,.0789,-.5155,.0954,-.4667,.1089,-.4174,.1206,-.3676,.1299,-.3174,.1365,-.2669,.1398,-.2162,.1391,-.1658,.1347,-.1157,.1271,-.0661,.1169,-.017,.1046,.0316,.0903,.0791,.0728,.1259,.0534,.1723,.0331,.2188,.0129,.2656,-.0064,.3122,-.0263,.3586,-.0466,.4052,-.0665,.4525,-.0847,.5007,-.1002,.5497,-.113,.5991,-.124,.6491,-.1325,.6994,-.138,.75,-.14]],b=[{start:.36,end:.11},{start:.56,end:.16}];var S=function(e){this.list=[];this.interval=null;this.color=e&&e.color?e.color:"#fff";this.resizeClear=!!(e&&e.resizeClear)};S.CLEAR_DAY=function(e,t,n){var r=e.canvas.width,s=e.canvas.height,o=Math.min(r,s);h(e,t,r*.5,s*.5,o,o*i,n)};S.CLEAR_NIGHT=function(e,t,n){var r=e.canvas.width,s=e.canvas.height,o=Math.min(r,s);p(e,t,r*.5,s*.5,o,o*i,n)};S.PARTLY_CLOUDY_DAY=function(e,t,n){var r=e.canvas.width,s=e.canvas.height,o=Math.min(r,s);h(e,t,r*.625,s*.375,o*.75,o*i,n);c(e,t,r*.375,s*.625,o*.75,o*i,n)};S.PARTLY_CLOUDY_NIGHT=function(e,t,n){var r=e.canvas.width,s=e.canvas.height,o=Math.min(r,s);p(e,t,r*.667,s*.375,o*.75,o*i,n);c(e,t,r*.375,s*.625,o*.75,o*i,n)};S.CLOUDY=function(e,t,n){var r=e.canvas.width,s=e.canvas.height,o=Math.min(r,s);c(e,t,r*.5,s*.5,o,o*i,n)};S.RAIN=function(e,t,n){var r=e.canvas.width,s=e.canvas.height,o=Math.min(r,s);d(e,t,r*.5,s*.37,o*.9,o*i,n);c(e,t,r*.5,s*.37,o*.9,o*i,n)};S.SLEET=function(e,t,n){var r=e.canvas.width,s=e.canvas.height,o=Math.min(r,s);v(e,t,r*.5,s*.37,o*.9,o*i,n);c(e,t,r*.5,s*.37,o*.9,o*i,n)};S.SNOW=function(e,t,n){var r=e.canvas.width,s=e.canvas.height,o=Math.min(r,s);m(e,t,r*.5,s*.37,o*.9,o*i,n);c(e,t,r*.5,s*.37,o*.9,o*i,n)};S.WIND=function(e,t,n){var r=e.canvas.width,s=e.canvas.height,o=Math.min(r,s);E(e,t,r*.5,s*.5,o,o*i,0,2,n);E(e,t,r*.5,s*.5,o,o*i,1,2,n)};S.FOG=function(e,t,n){var r=e.canvas.width,o=e.canvas.height,u=Math.min(r,o),f=u*i;g(e,t,r*.5,o*.32,u*.75,f,n);t/=5e3;var l=Math.cos(t*s)*u*.02,c=Math.cos((t+.25)*s)*u*.02,h=Math.cos((t+.5)*s)*u*.02,p=Math.cos((t+.75)*s)*u*.02,d=o*.936,v=Math.floor(d-f*.5)+.5,m=Math.floor(d-f*2.5)+.5;e.strokeStyle=n;e.lineWidth=f;e.lineCap="round";e.lineJoin="round";a(e,l+r*.2+f*.5,v,c+r*.8-f*.5,v);a(e,h+r*.2+f*.5,m,p+r*.8-f*.5,m)};S.prototype={_determineDrawingFunction:function(e){if(typeof e==="string"){e=e.toUpperCase().replace(/-/g,"_");return S.hasOwnProperty(e)?S[e]:null}},add:function(e,t){var n;if(typeof e==="string")e=document.getElementById(e);if(e===null)return;t=this._determineDrawingFunction(t);if(typeof t!=="function")return;n={element:e,context:e.getContext("2d"),drawing:t};this.list.push(n);this.draw(n,r)},set:function(e,t){var n;if(typeof e==="string")e=document.getElementById(e);for(n=this.list.length;n--;)if(this.list[n].element===e){this.list[n].drawing=this._determineDrawingFunction(t);this.draw(this.list[n],r);return}this.add(e,t)},remove:function(e){var t;if(typeof e==="string")e=document.getElementById(e);for(t=this.list.length;t--;)if(this.list[t].element===e){this.list.splice(t,1);return}},draw:function(e,t){var n=e.context.canvas;if(this.resizeClear)n.width=n.width;else e.context.clearRect(0,0,n.width,n.height);e.drawing(e.context,t,this.color)},play:function(){var e=this;this.pause();this.interval=t(function(){var t=Date.now(),n;for(n=e.list.length;n--;)e.draw(e.list[n],t)},1e3/60)},pause:function(){var e;if(this.interval){n(this.interval);this.interval=null}}};e.Skycons=S})(this)