use canvas_traits::webgl::{WebGLContextId, WebGLProgramId};
use dom_struct::dom_struct;
use crate::dom::bindings::reflector::{reflect_dom_object, Reflector};
use crate::dom::bindings::root::DomRoot;
use crate::dom::window::Window;
use crate::script_runtime::CanGc;
#[dom_struct]
pub struct WebGLUniformLocation {
reflector_: Reflector,
id: i32,
#[no_trace]
context_id: WebGLContextId,
#[no_trace]
program_id: WebGLProgramId,
link_generation: u64,
size: Option<i32>,
type_: u32,
}
impl WebGLUniformLocation {
fn new_inherited(
id: i32,
context_id: WebGLContextId,
program_id: WebGLProgramId,
link_generation: u64,
size: Option<i32>,
type_: u32,
) -> Self {
Self {
reflector_: Reflector::new(),
id,
context_id,
program_id,
link_generation,
size,
type_,
}
}
pub fn new(
window: &Window,
id: i32,
context_id: WebGLContextId,
program_id: WebGLProgramId,
link_generation: u64,
size: Option<i32>,
type_: u32,
) -> DomRoot<Self> {
reflect_dom_object(
Box::new(Self::new_inherited(
id,
context_id,
program_id,
link_generation,
size,
type_,
)),
window,
CanGc::note(),
)
}
pub fn id(&self) -> i32 {
self.id
}
pub fn program_id(&self) -> WebGLProgramId {
self.program_id
}
pub fn context_id(&self) -> WebGLContextId {
self.context_id
}
pub fn link_generation(&self) -> u64 {
self.link_generation
}
pub fn size(&self) -> Option<i32> {
self.size
}
pub fn type_(&self) -> u32 {
self.type_
}
}