25.02.2013 Views

Peter Lubbers - Pro HTML 5 Programming

Pro HTML 5 Programming

Pro HTML 5 Programming

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

}<br />

}<br />

CHAPTER 8 ■ USING THE <strong>HTML</strong>5 WEB WORKERS API<br />

"width" : e.data.width,<br />

"height" : e.data.height,<br />

"startX" : e.data.startX<br />

});<br />

sendStatus("Finished blur on data in range: " +<br />

e.data.startX + "-" + (e.data.width+e.data.startX));<br />

break;<br />

default:<br />

sendStatus("Worker got message: " + e.data);<br />

addEventListener("message", messageHandler, true);<br />

Listing 8-9. Content of the file blur.js<br />

function inRange(i, width, height) {<br />

return ((i>=0) && (i < width*height*4));<br />

}<br />

function averageNeighbors(imageData, width, height, i) {<br />

var v = imageData[i];<br />

}<br />

// cardinal directions<br />

var north = inRange(i-width*4, width, height) ? imageData[i-width*4] : v;<br />

var south = inRange(i+width*4, width, height) ? imageData[i+width*4] : v;<br />

var west = inRange(i-4, width, height) ? imageData[i-4] : v;<br />

var east = inRange(i+4, width, height) ? imageData[i+4] : v;<br />

// diagonal neighbors<br />

var ne = inRange(i-width*4+4, width, height) ? imageData[i-width*4+4] : v;<br />

var nw = inRange(i-width*4-4, width, height) ? imageData[i-width*4-4] : v;<br />

var se = inRange(i+width*4+4, width, height) ? imageData[i+width*4+4] : v;<br />

var sw = inRange(i+width*4-4, width, height) ? imageData[i+width*4-4] : v;<br />

// average<br />

var newVal = Math.floor((north + south + east + west + se + sw + ne + nw + v)/9);<br />

if (isNaN(newVal)) {<br />

sendStatus("bad value " + i + " for height " + height);<br />

throw new Error("NaN");<br />

}<br />

return newVal;<br />

function boxBlur(imageData, width, height) {<br />

var data = [];<br />

var val = 0;<br />

211

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!