Chapter 2: Braille, Pt. 2
HTML
<input id="message" style="width: 200px" value="Raphael is great"/>
<input id="clickme" type="button" value="braille-ify" />
<div id="canvas"></div>
JavaScript
var braille = {
"A": "1",
"B": "1-2",
"C": "1-4",
"D": "1-4-5",
"E": "1-5",
"F": "1-2-4",
"G": "1-2-4-5",
"H": "1-2-5",
"I": "2-4",
"J": "2-4-5",
"K": "1-3",
"L": "1-2-3",
"M": "1-3-4",
"N": "1-3-4-5",
"O": "1-3-5",
"P": "1-2-3-4",
"Q": "1-2-3-4-5",
"R": "1-2-3-5",
"S": "2-3-4",
"T": "2-3-4-5",
"U": "1-3-6",
"V": "1-2-3-6",
"W": "2-4-5-6",
"X": "1-3-4-6",
"Y": "1-3-4-5-6",
"Z": "1-3-5-6"
};
var paper = Raphael("canvas", 500, 500),
SPACING = 14,
RADIUS = 2;
function make_dot(number) {
number -= 1; // normalize to 0-5
if (number < 0 || number > 5) {
console.log("Invalid number.");
return null;
}
// first or second column
var x = Math.floor(number / 3);
// first, second, or third row of that column
var y = number % 3;
var dot = paper.circle(x * SPACING, y * SPACING, RADIUS).attr("fill", "black");
return dot;
}
function make_cell(dots) {
// if we get a string, make it an array
if (typeof dots === "string") {
dots = dots.split("-");
}
var cell = paper.set();
for (var c = 0; c < dots.length; c += 1) {
cell.push(make_dot(dots[c]));
}
return cell;
}
function make_word(word, pos) {
pos = pos || { x: 10, y: 10};
// capitalize
word = word.toUpperCase();
var myword = paper.set();
for (var c = 0; c < word.length; c += 1) {
if (braille[word[c]]) {
var letter = make_cell(braille[word[c]]);
myword.push(letter);
letter.transform("T" + pos.x + "," + pos.y);
// move over 3 spaces -- two for the width of the letter and a space between
pos.x += SPACING * 3;
}
}
return myword;
}
function make_words(message) {
var pos = { x: 10, y: 10 },
words = message.toUpperCase().split(" "),
myset = paper.set();
for (var...