|  |  |  | /* | 
					
						
							|  |  |  |  * vim: ts=4:sw=4:expandtab | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | (function () { | 
					
						
							|  |  |  |     'use strict'; | 
					
						
							|  |  |  |     window.Whisper = window.Whisper || {}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /* | 
					
						
							|  |  |  |     * Render an avatar identicon to an svg for use in a notification. | 
					
						
							|  |  |  |     */ | 
					
						
							|  |  |  |     Whisper.IdenticonSVGView = Whisper.View.extend({ | 
					
						
							|  |  |  |         templateName: 'identicon-svg', | 
					
						
							|  |  |  |         initialize: function(options) { | 
					
						
							|  |  |  |             this.render_attributes = options; | 
					
						
							|  |  |  |             this.render_attributes.color = COLORS[this.render_attributes.color]; | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |         getSVGUrl: function() { | 
					
						
							|  |  |  |             var html = this.render().$el.html(); | 
					
						
							|  |  |  |             var svg = new Blob([html], {type: 'image/svg+xml;charset=utf-8'}); | 
					
						
							|  |  |  |             return URL.createObjectURL(svg); | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |         getDataUrl: function() { | 
					
						
							|  |  |  |             var svgurl = this.getSVGUrl(); | 
					
						
							|  |  |  |             return new Promise(function(resolve) { | 
					
						
							|  |  |  |                 var img = document.createElement('img'); | 
					
						
							|  |  |  |                 img.onload = function () { | 
					
						
							|  |  |  |                     var canvas = loadImage.scale(img, { | 
					
						
							|  |  |  |                         canvas: true, maxWidth: 100, maxHeight: 100 | 
					
						
							|  |  |  |                     }); | 
					
						
							|  |  |  |                     var ctx = canvas.getContext('2d'); | 
					
						
							|  |  |  |                     ctx.drawImage(img, 0, 0); | 
					
						
							|  |  |  |                     URL.revokeObjectURL(svgurl); | 
					
						
							|  |  |  |                     resolve(canvas.toDataURL('image/png')); | 
					
						
							|  |  |  |                 }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 img.src = svgurl; | 
					
						
							|  |  |  |             }); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     var COLORS = { | 
					
						
							|  |  |  |         red         : '#EF5350', | 
					
						
							|  |  |  |         pink        : '#EC407A', | 
					
						
							|  |  |  |         purple      : '#AB47BC', | 
					
						
							|  |  |  |         deep_purple : '#7E57C2', | 
					
						
							|  |  |  |         indigo      : '#5C6BC0', | 
					
						
							|  |  |  |         blue        : '#2196F3', | 
					
						
							|  |  |  |         light_blue  : '#03A9F4', | 
					
						
							|  |  |  |         cyan        : '#00BCD4', | 
					
						
							|  |  |  |         teal        : '#009688', | 
					
						
							|  |  |  |         green       : '#4CAF50', | 
					
						
							|  |  |  |         light_green : '#7CB342', | 
					
						
							|  |  |  |         orange      : '#FF9800', | 
					
						
							|  |  |  |         deep_orange : '#FF5722', | 
					
						
							|  |  |  |         amber       : '#FFB300', | 
					
						
							|  |  |  |         blue_grey   : '#607D8B' | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | })(); |