INNER CODE UNIT · Rust
update__texture_image
PistonDevelopers/piston_window · src/piston_script.rs:278
pub fn update__texture_image(rt: &mut Runtime) -> Result<(), String> {
use texture::Format;
let image: Variable = rt.pop()?;
let texture: Variable = rt.pop()?;
match image {
Variable::F64(id, _) => {
let texture_context = unsafe {&mut *Current::<TextureContext>::new()};
let images = unsafe { &*Current::<Vec<RgbaImage>>::new() };
let image: &RgbaImage = if let Some(x) = images.get(id as usize) {x}
else {return Err("Image id is out of bounds".into())};
match texture {
Variable::F64(id, _) => {
let textures = unsafe { &mut *Current::<Vec<Texture>>::new() };
let texture: &mut Texture = if let Some(x) = textures.get_mut(id as usize) {x}
else {return Err("Texture id is out of bounds".into())};
let (w, h) = image.dimensions();
texture.update(texture_context, Format::Rgba8, &image, [0; 2], [w, h])
.map_err(|_| "Could not update texture".to_string())