-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathatkinson.coffee
51 lines (43 loc) · 1.67 KB
/
atkinson.coffee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
document.addEventListener "DOMContentLoaded", ->
canvas = document.createElement 'canvas'
imagewell = document.getElementById 'imagewell'
draw = (src) ->
if canvas.getContext
ctx = canvas.getContext('2d')
image = new Image()
image.src = src
image.onload = ->
canvas[prop] = image[prop] for prop in ['height', 'width']
ctx.drawImage image, 0, 0
# must be run from server (or loaded from data uri), otherwise raises 'DOM Exception 18'
imgd = ctx.getImageData(0,0,canvas.width,canvas.height);
window.worker = new Worker "worker.js"
worker.addEventListener "message", (event) ->
if event.data.image
ctx.putImageData event.data.image, 0, 0;
imagewell.src = canvas.toDataURL("image/png")
if event.data.progress
console.log event.data.progress
worker.addEventListener "error", (event) -> alert "error"
worker.postMessage imgd
imagewell.addEventListener "dragover", (event) =>
event.stopPropagation()
event.preventDefault()
, false
imagewell.addEventListener "drop", (event) =>
event.stopPropagation()
event.preventDefault()
file = event.dataTransfer.files[0]
console.log event.dataTransfer.files[0]
return false unless file.type.match('image.*')
reader = new FileReader()
reader.onload = (e) -> draw e.target.result
reader.readAsDataURL file
, false
imagewell.addEventListener "dragstart", (event) =>
console.log imagewell.src
event.dataTransfer.setData("DownloadURL",imagewell.src)
event.dataTransfer.setData("text/plain", imagewell.src)
console.log "dragging"
draw("default.png")
, false