2 import java.awt.image.*;
5 import java.util.regex.*;
7 class PgmImage extends Component
10 private BufferedReader in;
19 try { return in.readLine(); }
20 catch (IOException e) {
26 public Image open(String filename)
31 int bytes, width, height, depth;
35 in = new BufferedReader(
36 new InputStreamReader(
37 fis = new FileInputStream(
38 new File(filename))));
40 pat = Pattern.compile("^P5$");
41 mat = pat.matcher(str = read());
43 pat = Pattern.compile("^(\\d+) (\\d+)$");
44 mat = pat.matcher(str = read());
46 x = new Integer(mat.group(1)).intValue();
47 y = new Integer(mat.group(2)).intValue();
51 pat = Pattern.compile("^255$");
52 mat = pat.matcher(str = read());
55 char[] buf = new char[bytes];
58 try { r = in.read(buf, offset, bytes); offset += r; bytes -= r; }
59 catch (IOException e) { e.printStackTrace(); }
61 int[] buf2 = new int[buf.length];
63 for (int i = 0; i < buf.length/3; ++i)
64 buf2[i] = 0xFF << 24 | buf[3*i] << 16 | buf[3*i+1] << 8 | buf[3*i+2];
66 for (int i = 0; i < buf.length; ++i)
67 buf2[i] = 0xFF << 24 | buf[i] << 16 | buf[i] << 8 | buf[i];
70 return createImage(new MemoryImageSource(width, height, buf2, 0, width));
71 } catch (IOException e) { e.printStackTrace(); }
84 public int getXOffset()
89 public int getYOffset()