GraphemeToColorSynesthesia.java
|
1 package synesthesia;
2
3 import java.awt.*;
4 import javax.swing.*;
5 import painter.SPainter;
6
7
8 public class GraphemeToColorSynesthesia {
9
10 private static final int fontsize = 30;
11 private static final String theLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
12 private static String[] letters;
13 private static Color[] colors;
14
15 private void paintingCode() {
16 SPainter miro = new SPainter("painter",1200, 220);
17 miro.setScreenLocation(30, 30);
18 miro.setFontSize(fontsize);
19 initializeColorMap(theLetters);
20
21 while( true ){
22 String input = JOptionPane.showInputDialog(null, "Please enter a word, or a few words...");
23 if ( input == null ) { input = "EXIT"; }
24 input = input.toUpperCase();
25 if ( input.equals("EXIT" ) ) {
26 break;
27 } else if ( input.equals("REMAP") ) {
28 initializeColorMap(theLetters);
29 showLetters(miro, theLetters);
30 } else {
31 showLetters(miro, input.toUpperCase());
32 }
33 }
34 miro.end();
35 }
36
37 private static void showLetters(SPainter miro, String input) {
38 eraseWhiteBoard(miro);
39 miro.moveTo(new Point.Double(100,100));
40 for (int i = 0; i < input.length(); i = i + 1){
41 String letter = input.substring(i, i+1);
42 Color color = getLetterColor(letter);
43 miro.setColor(color);
44 miro.draw(letter);
45 miro.mrt(fontsize);
46 }
47 }
48
49 private static void initializeColorMap(String specialLetters){
50 letters = new String[specialLetters.length()];
51 colors = new Color[specialLetters.length()];
52 for ( int i = 0; i < specialLetters.length(); i = i + 1 ) {
53 letters[i] = specialLetters.substring(i, i+1);
54 colors[i] = randomColor();
55 }
56 }
57
58 private static Color getLetterColor(String letter) {
59 for (int i = 0; i < letters.length; i = i + 1) {
60 if ( letter.equalsIgnoreCase(letters[i])){
61 return colors[i];
62 }
63 }
64 return Color.black;
65 }
66
67 private static Color randomColor() {
68 int rv = (int)(Math.random()*256);
69 int gv = (int)(Math.random()*256);
70 int bv = (int)(Math.random()*256);
71 return new Color(rv,gv,bv);
72 }
73
74 private static void eraseWhiteBoard(SPainter miro){
75 miro.setColor(Color.white);
76 miro.wash();
77 miro.paintFrame(Color.black, 5);
78 }
79
80 public GraphemeToColorSynesthesia() {
81 paintingCode();
82 }
83
84 public static void main(String[] args){
85 SwingUtilities.invokeLater(new Runnable() {
86 public void run() {
87 new GraphemeToColorSynesthesia();
88 }
89 });
90 }
91
92 }
93