1 | module main |
2 | |
3 | import benchmark |
4 | import sim |
5 | import sim.args as simargs |
6 | import sim.img |
7 | |
8 | fn main() { |
9 | args := simargs.parse_args(sequential: true)! as simargs.SequentialArgs |
10 | |
11 | mut bmark := benchmark.start() |
12 | defer { |
13 | bmark.measure(@FN) |
14 | } |
15 | |
16 | mut writer := img.ppm_writer_for_fname(args.filename, img.image_settings_from_grid(args.grid))! |
17 | defer { |
18 | writer.close() |
19 | } |
20 | |
21 | handle_request := fn [mut writer] (request &sim.SimRequest) ! { |
22 | result := sim.compute_result(request) |
23 | pixel := img.compute_pixel(result) |
24 | return writer.handle_pixel(pixel) |
25 | } |
26 | |
27 | sim.run(args.params, grid: args.grid, on_request: sim.SimRequestHandler(handle_request)) |
28 | |
29 | writer.write()! |
30 | } |