INNER CODE UNIT · Rust

create_texture

PistonDevelopers/piston_window · src/piston_script.rs:247

    pub fn create_texture(rt: &mut Runtime) -> Result<Variable, String> {
        use dyon::embed::{to_rust_object, PushVariable};

        let image: Variable = rt.pop()?;
        match image {
            Variable::F64(id, _) => {
                let texture_context = unsafe {&mut *Current::<TextureContext>::new()};
                let images = unsafe { &*Current::<Vec<RgbaImage>>::new() };
                let textures = unsafe { &mut *Current::<Vec<Texture>>::new() };
                let image: &RgbaImage = if let Some(x) = images.get(id as usize) {x}
                            else {return Err("Image id is out of bounds".into())};

                let new_id = textures.len();
                textures.push(Texture::from_image(texture_context, image, &TextureSettings::new())
                    .map_err(|_| "Could not create texture".to_string())?);
                Ok(new_id.push_var())
            }
            Variable::RustObject(obj) => {

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…