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
use wasm_bindgen::JsCast;
pub fn get_canvas_rendering_context_2d(canvas_id: &str) -> web_sys::CanvasRenderingContext2d {
let canvas = get_html_canvas_element_by_id(canvas_id);
get_canvas_rendering_context_2d_from_html_canvas_element(&canvas)
}
fn get_html_canvas_element_by_id(id: &str) -> web_sys::HtmlCanvasElement {
web_sys::window()
.expect("No global window.")
.document()
.expect("The window should have document.")
.get_element_by_id(id)
.expect(format!("The document has no element with id {}.", id).as_str())
.dyn_into::<web_sys::HtmlCanvasElement>()
.expect("The element with id {} should be a HTMLCanvasElement.")
}
fn get_canvas_rendering_context_2d_from_html_canvas_element(
canvas: &web_sys::HtmlCanvasElement,
) -> web_sys::CanvasRenderingContext2d {
canvas
.get_context("2d")
.expect("Failed to create a Context.")
.expect("No Context.")
.dyn_into::<web_sys::CanvasRenderingContext2d>()
.expect("The element should be a CanvasRenderingContext2D.")
}