// P_3_1_3_02 /** * analysing and sorting the letters of a text * connecting subsequent letters with lines * * MOUSE * position x : interpolate between normal text and sorted position * * KEYS * 1 : toggle lines on/off * 2 : toggle text on/off * 3 : switch all letters off * 4 : switch all letters on * a-z : switch letter on/off */ var lines = []; var joinedText = []; var alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZÉÈÔ',.;:!? "; counters = [alphabet.length]; var drawLetters = [alphabet.length]; var charSize; var charColor = 0; var posX = 20; var posY = 50; var drawLines = false; var drawText = true; function preload(){ lines = loadStrings("perec.txt"); } function setup() { createCanvas(780, 780); joinedText = join(lines, " "); textFont("Courier"); textSize(10); for (var i = 0; i < alphabet.length; i++) { drawLetters[i] = true; } countCharacters(); } function draw() { background(255); noStroke(); smooth(); posX = 20; posY = 200; var oldX = 0; var oldY = 0; // go through all characters in the text to draw them for (var i = 0; i < joinedText.length; i++) { // again, find the index of the current letter in the alphabet s = str(joinedText.charAt(i)).toUpperCase(); uppercaseChar = s.charAt(0); var index = alphabet.indexOf(uppercaseChar); if (index < 0) continue; fill(87, 35, 129); textSize(18); var sortY = index*20+40; var m = map(mouseX, 50,width-50, 0,1); m = constrain(m, 0, 1); var interY = lerp(posY, sortY, m); if (drawLetters[index]) { if (drawLines) { if (oldX!=0 && oldY!=0) { stroke(181, 157, 0, 100); line(oldX,oldY, posX,interY); } oldX = posX; oldY = interY; } if (drawText) text(joinedText.charAt(i), posX, interY); } else { oldX = 0; oldY = 0; } posX += textWidth(joinedText.charAt(i)); if (posX >= width-200 && uppercaseChar == ' ') { posY += 40; posX = 20; } } } function countCharacters(){ for (var i = 0; i < joinedText.length; i++) { // get one char from the text, convert it to a string and turn it to uppercase s = str(joinedText.charAt(i)).toUpperCase(); // convert it back to a char uppercaseChar = s.charAt(0); // get the position of this char inside the alphabet string var index = alphabet.indexOf(uppercaseChar); // increase the respective counter if (index >= 0) counters[index]++; } } function keyPressed(){ if (keyCode == CONTROL) { save("P_3_1_3_02.png"); } } function keyTyped(){ if (key == '1') drawLines = !drawLines; if (key == '2') drawText = !drawText; if (key == '3') { drawText = true; for (var i = 0; i < alphabet.length; i++) { drawLetters[i] = true; } } var s = str(key).toUpperCase(); var uppercaseKey = s.charAt(0); var index = alphabet.indexOf(uppercaseKey); if (index >= 0) { drawLetters[index] = !drawLetters[index]; } }