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) => {