GraphemeToColorSynthesia.java
|
package synesthesia;
import java.awt.Color;
import java.awt.Point;
import javax.swing.JOptionPane;
import javax.swing.SwingUtilities;
import painter.SPainter;
public class GraphemeToColorSynthesia {
private static final int fontsize=30;
private static final String theLetters="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
private static String[] letters;
private static Color[] colors;
private void paintingCode(){
//Initialization
SPainter painter=new SPainter("Canvas",1200,220);
painter.setScreenLocation(30,30);
painter.setFontSize(fontsize);
initializeColorMap(theLetters);
//Interpretation
while( true ){
String input=JOptionPane.showInputDialog(null,"Please enter a word, or a few words...");
if ( input==null ){input="EXIT";}
input=input.toUpperCase();
if (input.equals("EXIT")){
break;
}else if(input.equals("REMAP")){
initializeColorMap(theLetters);
showLetters(painter,theLetters);
}else{
showLetters(painter,input.toUpperCase());
}
}
painter.end();
}
private void showLetters(SPainter painter, String input) {
//Ready
eraseWhiteBoard(painter);
//Set
painter.moveTo(new Point.Double(100,100));
//Go
for(int i=0;i<input.length();i=i+1){
String letter=input.substring(i,i+1);
Color color=getLetterColor(letter);
painter.setColor(color);
painter.draw(letter);
painter.mrt(fontsize);
}
}
private Color getLetterColor(String letter) {
for(int i=0;i<letters.length;i=i+1){
if(letter.equalsIgnoreCase(letters[i])){
return colors[i];
}
}
return Color.black;
}
private void eraseWhiteBoard(SPainter painter) {
painter.setColor(Color.WHITE);
painter.wash();
painter.paintFrame(Color.BLACK,5);
}
private void initializeColorMap(String specialLetters) {
letters=new String[specialLetters.length()];
colors=new Color[specialLetters.length()];
for (int i=0;i<specialLetters.length();i=i+1){
letters[i]=specialLetters.substring(i,i+1);
colors[i]=randomColor();
}
}
private Color randomColor() {
int rv=(int)(Math.random()*256);
int gv=(int)(Math.random()*256);
int bv=(int)(Math.random()*256);
return new Color(rv,gv,bv);
}
//Infrastructure for some simple painting
public GraphemeToColorSynthesia(){
paintingCode();
}
public static void main(String[] args){
SwingUtilities.invokeLater(new Runnable() {
public void run(){
new GraphemeToColorSynthesia();
}
});
}
}