-
Notifications
You must be signed in to change notification settings - Fork 6
/
update_title.rs
61 lines (50 loc) · 1.89 KB
/
update_title.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
use flo_draw::*;
use flo_canvas::*;
use flo_binding::*;
use std::thread;
use std::time::{Duration};
///
/// Simple example that displays a canvas window, then updates the title once a second
///
pub fn main() {
// 'with_2d_graphics' is used to support operating systems that can't run event loops anywhere other than the main thread
with_2d_graphics(|| {
// Create some window properties with a title binding
let title = bind("Title".to_string());
let mut window_properties = WindowProperties::from(&());
window_properties.title = BindRef::from(title.clone());
// Create a window with these properties
let canvas = create_drawing_window(window_properties);
// Render a triangle to it
canvas.draw(|gc| {
// Clear the canvas and set up the coordinates
gc.clear_canvas(Color::Rgba(0.3, 0.2, 0.0, 1.0));
gc.canvas_height(1000.0);
gc.center_region(0.0, 0.0, 1000.0, 1000.0);
// Draw a rectangle...
gc.new_path();
gc.move_to(0.0, 0.0);
gc.line_to(1000.0, 0.0);
gc.line_to(1000.0, 1000.0);
gc.line_to(0.0, 1000.0);
gc.line_to(0.0, 0.0);
gc.fill_color(Color::Rgba(1.0, 1.0, 0.8, 1.0));
gc.fill();
// Draw a triangle on top
gc.new_path();
gc.move_to(200.0, 200.0);
gc.line_to(800.0, 200.0);
gc.line_to(500.0, 800.0);
gc.line_to(200.0, 200.0);
gc.fill_color(Color::Rgba(0.0, 0.0, 0.8, 1.0));
gc.fill();
});
// Fairly boring 'update the title once a second' sequence
let mut count = 0;
loop {
thread::sleep(Duration::from_secs(1));
count += 1;
title.set(format!("Running for {} seconds", count));
}
});
}