1 use std::cast::transmute;
2 use std::from_str::FromStr;
3 use std::libc::{STDOUT_FILENO, c_int, fdopen, fputc};
6 static ITER: uint = 50;
7 static LIMIT: f64 = 2.0;
12 let w: i32 = FromStr::from_str(os::args()[1]).unwrap();
14 let mut byte_acc: i8 = 0;
15 let mut bit_num: i32 = 0;
17 printfln!("P4\n%d %d", w as int, h as int);
20 let stdout = fdopen(STDOUT_FILENO as c_int, transmute(&mode[0]));
22 for y in range(0i32, h) {
24 for x in range(0i32, w) {
29 let Cr = 2.0 * (x as f64) / (w as f64) - 1.5;
30 let Ci = 2.0 * (y as f64) / (h as f64) - 1.0;
32 for _ in range(0i32, ITER as i32) {
33 if Tr + Ti > LIMIT * LIMIT {
44 if Tr + Ti <= LIMIT * LIMIT {
51 fputc(byte_acc as c_int, stdout);
54 } else if x == w - 1 {
56 fputc(byte_acc as c_int, stdout);