wrend/textures/
texture_link_js.rs1use std::ops::{Deref, DerefMut};
2
3use wasm_bindgen::prelude::wasm_bindgen;
4use web_sys::{HtmlCanvasElement, WebGl2RenderingContext, WebGlTexture};
5
6use crate::{TextureCreateCallbackJs, TextureLink};
7
8pub type TextureLinkJsInner = TextureLink<String>;
9
10#[wasm_bindgen(inspectable, js_name = TextureLink)]
11pub struct TextureLinkJs(TextureLinkJsInner);
12
13#[wasm_bindgen(js_class = TextureLink)]
14impl TextureLinkJs {
15 #[wasm_bindgen(constructor)]
16 pub fn new(texture_id: String, create_texture_callback: TextureCreateCallbackJs) -> Self {
17 Self(TextureLinkJsInner::new(texture_id, create_texture_callback))
18 }
19
20 #[wasm_bindgen(js_name = textureId)]
21 pub fn texture_id(&self) -> String {
22 self.deref().texture_id().to_owned()
23 }
24
25 #[wasm_bindgen(js_name = createTexture)]
26 pub fn create_texture(
27 &self,
28 gl: WebGl2RenderingContext,
29 now: f64,
30 canvas: HtmlCanvasElement,
31 ) -> WebGlTexture {
32 self.deref().create_texture(gl, now, canvas)
33 }
34}
35
36impl TextureLinkJs {
37 pub fn into_inner(self) -> TextureLinkJsInner {
38 self.0
39 }
40}
41
42impl Deref for TextureLinkJs {
43 type Target = TextureLinkJsInner;
44
45 fn deref(&self) -> &Self::Target {
46 &self.0
47 }
48}
49
50impl DerefMut for TextureLinkJs {
51 fn deref_mut(&mut self) -> &mut TextureLinkJsInner {
52 &mut self.0
53 }
54}
55
56impl From<TextureLinkJs> for TextureLinkJsInner {
57 fn from(buffer_link_js: TextureLinkJs) -> Self {
58 buffer_link_js.into_inner()
59 }
60}