Skip to content

Instantly share code, notes, and snippets.

@pketh
Last active July 21, 2016 19:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pketh/43c2634c8652ba89a9b6dad5a7de05e9 to your computer and use it in GitHub Desktop.
Save pketh/43c2634c8652ba89a9b6dad5a7de05e9 to your computer and use it in GitHub Desktop.
hyperdev project avatar generator
_ = require 'underscore'
randomColor = require 'randomcolor'
AVATAR_SIZE = 200
module.exports = (application) ->
self =
sharedPanelAttributes: (context) ->
context.miterLimit = 4
context.fillStyle = randomColor()
context.shadowColor = 'rgba(0,0,0,.3)'
context.shadowBlur = 1
context.shadowOffsetX = 0
context.shadowOffsetY = 2
context.fill()
canvasPanel:
one: (context) ->
context.beginPath()
context.moveTo(0, 200)
context.lineTo(200, 200)
context.lineTo(200, 0)
context.lineTo(0, 0)
context.lineTo(0, 200)
context.closePath()
context.moveTo(16.01, 100)
context.bezierCurveTo(16.01, 60.64, 43.3, 27.65, 80, 18.93)
context.lineTo(80, 181.07)
context.bezierCurveTo(43.3, 172.35, 16.01, 139.36, 16.01, 100)
context.lineTo(16.01, 100)
context.closePath()
context.moveTo(120, 181.07)
context.lineTo(120, 18.93)
context.bezierCurveTo(156.7, 27.65, 183.99, 60.64, 183.99, 100)
context.bezierCurveTo(183.99, 139.36, 156.7, 172.35, 120, 181.07)
context.lineTo(120, 181.07)
context.closePath()
self.sharedPanelAttributes context
two: (context) ->
context.beginPath()
context.moveTo(0, 200)
context.lineTo(200, 200)
context.lineTo(200, 0)
context.lineTo(0, 0)
context.lineTo(0, 200)
context.closePath()
context.moveTo(80, 164)
context.lineTo(7.67, 100)
context.lineTo(80, 36)
context.lineTo(80, 164)
context.lineTo(80, 164)
context.closePath()
context.moveTo(119.91, 164.33)
context.lineTo(119.91, 35.67)
context.lineTo(192.33, 100)
context.lineTo(119.91, 164.33)
context.lineTo(119.91, 164.33)
context.closePath()
self.sharedPanelAttributes context
three: (context) ->
context.beginPath()
context.moveTo(0, 200)
context.lineTo(200, 200)
context.lineTo(200, 0)
context.lineTo(0, 0)
context.lineTo(0, 200)
context.closePath()
context.moveTo(31.33, 145.67)
context.lineTo(168.67, 145.67)
context.lineTo(168.67, 164)
context.lineTo(31.33, 164)
context.lineTo(31.33, 145.67)
context.closePath()
context.moveTo(31.33, 108.33)
context.lineTo(168.67, 108.33)
context.lineTo(168.67, 126.67)
context.lineTo(31.33, 126.67)
context.lineTo(31.33, 108.33)
context.closePath()
context.moveTo(31.33, 73)
context.lineTo(168.67, 73)
context.lineTo(168.67, 91.33)
context.lineTo(31.33, 91.33)
context.lineTo(31.33, 73)
context.closePath()
context.moveTo(31.33, 35.67)
context.lineTo(168.67, 35.67)
context.lineTo(168.67, 54)
context.lineTo(31.33, 54)
context.lineTo(31.33, 35.67)
context.closePath()
self.sharedPanelAttributes context
four: (context) ->
context.beginPath()
context.moveTo(0, 200)
context.lineTo(200, 200)
context.lineTo(200, 0)
context.lineTo(0, 0)
context.lineTo(0, 200)
context.closePath()
context.moveTo(192.33, 102.27)
context.bezierCurveTo(192.33, 115.99, 181.44, 127.12, 168.01, 127.12)
context.lineTo(31.99, 127.12)
context.bezierCurveTo(18.56, 127.12, 7.67, 115.99, 7.67, 102.27)
context.lineTo(7.67, 97.65)
context.bezierCurveTo(7.67, 83.92, 18.56, 72.79, 31.99, 72.79)
context.lineTo(168.01, 72.79)
context.bezierCurveTo(181.44, 72.79, 192.33, 83.92, 192.33, 97.65)
context.lineTo(192.33, 102.27)
context.lineTo(192.33, 102.27)
context.closePath()
self.sharedPanelAttributes context
five: (context) ->
context.beginPath()
context.moveTo(0, 200)
context.lineTo(200, 200)
context.lineTo(200, 0)
context.lineTo(0, 0)
context.lineTo(0, 200)
context.closePath()
context.moveTo(16.67, 35.33)
context.lineTo(31.33, 35.33)
context.lineTo(31.33, 165.33)
context.lineTo(16.67, 165.33)
context.lineTo(16.67, 35.33)
context.closePath()
context.moveTo(33.67, 168.67)
context.lineTo(163.67, 168.67)
context.lineTo(163.67, 183.33)
context.lineTo(33.67, 183.33)
context.lineTo(33.67, 168.67)
context.closePath()
context.moveTo(80.67, 100)
context.bezierCurveTo(80.67, 89.32, 89.32, 80.67, 100, 80.67)
context.bezierCurveTo(110.68, 80.67, 119.33, 89.32, 119.33, 100)
context.bezierCurveTo(119.33, 110.68, 110.68, 119.33, 100, 119.33)
context.bezierCurveTo(89.32, 119.33, 80.67, 110.68, 80.67, 100)
context.lineTo(80.67, 100)
context.closePath()
context.moveTo(35.33, 16.67)
context.lineTo(165.33, 16.67)
context.lineTo(165.33, 31.33)
context.lineTo(35.33, 31.33)
context.lineTo(35.33, 16.67)
context.closePath()
context.moveTo(168.67, 35.33)
context.lineTo(183.33, 35.33)
context.lineTo(183.33, 165.33)
context.lineTo(168.67, 165.33)
context.lineTo(168.67, 35.33)
context.closePath()
self.sharedPanelAttributes context
six: (context) ->
context.beginPath()
context.moveTo(0, 200)
context.lineTo(200, 200)
context.lineTo(200, 0)
context.lineTo(0, 0)
context.lineTo(0, 200)
context.closePath()
context.moveTo(41.42, 40.75)
context.lineTo(159, 40.75)
context.lineTo(159, 158.33)
context.lineTo(41.42, 158.33)
context.lineTo(41.42, 40.75)
context.closePath()
self.sharedPanelAttributes context
new: ->
canvas = document.createElement 'canvas'
canvas.width = AVATAR_SIZE
canvas.height = AVATAR_SIZE
context = canvas.getContext '2d'
panels = _.shuffle [
'one'
'two'
'three'
'four'
'five'
'six'
]
for panel in panels
self.canvasPanel[panel] context
canvas.toDataURL()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment