package com.kreative.paint.material.alphabet;
import java.awt.Font;
import java.util.Arrays;
import java.util.List;
public class Alphabet {
public static final int DEFAULT_WIDTH = 14;
public static final Font DEFAULT_FONT = new Font("Helvetica", Font.BOLD, 36);
public static final Alphabet DEFAULT_ALPHABET = new Alphabet(
"Latin", DEFAULT_WIDTH, DEFAULT_FONT, new int[] {
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N',
'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '!', '?',
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '-', '=', '&',
'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '\u00A1', '\u00BF',
';', ':', ',', '.', '@', '#', '\'', '"', '*', '/', '(', ')', '[', ']',
'\u00C0', '\u00C1', '\u00C2', '\u00C3', '\u00C4', '\u00C5', '\u00C6',
'\u00C7', '\u00C8', '\u00C9', '\u00CA', '\u00CB', '\u00CC', '\u00CD',
'\u00CE', '\u00CF', '\u00D1', '\u00D2', '\u00D3', '\u00D4', '\u00D5',
'\u00D6', '\u00D8', '\u00D9', '\u00DA', '\u00DB', '\u00DC', '\u00DD',
'\u00E0', '\u00E1', '\u00E2', '\u00E3', '\u00E4', '\u00E5', '\u00E6',
'\u00E7', '\u00E8', '\u00E9', '\u00EA', '\u00EB', '\u00EC', '\u00ED',
'\u00EE', '\u00EF', '\u00F1', '\u00F2', '\u00F3', '\u00F4', '\u00F5',
'\u00F6', '\u00F8', '\u00F9', '\u00FA', '\u00FB', '\u00FC', '\u00FD',
'\u00D0', '\u00F0', '\u00DE', '\u00FE', '\u0152', '\u0153', '\u0178',
'\u00FF', '\u00DF', '\u00D7', '\u00F7', '%', '^', '_', '$', '\u00A2',
'\u00A3', '\u00A5', '\u00A7', '\u00B6', '\u00A9', '\u00AE', '{', '}',
'<', '>', '\u00AB', '\u00BB', '\\', '`', '~', '\u00A8', '|', '\u00A6', '\u00A4',
'\u00AA', '\u00BA', '\u00B0', '\u00B1', '\u00B5', '\u00AC', '\u00B7'
}
);
public final String name;
public final int width;
public final Font font;
public final int[] letters;
public Alphabet(String name, int width, Font font, int[] letters) {
this.name = name;
this.width = width;
this.font = font;
this.letters = letters;
}
public Alphabet(String name, int width, Font font, List<Integer> letters) {
this.name = name;
this.width = width;
this.font = font;
this.letters = new int[letters.size()];
for (int i = 0, n = letters.size(); i < n; i++) {
this.letters[i] = letters.get(i);
}
}
@Override
public boolean equals(Object that) {
if (that instanceof Alphabet) {
return this.equals((Alphabet)that, false);
} else {
return false;
}
}
public boolean equals(Alphabet that, boolean withName) {
if (!Arrays.equals(this.letters, that.letters)) return false;
if (!withName) return true;
if (this.name != null) return this.name.equals(that.name);
if (that.name != null) return that.name.equals(this.name);
return true;
}
@Override
public int hashCode() {
return Arrays.hashCode(letters);
}
}