| 1 | // vtest build: false // requires special compilation flags: `-b wasm -os browser` |
| 2 | fn JS.canvas_x() int |
| 3 | fn JS.canvas_y() int |
| 4 | fn JS.setpixel(x int, y int, c f64) |
| 5 | |
| 6 | // `main` must be public! |
| 7 | pub fn main() { |
| 8 | println('starting main.main...') |
| 9 | |
| 10 | max_x := JS.canvas_x() |
| 11 | max_y := JS.canvas_y() |
| 12 | middle_x := max_x / 2 |
| 13 | middle_y := max_y / 2 |
| 14 | |
| 15 | mut y := 0 |
| 16 | for y < max_y { |
| 17 | y += 1 |
| 18 | mut x := 0 |
| 19 | for x < max_x { |
| 20 | x += 1 |
| 21 | |
| 22 | e := (f64(y) / middle_y) - 1.5 |
| 23 | f := (f64(x) / middle_x) - 1.0 |
| 24 | |
| 25 | mut a := 0.0 |
| 26 | mut b := 0.0 |
| 27 | mut i := 0.0 |
| 28 | mut j := 0.0 |
| 29 | mut c := 0.0 |
| 30 | |
| 31 | for i * i + j * j < 4 && c < 255 { |
| 32 | i = a * a - b * b + e |
| 33 | j = 2 * a * b + f |
| 34 | a = i |
| 35 | b = j |
| 36 | c += 1 |
| 37 | } |
| 38 | |
| 39 | JS.setpixel(x, y, c) |
| 40 | } |
| 41 | } |
| 42 | // TODO: remove the need for panic here: |
| 43 | panic('reached the end of main.main') |
| 44 | } |
| 45 | |