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