wrend/programs/
program_link_js.rs

1use std::ops::{Deref, DerefMut};
2
3use crate::{utils, ProgramLink, ProgramLinkJsBuilder, StringArray};
4
5use wasm_bindgen::prelude::wasm_bindgen;
6
7pub type ProgramLinkJsInner = ProgramLink<String, String, String>;
8
9#[wasm_bindgen(inspectable, js_name = ProgramLink)]
10pub struct ProgramLinkJs(ProgramLinkJsInner);
11
12#[wasm_bindgen(js_class = ProgramLink)]
13impl ProgramLinkJs {
14    #[wasm_bindgen(constructor)]
15    pub fn new(program_id: String, vertex_shader_id: String, fragment_shader_id: String) -> Self {
16        Self(ProgramLinkJsInner::new(
17            program_id,
18            vertex_shader_id,
19            fragment_shader_id,
20        ))
21    }
22
23    #[wasm_bindgen(js_name = programId)]
24    pub fn program_id(&self) -> String {
25        self.deref().program_id().to_string()
26    }
27
28    #[wasm_bindgen(js_name = vertexShaderId)]
29    pub fn vertex_shader_id(&self) -> String {
30        self.deref().vertex_shader_id().to_string()
31    }
32
33    #[wasm_bindgen(js_name = fragmentShaderId)]
34    pub fn fragment_shader_id(&self) -> String {
35        self.deref().fragment_shader_id().to_string()
36    }
37
38    #[wasm_bindgen(js_name = transformFeedbackVaryings)]
39    pub fn transform_feedback_varyings(&self) -> StringArray {
40        utils::strings_to_js_array(self.deref().transform_feedback_varyings())
41    }
42
43    pub fn builder() -> ProgramLinkJsBuilder {
44        ProgramLinkJsBuilder::default()
45    }
46}
47
48impl ProgramLinkJs {
49    pub fn into_inner(self) -> ProgramLinkJsInner {
50        self.0
51    }
52}
53
54impl From<ProgramLinkJsInner> for ProgramLinkJs {
55    fn from(js_program_link_inner: ProgramLinkJsInner) -> Self {
56        Self(js_program_link_inner)
57    }
58}
59
60impl Deref for ProgramLinkJs {
61    type Target = ProgramLinkJsInner;
62
63    fn deref(&self) -> &Self::Target {
64        &self.0
65    }
66}
67
68impl DerefMut for ProgramLinkJs {
69    fn deref_mut(&mut self) -> &mut ProgramLinkJsInner {
70        &mut self.0
71    }
72}