UNPKG

jdenticon

Version:

Javascript identicon generator

11 lines (10 loc) 4.3 kB
// Jdenticon 1.2.0 | jdenticon.com | zlib licensed | (c) 2014-2015 Daniel Mester Pirttijärvi (function(p,r,e){var g=e(p,p.jQuery);"undefined"!==typeof module&&"exports"in module?module.exports=g:"function"===typeof define&&define.amd?define([],function(){return g}):p[r]=g})(this,"jdenticon",function(p,r){function e(){}function g(b,a,c,d){this.h=b;this.i=a;this.k=c;this.f=d}function w(b,a){this.e=b;this.g=a||g.q;b.beginPath()}function u(b,a,c){var d=(b="string"===typeof b?document.querySelector(b):b).getContext("2d");c=Math.min(b.width)*(1-2*(c===v?.08:c));d.save();d.clearRect(0,0,b.width, b.height);d.translate(0|(b.width-c)/2,0|(b.height-c)/2);x(d,a||b.getAttribute("data-jdenticon-hash"),c);d.restore()}function x(b,a,c){function d(b,c,d,f,m){f=f?parseInt(a.charAt(f),16):0;c=c[parseInt(a.charAt(d),16)%c.length];var e;for(d=0;d<m.length;d++)e=new g(m[d][0]*t,m[d][1]*t,t,f++%4),e=new w(b,e),c(e,t,d),e.fill()}function f(a){if(0<=a.indexOf(k))for(var b=0;b<a.length;b++)if(0<=l.indexOf(a[b]))return!0}function m(a){b.fillStyle=n[l[a]].toString()}if(30>c)throw Error("Jdenticon cannot render identicons smaller than 30 pixels."); if(!/^[0-9a-f]{10,}$/i.test(a))throw Error("Invalid hash passed to Jdenticon.");if(!b)throw Error("No canvas specified.");c|=0;for(var t=2*(0|c/8),h=parseInt(a.substr(-7),16)/268435455,n=[e.o(76,76,76),e.m(h,.6),e.o(230,230,230),e.m(h,.8),e.n(h,.4)],l=[],k,h=0;3>h;h++){k=parseInt(a.charAt(8+h),16)%n.length;if(f([0,4])||f([2,3]))k=1;l.push(k)}b.clearRect(0,0,c,c);m(0);d(b,y,2,3,[[1,0],[2,0],[2,3],[1,3],[0,1],[3,1],[3,2],[0,2]]);m(1);d(b,y,4,5,[[0,0],[3,0],[3,3],[0,3]]);m(2);d(b,z,1,null,[[1,1],[2, 1],[2,2],[1,2]])}function q(){var b,a="document"in p?document.getElementsByTagName("canvas"):[],c=0;for(;c<a.length;c++)(b=a[c].getAttribute("data-jdenticon-hash"))&&u(a[c],b)}var v;e.o=function(b,a,c){var d=new e;d.p="rgba("+(b&255)+","+(a&255)+","+(c&255)+","+(void 0===v?1:void 0)+")";return d};e.n=function(b,a){var c=new e;c.p="hsla("+(360*b|0)+",50%,"+(100*a|0)+"%,"+(void 0===v?1:void 0)+")";return c};e.m=function(b,a){return e.n(b,1-[.95,1,1,1,.7,.8,.8][6*b+.5|0]*(1-a))};e.prototype={toString:function(){return this.p}}; g.q=new g(0,0,0,0);g.prototype={j:function(b,a,c,d){var f=this.h+this.k,e=this.i+this.k;return 1===this.f?[f-a-(d||0),this.i+b]:2===this.f?[f-b-(c||0),e-a-(d||0)]:3===this.f?[this.h+a,e-b-(c||0)]:[this.h+b,this.i+a]}};w.prototype={b:function(b,a){var c=a?-2:2,d=a?b.length-2:0,f=this.e;f.moveTo.apply(f,this.g.j(b[d],b[d+1]));for(d+=c;d<b.length&&0<=d;d+=c)f.lineTo.apply(f,this.g.j(b[d],b[d+1]));f.closePath()},d:function(b,a,c,d,f){var e=this.e;a=this.g.j(b,a,c,d);b=a[0];a=a[1];var g=c/2*.5522848,h= d/2*.5522848,n=b+c,l=a+d;c=b+c/2;var k=a+d/2;f&&(l=a,a+=d,h=-h);e.moveTo(b,k);e.bezierCurveTo(b,k-h,c-g,a,c,a);e.bezierCurveTo(c+g,a,n,k-h,n,k);e.bezierCurveTo(n,k+h,c+g,l,c,l);e.bezierCurveTo(c-g,l,b,k+h,b,k);e.closePath()},a:function(b,a,c,d,e){this.b([b,a,b+c,a,b+c,a+d,b,a+d],e)},c:function(b,a,c,d,e,g){b=[b+c,a,b+c,a+d,b,a+d,b,a];b.splice((e||0)%4*2,2);this.b(b,g)},l:function(b,a,c,d,e){this.b([b+c/2,a,b+c,a+d/2,b+c/2,a+d,b,a+d/2],e)},fill:function(){this.e.fill()}};var z=[function(b,a){var c= .42*a;b.b([0,0,a,0,a,a-2*c,a-c,a,0,a])},function(b,a){var c=0|.5*a;b.c(a-c,0,c,0|.8*a,2)},function(b,a){var c=0|a/3;b.a(c,c,a-c,a-c)},function(b,a){var c=0|.1*a,d=0|.25*a;b.a(d,d,a-c-d,a-c-d)},function(b,a){var c=0|.15*a,d=0|.5*a;b.d(a-d-c,a-d-c,d,d)},function(b,a){var c=.1*a,d=4*c;b.a(0,0,a,a);b.b([d,d,a-c,d,d+(a-d-c)/2,a-c],!0)},function(b,a){b.b([0,0,a,0,a,.7*a,.4*a,.4*a,.7*a,a,0,a])},function(b,a){b.c(a/2,a/2,a/2,a/2,3)},function(b,a){b.a(0,0,a,a/2);b.a(0,a/2,a/2,a/2);b.c(a/2,a/2,a/2,a/2,1)}, function(b,a){var c=0|.14*a,d=0|.35*a;b.a(0,0,a,a);b.a(d,d,a-d-c,a-d-c,!0)},function(b,a){var c=.12*a,d=3*c;b.a(0,0,a,a);b.d(d,d,a-c-d,a-c-d,!0)},function(b,a){b.c(a/2,a/2,a/2,a/2,3)},function(b,a){var c=.25*a;b.a(0,0,a,a);b.l(c,c,a-c,a-c,!0)},function(b,a,c){var d=.4*a;a*=1.2;c||b.d(d,d,a,a)}],y=[function(b,a){b.c(0,0,a,a,0)},function(b,a){b.c(0,a/2,a,a/2,0)},function(b,a){b.l(0,0,a,a)},function(b,a){var c=a/6;b.d(c,c,a-2*c,a-2*c)}];q.drawIcon=x;q.update=u;q.version="1.2.0";r&&(r.fn.jdenticon= function(b,a){this.each(function(c,d){u(d,b,a)});return this});"function"===typeof setTimeout&&setTimeout(q,0);return q});