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