use crate::graphics::{
GLCore,
core::GLError,
};
use core::mem::transmute;
const VIEWPORT:u32=0x0BA2;
const MAX_VIEWPORT_DIMS:u32=0x0D3A;
pub struct Viewport{}
impl Viewport{
pub const fn new()->Viewport{
Self{
}
}
}
impl Viewport{
#[inline(always)]
pub fn set(&self,[x,y,widht,height]:[i32;4])->GLError{
unsafe{
GLCore.parameters.viewport.set([x,y,widht,height]);
GLCore.get_error()
}
}
#[inline(always)]
pub fn get(&self)->[i32;4]{
unsafe{
let mut viewport=[0i32;4];
GLCore.get_integer_v(VIEWPORT,viewport.get_unchecked_mut(0));
viewport
}
}
#[inline(always)]
pub fn write(&self,viewport:&mut [i32;4]){
unsafe{
GLCore.get_integer_v(VIEWPORT,viewport.get_unchecked_mut(0));
}
}
#[inline(always)]
pub fn get_max_dimensions(&self)->[i32;2]{
unsafe{
let mut dimensions=[0i32;2];
GLCore.get_integer_v(MAX_VIEWPORT_DIMS,dimensions.get_unchecked_mut(0));
dimensions
}
}
#[inline(always)]
pub fn write_max_dimensions(&self,dimensions:&mut [i32;2]){
unsafe{
GLCore.get_integer_v(MAX_VIEWPORT_DIMS,dimensions.get_unchecked_mut(0));
}
}
}