Use a more modern style in renderer

This commit is contained in:
Brian Anderson 2012-05-03 19:45:58 -07:00
parent 50ce0448e2
commit d62a643c91

View file

@ -7,32 +7,34 @@ enum msg {
exit(comm::chan<()>) exit(comm::chan<()>)
} }
fn renderer(osmain_ch: comm::chan<osmain::msg>) -> comm::chan<msg> { fn renderer(osmain: chan<osmain::msg>) -> chan<msg> {
task::spawn_listener {|po| task::spawn_listener::<msg> {|po|
let draw_target_po = comm::port(); listen {|draw_target_ch|
comm::send(osmain_ch, osmain::get_draw_target(comm::chan(draw_target_po))); osmain.send(osmain::get_draw_target(draw_target_ch));
let draw_target = comm::recv(draw_target_po); let draw_target = draw_target_ch.recv();
let mut exit_confirm_ch = none; let mut exit_confirm_ch = none;
loop { loop {
alt comm::recv::<msg>(po) { alt po.recv() {
draw(display_list) { draw(display_list) {
draw_display_list(draw_target, display_list); draw_display_list(draw_target, display_list);
let draw_po = comm::port(); listen {|draw_ch|
comm::send(osmain_ch, osmain::draw(comm::chan(draw_po))); osmain.send(osmain::draw(draw_ch));
comm::recv(draw_po); draw_ch.recv();
} }
exit(response_ch) { }
exit_confirm_ch = some(response_ch); exit(response_ch) {
break; exit_confirm_ch = some(response_ch);
} break;
}
}
} }
}
assert exit_confirm_ch.is_some(); assert exit_confirm_ch.is_some();
comm::send(exit_confirm_ch.get(), ()); exit_confirm_ch.get().send(());
}
} }
} }
@ -46,18 +48,18 @@ fn draw_display_list(
let bounds = (*item).bounds; let bounds = (*item).bounds;
let red_color = { let red_color = {
r: 1f as azure::AzFloat, r: 1f as AzFloat,
g: 0f as azure::AzFloat, g: 0f as AzFloat,
b: 0f as azure::AzFloat, b: 0f as AzFloat,
a: 0.5f as azure::AzFloat a: 0.5f as AzFloat
}; };
let red_pattern = AzCreateColorPattern(ptr::addr_of(red_color)); let red_pattern = AzCreateColorPattern(ptr::addr_of(red_color));
let red_rect = { let red_rect = {
x: au_to_int(bounds.origin.x) as azure::AzFloat, x: au_to_int(bounds.origin.x) as AzFloat,
y: au_to_int(bounds.origin.y) as azure::AzFloat, y: au_to_int(bounds.origin.y) as AzFloat,
width: au_to_int(bounds.size.width) as azure::AzFloat, width: au_to_int(bounds.size.width) as AzFloat,
height: au_to_int(bounds.size.height) as azure::AzFloat height: au_to_int(bounds.size.height) as AzFloat
}; };
AzDrawTargetFillRect( AzDrawTargetFillRect(
draw_target, draw_target,
@ -72,18 +74,18 @@ fn draw_display_list(
fn clear(draw_target: AzDrawTargetRef) { fn clear(draw_target: AzDrawTargetRef) {
let black_color = { let black_color = {
r: 0f as azure::AzFloat, r: 0f as AzFloat,
g: 0f as azure::AzFloat, g: 0f as AzFloat,
b: 0f as azure::AzFloat, b: 0f as AzFloat,
a: 1f as azure::AzFloat a: 1f as AzFloat
}; };
let black_pattern = AzCreateColorPattern(ptr::addr_of(black_color)); let black_pattern = AzCreateColorPattern(ptr::addr_of(black_color));
let black_rect = { let black_rect = {
x: 0 as azure::AzFloat, x: 0 as AzFloat,
y: 0 as azure::AzFloat, y: 0 as AzFloat,
width: 800 as azure::AzFloat, width: 800 as AzFloat,
height: 600 as azure::AzFloat, height: 600 as AzFloat,
}; };
AzDrawTargetFillRect( AzDrawTargetFillRect(