import java.awt.*;
import java.io.*;
import java.awt.image.BufferedImage;

public class LectureFichier {

	private BufferedImage image;

	public LectureFichier() {
		try {
			BufferedReader lecture = new BufferedReader(new FileReader("image.xpm"));

			try {
				for (int i = 0; i != 3; i++) {
					lecture.readLine();
				}

				String infos = lecture.readLine();
				infos = infos.replaceAll("\"", "");
				String[] infosTab = infos.split(" ");
				for (String info : infosTab) {
					System.out.println(info);
				}
				this.image = new BufferedImage(Integer.parseInt(infosTab[1]), Integer.parseInt(infosTab[2]), BufferedImage.TYPE_3BYTE_BGR);

				char[] caracteres = new char[15];
				Color[] couleurs = new Color[15];

				for (int i = 0; i != Integer.parseInt(infosTab[2]); i++) {
					String ligne = lecture.readLine();
					caracteres[i] = ligne.charAt(1);

					int[] rgb = {
					Integer.parseInt(ligne.substring(6,8), 16), 
					Integer.parseInt(ligne.substring(8,10), 16),
					Integer.parseInt(ligne.substring(10,12), 16)
					};

					couleurs[i] = new Color(rgb[0], rgb[1], rgb[2]);

				}

				lecture.readLine();

				for (int i = 0; i != Integer.parseInt(infosTab[1]); i++) {
					String ligne = lecture.readLine().replaceAll("\"", "");
					ligne = ligne.substring(0, ligne.length()-1);

					for (int j = 0; j != Integer.parseInt(infosTab[0]); j++) {
						for (int k = 0; k != caracteres.length; k++) {
							if (caracteres[k] == ligne.charAt(j)) {
								this.image.setRGB(i, j, couleurs[k].getRGB());
							}
						}
					}
				}
			} catch (IOException e2) {
				System.err.println("Erreur d'écriture");
			}

			try {
				lecture.close();
			} catch (IOException e3) {
				System.err.println("Erreur de fermeture");
			}
		} catch (IOException e1) {
			System.err.println("Erreur d'ouverture");
		}
	}

	public BufferedImage getImage() {
		return this.image;
	}
}